Uptolike Social Share Buttons - Version 1.4.4

Version Description

  • Bug fix
Download this release

Release Info

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

Version 1.4.4

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