Uptolike Social Share Buttons - Version 1.4.5

Version Description

  • Code refactor
  • Minor fix
Download this release

Release Info

Developer na1vez
Plugin Icon 128x128 Uptolike Social Share Buttons
Version 1.4.5
Comparing to
See all releases

Version 1.4.5

api_functions.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //1.4.5 03/02/16
3
+
4
+ const HOST = 'https://uptolike.com/';
5
+
6
+ /**
7
+ * @param $email
8
+ * @param $partnerId 'cms' for cms modules
9
+ * @param $projectId 'cms'.site name
10
+ * @return bool|string 'if false - somthing wrong, if string - it's cryptkey'
11
+ */
12
+ function userReg($email, $partnerId, $projectId){
13
+
14
+ if ($email !== '' && $partnerId !== '' && $projectId !== '') {
15
+ $url = 'https://uptolike.com/api/getCryptKeyWithUserReg.json?'.http_build_query(array(
16
+ 'email' => $email,
17
+ 'partner' => $partnerId,
18
+ 'projectId' => $projectId));
19
+
20
+ $jsonAnswer = file_get_contents($url);
21
+ if (false !== $jsonAnswer) {
22
+ $answer = json_decode($jsonAnswer);
23
+ return $answer->cryptKey;
24
+ } else return $jsonAnswer;
25
+
26
+ } else return 'one of params is empty';
27
+ }
28
+
29
+ /**
30
+ * @param $partnerId String'cms' for cms modules
31
+ * @param $email String
32
+ * @param $cryptKey String
33
+ */
34
+ function statIframe($partnerId, $mail, $cryptKey) {
35
+ $params = array(
36
+ 'mail' => $mail,
37
+ 'partner' => $partnerId
38
+ );
39
+ $paramsStr = 'mail='.$mail.'&partner='.$partnerId;
40
+ $signature = md5($paramsStr.$cryptKey);
41
+ $params['signature'] = $signature;
42
+ $finalUrl = 'https://uptolike.com/api/statistics.html?'.http_build_query($params);
43
+
44
+ return $finalUrl;
45
+ }
46
+
47
+ /**
48
+ * @param $mail user email
49
+ * @param $partnerId 'cms' for cms sites
50
+ * @param $projectId 'cms'.site_name
51
+ * @param $cryptKey crypt key, received from server
52
+ * @return string
53
+ */
54
+ function constructorIframe($mail, $partnerId, $projectId, $cryptKey) {
55
+
56
+ $params = array ('mail' => $mail,
57
+ 'partner' => $partnerId,
58
+ 'projectId' => $projectId);
59
+
60
+ $paramsStr = 'mail='.$mail.'&partner='.$partnerId.'&projectId='.$projectId.$cryptKey;
61
+ $signature = md5($paramsStr);
62
+ $params['signature'] = $signature;
63
+ $finalUrl = 'https://uptolike.com/api/constructor.html?'.http_build_query($params);
64
+
65
+ return $finalUrl;
66
+ }
67
+
68
+
logo-small.png ADDED
Binary file
main.js ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //1.4.5 03/02/16
2
+ var onmessage = function (e) {
3
+ if (e.data !== null && typeof e.data === 'object') {
4
+ if ('ready' == e.data.action ){
5
+ json = jQuery('input#uptolike_json').val();
6
+ initConstr(json);
7
+ }
8
+ if (('json' in e.data) && ('code' in e.data)) {
9
+ $('input#uptolike_json').val(e.data.json);
10
+ $('#widget_code').val(e.data.code);
11
+ jQuery('#settings_form').submit();
12
+ }
13
+
14
+ //$('iframe#stats_iframe').hide();
15
+ //document.getElementById('stats_iframe').style.display = 'none';
16
+ if (e.data.url.indexOf('statistics.html', 0) != -1) {
17
+ switch (e.data.action) {
18
+ case 'badCredentials':
19
+ //bad creds will show also when email and key is not entered yet
20
+ if (($('table input#uptolike_email').val() != '') && ($('table input.id_number').val() != '')) {
21
+ //document.location.hash = "stat";
22
+ hashChange('#stat');
23
+ //$('#bad_key_field').show();
24
+ document.getElementById('bad_key_field').style.display = 'table-row';
25
+ console.log('badCredentials');
26
+ }
27
+ break;
28
+ case 'foreignAccess':
29
+ if (($('table input#uptolike_email').val() != '') && ($('table input.id_number').val() != '')) {
30
+ hashChange('#stat');
31
+
32
+ //$('#foreignAccess_field').show();
33
+ document.getElementById('foreignAccess_field').style.display = 'table-row';
34
+ }
35
+ console.log('foreignAccess');
36
+ break;
37
+ case 'ready':
38
+ console.log('ready');
39
+ document.getElementById('stats_iframe').style.display = 'table-row';
40
+ //$('iframe#stats_iframe').show();
41
+ break;
42
+ case 'resize':
43
+ console.log('ready');
44
+ //$('iframe#stats_iframe').show();
45
+ document.getElementById('stats_iframe').style.display = 'block';
46
+ //$('#key_auth_field').hide();
47
+ document.getElementById('key_auth_field').style.display = 'none';
48
+ //$('#cryptkey_field').hide();
49
+ document.getElementById('cryptkey_field').style.display = 'none';
50
+ //$('#email_tr').hide();
51
+ document.getElementById('email_tr').style.display = 'none';
52
+ //$('#after_key_req').hide();
53
+ document.getElementById('after_key_req').style.display = 'none';
54
+ break;
55
+ default:
56
+ console.log(e.data.action);
57
+ }
58
+ // if (e.data.action == 'badCredentials') {
59
+ // $('#bad_key_field').show();
60
+ // }
61
+ }
62
+ if ((e.data.url.indexOf('constructor.html', 0) != -1) && (typeof e.data.size != 'undefined')) {
63
+ if (e.data.size != 0) document.getElementById("cons_iframe").style.height = e.data.size + 'px';
64
+ //alert(e.data.size);
65
+ }
66
+ if ((e.data.url.indexOf('statistics.html', 0) != -1) && (typeof e.data.size != 'undefined')) {
67
+ if (e.data.size != 0) document.getElementById("stats_iframe").style.height = e.data.size + 'px';
68
+ }
69
+ }
70
+ };
71
+
72
+ if (typeof window.addEventListener != 'undefined') {
73
+ window.addEventListener('message', onmessage, false);
74
+ } else if (typeof window.attachEvent != 'undefined') {
75
+ window.attachEvent('onmessage', onmessage);
76
+ }
77
+ var getCode = function () {
78
+ var win = document.getElementById("cons_iframe").contentWindow;
79
+ win.postMessage({action: 'getCode'}, "*");
80
+ };
81
+ function initConstr(jsonStr) {
82
+ var win = document.getElementById("cons_iframe").contentWindow;
83
+ if ('' !== jsonStr) {
84
+ win.postMessage({action: 'initialize', json: jsonStr}, "*");
85
+ }
86
+
87
+ }
88
+ function emailEntered(){
89
+ //$('#uptolike_email_field').css('background-color', 'lightgray');
90
+ //$('#uptolike_email_field').prop('disabled', 'disabled');
91
+ //$('#get_key_btn_field').hide();
92
+ document.getElementById('get_key_btn_field').style.display = 'none';
93
+ document.getElementById('after_key_req').style.display = 'table-row';
94
+ //$('#after_key_req').show();
95
+ //$('#before_key_req').hide();
96
+ document.getElementById('before_key_req').style.display = 'none';
97
+ //$('#cryptkey_field').show();
98
+ document.getElementById('cryptkey_field').style.display = 'table-row';
99
+ //$('#key_auth_field').show();
100
+ document.getElementById('key_auth_field').style.display = 'table-row';
101
+ }
102
+
103
+ function regMe(my_mail) {
104
+ site_url = $('#uptolike_site_url').html().replace('http://','').replace('https://','');
105
+ str = jQuery.param({ email: my_mail,
106
+ partner: 'cms',
107
+ projectId: 'cms' + site_url.replace( new RegExp("^www.","gim"),"").replace(/\-/g, '').replace(/\./g, ''),
108
+ url:site_url.replace( new RegExp("^www.","gim"),"")});
109
+ dataURL = "https://uptolike.com/api/getCryptKeyWithUserReg.json";
110
+ jQuery.getJSON(dataURL + "?" + str + "&callback=?", {}, function (result) {
111
+ var jsonString = JSON.stringify(result);
112
+ var result = JSON.parse(jsonString);
113
+ if ('ALREADY_EXISTS' == result.statusCode) {
114
+ alert('Пользователь с таким email уже зарегистрирован, обратитесь в службу поддержки.');
115
+ } else if ('MAIL_SENDED' == result.statusCode) {
116
+ alert('Ключ отправлен вам на email. Теперь необходимо ввести его в поле ниже.');
117
+ emailEntered();
118
+ } else if ('ILLEGAL_ARGUMENTS' == result.statusCode) {
119
+ alert('Email указан неверно.')
120
+ }
121
+ });
122
+ }
123
+
124
+ function hashChange(hsh) {
125
+ //var hsh = ;
126
+ if (('#stat' == hsh) || ('#cons' == hsh)) {
127
+ $('.nav-tab-wrapper a').removeClass('nav-tab-active');
128
+ $('.wrapper-tab').removeClass('active');
129
+ $('#con_' + hsh.slice(1)).addClass('active');
130
+ $('a.nav-tab#' + hsh.slice(1)).addClass('nav-tab-active');
131
+ /*
132
+ /*if ('#reg' == hsh) {
133
+ $('.reg_btn').show();
134
+ $('.reg_block').show();
135
+ $('.enter_btn').hide();
136
+ $('.enter_block').hide();
137
+ }
138
+ if ('#enter' == hsh) {
139
+ $('.reg_btn').hide();
140
+ $('.reg_block').hide();
141
+ $('.enter_btn').show();
142
+ $('.enter_block').show();
143
+ }*/
144
+ }
145
+ }
146
+
147
+ window.onhashchange = function() {
148
+ hashChange(document.location.hash);
149
+ };
150
+
151
+ jQuery(document).ready(function () {
152
+ $ = jQuery;
153
+ if ($('table input#uptolike_email').val() != ''){
154
+ $('#uptolike_email_field').val($('table input#uptolike_email').val());
155
+ emailEntered();
156
+ }
157
+ if (($('table input#uptolike_email').val() != '') && ($('table input.id_number').val() == '')) {
158
+ //document.location.hash = "stat";
159
+ hashChange('#stat');
160
+ }
161
+
162
+ $('input.id_number').css('width','520px');//fix
163
+ $('.uptolike_email').val($('#uptolike_email').val())//init fields with hidden value (server email)
164
+ $('#uptolike_cryptkey').attr('value', $('table input.id_number').val());
165
+ $('div.enter_block').hide();
166
+ $('div.reg_block').hide();
167
+ $('.reg_btn').click(function(){
168
+ $('.reg_block').toggle('fast');
169
+ $('.enter_btn').toggle('fast');
170
+ });
171
+ $('.enter_btn').click(function(){
172
+ $('.enter_block').toggle('fast');
173
+ $('.reg_btn').toggle('fast');
174
+ });
175
+ //getkey
176
+ $('button#get_key').click(function(){
177
+ //my_email = $('.reg_block .uptolike_email').val();
178
+ my_email = $('#uptolike_email_field').val();
179
+ regMe(my_email);
180
+ // my_key = $('.enter_block input.id_number').val();
181
+ //$('table input.id_number').attr('value',my_key);
182
+ $('table input#uptolike_email').attr('value',my_email);
183
+ $('#settings_form').submit();
184
+ });
185
+ //auth
186
+ $('button#auth').click(function(){
187
+ my_email = $('#uptolike_email_field').val();
188
+ my_key = $('#uptolike_cryptkey').val();
189
+ $('table input.id_number').attr('value',my_key);
190
+ $('table input#uptolike_email').attr('value',my_email);
191
+ $('#settings_form').submit();
192
+ });
193
+ //if unregged user
194
+ if ($('.id_number').val() == '') {
195
+ $('#uptolike_email').after('<button type="button" onclick="regMe();">Зарегистрироваться</button>');
196
+ json = $('input#uptolike_json').val();
197
+ initConstr(json);
198
+ }
199
+ $('#widget_code').parent().parent().attr('style', 'display:none');
200
+ $('#uptolike_json').parent().parent().attr('style', 'display:none');
201
+ $('table .id_number').parent().parent().attr('style', 'display:none');
202
+ $('#uptolike_email').parent().parent().attr('style', 'display:none');
203
+
204
+ $('.nav-tab-wrapper a').click(function (e) {
205
+ e.preventDefault();
206
+ var click_id = $(this).attr('id');
207
+ if (click_id != $('.nav-tab-wrapper a.nav-tab-active').attr('id')) {
208
+ $('.nav-tab-wrapper a').removeClass('nav-tab-active');
209
+ $(this).addClass('nav-tab-active');
210
+ $('.wrapper-tab').removeClass('active');
211
+ $('#con_' + click_id).addClass('active');
212
+ }
213
+ });
214
+
215
+ hashChange();
216
+ $.getScript( "https://uptolike.com/api/getsession.json" )
217
+ .done(function( script, textStatus ) {
218
+ $('iframe#cons_iframe').attr('src',$('iframe#cons_iframe').attr('data-src'));
219
+ $('iframe#stats_iframe').attr('src',$('iframe#stats_iframe').attr('data-src'));
220
+ });
221
+
222
+ });
plg_icons.png ADDED
Binary file
quest.png ADDED
Binary file
readme.txt ADDED
@@ -0,0 +1,207 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Uptolike Social Share Buttons ===
2
+ Tags: +1, UpToLike, AddThis, social buttons, bookmark, bookmarking, like, share, share button, sharing, social bookmarking, social bookmarks, social buttons, кнопки соцсетей, социальные кнопки
3
+ Requires at least: 3.0.1
4
+ Tested up to: 4.4.2
5
+ Stable tag: 1.4.5
6
+
7
+ Uptolike Social Share Buttons - social bookmarking widget with sharing statistics.
8
+
9
+ == Description ==
10
+
11
+ **What Can You Do With UpToLike Social Share Buttons?**
12
+
13
+ * Create custom buttons that will visually appeal to users
14
+ * Easily manage social activity online
15
+ * Increase online engagement through Shares and Likes
16
+ * Attract new visitors from social networks
17
+ * Collect and analyze the social activity of users
18
+ * Adjust content strategy based on analytics
19
+
20
+ UpToLike is a single interface from which you can manage the appearance and efficiency of social buttons on your site, as well as collect and analyze statistics on
21
+ likes, shares, returns, new users, sources of social traffic, and more.
22
+
23
+ **Which social networks does UpToLike Social Share Buttons support?**
24
+
25
+ UpToLike is compatible with 25 popular social networking sites. It supports the following functions: Bookmark, Print, Email, Follow, etc.
26
+
27
+ **Unique Functions of UpToLike Social Share Buttons**
28
+
29
+ * Customization of social buttons:
30
+ 1. 3 different shapes
31
+ 2. 3 sizes
32
+ 3. Hover effect (increase, clockwise rotation)
33
+ 4. 14 button styles
34
+ 5. Button background
35
+ 6. Text color
36
+ 7. Text size of the counter
37
+
38
+ * Social Media Following
39
+ * Automatic text selection: the system gives you the option to share a highlighted piece of text on a social network
40
+ * Gathering unique statistics of social media activity
41
+
42
+ **What statistics does UpToLike collect?**
43
+
44
+ * Number of Likes and Shares on site during the selected period
45
+ * Number of users attracted because of Likes and Shares
46
+ * Separation of traffic on social networks
47
+ * Per-page site activity: how many Likes and Shares for each individual page, and how many new visitors came to each page
48
+ * Social buttons adapted to mobile devices
49
+
50
+ **Uptolike Social Share Buttons - бесплатный русскоязычный плагин социальных кнопок**
51
+
52
+ **Какие задачи выполняет плагин Uptolike?**
53
+
54
+ * Установить на сайте красивые, полностью кастомизрованные социальные кнопки, которые будут нравиться пользователям
55
+ * Управлять социальной активностью пользователей на сайте
56
+ * Увеличивать показатель шаринга на сайте
57
+ * Привлекать новых посетителей из социальных сетей
58
+ * Собирать и анализировать статистику социальной активности пользователей
59
+ * Корректировать контент-стратегию
60
+
61
+ Uptolike – единый интерфейс, откуда можно управлять эффективностью социальных кнопок на сайте, а также собирать и анализировать статистику по лайкам, шарам, количеству возвратов, количеству привлеченных новых пользователей, источниках социального трафика и так далее.
62
+
63
+ **Какие социальные сети поддерживает Uptolike?**
64
+
65
+ Uptolike поддерживает 25 популярных социальных сетей: Вконтакте, Facebook, Одноклассники, Twitter, и т.д.
66
+
67
+ **Уникальные фишки Uptolike**
68
+
69
+ * Полная кастомизация социальных кнопок:
70
+ 1. 3 формы
71
+ 2. 3 размера
72
+ 3. эффект при наведении (увеличение, поворот по часовой стрелке)
73
+ 4. 14 стилей кнопок
74
+ 5. настройка фона кнопок
75
+ 6. выбор цвета текста
76
+ 7. установка размера текста счётчика
77
+
78
+ * Функция фолловинга
79
+ * Функция цитирования по тексту – выделенный участок текста автоматически предлагается расшарить в социальной сети
80
+ * Уникальная статистика социальной активности на сайте
81
+ * Кнопки социальных сетей, адаптированные под мобильные устройства
82
+
83
+ **Статистика, которую собирает Uptolike**
84
+
85
+ * Количество лайков и шаров на сайте за выбранный период
86
+ * Количество привлеченных пользователей, благодаря лайкам и шарам
87
+ * Разделение трафика по социальным сетям
88
+ * Постраничная статистика по сайту: сколько лайков и шаров получила каждая отдельная. страница сайта, и сколько новых посетителей пришли именно на эту страницу
89
+
90
+ == Installation ==
91
+ 1. Go to Plugins -> Add New
92
+ 2. Search for Uptolike
93
+ 3. Install the plugin called *Uptolike Social Share Buttons* and activate it
94
+ 4. Adjust your settings
95
+ 5. Request and fill the secret key field, if you want to receive the statistics
96
+ 6. Enjoy!
97
+
98
+ ***
99
+
100
+ 1. Выберите Плагины -> Добавить новый
101
+ 2. В строке поиска введите Uptolike
102
+ 3. Установите плагин *Uptolike Social Share Buttons* и активируйте
103
+ 4. Настройте внешний вид кнопок
104
+ 5. Для отображения статистики получите на адресс электронной почты секретный ключ и введите его на странице Статистика
105
+ 6. Наслаждайтесь!
106
+
107
+ == Frequently Asked Questions ==
108
+ Answers to Frequently Asked Questions you can find at http://uptolike.ru/faq
109
+
110
+ ***
111
+
112
+ Ответы на часто задаваемые вопросы вы можете найти на http://uptolike.ru/faq
113
+
114
+ == Screenshots ==
115
+ 1. Customizing sharing buttons
116
+ 2. Buttons appearance
117
+ 3. Traffic and sharing statistics
118
+
119
+ == Changelog ==
120
+ = 1.4.5 =
121
+ * Code refactor
122
+ * Minor fix
123
+
124
+ = 1.4.4 =
125
+ * Bug fix
126
+
127
+ = 1.4.3 =
128
+ * Bug fix
129
+
130
+ = 1.4.2 =
131
+ * Bug fix
132
+ * Enhancement: rename
133
+
134
+ = 1.4.1 =
135
+ * Enhancement: settings
136
+
137
+ = 1.4.0 =
138
+ * Bug fix
139
+
140
+ = 1.3.9 =
141
+ * Enhancement: settings
142
+
143
+ = 1.3.8 =
144
+ * Enhancement: new control panel
145
+ * Bug fix
146
+
147
+ = 1.3.7 =
148
+ * Enhancement: security
149
+
150
+ = 1.3.6 =
151
+ * Bug fix
152
+
153
+ = 1.3.5 =
154
+ * Enhancement: new align and shortcode settings
155
+
156
+ = 1.3.4 =
157
+ * Bug fix
158
+
159
+ = 1.3.3 =
160
+ * Enhancement
161
+
162
+ = 1.3.2 =
163
+ * Bug fix
164
+
165
+ = 1.3.1 =
166
+ * Enhancement: widget area
167
+
168
+ = 1.3.0 =
169
+ * Bug fix
170
+
171
+ = 1.2.9 =
172
+ * Bug Fix: minor changes
173
+
174
+ = 1.2.8 =
175
+ * Enhancement: new settings
176
+ * Bug Fix
177
+
178
+ = 1.2.7 =
179
+ * Bug Fix: minor bug fixes
180
+
181
+ = 1.2.6 =
182
+ * Enhancement: new feature - on archive
183
+
184
+ = 1.2.5 =
185
+ * Bug fix: minor bugs with short tag option
186
+
187
+ = 1.2.4 =
188
+ * Enhancement: new feature - on static page
189
+ * Enhancement: security
190
+ * Bug fix
191
+
192
+ = 1.2.3 =
193
+ * Bug fix: show on main
194
+
195
+ = 1.2.2 =
196
+ * Enhancement: cut spaces in cryptkey field
197
+ * Enhancement: feedback link
198
+ * Enhancement: access to plugins by top menu item
199
+
200
+ = 1.2.1 =
201
+ * Bug Fix: minor bug fixes
202
+
203
+ = 1.2.0 =
204
+ * Enhancement: user registration.
205
+
206
+ = 1.0.0 =
207
+ * Initial release
reg_sample.html ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title></title>
5
+ </head>
6
+ <body>
7
+
8
+ </body>
9
+ </html>
screenshot-1.png ADDED
Binary file
screenshot-2.png ADDED
Binary file
screenshot-3.png ADDED
Binary file
test.html ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <script type="text/javascript">(function (w, doc) {
2
+ if (!w.__utlWdgt) {
3
+ w.__utlWdgt = true;
4
+ var d = doc, s = d.createElement('script'), g = 'getElementsByTagName';
5
+ s.type = 'text/javascript';
6
+ s.charset = 'UTF-8';
7
+ s.async = true;
8
+ s.src = ('https:' == w.location.protocol ? 'https' : 'http') + '://w.uptolike.com/widgets/v1/uptolike.js';
9
+ var h = d[g]('body')[0];
10
+ h.appendChild(s);
11
+ }
12
+ })(window, document);
13
+ </script>
14
+ <div data-url data-background-alpha="0.0" data-orientation="horizontal" data-text-color="000000" data-share-shape="round-rectangle" data-buttons-color="ff9300" data-sn-ids="fb.tw.ok.vk.gp.mr." data-counter-background-color="ffffff" data-share-counter-size="11" data-share-size="30" data-background-color="ededed" data-share-counter-type="common" data-pid data-counter-background-alpha="1.0" data-share-style="1" data-mode="share" data-following-enable="false" data-like-text-enable="false" data-selection-enable="true" data-icon-color="ffffff" class="uptolike-buttons">
15
+ </div>
uninstall.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) )
4
+ exit();
5
+
6
+ function uptolike_delete_plugin() {
7
+
8
+ delete_option('my_option_name');
9
+ }
10
+
11
+ uptolike_delete_plugin();
12
+
13
+ ?>
uptolike_share_widget.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: UpToLike Social Share Buttons
4
+ Plugin URI: https://uptolike.com/
5
+ Description: Uptolike Social Share Buttons - social bookmarking widget with sharing statistics.
6
+ Version: 1.4.5
7
+ Author: Uptolike Team
8
+ Author URI: https://uptolike.com/
9
+ */
10
+
11
+ // Creating the widget
12
+
13
+ include 'widget_options.php';
uptolike_style.css ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* 1.4.5 03/02/16 */
2
+
3
+ .id_number {
4
+ width: 520px;
5
+ }
6
+
7
+ h2.placeholder {
8
+ font-size: 1px;
9
+ padding: 1px;
10
+ margin: 0;
11
+ height: 2px;
12
+ }
13
+
14
+ div.wrapper-tab {
15
+ display: none;
16
+ }
17
+
18
+ div.wrapper-tab.active {
19
+ display: block;
20
+ width: 100%;
21
+ padding-top: 10px;
22
+ }
23
+
24
+ .pos1 .field {
25
+ clear: both;
26
+ text-align: right;
27
+ }
28
+
29
+ .pos1 label {
30
+ float: left;
31
+ }
32
+
33
+ .pos1 button {
34
+ float: right;
35
+ }
36
+
37
+ #uptolike_cryptkey {
38
+ width: 300px;
39
+ }
40
+
41
+ #cryptkey_field {
42
+ display: none;
43
+ }
44
+
45
+ #key_auth_field {
46
+ display: none;
47
+ }
48
+
49
+ #bad_key_field {
50
+ display: none;
51
+ color: red;
52
+ }
53
+
54
+ #foreignAccess_field {
55
+ display: none;
56
+ color: red;
57
+ }
58
+
59
+ iframe#stats_iframe {
60
+ width: 100%;
61
+ display: none;
62
+ }
63
+
64
+ #after_key_req {
65
+ display: none;
66
+ }
67
+
68
+ .utl_blok1 {
69
+ margin-top: 30px;
70
+ background-color: white;
71
+ width: 620px;
72
+ height: 80px;
73
+ float: left;
74
+ border-radius: 3px;
75
+ -webkit-box-shadow: 3px 3px 3px -2px rgba(153, 147, 153, 1);
76
+ -moz-box-shadow: 3px 3px 3px -2px rgba(153, 147, 153, 1);
77
+ box-shadow: 3px 3px 3px -2px rgba(153, 147, 153, 1);
78
+ }
79
+
80
+ .utl_blok2 {
81
+ width: 70px;
82
+ height: 100%;
83
+ float: left;
84
+ background-color: #cdcdcd;
85
+ border-radius: 3px;
86
+ display: block;
87
+ }
88
+
89
+ .utl_logo {
90
+ background-image: url('/wp-content/plugins/uptolike-share/plg_icons.png');
91
+ width: 50px;
92
+ height: 50px;
93
+ margin-left: 17px;
94
+ margin-top: 20px;
95
+ }
96
+
97
+ .utl_i_logo {
98
+ background-position: 110px 74px;
99
+ }
100
+
101
+ .utl_like_logo {
102
+ background-position: 179px 74px;
103
+ }
104
+
105
+ .utl_mail_logo {
106
+ background-position: 48px 72px;
107
+ }
108
+
109
+ .utl_innertext {
110
+ padding: 15px;
111
+ margin-left: 70px;
112
+ vertical-align: middle;
113
+ }
114
+
115
+ .utl_left_block {
116
+ width: 460px;
117
+ float: left;
118
+ }
119
+
120
+ .utl_right_block {
121
+ width: 620px;
122
+ float: left;
123
+ }
124
+
125
+ span.utl_quest {
126
+ background: #F8F8F8;
127
+ border: 5px solid #DFDFDF;
128
+ color: #717171;
129
+ font-size: 13px;
130
+ height: 63px;
131
+ width: 237px;
132
+ position: absolute;
133
+ text-align: center;
134
+ top: 389px;
135
+ left: 32px;
136
+ display: none;
137
+ z-index: 100;
138
+ }
139
+
140
+ span.utl_quest:after {
141
+ position: absolute;
142
+ bottom: -10px;
143
+ width: 10px;
144
+ height: 10px;
145
+ border-bottom: 5px solid #dfdfdf;
146
+ border-right: 5px solid #dfdfdf;
147
+ background: #f8f8f8;
148
+ left: 50%;
149
+ margin-left: -10px;
150
+ -moz-transform: rotate(45deg);
151
+ -webkit-transform: rotate(45deg);
152
+ transform: rotate(45deg);
153
+ }
154
+
155
+ p.utl_quest {
156
+ float: none;
157
+ cursor: pointer;
158
+ display: inline;
159
+ }
160
+
161
+ p.utl_quest:hover span.utl_quest {
162
+ display: block;
163
+ }
164
+
165
+ img.utl_quest {
166
+ float: none;
167
+ }
usb-admin.php ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* 1.4.5 03/02/16 */
4
+
5
+ function constructorIframe($projectId, $partnerId, $mail, $cryptKey)
6
+ {
7
+ $params = array('mail' => $mail,
8
+ 'partner' => $partnerId,
9
+ 'projectId' => $projectId);
10
+
11
+ $paramsStr = 'mail=' . $mail . '&partner=' . $partnerId . '&projectId=' . $projectId . $cryptKey;
12
+ $signature = md5($paramsStr);
13
+ $params['signature'] = $signature;
14
+ if ('' !== $cryptKey) {
15
+ $finalUrl = 'https://uptolike.com/api/constructor.html?' . http_build_query($params);
16
+ } else $finalUrl = 'https://uptolike.com/api/constructor.html';
17
+
18
+ return $finalUrl;
19
+ }
20
+
21
+ function statIframe($projectId, $partnerId, $mail, $cryptKey)
22
+ {
23
+ $params = array(
24
+ 'mail' => $mail,
25
+ 'partner' => $partnerId,
26
+ 'projectId' => $projectId,
27
+
28
+ );
29
+ $paramsStr = 'mail=' . $mail . '&partner=' . $partnerId . '&projectId=' . $projectId;
30
+ $signature = md5($paramsStr . $cryptKey);
31
+ $params['signature'] = $signature;
32
+ $finalUrl = 'https://uptolike.com/api/statistics.html?' . http_build_query($params);
33
+
34
+ return $finalUrl;
35
+ }
36
+
37
+ function usb_admin_page()
38
+ {
39
+ $options = get_option('my_option_name');
40
+
41
+ if ((isset($options['uptolike_email'])) && ('' !== $options['uptolike_email'])) {
42
+ $email = $options['uptolike_email'];
43
+ } else $email = get_option('admin_email');
44
+ $partnerId = 'cms';
45
+ $projectId = 'cms' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
46
+ $projectId = str_replace('.', '', $projectId);
47
+ $projectId = str_replace('-', '', $projectId);
48
+ $options = get_option('my_option_name');
49
+ if (is_array($options) && array_key_exists('id_number', $options)) {
50
+ $cryptKey = $options['id_number'];
51
+ } else $cryptKey = '';
52
+
53
+ ?>
54
+ <script type="text/javascript">
55
+ <?php include('main.js'); ?>
56
+ </script>
57
+ <style type="text/css">
58
+ <?php include('uptolike_style.css')?>
59
+ </style>
60
+ <div id="uptolike_site_url" style="display: none"><?php echo get_site_url();?></div>
61
+ <div class="wrap">
62
+ <h2 class="placeholder">&nbsp;</h2>
63
+ <div id="wrapper">
64
+ <form id="settings_form" method="post" action="options.php">
65
+ <h1>UpToLike виджет</h1>
66
+ <h2 class="nav-tab-wrapper">
67
+ <a class="nav-tab nav-tab-active" href="#" id="construct">
68
+ Конструктор
69
+ </a>
70
+ <a class="nav-tab" href="#" id="stat">
71
+ Статистика
72
+ </a>
73
+ <a class="nav-tab" href="#" id="settings">
74
+ Настройки
75
+ </a>
76
+ </h2>
77
+ <div class="wrapper-tab active" id="con_construct">
78
+ <iframe id='cons_iframe' style='height: 445px;width: 100%;'
79
+ data-src="<?php echo constructorIframe($projectId, $partnerId, $email, $cryptKey); ?>"></iframe>
80
+ <br>
81
+ <a onclick="getCode();" href="#">
82
+ <button type="reset">Сохранить изменения</button>
83
+ </a>
84
+ </div>
85
+ <div class="wrapper-tab" id="con_stat">
86
+
87
+ <iframe style="width: 100%;height: 380px;" id="stats_iframe" data-src="<?php echo statIframe($projectId, $partnerId, $email, $cryptKey); ?>">
88
+ </iframe>
89
+
90
+ <div id="before_key_req">Введите ваш адрес электронной почты для получения ключа.</div>
91
+ <div id="after_key_req">На ваш адрес электронной почты отправлен секретный ключ. Введите его в поле ниже<br/>
92
+ Если письмо с ключом долго не приходит, возможно оно попало в Спам.<br/><br/>
93
+ Если ключ так и не был получен напишите письмо в службу поддержки: <a href="mailto:uptolikeshare@gmail.com">uptolikeshare@gmail.com</a><br/>
94
+ В письме пришлите, пожалуйста, адрес вашего сайта и адрес электронной почты, указанный в плагине.<br/>
95
+ </div>
96
+ <table>
97
+ <tr id="email_tr"> <td>Email: </td> <td> <input type="text" id="uptolike_email_field"> </td> </tr>
98
+ <tr id="cryptkey_field"> <td>Ключ: </td> <td> <input type="text" id="uptolike_cryptkey"> </td> </tr>
99
+ <tr id="get_key_btn_field"> <td> </td> <td> <button id="get_key" type="button"> Получить ключ </button> </td> </tr>
100
+ <tr id="bad_key_field"><td colspan="2" >Введен неверный ключ! Убедитесь что вы скопировали ключ без лишних символов (пробелов и т.д.)</td></tr>
101
+ <tr id="foreignAccess_field"><td colspan="2" >Данный проект принадлежит другому пользователю. Обратитесь в службу поддержки</td></tr>
102
+ <tr id="key_auth_field"> <td> </td> <td> <button id="auth" type="button"> Авторизация </button> </td> </tr>
103
+ </table>
104
+ <div>Обратная связь: <a href="mailto:uptolikeshare@gmail.com">uptolikeshare@gmail.com</a></div>
105
+ </div>
106
+ <div class="wrapper-tab " id="con_settings">
107
+ <div class="utl_left_block">
108
+ <?php
109
+ $my_settings_page = new MySettingsPage();
110
+ $my_settings_page->page_init();
111
+ settings_fields('my_option_group');
112
+ do_settings_sections($my_settings_page->settings_page_name);
113
+ ?>
114
+ <input type="submit" name="submit_btn" value="Cохранить изменения">
115
+ <br>
116
+ </div>
117
+ <div class="utl_right_block">
118
+ <div class="utl_blok1" >
119
+ <div class="utl_blok2" >
120
+ <div class="utl_logo utl_i_logo">
121
+ </div>
122
+ </div>
123
+ <div class="utl_innertext" >Для вставки шорткода в .php файл шаблона нужно использовать конструкцию
124
+ <br><b><i>
125
+ &lt;?php echo do_shortcode("[uptolike]"); ?&gt;<br></i></b>
126
+ Для вставки в режиме визуального редактора достаточно вставить<b> <i>[uptolike]</i></b>.</div>
127
+ </div>
128
+ <div class="utl_blok1" >
129
+ <div class="utl_blok2" >
130
+ <div class="utl_logo utl_like_logo">
131
+ </div>
132
+ </div>
133
+ <div class="utl_innertext" >Данный плагин полностью бесплатен. Мы регулярно его улучшаем и добавляем новые функции.<br>
134
+ Пожалуйста, оставьте свой отзыв на <a href="https://wordpress.org/support/view/plugin-reviews/uptolike-share">данной странице</a>. Спасибо! <br>
135
+ </div>
136
+ </div>
137
+ <div class="utl_blok1" >
138
+ <div class="utl_blok2" >
139
+ <div class="utl_logo utl_mail_logo">
140
+ </div>
141
+ </div>
142
+ <div class="utl_innertext" ><a href="http://uptolike.ru">Uptolike.ru</a> - конструктор социальных кнопок для вашего сайта с расширенным функционалом.<br>
143
+ Служба поддержки: <a href="mailto:uptolikeshare@gmail.com">uptolikeshare@gmail.com</a></div>
144
+ </div>
145
+ </div>
146
+ </div>
147
+ </form>
148
+ </div>
149
+ </div>
150
+ <?php
151
+ }
152
+ //$my_settings_page->create_admin_page();
153
+
154
+ usb_admin_page();
widget_options.php ADDED
@@ -0,0 +1,889 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ //widget_options.php
3
+ //1.4.5 03/02/16
4
+ class MySettingsPage
5
+ {
6
+
7
+ public $options;
8
+ public $settings_page_name = 'uptolike_settings';
9
+ public function __construct()
10
+ {
11
+ add_action('admin_menu', array($this, 'add_plugin_page'));
12
+ add_action('admin_init', array($this, 'page_init'));
13
+ $this->options = get_option('my_option_name');
14
+ }
15
+
16
+
17
+ public function add_plugin_page()
18
+ {
19
+ add_options_page(
20
+ 'Settings Admin',
21
+ 'UpToLike',
22
+ 'manage_options',
23
+ $this->settings_page_name, //'my-setting-admin',
24
+ array($this, 'create_admin_page')
25
+ );
26
+ }
27
+
28
+ /** creates url of iframe with statistics page from given params
29
+ *
30
+ * @param $projectId
31
+ * @param $partnerId
32
+ * @param $mail
33
+ * @param $cryptKey
34
+ * @return stringшfr
35
+ */
36
+ public function statIframe($projectId, $partnerId, $mail, $cryptKey)
37
+ {
38
+ $params = array(
39
+ 'mail' => $mail,
40
+ 'partner' => $partnerId,
41
+ 'projectId' => $projectId,
42
+
43
+ );
44
+ $paramsStr = 'mail=' . $mail . '&partner=' . $partnerId. '&projectId=' . $projectId;
45
+ $signature = md5($paramsStr . $cryptKey);
46
+ $params['signature'] = $signature;
47
+ $finalUrl = 'https://uptolike.com/api/statistics.html?' . http_build_query($params);
48
+
49
+ return $finalUrl;
50
+ }
51
+
52
+ /** create url of iframe with constructor from given params
53
+ * @param $projectId
54
+ * @param $partnerId
55
+ * @param $mail
56
+ * @param $cryptKey
57
+ * @return string
58
+ */
59
+ public function constructorIframe($projectId, $partnerId, $mail, $cryptKey)
60
+ {
61
+ $params = array('mail' => $mail,
62
+ 'partner' => $partnerId,
63
+ 'projectId' => $projectId);
64
+
65
+ $paramsStr = 'mail=' . $mail . '&partner=' . $partnerId . '&projectId=' . $projectId . $cryptKey;
66
+ $signature = md5($paramsStr);
67
+ $params['signature'] = $signature;
68
+ if ('' !== $cryptKey) {
69
+ $finalUrl = 'https://uptolike.com/api/constructor.html?' . http_build_query($params);
70
+ } else $finalUrl = 'https://uptolike.com/api/constructor.html';
71
+ return $finalUrl;
72
+ }
73
+
74
+ /** returns tabs html code. May be replace by proper html code
75
+ * @param string $current
76
+ */
77
+ public function ilc_admin_tabs($current = 'construct')
78
+ {
79
+ $tabs = array('construct' => 'Конструктор',
80
+ 'stat' => 'Статистика',
81
+ 'settings' => 'Настройки');
82
+
83
+ echo '<div id="icon-themes" class="icon32"><br></div>';
84
+ echo '<h2 class="nav-tab-wrapper">';
85
+ foreach ($tabs as $tab => $name) {
86
+ $class = ($tab == $current) ? ' nav-tab-active' : '';
87
+ echo "<a class='nav-tab$class' href='#' id=" . $tab . " ref='?page=" . $this->settings_page_name . "&tab=$tab'>$name</a>";
88
+ }
89
+ echo '</h2>';
90
+ }
91
+
92
+ /** render html page with code configuration settings
93
+ *
94
+ */
95
+ public function create_admin_page()
96
+ {
97
+ $this->options = get_option('my_option_name');
98
+ if ((isset($this->options['uptolike_email'])) && ('' !== $this->options['uptolike_email'])) {
99
+ $email = $this->options['uptolike_email'];
100
+ } else $email = get_option('admin_email');
101
+ $partnerId = 'cms';
102
+ $projectId = 'cms' . preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
103
+ $projectId = str_replace('.','',$projectId);
104
+ $projectId = str_replace('-','',$projectId);
105
+ $options = get_option('my_option_name');
106
+ if (is_array($options) && array_key_exists('id_number', $options)) {
107
+ $cryptKey = $options['id_number'];
108
+ } else $cryptKey = '';
109
+ ?>
110
+ <script type="text/javascript">
111
+ <?php include('main.js'); ?>
112
+ </script>
113
+ <style type="text/css">
114
+ <?php include('uptolike_style.css')?>
115
+ </style>
116
+ <div id="uptolike_site_url" style="display: none"><?php echo get_site_url();?></div>
117
+ <div class="wrap">
118
+ <h2 class="placeholder">&nbsp;</h2>
119
+ <div id="wrapper">
120
+ <form id="settings_form" method="post" action="options.php">
121
+ <h1> UpToLike виджет</h1>
122
+ <h2 class="nav-tab-wrapper">
123
+ <a class="nav-tab nav-tab-active" href="#" id="construct">
124
+ Конструктор
125
+ </a>
126
+ <a class="nav-tab" href="#" id="stat">
127
+ Статистика
128
+ </a>
129
+ <a class="nav-tab" href="#" id="settings">
130
+ Настройки
131
+ </a>
132
+ </h2>
133
+ <div class="wrapper-tab active" id="con_construct">
134
+ <iframe id='cons_iframe' style='height: 445px;width: 100%;' data-src="<?php echo $this->constructorIframe($projectId, $partnerId, $email, $cryptKey); ?>"></iframe>
135
+ <br>
136
+ <a onclick="getCode();" href="#">
137
+ <button type="reset">Сохранить изменения</button>
138
+ </a>
139
+ </div>
140
+ <div class="wrapper-tab" id="con_stat">
141
+ <iframe style="width: 100%;height: 380px;" id="stats_iframe" data-src="<?php echo $this->statIframe($projectId, $partnerId, $email, $cryptKey); ?>">
142
+ </iframe>
143
+ <div id="before_key_req">Введите ваш адрес электронной почты для получения ключа.</div>
144
+ <div id="after_key_req">На ваш адрес электронной почты отправлен секретный ключ. Введите его в поле ниже<br/>
145
+ Если письмо с ключом долго не приходит, возможно оно попало в Спам.<br/><br/>
146
+ Если ключ так и не был получен напишите письмо в службу поддержки: <a href="mailto:uptolikeshare@gmail.com">uptolikeshare@gmail.com</a><br/>
147
+ В письме пришлите, пожалуйста, адрес вашего сайта и адрес электронной почты, указанный в плагине.<br/>
148
+ </div>
149
+ <table>
150
+ <tr id="email_tr"> <td>Email: </td> <td> <input type="text" id="uptolike_email_field"> </td> </tr>
151
+ <tr id="cryptkey_field"> <td>Ключ: </td> <td> <input type="text" id="uptolike_cryptkey"> </td> </tr>
152
+ <tr id="get_key_btn_field"> <td> </td> <td> <button id="get_key" type="button"> Получить ключ </button> </td> </tr>
153
+ <tr id="bad_key_field"><td colspan="2" >Введен неверный ключ! Убедитесь что вы скопировали ключ без лишних символов (пробелов и т.д.)</td></tr>
154
+ <tr id="foreignAccess_field"><td colspan="2" >Данный проект принадлежит другому пользователю. Обратитесь в службу поддержки</td></tr>
155
+ <tr id="key_auth_field"> <td> </td> <td> <button id="auth" type="button"> Авторизация </button> </td> </tr>
156
+ </table>
157
+ <div>Обратная связь: <a href="mailto:uptolikeshare@gmail.com">uptolikeshare@gmail.com</a></div>
158
+ </div>
159
+ <div class="wrapper-tab" id="con_settings">
160
+ <div class="utl_left_block">
161
+ <?php
162
+ settings_fields('my_option_group');
163
+ do_settings_sections('uptolike_settings');
164
+ ?>
165
+ <input type="submit" name="submit_btn" value="Cохранить изменения">
166
+ <br>
167
+ </div>
168
+ <div class="utl_right_block">
169
+ <div class="utl_blok1" >
170
+ <div class="utl_blok2" >
171
+ <div class="utl_logo utl_i_logo">
172
+ </div>
173
+ </div>
174
+ <div class="utl_innertext" >Для вставки шорткода в .php файл шаблона нужно использовать конструкцию
175
+ <br><b><i>
176
+ &lt;?php echo do_shortcode("[uptolike]"); ?&gt;<br></i></b>
177
+ Для вставки в режиме визуального редактора достаточно вставить<b> <i>[uptolike]</i></b>.</div>
178
+ </div>
179
+ <div class="utl_blok1" >
180
+ <div class="utl_blok2" >
181
+ <div class="utl_logo utl_like_logo">
182
+ </div>
183
+ </div>
184
+ <div class="utl_innertext" >Данный плагин полностью бесплатен. Мы регулярно его улучшаем и добавляем новые функции.<br>
185
+ Пожалуйста, оставьте свой отзыв на <a href="https://wordpress.org/support/view/plugin-reviews/uptolike-share">данной странице</a>. Спасибо! <br>
186
+ </div>
187
+ </div>
188
+ <div class="utl_blok1" >
189
+ <div class="utl_blok2" >
190
+ <div class="utl_logo utl_mail_logo">
191
+ </div>
192
+ </div>
193
+ <div class="utl_innertext" ><a href="http://uptolike.ru">Uptolike.ru</a> - конструктор социальных кнопок для вашего сайта с расширенным функционалом.<br>
194
+ Служба поддержки: <a href="mailto:uptolikeshare@gmail.com">uptolikeshare@gmail.com</a></div>
195
+ </div>
196
+ </div>
197
+
198
+ </div>
199
+ </form>
200
+ </div>
201
+ </div>
202
+ <?php
203
+ }
204
+
205
+ public function page_init()
206
+ {
207
+ register_setting(
208
+ 'my_option_group', // Option group
209
+ 'my_option_name', // Option name
210
+ array($this, 'sanitize') // Sanitize
211
+ );
212
+
213
+ add_settings_section(
214
+ 'setting_section_id', // ID
215
+ 'Настройки отображения блока Uptolike', // Title
216
+ array($this, 'print_section_info'), // Callback
217
+ $this->settings_page_name//'my-setting-admin' // Page
218
+ );
219
+
220
+ add_settings_field(
221
+ 'widget_code', // ID
222
+ 'код виджета', // Title
223
+ array($this, 'widget_code_callback'), // Callback
224
+ $this->settings_page_name, //'my-setting-admin', // Page
225
+ 'setting_section_id' // Section
226
+ );
227
+
228
+ add_settings_field(
229
+ 'data_pid', // ID
230
+ 'Ключ(CryptKey)', // Title
231
+ array($this, 'id_number_callback'), // Callback
232
+ $this->settings_page_name, //'my-setting-admin', // Page
233
+ 'setting_section_id' // Section
234
+ );
235
+
236
+ add_settings_field(
237
+ 'email', //ID
238
+ 'email для регистрации',
239
+ array($this, 'uptolike_email_callback'),
240
+ $this->settings_page_name, //'my-setting-admin',
241
+ 'setting_section_id'
242
+ );
243
+
244
+ /* add_settings_field(
245
+ 'on_main_static', //ID
246
+ 'Располагать на главной странице в фиксированном блоке',
247
+ array($this, 'uptolike_on_main_static_callback'),
248
+ $this->settings_page_name, //'my-setting-admin',
249
+ 'setting_section_id'
250
+ );
251
+ */
252
+
253
+ add_settings_field(
254
+ 'on_main', //ID
255
+ 'На главной странице ',
256
+ array($this, 'uptolike_on_main_callback'),
257
+ $this->settings_page_name, //'my-setting-admin',
258
+ 'setting_section_id'
259
+ );
260
+
261
+ add_settings_field(
262
+ 'on_page', //ID
263
+ 'На статических страницах',
264
+ array($this, 'uptolike_on_page_callback'),
265
+ $this->settings_page_name, //'my-setting-admin',
266
+ 'setting_section_id'
267
+ );
268
+
269
+ add_settings_field(
270
+ 'on_archive', //ID
271
+ 'В анонсах постов',
272
+ array($this, 'uptolike_on_archive_callback'),
273
+ $this->settings_page_name, //'my-setting-admin',
274
+ 'setting_section_id'
275
+ );
276
+
277
+ add_settings_field(
278
+ 'on_special_pages', //ID
279
+ 'На спец. страницах <p class="utl_quest"><img class="utl_quest" src="/wp-content/plugins/uptolike-share/quest.png"><span class="utl_quest">Отображение блока кнопок на страницах, созданных плагинами (WooCommerce, WP-Shop и т.д.)</span></p>',
280
+ array($this, 'uptolike_on_special_pages_callback'),
281
+ $this->settings_page_name, //'my-setting-admin',
282
+ 'setting_section_id'
283
+ );
284
+
285
+ add_settings_field(
286
+ 'widget_position', //ID
287
+ 'Расположение блока',
288
+ array($this, 'uptolike_widget_position_callback'),
289
+ $this->settings_page_name, //'my-setting-admin',
290
+ 'setting_section_id'
291
+ );
292
+
293
+ add_settings_field(
294
+ 'widget_align', //ID
295
+ 'Выравнивание блока',
296
+ array($this, 'uptolike_widget_align_callback'),
297
+ $this->settings_page_name, //'my-setting-admin',
298
+ 'setting_section_id'
299
+ );
300
+
301
+ add_settings_field(
302
+ 'widget_mode', //ID
303
+ 'Режим работы',
304
+ array($this, 'uptolike_widget_mode_callback'),
305
+ $this->settings_page_name, //'my-setting-admin',
306
+ 'setting_section_id'
307
+ );
308
+
309
+ add_settings_field(
310
+ 'utl_language', //ID
311
+ 'Язык',
312
+ array($this, 'uptolike_utl_language_callback'),
313
+ $this->settings_page_name, //'my-setting-admin',
314
+ 'setting_section_id'
315
+ );
316
+
317
+ /* add_settings_field(
318
+ 'feedback', //ID
319
+ 'Обратная связь',
320
+ array($this, 'uptolike_feedback_callback'),
321
+ $this->settings_page_name, //'my-setting-admin',
322
+ 'setting_section_id'
323
+ );
324
+ */
325
+
326
+ add_settings_field(
327
+ 'uptolike_json', //ID
328
+ 'настройки конструктора',
329
+ array($this, 'uptolike_json_callback'),
330
+ $this->settings_page_name, //'my-setting-admin',
331
+ 'setting_section_id'
332
+ );
333
+ }
334
+
335
+ /**
336
+ * Sanitize each setting field as needed
337
+ *
338
+ * @param array $input Contains all settings fields as array keys
339
+ */
340
+ public function sanitize($input)
341
+ {
342
+ $new_input = array();
343
+ if (isset($input['id_number']))
344
+ $new_input['id_number'] = str_replace(' ','',$input['id_number']);
345
+
346
+ if (isset($input['widget_code']))
347
+ $new_input['widget_code'] = $input['widget_code'];
348
+
349
+ if (isset($input['uptolike_email']))
350
+ $new_input['uptolike_email'] = $input['uptolike_email'];
351
+
352
+ if (isset($input['before_content']))
353
+ $new_input['before_content'] = $input['before_content'];
354
+
355
+ if (isset($input['on_main_static'])) {
356
+ $new_input['on_main_static'] = 1;
357
+ } else $new_input['on_main_static'] = 0;
358
+
359
+ if (isset($input['on_main'])) {
360
+ $new_input['on_main'] = 1;
361
+ } else $new_input['on_main'] = 0;
362
+
363
+ if (isset($input['on_page'])) {
364
+ $new_input['on_page'] = 1;
365
+ } else $new_input['on_page'] = 0;
366
+
367
+ if (isset($input['on_special_pages'])) {
368
+ $new_input['on_special_pages'] = 1;
369
+ } else $new_input['on_special_pages'] = 0;
370
+
371
+ if (isset($input['on_archive'])) {
372
+ $new_input['on_archive'] = 1;
373
+ } else $new_input['on_archive'] = 0;
374
+
375
+ if (isset($input['email']))
376
+ $new_input['email'] = $input['email'];
377
+
378
+ if (isset($input['after_content']))
379
+ $new_input['after_content'] = $input['after_content'];
380
+
381
+ if (isset($input['widget_position']))
382
+ $new_input['widget_position'] = $input['widget_position'];
383
+
384
+ if (isset($input['widget_mode']))
385
+ $new_input['widget_mode'] = $input['widget_mode'];
386
+
387
+ if (isset($input['widget_align']))
388
+ $new_input['widget_align'] = $input['widget_align'];
389
+
390
+ if (isset($input['utl_language']))
391
+ $new_input['utl_language'] = $input['utl_language'];
392
+
393
+
394
+ if (isset($input['uptolike_json']))
395
+ $new_input['uptolike_json'] = $input['uptolike_json'];
396
+
397
+ return $new_input;
398
+ }
399
+
400
+
401
+ public function print_section_info()
402
+ {
403
+ //print 'Enter your settings below:';
404
+ }
405
+
406
+ public function widget_code_callback()
407
+ {
408
+ printf(
409
+ '<textarea id="widget_code" name="my_option_name[widget_code]" >%s</textarea>',
410
+ isset($this->options['widget_code']) ? esc_attr($this->options['widget_code']) : ''
411
+ );
412
+ }
413
+
414
+ /** 12536473050877
415
+ * Get the settings option array and print one of its values
416
+ */
417
+ public function id_number_callback()
418
+ {
419
+ printf(
420
+ '<input type="text" class="id_number" name="my_option_name[id_number]" value="%s" />',
421
+ isset($this->options['id_number']) ? esc_attr($this->options['id_number']) : ''
422
+ );
423
+ }
424
+
425
+ public function uptolike_email_callback()
426
+ {
427
+ printf(
428
+ '<input type="text" id="uptolike_email" name="my_option_name[uptolike_email]" value="%s" />',
429
+ isset($this->options['uptolike_email']) ? esc_attr($this->options['uptolike_email']) : ''
430
+ );
431
+ }
432
+
433
+ public function uptolike_json_callback()
434
+ {
435
+ printf(
436
+ '<input type="hidden" id="uptolike_json" name="my_option_name[uptolike_json]" value="%s" />',
437
+ isset($this->options['uptolike_json']) ? esc_attr($this->options['uptolike_json']) : ''
438
+ );
439
+ }
440
+
441
+ public function uptolike_partner_id_callback()
442
+ {
443
+ printf(
444
+ '<input type="text" id="uptolike_partner" name="my_option_name[uptolike_partner]" value="%s" />',
445
+ isset($this->options['uptolike_partner']) ? esc_attr($this->options['uptolike_partner']) : ''
446
+ );
447
+ }
448
+
449
+ public function uptolike_feedback_callback()
450
+ {
451
+ echo '<a href="mailto:uptolikeshare@gmail.com" target="_top"> uptolikeshare@gmail.com</a>';
452
+ }
453
+
454
+ public function uptolike_project_callback()
455
+ {
456
+ printf(
457
+ '<input type="text" id="uptolike_project" name="my_option_name[uptolike_project]" value="%s" />',
458
+ isset($this->options['uptolike_project']) ? esc_attr($this->options['uptolike_project']) : ''
459
+ );
460
+ }
461
+
462
+ public function uptolike_on_main_static_callback()
463
+ {
464
+ echo '<input type="checkbox" id="on_main_static" name="my_option_name[on_main_static]"';
465
+ echo ($this->options['on_main_static'] == '1' ? 'checked="checked"' : ''); echo ' />';
466
+
467
+ }
468
+
469
+ public function uptolike_on_main_callback()
470
+ {
471
+ echo '<input type="checkbox" id="on_main" name="my_option_name[on_main]"';
472
+ echo ($this->options['on_main'] == '1' ? 'checked="checked"' : ''); echo ' />';
473
+
474
+ }
475
+ public function uptolike_on_page_callback()
476
+ {
477
+ echo '<input type="checkbox" id="on_page" name="my_option_name[on_page]"';
478
+ echo ($this->options['on_page'] == '1' ? 'checked="checked"' : ''); echo ' />';
479
+
480
+ }
481
+ public function uptolike_on_special_pages_callback()
482
+ {
483
+ echo '<input type="checkbox" id="on_special_pages" name="my_option_name[on_special_pages]"';
484
+ echo ($this->options['on_special_pages'] == '1' ? 'checked="checked"' : ''); echo ' />';
485
+
486
+ }
487
+
488
+
489
+ public function uptolike_on_archive_callback()
490
+ {
491
+ echo '<input type="checkbox" id="on_archive" name="my_option_name[on_archive]"';
492
+ echo ($this->options['on_archive'] == '1' ? 'checked="checked"' : ''); echo ' />';
493
+
494
+ }
495
+
496
+ public function uptolike_widget_mode_callback()
497
+ {
498
+ $plg_mode = $code_mode = $both_mode = $default = '';
499
+
500
+ if (isset($this->options['widget_mode'])) {
501
+ if ('plg' == $this->options['widget_mode']) {
502
+ $plg_mode = "selected='selected'";
503
+ } elseif ('code' == $this->options['widget_mode']) {
504
+ $code_mode = "selected='selected'";
505
+ } elseif ('both' == $this->options['widget_mode']) {
506
+ $both_mode = "selected='selected'";
507
+ }
508
+ } else {
509
+ $my_options = get_option('my_option_name');
510
+ $my_options['widget_mode'] = 'plg'; // cryptkey store
511
+ update_option('my_option_name', $my_options);
512
+ }
513
+ //$default = "selected='selected'";
514
+ echo "<select id='widget_mode' name='my_option_name[widget_mode]'>
515
+ <option {$plg_mode} value='plg'>Плагин</option>
516
+ <option {$code_mode} value='code'>Шорткод</option>
517
+ <option {$both_mode} value='both'>Плагин и шорткод</option>
518
+ </select>";
519
+ }
520
+
521
+ public function uptolike_widget_align_callback()
522
+ {
523
+ $left = $right = $center = $default = '';
524
+
525
+ if (isset($this->options['widget_align'])) {
526
+ if ('left' == $this->options['widget_align']) {
527
+ $left = "selected='selected'";
528
+ } elseif ('right' == $this->options['widget_align']) {
529
+ $right = "selected='selected'";
530
+ } elseif ('center' == $this->options['widget_align']) {
531
+ $center = "selected='selected'";
532
+ }
533
+ } else {
534
+ $my_options = get_option('my_option_name');
535
+ $my_options['widget_align'] = 'left'; // cryptkey store
536
+ update_option('my_option_name', $my_options);
537
+ }
538
+
539
+ echo "<select id='widget_align' name='my_option_name[widget_align]'>
540
+ <option {$left} value='left'>По левому краю</option>
541
+ <option {$right} value='right'>По правому краю</option>
542
+ <option {$center} value='center'>По центру</option>
543
+ </select>";
544
+ }
545
+
546
+ public function uptolike_widget_position_callback()
547
+ {
548
+ $top = $bottom = $both = $default = '';
549
+
550
+ if (isset($this->options['widget_position'])) {
551
+ if ('top' == $this->options['widget_position']) {
552
+ $top = "selected='selected'";
553
+ } elseif ('bottom' == $this->options['widget_position']) {
554
+ $bottom = "selected='selected'";
555
+ } elseif ('both' == $this->options['widget_position']) {
556
+ $both = "selected='selected'";
557
+ } else {
558
+ $bottom = "selected='selected'";
559
+ }
560
+ } else {
561
+ $my_options = get_option('my_option_name');
562
+ $my_options['widget_position'] = 'bottom'; // cryptkey store
563
+ update_option('my_option_name', $my_options);
564
+ }
565
+ $default = "selected='selected'";
566
+ echo "<select id='widget_position' name='my_option_name[widget_position]'>
567
+ <option {$top} value='top'>Только сверху</option>
568
+ <option {$bottom} value='bottom'>Только снизу</option>
569
+ <option {$both} value='both'>Сверху и снизу</option>
570
+ </select>";
571
+ }
572
+
573
+ public function uptolike_utl_language_callback() {
574
+ // $top = $bottom = $both = $default = '';
575
+ $ru = $en = $ua = $de = $es = $it = $pl = $lt = $default = '';
576
+ if (isset($this->options['utl_language'])) {
577
+ if ('ru' == $this->options['utl_language']) {
578
+ $ru = "selected='selected'";
579
+ } elseif ('en' == $this->options['utl_language']) {
580
+ $en = "selected='selected'";
581
+ } elseif ('ua' == $this->options['utl_language']) {
582
+ $ua = "selected='selected'";
583
+ } elseif ('de' == $this->options['utl_language']) {
584
+ $de = "selected='selected'";
585
+ } elseif ('es' == $this->options['utl_language']) {
586
+ $es = "selected='selected'";
587
+ } elseif ('it' == $this->options['utl_language']) {
588
+ $it = "selected='selected'";
589
+ } elseif ('pl' == $this->options['utl_language']) {
590
+ $pl = "selected='selected'";
591
+ } elseif ('lt' == $this->options['utl_language']) {
592
+ $lt = "selected='selected'";
593
+ } else {
594
+ $ru = "selected='selected'";
595
+ }
596
+ } else {
597
+ $my_options = get_option('my_option_name');
598
+ $my_options['utl_language'] = 'ru'; // cryptkey store
599
+ update_option('my_option_name', $my_options);
600
+ //$ru = "selected='selected'";
601
+ }
602
+ //$default = "selected='selected'";
603
+ echo "<select id='widget_position' name='my_option_name[utl_language]'>
604
+ <option {$ru} value='ru'>Русский</option>
605
+ <option {$en} value='en'>Английский</option>
606
+ <option {$ua} value='ua'>Украинский</option>
607
+ <option {$de} value='de'>Немецкий</option>
608
+ <option {$es} value='es'>Испанский</option>
609
+ <option {$it} value='it'>Итальянский</option>
610
+ <option {$pl} value='pl'>Латвийский</option>
611
+ <option {$lt} value='lt'>Польский</option>
612
+ </select>";
613
+ }
614
+ }
615
+
616
+ function get_widget_code($url='') {
617
+ $options = get_option('my_option_name');
618
+ $widget_code = $options['widget_code'];
619
+ $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,strpos( $_SERVER["SERVER_PROTOCOL"],'/'))).'://';
620
+ if ($url == ''){
621
+ if(is_single()) { $url = get_permalink();} else $url = $protocol.$_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
622
+ }
623
+
624
+ $domain = preg_replace('/^www\./', '', get_site_url());
625
+ $data_pid = 'cms'.str_replace(array('https://','http://','.','-'),'',$domain);
626
+
627
+ $widget_code = str_replace('data-pid="-1"','data-pid="' . $data_pid . '"',$widget_code);
628
+ $widget_code = str_replace('data-pid=""','data-pid="' . $data_pid . '"',$widget_code);
629
+ $widget_code = str_replace('div data', 'div data-url="' . $url . '" data', $widget_code);
630
+ $align = $options['widget_align'];
631
+
632
+ $align_style = 'style=" text-align: '.$align.';"';
633
+ $widget_code = str_replace('div data-', 'div data-lang="' . $options['utl_language'] . '" data-', $widget_code);
634
+ $widget_code = str_replace('<div ', '<div '.$align_style.' ', $widget_code);
635
+
636
+ return $widget_code;
637
+ }
638
+ function add_widget($content)
639
+ {
640
+ //echo
641
+ $options = get_option('my_option_name');
642
+ $widget_mode = $options['widget_mode'];
643
+ if (is_array($options) && (($widget_mode == 'plg') or ($widget_mode == 'both')) && array_key_exists('widget_code', $options)) {
644
+ //$widget_code = get_widget_code();
645
+ if (is_page()) {//это страница
646
+ if ($options['on_page'] == 1) {
647
+ switch ($options['widget_position']) {
648
+ case 'both':
649
+ return get_widget_code().$content.get_widget_code();
650
+ case 'top':
651
+ return get_widget_code().$content;
652
+ case 'bottom':
653
+ return $content.get_widget_code();
654
+ }
655
+ } else return $content;
656
+ } elseif (is_archive()) {
657
+ if ($options['on_archive'] == 1) {
658
+ switch ($options['widget_position']) {
659
+ case 'both':
660
+ return get_widget_code(get_permalink()).$content.get_widget_code(get_permalink());
661
+ case 'top':
662
+ return get_widget_code(get_permalink()).$content;
663
+ case 'bottom':
664
+ return $content.get_widget_code(get_permalink());
665
+ }
666
+ } else return $content;
667
+ } elseif (is_front_page()) {
668
+ if ($options['on_main'] == 1) {
669
+ switch ($options['widget_position']) {
670
+ case 'both':
671
+ return get_widget_code(get_permalink()).$content.get_widget_code(get_permalink());
672
+ case 'top':
673
+ return get_widget_code(get_permalink()).$content;
674
+ case 'bottom':
675
+ return $content.get_widget_code(get_permalink());
676
+ }
677
+ } else return $content;
678
+ } else {
679
+ switch ($options['widget_position']) {
680
+ case 'both':
681
+ return get_widget_code().$content.get_widget_code();
682
+ case 'top':
683
+ return get_widget_code().$content;
684
+ case 'bottom':
685
+ return $content.get_widget_code();
686
+ }
687
+ };
688
+
689
+ } else {
690
+ return $content;
691
+ }
692
+ }
693
+
694
+ add_filter('the_content', 'add_widget', 100);
695
+
696
+ function uptolike_shortcode( $atts ){
697
+ $options = get_option('my_option_name');
698
+ $widget_mode = $options['widget_mode'];
699
+ if(($widget_mode == 'code') or ($widget_mode == 'both')) {
700
+ return get_widget_code();
701
+ };
702
+ }
703
+ add_shortcode( 'uptolike', 'uptolike_shortcode' );
704
+
705
+ function my_widgetcode_notice()
706
+ {
707
+ $options = get_option('my_option_name');
708
+ if (is_array($options) && array_key_exists('widget_code', $options)) {
709
+ $widget_code = $options['widget_code'];
710
+ if ('' == $widget_code) {
711
+ echo " <div class='updated'>
712
+ <p>В настройках UpToLike 'Конструктор' выберите тип виджета и нажмите 'Сохранить'</p>
713
+ </div>";
714
+ }
715
+ };
716
+ }
717
+
718
+ function logger($str)
719
+ {
720
+ file_put_contents(WP_PLUGIN_DIR . '/uptolike/log.txt', date(DATE_RFC822) . $str . PHP_EOL, FILE_APPEND | LOCK_EX);
721
+ }
722
+
723
+ function try_reg()
724
+ {
725
+ include('api_functions.php');
726
+ $domain = preg_replace('/^www\./', '', $_SERVER['HTTP_HOST']);
727
+ $options = get_option('my_option_name');
728
+ $email = $options['uptolike_email'];
729
+ if ('' == $options['id_number']) {
730
+ $reg_ans = userReg($email, 'cms', 'cms' . $domain);
731
+ if (is_string($reg_ans)) {
732
+ $my_options = get_option('my_option_name');
733
+ $my_options['id_number'] = $reg_ans; // cryptkey store
734
+ $my_options['choice'] = 'reg';
735
+ update_option('my_option_name', $my_options);
736
+ };
737
+ update_option('reg_try', true);
738
+ }
739
+ }
740
+
741
+ function my_choice_notice()
742
+ {
743
+ $options = get_option('my_option_name');
744
+ if (is_bool($options) or (('' == $options['id_number']) and ((!array_key_exists('choice', $options)) OR ('ignore' !== $options['choice'])))) {
745
+ echo "<div class='updated' style='
746
+ background: #fff url(//uptolike.com/img/logo.png) no-repeat 2px;
747
+ padding-left: 50px;
748
+ padding-top: 15px;
749
+ padding-bottom: 15px;'>Кнопки Uptolike успешно установлены! <a href='options-general.php?page=uptolike_settings&choice=ignore' style='float: right;'>Закрыть</a></div>";
750
+ };
751
+ }
752
+
753
+ function set_default_code()
754
+ {
755
+ $options = get_option('my_option_name');
756
+ if (is_bool($options)) {
757
+ $options = array();
758
+ }
759
+ $domain = get_site_url();
760
+ $domain = str_replace(array('http://','https://','.','-','www.'),'',$domain);
761
+ $data_url = 'cms' . $_SERVER['HTTP_HOST'];
762
+ $data_pid = 'cms'.$domain;
763
+ $code = <<<EOD
764
+ <script type="text/javascript">(function (w, doc) {
765
+ if (!w.__utlWdgt) {
766
+ w.__utlWdgt = true;
767
+ var d = doc, s = d.createElement('script'), g = 'getElementsByTagName';
768
+ s.type = 'text/javascript';
769
+ s.charset = 'UTF-8';
770
+ s.async = true;
771
+ s.src = ('https:' == w.location.protocol ? 'https' : 'http') + '://w.uptolike.com/widgets/v1/uptolike.js';
772
+ var h = d[g]('body')[0];
773
+ h.appendChild(s);
774
+ }
775
+ })(window, document);
776
+ </script>
777
+ <div data-url data-background-alpha="0.0" data-orientation="horizontal" data-text-color="000000" data-share-shape="round-rectangle" data-buttons-color="ff9300" data-sn-ids="fb.tw.ok.vk.gp.mr." data-counter-background-color="ffffff" data-share-counter-size="11" data-share-size="30" data-background-color="ededed" data-share-counter-type="common" data-pid data-counter-background-alpha="1.0" data-share-style="1" data-mode="share" data-following-enable="false" data-like-text-enable="false" data-selection-enable="true" data-icon-color="ffffff" class="uptolike-buttons">
778
+ </div>
779
+ EOD;
780
+
781
+ $code = str_replace('data-pid', 'data-pid="' . $data_pid . '"', $code);
782
+ $code = str_replace('data-url', 'data-url="' . $data_url . '"', $code);
783
+ $options['widget_code'] = $code;
784
+ $options['on_main_static'] = 1;
785
+ $options['on_main'] = 1;
786
+ $options['on_page'] = 0;
787
+ $options['on_special_pages'] = 1;
788
+ $options['on_archive'] = 1;
789
+ $options['widget_position'] = 'bottom';
790
+ $options['widget_align'] = 'left';
791
+ update_option('my_option_name', $options);
792
+ }
793
+
794
+ function choice_helper($choice)
795
+ {
796
+ $options = get_option('my_option_name');
797
+ $options['choice'] = $choice;
798
+ if ('ignore' == $choice) {
799
+ set_default_code();
800
+ }
801
+ update_option('my_option_name', $options);
802
+ }
803
+
804
+ function usb_admin_actions()
805
+ {
806
+ if ( current_user_can('manage_options') ) {
807
+ if (function_exists('add_meta_box')) {
808
+ add_menu_page("UpToLike", "UpToLike", "manage_options", "UpToLike", 'my_custom_menu_page', plugins_url('uptolike-share/logo-small.png'));
809
+ }
810
+ }
811
+ }
812
+
813
+ function my_custom_menu_page(){
814
+ include_once( 'usb-admin.php' );
815
+ }
816
+
817
+ function headeruptolike(){
818
+ $options = get_option('my_option_name');
819
+ if ($options['on_special_pages'] == 1) {
820
+
821
+ //echo 'run on spec pages';
822
+ $in_content = array(0,1);
823
+ $in_fixed_block = array(2,3,4,5);
824
+ $curr_value = json_decode($options['uptolike_json'])->orientation;
825
+ if (in_array($curr_value,$in_content)) {
826
+ // echo 'in content';
827
+ } elseif (in_array($curr_value,$in_fixed_block)){
828
+ if (is_page()) {//это страница
829
+ if ($options['on_page'] == 1) echo get_widget_code();
830
+ } elseif (is_archive()) {
831
+ if ($options['on_archive'] == 1) echo get_widget_code();
832
+ } elseif (is_front_page()) {
833
+ if ($options['on_main'] == 1) echo get_widget_code();
834
+ } else { echo get_widget_code();
835
+ };
836
+ //echo 'in_fixed_block';
837
+ }
838
+ }
839
+ }
840
+
841
+ class UptolikeWidget extends WP_Widget {
842
+
843
+ function UptolikeWidget() {
844
+ // Instantiate the parent object
845
+ parent::__construct( false, 'Блок кнопок UpToLike' );
846
+ }
847
+
848
+ function widget( $args, $instance ) {
849
+ echo get_widget_code();
850
+ //echo 'uptolike widget';
851
+ // Widget outputo
852
+ }
853
+
854
+ function update( $new_instance, $old_instance ) {
855
+ // Save widget options
856
+ }
857
+
858
+ function form( $instance ) {
859
+ // Output admin widget options form
860
+ }
861
+ }
862
+
863
+ function uptolike_register_widgets() {
864
+ register_widget( 'UptolikeWidget' );
865
+ }
866
+
867
+ register_activation_hook(__FILE__,'usb_admin_actions');
868
+
869
+ add_action( 'widgets_init', 'uptolike_register_widgets' );
870
+ add_action('wp_footer', 'headeruptolike', 1);
871
+ add_action('admin_notices', 'my_choice_notice');
872
+ add_action('admin_notices', 'my_widgetcode_notice');
873
+ add_action('admin_menu', 'usb_admin_actions');
874
+
875
+ $options = get_option('my_option_name');
876
+
877
+ if (is_admin()) {
878
+ $options = get_option('my_option_name');
879
+ if (array_key_exists('regme', $_REQUEST)) {
880
+ try_reg();
881
+ }
882
+ if (array_key_exists('choice', $_REQUEST)) {
883
+ choice_helper($_REQUEST['choice']);
884
+ }
885
+ $my_settings_page = new MySettingsPage();
886
+ if (is_bool($options) OR (!array_key_exists('widget_code', $options)) OR ('' == $options['widget_code'])) {
887
+ set_default_code();
888
+ }
889
+ }