Spam protection, AntiSpam, FireWall by CleanTalk - Version 5.138

Version Description

May 14 2020 = * Fix: Scan users fixed. * Fix: Notice fixed (Creating default object from empty value). * Fix: Creating table for SFW data for child blogs on WPMS. * Upd: SFW query optimized. * Fix: Adding cleantalk_spamscan_logs table for each blog when updating from 5.137.2. * New: White Lists for SFW implemented. * Fix: correct comments checking status text. * Fix: Users scan. Reducing memory load. * Fix: "Capture Buffer" settings. The issue with YoastSEO. * Fix: SFW query fixed. * Fix: SFW die page fixed. * Fix: Membermouse API false positives. * Fix: gz*() functions calling from global namespace for now.

Download this release

Release Info

Developer glomberg
Plugin Icon 128x128 Spam protection, AntiSpam, FireWall by CleanTalk
Version 5.138
Comparing to
See all releases

Code changes from version 5.137.1 to 5.138

cleantalk.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Anti-Spam by CleanTalk
4
  Plugin URI: https://cleantalk.org
5
  Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
6
- Version: 5.137.1
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: https://cleantalk.org
9
  Text Domain: cleantalk
@@ -644,6 +644,7 @@ function apbct_activation( $network = false ) {
644
  $sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_sfw` (
645
  `network` int(11) unsigned NOT NULL,
646
  `mask` int(11) unsigned NOT NULL,
 
647
  INDEX ( `network` , `mask` )
648
  );';
649
 
@@ -662,6 +663,16 @@ function apbct_activation( $network = false ) {
662
  `value` TEXT NULL DEFAULT NULL,
663
  `last_update` DATETIME NULL DEFAULT NULL,
664
  PRIMARY KEY (`name`(40), `id`(64)));';
 
 
 
 
 
 
 
 
 
 
665
 
666
  if($network && !defined('CLEANTALK_ACCESS_KEY')){
667
  $initial_blog = get_current_blog_id();
@@ -744,6 +755,16 @@ function apbct_activation__new_blog($blog_id, $user_id, $domain, $path, $site_id
744
  `value` TEXT NULL DEFAULT NULL,
745
  `last_update` DATETIME NULL DEFAULT NULL,
746
  PRIMARY KEY (`id`(64), `name`(64)));';
 
 
 
 
 
 
 
 
 
 
747
 
748
  // Cron tasks
749
  CleantalkCron::addTask('check_account_status', 'ct_account_status_check', 3600, time()+1800); // Checks account status
@@ -830,16 +851,18 @@ function apbct_deactivation__delete_all_options__in_network(){
830
 
831
  function apbct_deactivation__delete_common_tables() {
832
  global $wpdb;
833
- $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_sfw`;'); // Deleting SFW data
834
- $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_sfw_logs`;'); // Deleting SFW logs
835
- $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_sessions`;'); // Deleting session table
 
836
  }
837
 
838
  function apbct_deactivation__delete_blog_tables() {
839
  global $wpdb;
840
- $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->prefix.'cleantalk_sfw`;'); // Deleting SFW data
841
- $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->prefix.'cleantalk_sfw_logs`;'); // Deleting SFW logs
842
- $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->prefix.'cleantalk_sessions`;'); // Deleting session table
 
843
  }
844
 
845
  /**
3
  Plugin Name: Anti-Spam by CleanTalk
4
  Plugin URI: https://cleantalk.org
5
  Description: Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam, no registration spam, no contact spam, protects any WordPress forms.
6
+ Version: 5.138
7
  Author: СleanTalk <welcome@cleantalk.org>
8
  Author URI: https://cleantalk.org
9
  Text Domain: cleantalk
644
  $sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_sfw` (
645
  `network` int(11) unsigned NOT NULL,
646
  `mask` int(11) unsigned NOT NULL,
647
+ `status` TINYINT(1) NOT NULL DEFAULT 0,
648
  INDEX ( `network` , `mask` )
649
  );';
650
 
663
  `value` TEXT NULL DEFAULT NULL,
664
  `last_update` DATETIME NULL DEFAULT NULL,
665
  PRIMARY KEY (`name`(40), `id`(64)));';
666
+
667
+ $sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_spamscan_logs` (
668
+ `id` int(11) NOT NULL AUTO_INCREMENT,
669
+ `scan_type` varchar(11) NOT NULL,
670
+ `start_time` datetime NOT NULL,
671
+ `finish_time` datetime NOT NULL,
672
+ `count_to_scan` int(11) DEFAULT NULL,
673
+ `found_spam` int(11) DEFAULT NULL,
674
+ `found_bad` int(11) DEFAULT NULL,
675
+ PRIMARY KEY (`id`));';
676
 
677
  if($network && !defined('CLEANTALK_ACCESS_KEY')){
678
  $initial_blog = get_current_blog_id();
755
  `value` TEXT NULL DEFAULT NULL,
756
  `last_update` DATETIME NULL DEFAULT NULL,
757
  PRIMARY KEY (`id`(64), `name`(64)));';
758
+
759
+ $sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_spamscan_logs` (
760
+ `id` int(11) NOT NULL AUTO_INCREMENT,
761
+ `scan_type` varchar(11) NOT NULL,
762
+ `start_time` datetime NOT NULL,
763
+ `finish_time` datetime NOT NULL,
764
+ `count_to_scan` int(11) DEFAULT NULL,
765
+ `found_spam` int(11) DEFAULT NULL,
766
+ `found_bad` int(11) DEFAULT NULL,
767
+ PRIMARY KEY (`id`));';
768
 
769
  // Cron tasks
770
  CleantalkCron::addTask('check_account_status', 'ct_account_status_check', 3600, time()+1800); // Checks account status
851
 
852
  function apbct_deactivation__delete_common_tables() {
853
  global $wpdb;
854
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_sfw`;'); // Deleting SFW data
855
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_sfw_logs`;'); // Deleting SFW logs
856
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_sessions`;'); // Deleting session table
857
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_spamscan_logs`;'); // Deleting user/comments scan result table
858
  }
859
 
860
  function apbct_deactivation__delete_blog_tables() {
861
  global $wpdb;
862
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->prefix.'cleantalk_sfw`;'); // Deleting SFW data
863
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->prefix.'cleantalk_sfw_logs`;'); // Deleting SFW logs
864
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->prefix.'cleantalk_sessions`;'); // Deleting session table
865
+ $wpdb->query('DROP TABLE IF EXISTS `'. $wpdb->base_prefix.'cleantalk_spamscan_logs`;'); // Deleting user/comments scan result table
866
  }
867
 
868
  /**
i18n/cleantalk-ru_RU.po CHANGED
@@ -1,1536 +1,1536 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Anti-Spam by CleanTalk\n"
4
- "POT-Creation-Date: 2019-10-27 16:02+0000\n"
5
- "PO-Revision-Date: 2020-01-20 15:11+0000\n"
6
- "Last-Translator: admin <ievlev@cleantalk.org>\n"
7
- "Language-Team: Русский\n"
8
- "Language: ru_RU\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Generator: Loco https://localise.biz/\n"
13
- "X-Poedit-Basepath: ..\n"
14
- "X-Poedit-WPHeader: cleantalk.php\n"
15
- "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
16
- "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
17
- "X-Poedit-SourceCharset: UTF-8\n"
18
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
19
- "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
20
- "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
21
- "Report-Msgid-Bugs-To: \n"
22
- "X-Loco-Version: 2.3.1; wp-5.3.2\n"
23
- "X-Poedit-SearchPath-0: .\n"
24
- "X-Poedit-SearchPathExcluded-0: *.js\n"
25
-
26
- #: inc/classCleantalkComments.php:32 inc/cleantalk-comments.php:16
27
- #: inc/cleantalk-users.php:15
28
- msgid "Check for spam"
29
- msgstr "Проверить на спам"
30
-
31
- #: inc/classCleantalkComments.php:33 inc/cleantalk-admin.php:350
32
- #: inc/cleantalk-comments.php:16
33
- msgid "Find spam comments"
34
- msgstr "Найти спам в комментариях"
35
-
36
- #: inc/classCleantalkComments.php:66 inc/cleantalk-comments.php:26
37
- #: inc/cleantalk-users.php:25
38
- msgid "Plugin Settings"
39
- msgstr "Настройки плагина"
40
-
41
- #: inc/classCleantalkComments.php:76 inc/cleantalk-comments.php:35
42
- #: inc/cleantalk-users.php:34
43
- #, php-format
44
- msgid ""
45
- "Antispam hosting tariff does not allow you to use this feature. To do so, "
46
- "you need to enter an Access Key in the %splugin settings%s."
47
- msgstr ""
48
- "Тариф на антиспам хостинг не позволяет использовать эту функцию. Для этого "
49
- "вам необходимо ввести ключ доступа в %sнастройках плагина%s."
50
-
51
- #: inc/classCleantalkComments.php:101 inc/cleantalk-comments.php:60
52
- #: inc/cleantalk-users.php:60
53
- msgid ""
54
- "Ajax error. Process will be automatically restarted in 3 seconds. Status: "
55
- msgstr ""
56
- "Ajax ошибка. Процесс проверки будет автоматически возобновлен через 3 "
57
- "секунды. Статус:"
58
-
59
- #: inc/classCleantalkComments.php:108 inc/cleantalk-comments.php:67
60
- msgid ""
61
- "Please wait for a while. CleanTalk is deleting spam comments. Comments left: "
62
- msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-комментарии. Осталось:"
63
-
64
- #: inc/classCleantalkComments.php:118 inc/cleantalk-comments.php:77
65
- #: inc/cleantalk-users.php:77
66
- msgid "Start check"
67
- msgstr "Начать проверку"
68
-
69
- #: inc/classCleantalkComments.php:119 inc/cleantalk-comments.php:78
70
- #: inc/cleantalk-users.php:78
71
- msgid "Continue check"
72
- msgstr "Продолжить проверку"
73
-
74
- #: inc/classCleantalkComments.php:120 inc/cleantalk-comments.php:79
75
- msgid ""
76
- "The plugin will check all comments against blacklists database and show you "
77
- "senders that have spam activity on other websites."
78
- msgstr ""
79
- "Пожалуйста, подождите. CleanTalk проверяет комментарии по черным спискам на "
80
- "cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
81
- "работы."
82
-
83
- #: inc/classCleantalkComments.php:123 inc/cleantalk-comments.php:82
84
- #: inc/cleantalk-users.php:82
85
- msgid "Accurate check"
86
- msgstr "Точная проверка"
87
-
88
- #: inc/classCleantalkComments.php:125 inc/cleantalk-comments.php:84
89
- msgid ""
90
- "Allows to use comment's dates to perform more accurate check. Could "
91
- "seriously slow down the check."
92
- msgstr ""
93
- "Позволяет использовать даты комментариев для выполения более тщательной "
94
- "проверки. Может серьезно замедлить проверку."
95
-
96
- #: inc/classCleantalkComments.php:128 inc/cleantalk-comments.php:87
97
- #: inc/cleantalk-users.php:87
98
- msgid "Specify date range"
99
- msgstr "Указать диапазон дат"
100
-
101
- #: inc/classCleantalkComments.php:149 inc/cleantalk-comments.php:108
102
- msgid ""
103
- "Please wait! CleanTalk is checking all approved and pending comments via "
104
- "blacklist database at cleantalk.org. You will have option to delete found "
105
- "spam comments after plugin finish."
106
- msgstr ""
107
- "Пожалуйста, подождите! CleanTalk проверяет комментарии по черным спискам на "
108
- "cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
109
- "работы."
110
-
111
- #: inc/classCleantalkCommentsListTable.php:24
112
- msgid "Author"
113
- msgstr "Автор"
114
-
115
- #: inc/classCleantalkCommentsListTable.php:25 inc/cleantalk-comments.php:158
116
- msgid "Comment"
117
- msgstr "Комментарий"
118
-
119
- #: inc/classCleantalkCommentsListTable.php:26 inc/cleantalk-comments.php:159
120
- msgid "In Response To"
121
- msgstr "В ответ на"
122
-
123
- #: inc/classCleantalkCommentsListTable.php:33
124
- msgid "No spam comments."
125
- msgstr "Нет спам комментариев."
126
-
127
- #: inc/cleantalk-admin.php:27
128
- #, php-format
129
- msgid "Find spam %s"
130
- msgstr "Найти спам %s"
131
-
132
- #: inc/cleantalk-admin.php:31
133
- msgid "CleanTalk Anti-Spam Log"
134
- msgstr "CleanTalk Anti-Spam лог"
135
-
136
- #: inc/cleantalk-admin.php:50
137
- #, php-format
138
- msgid "%sRefresh%s"
139
- msgstr "%sОбновить%s"
140
-
141
- #: inc/cleantalk-admin.php:51
142
- #, php-format
143
- msgid "%sConfigure%s"
144
- msgstr "%sКонфигурация%s"
145
-
146
- #: inc/cleantalk-admin.php:68
147
- msgid "7 days anti-spam stats"
148
- msgstr "Статистика атак за 7 дней"
149
-
150
- #: inc/cleantalk-admin.php:72
151
- msgid "Top 5 spam IPs blocked"
152
- msgstr "Топ 5 cамых заблокированных IP"
153
-
154
- #: inc/cleantalk-admin.php:78
155
- msgid "Get Access key to activate Anti-Spam protection!"
156
- msgstr "Получите ключ доступа для активации спам защиты!"
157
-
158
- #: inc/cleantalk-admin.php:86
159
- #, php-format
160
- msgid "Something went wrong! Error: \"%s\"."
161
- msgstr "Что-то пошло не так: Ошибка: \"%s\"."
162
-
163
- #: inc/cleantalk-admin.php:90
164
- msgid "Please, visit your dashboard."
165
- msgstr "Пожалуйста, посетите панель управления."
166
-
167
- #: inc/cleantalk-admin.php:104
168
- msgid "IP"
169
- msgstr "IP"
170
-
171
- #: inc/cleantalk-admin.php:105
172
- msgid "Country"
173
- msgstr "Страна"
174
-
175
- #: inc/cleantalk-admin.php:106
176
- msgid "Block Count"
177
- msgstr "Заблкирован раз"
178
-
179
- #: inc/cleantalk-admin.php:134
180
- #, php-format
181
- msgid ""
182
- "This is the count from the %s's cloud and could be different to admin bar "
183
- "counters"
184
- msgstr ""
185
- "Это счетчик из %s облака, эти данные могут отличаться от данных счетчика в "
186
- "админ-баре."
187
-
188
- #. %s: Number of spam messages
189
- #: inc/cleantalk-admin.php:137
190
- #, php-format
191
- msgid ""
192
- "%s%s%s has blocked %s spam for all time. The statistics are automatically "
193
- "updated every 24 hours."
194
- msgstr ""
195
- "%s%s%s заблокировал %s спама за все время. Статистика автоматически "
196
- "обновляется каждый 24 часа."
197
-
198
- #: inc/cleantalk-admin.php:148 inc/cleantalk-settings.php:544
199
- #, php-format
200
- msgid "Do you like CleanTalk? %sPost your feedback here%s."
201
- msgstr "Вам понравился CleanTalk?%s Напишите свой отзыв здесь%s."
202
-
203
- #: inc/cleantalk-admin.php:234
204
- msgid "Translate"
205
- msgstr "Перевести"
206
-
207
- #: inc/cleantalk-admin.php:237
208
- msgid "Start here"
209
- msgstr "Начать здесь"
210
-
211
- #: inc/cleantalk-admin.php:238
212
- msgid "FAQ"
213
- msgstr "FAQ"
214
-
215
- #: inc/cleantalk-admin.php:239 inc/cleantalk-admin.php:644
216
- #: inc/cleantalk-settings.php:575
217
- msgid "Support"
218
- msgstr "Поддержка"
219
-
220
- #: inc/cleantalk-admin.php:306 inc/cleantalk-settings.php:523
221
- msgid "Hosting AntiSpam"
222
- msgstr "Hosting AntiSpam"
223
-
224
- #: inc/cleantalk-admin.php:333
225
- msgid "Failed from timeout. Going to check comments again."
226
- msgstr "Ошибка по таймауту. Попробовать еще раз?"
227
-
228
- #: inc/cleantalk-admin.php:334
229
- msgid "Added"
230
- msgstr "Добавлены"
231
-
232
- #: inc/cleantalk-admin.php:335 inc/cleantalk-admin.php:386
233
- msgid "Deleted"
234
- msgstr "Удалено"
235
-
236
- #: inc/cleantalk-admin.php:336
237
- msgid "comments"
238
- msgstr "комментарии"
239
-
240
- #: inc/cleantalk-admin.php:337
241
- msgid "Delete all spam comments?"
242
- msgstr "Удалить ВСЕ найденные спам-комментарии?"
243
-
244
- #: inc/cleantalk-admin.php:338
245
- msgid "Delete checked comments?"
246
- msgstr "Удалить отмеченые спам-комментарии?"
247
-
248
- #: inc/cleantalk-admin.php:339
249
- #, php-format
250
- msgid ""
251
- "Total comments %s. Checked %s. Found %s spam comments. %s bad comments "
252
- "(without IP or email)."
253
- msgstr ""
254
- "Всего комментариев %s. Проверено %s. Найдено %s спам комментариев. %s плохих "
255
- "комментариев (без IP и Email'а)."
256
-
257
- #: inc/cleantalk-admin.php:340 inc/cleantalk-admin.php:393
258
- #: inc/cleantalk-users.php:531
259
- msgid "Please do backup of WordPress database before delete any accounts!"
260
- msgstr ""
261
- "Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
262
- "аккаунтов."
263
-
264
- #: inc/cleantalk-admin.php:351
265
- msgid "The sender has been whitelisted."
266
- msgstr "Отправитель был добавлен в белый список."
267
-
268
- #: inc/cleantalk-admin.php:352
269
- msgid "The sender has been blacklisted."
270
- msgstr "Отправитель был добавлен в черный список."
271
-
272
- #: inc/cleantalk-admin.php:353 inc/cleantalk-public.php:3321
273
- #, php-format
274
- msgid "Feedback has been sent to %sCleanTalk Dashboard%s."
275
- msgstr "Обратная связь отправлена в панель управления %sCleanTalk%s."
276
-
277
- #: inc/cleantalk-admin.php:383
278
- msgid "Failed from timeout. Going to check users again."
279
- msgstr "Ошибка по таймауту. Попробовать еще раз?"
280
-
281
- #: inc/cleantalk-admin.php:384
282
- msgid "Failed from timeout. Going to run a new attempt to delete spam users."
283
- msgstr "Ошибка по таймауту. Попробовать еще раз?"
284
-
285
- #: inc/cleantalk-admin.php:385
286
- msgid "Inserted"
287
- msgstr "Добавлено"
288
-
289
- #: inc/cleantalk-admin.php:387
290
- msgid "users."
291
- msgstr "пользователей."
292
-
293
- #: inc/cleantalk-admin.php:388
294
- msgid "Delete all spam users?"
295
- msgstr "Удалить ВСЕХ найденых спам-пользователей?"
296
-
297
- #: inc/cleantalk-admin.php:389
298
- msgid "Delete checked users?"
299
- msgstr "Удалить отмеченых спам-пользователей?"
300
-
301
- #: inc/cleantalk-admin.php:392
302
- #, php-format
303
- msgid ""
304
- "Total users %s, checked %s, found %s spam users and %s bad users (without IP "
305
- "or email)"
306
- msgstr ""
307
- "Всего пользователей %s, проверено %s, найдено %s спам пользователей и %s "
308
- "плохих пользователей (без IP и Email'а)"
309
-
310
- #: inc/cleantalk-admin.php:401
311
- msgid "Find spam-users"
312
- msgstr "Найти спам-пользователей"
313
-
314
- #: inc/cleantalk-admin.php:449
315
- #, php-format
316
- msgid "Unable to get Access key automatically: %s"
317
- msgstr "Невозможно получить ключ автоматически: %s"
318
-
319
- #: inc/cleantalk-admin.php:450
320
- msgid "Get the Access key"
321
- msgstr "Получить ключ вручную"
322
-
323
- #: inc/cleantalk-admin.php:459
324
- #, php-format
325
- msgid "Please enter Access Key in %s settings to enable anti spam protection!"
326
- msgstr ""
327
- "Пожалуйста, укажите Ключ доступа в настройках %s для активации защиты от "
328
- "спама!"
329
-
330
- #: inc/cleantalk-admin.php:469
331
- #, php-format
332
- msgid "%s trial period ends, please upgrade to %s!"
333
- msgstr ""
334
- "%s заканчивается ознакомительный срок пользования антиспам плагином "
335
- "CleanTalk, пожалуйста продлите подключение %s."
336
-
337
- #: inc/cleantalk-admin.php:481
338
- msgid "RENEW ANTI-SPAM"
339
- msgstr "ПРОДЛИТЬ АНТИСПАМ"
340
-
341
- #: inc/cleantalk-admin.php:482
342
- msgid "next year"
343
- msgstr "следующий год"
344
-
345
- #: inc/cleantalk-admin.php:486
346
- #, php-format
347
- msgid "Please renew your anti-spam license for %s."
348
- msgstr "Пожалуйста, продлите свою антиспам-лицензию на %s."
349
-
350
- #: inc/cleantalk-admin.php:511
351
- msgid "Make it right!"
352
- msgstr "Сделай все правильно!"
353
-
354
- #: inc/cleantalk-admin.php:513
355
- #, php-format
356
- msgid "%sGet premium%s"
357
- msgstr "%sПолучить премиум%s"
358
-
359
- #: inc/cleantalk-admin.php:552
360
- msgid "Since"
361
- msgstr "От"
362
-
363
- #: inc/cleantalk-admin.php:558
364
- msgid ""
365
- "All / Allowed / Blocked submissions. The number of submissions is being "
366
- "counted since CleanTalk plugin installation."
367
- msgstr "Все / Разрешенные / Запрещенные запросы с момента установки CleanTalk."
368
-
369
- #: inc/cleantalk-admin.php:558
370
- msgid "All"
371
- msgstr "Все"
372
-
373
- #: inc/cleantalk-admin.php:566
374
- msgid ""
375
- "Allowed / Blocked submissions. The number of submissions for past 24 hours. "
376
- msgstr "Разрешенные / Запрещенные запросы за последние 24 часа."
377
-
378
- #: inc/cleantalk-admin.php:566
379
- msgid "Day"
380
- msgstr "За день"
381
-
382
- #: inc/cleantalk-admin.php:572
383
- msgid ""
384
- "All / Blocked events. Access attempts regitred by SpamFireWall counted since "
385
- "the last plugin activation."
386
- msgstr ""
387
- "Все / Запрещенные попытки просмотра сайта. Отображет попытки с момента "
388
- "последней активации плагина."
389
-
390
- #: inc/cleantalk-admin.php:582
391
- msgid ""
392
- "Allowed / Blocked submissions. The number of submissions is being counted "
393
- "since "
394
- msgstr "Разрешенные / Запрещенные попытки."
395
-
396
- #: inc/cleantalk-admin.php:593
397
- msgid "dashboard"
398
- msgstr "панель управления"
399
-
400
- #: inc/cleantalk-admin.php:600
401
- msgid "Settings"
402
- msgstr "Настройки"
403
-
404
- #: inc/cleantalk-admin.php:608
405
- msgid "Bulk spam comments removal tool."
406
- msgstr "Инструмент массового удаления пользователей."
407
-
408
- #: inc/cleantalk-admin.php:608 inc/cleantalk-settings.php:882
409
- msgid "Check comments for spam"
410
- msgstr "Проверка комментариев"
411
-
412
- #: inc/cleantalk-admin.php:618 inc/cleantalk-settings.php:885
413
- msgid "Check users for spam"
414
- msgstr "Проверить пользователей на спам"
415
-
416
- #: inc/cleantalk-admin.php:627
417
- msgid "Reset first counter"
418
- msgstr "Сбросить первый счетчик"
419
-
420
- #: inc/cleantalk-admin.php:635
421
- msgid "Reset all counters"
422
- msgstr "Сбросить все счетчики"
423
-
424
- #: inc/cleantalk-comments.php:221 inc/cleantalk-users.php:220
425
- msgid "Approve"
426
- msgstr "Одобрить"
427
-
428
- #: inc/cleantalk-comments.php:223 inc/cleantalk-users.php:222
429
- msgid "Delete"
430
- msgstr "Удалить"
431
-
432
- #: inc/cleantalk-comments.php:265
433
- msgid "Delete all comments from the list"
434
- msgstr "Удалить все сообщения в списке"
435
-
436
- #: inc/cleantalk-comments.php:266 inc/cleantalk-users.php:268
437
- msgid "Delete selected"
438
- msgstr "Удалить отмеченные"
439
-
440
- #: inc/cleantalk-comments.php:270
441
- msgid "Insert comments"
442
- msgstr "Добавить комментарии"
443
-
444
- #: inc/cleantalk-comments.php:271
445
- msgid "Delete comments"
446
- msgstr "Удалить тестовые спам-комментарии?"
447
-
448
- #: inc/cleantalk-comments.php:276 inc/cleantalk-users.php:279
449
- msgid ""
450
- "There is some differencies between blacklists database and our API "
451
- "mechanisms. Blacklists shows all history of spam activity, but our API (that "
452
- "used in spam checking) used another parameters, too: last day of activity, "
453
- "number of spam attacks during last days etc. This mechanisms help us to "
454
- "reduce number of false positivitie. So, there is nothing strange, if some "
455
- "emails/IPs will be not found by this checking."
456
- msgstr ""
457
- "Есть некоторые отличия между проверкой через базу данных черных списков и "
458
- "через механизм API. В черных списках отображается вся история о спам-"
459
- "активности, но наш API используетс другие механизмы: последний день "
460
- "активности, количество спам-атак в течение последних дней и т. д. Эти "
461
- "механизмы помогают нам сократить количество ложных обнаружений. Поэтому, нет "
462
- "ничего странного, если некоторые письма/IP не будут обнаружены при этой "
463
- "проверке."
464
-
465
- #: inc/cleantalk-comments.php:281 inc/cleantalk-users.php:284
466
- msgid "Stop deletion"
467
- msgstr "Остановить удаление"
468
-
469
- #: inc/cleantalk-comments.php:495
470
- #, php-format
471
- msgid ""
472
- "Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad "
473
- "comments (without IP or email)."
474
- msgstr ""
475
- "Всего комментариев %s. Проверено %s. Последняя проверка %s. Найдено %s спам-"
476
- "комментариев. %s плохие комментарии (без IP или электронной почты)."
477
-
478
- #: inc/cleantalk-comments.php:499
479
- msgid "Please do backup of WordPress database before delete any comments!"
480
- msgstr ""
481
- "Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
482
- "комментариев."
483
-
484
- #: inc/cleantalk-public.php:500 inc/cleantalk-public.php:641
485
- #: inc/cleantalk-public.php:743 inc/cleantalk-public.php:2363
486
- #: inc/cleantalk-public.php:3052
487
- msgid "Spam protection by CleanTalk"
488
- msgstr "Спам защита CleanTalk"
489
-
490
- #: inc/cleantalk-public.php:1233 inc/cleantalk-public.php:1361
491
- #: inc/cleantalk-public.php:1379
492
- msgid "Spam protection"
493
- msgstr "Защита от спама"
494
-
495
- #: inc/cleantalk-public.php:1332
496
- msgid "CleanTalk AntiSpam: This message is possible spam."
497
- msgstr "CleanTalk AntiSpam: Это сообщение, возможно, является спамом."
498
-
499
- #: inc/cleantalk-public.php:1333
500
- msgid "You could check it in CleanTalk's anti-spam database:"
501
- msgstr "Вы можете проверить это по антиспам-базе CleanTalk:"
502
-
503
- #: inc/cleantalk-public.php:1569
504
- #, php-format
505
- msgid "Registration approved by %s."
506
- msgstr "Регистрация одобрена %s."
507
-
508
- #: inc/cleantalk-public.php:1849
509
- msgid "CleanTalk AntiSpam: This registration is spam."
510
- msgstr "CleanTalk AntiSpam: Эта регистрация - спам."
511
-
512
- #: inc/cleantalk-public.php:1850 inc/cleantalk-public.php:2219
513
- #: inc/cleantalk-public.php:2387 inc/cleantalk-public.php:2542
514
- msgid "CleanTalk's anti-spam database:"
515
- msgstr "Антиспам-база CleanTalk:"
516
-
517
- #: inc/cleantalk-public.php:2218 inc/cleantalk-public.php:2386
518
- #: inc/cleantalk-public.php:2541
519
- msgid "CleanTalk AntiSpam: This message is spam."
520
- msgstr "CleanTalk AntiSpam: Это сообщение - спам."
521
-
522
- #: inc/cleantalk-public.php:2666
523
- msgid "Comment approved. Anti-spam by CleanTalk."
524
- msgstr "Комментарий одобрен. Антиспам от CleanTalk."
525
-
526
- #: inc/cleantalk-public.php:3219
527
- msgid "Attention, please!"
528
- msgstr "Внимание!"
529
-
530
- #: inc/cleantalk-public.php:3220
531
- #, php-format
532
- msgid "\"%s\" plugin error on your site \"%s\":"
533
- msgstr "\"%s\" ошибка плагина на сайте \"%s\":"
534
-
535
- #: inc/cleantalk-public.php:3222
536
- #, php-format
537
- msgid "[%s] \"%s\" error!"
538
- msgstr "[%s] \"%s\" ошибка!"
539
-
540
- #: inc/cleantalk-public.php:3271
541
- msgid ""
542
- "By using this form you agree with the storage and processing of your data by "
543
- "using the Privacy Policy on this website."
544
- msgstr ""
545
- "Используя эту форму, вы соглашаетесь с хранением и обработкой ваших данных, "
546
- "в соответствии с Политикой конфиденциальности на этом сайте."
547
-
548
- #: inc/cleantalk-public.php:3319
549
- msgid "Error occured while sending feedback."
550
- msgstr "Случилась ошибка при отправке обратной связи."
551
-
552
- #: inc/cleantalk-public.php:3320
553
- msgid "Feedback wasn't sent. There is no associated request."
554
- msgstr "Обратная связь не была отправлена. Нет связанного запроса."
555
-
556
- #: inc/cleantalk-public.php:3364
557
- msgid "Sender info"
558
- msgstr "Информация об отправителе"
559
-
560
- #: inc/cleantalk-public.php:3367
561
- msgid "by"
562
- msgstr " от"
563
-
564
- #: inc/cleantalk-public.php:3378
565
- msgid "No email"
566
- msgstr "Email отсутствует"
567
-
568
- #: inc/cleantalk-public.php:3388
569
- msgid "No IP"
570
- msgstr "IP отсутствует"
571
-
572
- #: inc/cleantalk-public.php:3391
573
- msgid "Mark as spam"
574
- msgstr "Отметить как спам"
575
-
576
- #: inc/cleantalk-public.php:3392
577
- msgid "Unspam"
578
- msgstr "Вернуть из спама"
579
-
580
- #: inc/cleantalk-public.php:3394
581
- msgid "Marked as spam."
582
- msgstr "Отмечено как спам."
583
-
584
- #: inc/cleantalk-public.php:3395
585
- msgid "Marked as not spam."
586
- msgstr "Отмечено как не спам."
587
-
588
- #: inc/cleantalk-settings.php:96
589
- msgid "SpamFireWall"
590
- msgstr "SpamFireWall"
591
-
592
- #: inc/cleantalk-settings.php:97
593
- msgid ""
594
- "This option allows to filter spam bots before they access website. Also "
595
- "reduces CPU usage on hosting server and accelerates pages load time."
596
- msgstr ""
597
- "Эта опция позволяет фильтровать спам-ботов прежде, чем они войдут на сайт. "
598
- "Также уменьшает загрузку процессора на хостинге и ускоряет время загрузки "
599
- "страниц."
600
-
601
- #: inc/cleantalk-settings.php:104
602
- msgid "Forms to protect"
603
- msgstr "Защищаемые формы"
604
-
605
- #: inc/cleantalk-settings.php:110
606
- msgid "Advanced settings"
607
- msgstr "Продвинутые настройки"
608
-
609
- #: inc/cleantalk-settings.php:117
610
- msgid "Registration Forms"
611
- msgstr "Формы регистрации"
612
-
613
- #: inc/cleantalk-settings.php:118
614
- msgid "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
615
- msgstr "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
616
-
617
- #: inc/cleantalk-settings.php:121
618
- msgid "Comments form"
619
- msgstr "Комментарии в блоге"
620
-
621
- #: inc/cleantalk-settings.php:122
622
- msgid "WordPress, JetPack, WooCommerce."
623
- msgstr "WordPress, JetPack, WooCommerce."
624
-
625
- #: inc/cleantalk-settings.php:125 inc/cleantalk-settings.php:761
626
- msgid "Contact forms"
627
- msgstr "Контактные формы"
628
-
629
- #: inc/cleantalk-settings.php:126
630
- msgid ""
631
- "Contact Form 7, Formidable forms, JetPack, Fast Secure Contact Form, "
632
- "WordPress Landing Pages, Gravity Forms."
633
- msgstr ""
634
- "Contact Form 7, Formidable Forms, Jetpack, Fast Secure Contact Form, "
635
- "WordPress Landing Pages, Gravity Forms."
636
-
637
- #: inc/cleantalk-settings.php:129 inc/cleantalk-settings.php:762
638
- msgid "Custom contact forms"
639
- msgstr "Произвольные контактные формы"
640
-
641
- #: inc/cleantalk-settings.php:130
642
- msgid "Anti spam test for any WordPress themes or contacts forms."
643
- msgstr "Защита от спама любой контактной формы или темы."
644
-
645
- #: inc/cleantalk-settings.php:133 inc/cleantalk-settings.php:775
646
- msgid "WooCommerce checkout form"
647
- msgstr "Форма заказа WooCommerce"
648
-
649
- #: inc/cleantalk-settings.php:134
650
- msgid "Anti spam test for WooCommerce checkout form."
651
- msgstr "Спам тест для формы заказа WooCommerce"
652
-
653
- #: inc/cleantalk-settings.php:138
654
- msgid "Spam test for registration during checkout"
655
- msgstr "Регистрация на странице заказа"
656
-
657
- #: inc/cleantalk-settings.php:139
658
- msgid ""
659
- "Enable anti spam test for registration process which during woocommerce's "
660
- "checkout."
661
- msgstr ""
662
- "Включить защиту от спама в регистрациях, которые проходят во время "
663
- "оформления заказа."
664
-
665
- #: inc/cleantalk-settings.php:145
666
- msgid "Test default Wordpress search form for spam"
667
- msgstr "Стандартная форма поиска Wordpress"
668
-
669
- #: inc/cleantalk-settings.php:146
670
- msgid "Spam protection for Search form."
671
- msgstr "Защита от спама для Форм поиска."
672
-
673
- #: inc/cleantalk-settings.php:148
674
- #, php-format
675
- msgid "Read more about %sspam protection for Search form%s on our blog."
676
- msgstr "Прочтите о %sспам-защите для Форм поиска%s на нашем блоге."
677
-
678
- #: inc/cleantalk-settings.php:156
679
- msgid "Protect external forms"
680
- msgstr "Защита внешних форм"
681
-
682
- #: inc/cleantalk-settings.php:157
683
- msgid ""
684
- "Turn this option on to protect forms on your WordPress that send data to "
685
- "third-part servers (like MailChimp)."
686
- msgstr ""
687
- "Включите эту опцию, что бы защитить формы, которые отсылают данные на "
688
- "сторонние ресурсы, например MailChimp."
689
-
690
- #: inc/cleantalk-settings.php:161
691
- msgid "Capture buffer"
692
- msgstr "Захват буфера"
693
-
694
- #: inc/cleantalk-settings.php:162
695
- msgid ""
696
- "This setting gives you more sophisticated and strengthened protection for "
697
- "external forms. But it could break plugins which use a buffer like Ninja "
698
- "Forms."
699
- msgstr ""
700
- "Этот параметр дает вам более сложную и усиленную защиту для внешних форм. Но "
701
- "это может сломать плагины, которые используют буфер, такой как Ninja Forms."
702
-
703
- #: inc/cleantalk-settings.php:167
704
- msgid "Protect internal forms"
705
- msgstr "Защита внутренних форм"
706
-
707
- #: inc/cleantalk-settings.php:168
708
- msgid ""
709
- "This option will enable protection for custom (hand-made) AJAX forms with "
710
- "PHP scripts handlers on your WordPress."
711
- msgstr "Эта опция обеспечит защиту созданных вручную форм, использующих AJAX."
712
-
713
- #: inc/cleantalk-settings.php:175
714
- msgid "Comments and Messages"
715
- msgstr "Комментарии и сообщения"
716
-
717
- #: inc/cleantalk-settings.php:178
718
- msgid "BuddyPress Private Messages"
719
- msgstr "Личные сообщения buddyPress"
720
-
721
- #: inc/cleantalk-settings.php:179
722
- msgid "Check buddyPress private messages."
723
- msgstr "Проверять личные сообщения buddyPress "
724
-
725
- #: inc/cleantalk-settings.php:182
726
- msgid "Don't check trusted user's comments"
727
- msgstr "Не проверять доверенных пользователей"
728
-
729
- #: inc/cleantalk-settings.php:183
730
- #, php-format
731
- msgid "Don't check comments for users with above %d comments."
732
- msgstr "Не проверять комментарии пользователей с более %d комментариями."
733
-
734
- #: inc/cleantalk-settings.php:186
735
- msgid "Automatically delete spam comments"
736
- msgstr "Автоматически удалять спам-комментарии"
737
-
738
- #: inc/cleantalk-settings.php:187
739
- #, php-format
740
- msgid "Delete spam comments older than %d days."
741
- msgstr "Удалять комментарии старше %d дней."
742
-
743
- #: inc/cleantalk-settings.php:190
744
- msgid "Remove links from approved comments"
745
- msgstr "Удалять ссылки из одобреных комментариев"
746
-
747
- #: inc/cleantalk-settings.php:191
748
- msgid "Remove links from approved comments. Replace it with \"[Link deleted]\""
749
- msgstr "Удалять ссылки из одобренных сообщений"
750
-
751
- #: inc/cleantalk-settings.php:194
752
- msgid "Show links to check Emails, IPs for spam."
753
- msgstr "Отобразить ссылки для проверки Email'ов и IP адресов."
754
-
755
- #: inc/cleantalk-settings.php:195
756
- msgid ""
757
- "Shows little icon near IP addresses and Emails allowing you to check it via "
758
- "CleanTalk's database. Also allowing you to manage comments from the public "
759
- "post's page."
760
- msgstr ""
761
- "Показывает маленькую иконку около IP и Email'a позволяющую проверить их "
762
- "через базу данных. Так же позволяет управлять комментариями с публичной "
763
- "страницы записи."
764
-
765
- #: inc/cleantalk-settings.php:203
766
- msgid "Data Processing"
767
- msgstr "Обработка данных"
768
-
769
- #: inc/cleantalk-settings.php:206
770
- msgid "Protect logged in Users"
771
- msgstr "Проверять залогиненых пользователей"
772
-
773
- #: inc/cleantalk-settings.php:207
774
- msgid ""
775
- "Turn this option on to check for spam any submissions (comments, contact "
776
- "forms and etc.) from registered Users."
777
- msgstr "Включите, чтобы проверять зарегистрированных пользователей."
778
-
779
- #: inc/cleantalk-settings.php:210
780
- msgid "Use AJAX for JavaScript check"
781
- msgstr "Использовать AJAX для проверки JavaScript"
782
-
783
- #: inc/cleantalk-settings.php:211
784
- msgid ""
785
- "Options helps protect WordPress against spam with any caching plugins. Turn "
786
- "this option on to avoid issues with caching plugins."
787
- msgstr "Данная настройка помогает избежать конфликтов с кеширующими плагинами."
788
-
789
- #: inc/cleantalk-settings.php:214
790
- msgid "Use static keys for JS check."
791
- msgstr "Использовать постоянный (статичный) ключ для проверки JS."
792
-
793
- #: inc/cleantalk-settings.php:215
794
- msgid ""
795
- "Could help if you have cache for AJAX requests and you are dealing with "
796
- "false positives. Slightly decreases protection quality. Auto - Static key "
797
- "will be used if caching plugin is spotted."
798
- msgstr ""
799
- "Может помочь, если у вас кешируются запросы AJAX и вы имеете дело с ложными "
800
- "срабатываниями. Немного снижает качество защиты. Статический ключ будет "
801
- "использоваться автоматически, если обнаружен плагин кэширования."
802
-
803
- #: inc/cleantalk-settings.php:223
804
- msgid "Check all post data"
805
- msgstr "Проверять все POST-данные"
806
-
807
- #: inc/cleantalk-settings.php:224
808
- msgid ""
809
- "Check all POST submissions from website visitors. Enable this option if you "
810
- "have spam misses on website."
811
- msgstr ""
812
- "Проверять все POST-данные, отправляемые посетителями. Активируйте, если у "
813
- "вас есть спам на сайте."
814
-
815
- #: inc/cleantalk-settings.php:226
816
- msgid " Or you don`t have records about missed spam here:"
817
- msgstr " Или у вас нет записей о спаме здесь:"
818
-
819
- #: inc/cleantalk-settings.php:226
820
- msgid "CleanTalk dashboard"
821
- msgstr "панель управления CleanTalk"
822
-
823
- #: inc/cleantalk-settings.php:229
824
- msgid "СAUTION! Option can catch POST requests in WordPress backend"
825
- msgstr ""
826
- "ВНИМАНИЕ! Опция может перехватывать все POST запросы в панели управления "
827
- "Wordpress. Отключите, если возникают проблемы/ошибки."
828
-
829
- #: inc/cleantalk-settings.php:232
830
- msgid "Set cookies"
831
- msgstr "Устанавливать куки"
832
-
833
- #: inc/cleantalk-settings.php:233
834
- msgid ""
835
- "Turn this option off to deny plugin generates any cookies on website front-"
836
- "end. This option is helpful if you use Varnish. But most of contact forms "
837
- "will not be protected if the option is turned off! <b>Warning: We strongly "
838
- "recommend you to enable this otherwise it could cause false positives spam "
839
- "detection.</b>"
840
- msgstr ""
841
- "Отключите эту опцию, чтобы запретить плагину создавать любые файлы cookies "
842
- "на веб-сайте. Эта опция полезна, если вы используете Varnish. Но большинство "
843
- "контактных форм не будут защищены, если опция отключена! <b>ВНИМАНИЕ! Мы "
844
- "настоятельно рекомендуем не отключать опцию, иначе это может привести к "
845
- "ложному обнаружению спама.</b>"
846
-
847
- #: inc/cleantalk-settings.php:237
848
- msgid "Use alternative mechanism for cookies"
849
- msgstr "Использовать альтернативный механизм хранения файлов cookie"
850
-
851
- #: inc/cleantalk-settings.php:238 inc/cleantalk-settings.php:360
852
- msgid "Doesn't use cookie or PHP sessions. Collect data for all types of bots."
853
- msgstr ""
854
- "Не использовать файлы cookies или PHP-сессии. Собирать данные обо всех типах "
855
- "ботов."
856
-
857
- #: inc/cleantalk-settings.php:243
858
- msgid "Use SSL"
859
- msgstr "Использовать SSL"
860
-
861
- #: inc/cleantalk-settings.php:244
862
- msgid "Turn this option on to use encrypted (SSL) connection with servers."
863
- msgstr ""
864
- "Включите эту опцию для использования защищенного (SSL) соединения между "
865
- "серверами."
866
-
867
- #: inc/cleantalk-settings.php:247
868
- msgid "Use Wordpress HTTP API"
869
- msgstr "Использовать стандартное Wordpress HTTP API"
870
-
871
- #: inc/cleantalk-settings.php:248
872
- msgid ""
873
- "Alternative way to connect the Cloud. Use this if you have connection "
874
- "problems."
875
- msgstr ""
876
- "Альтернативный способ подключения к CleanTalk Cloud. Используйте, если вы "
877
- "имеете проблемы с подключением."
878
-
879
- #: inc/cleantalk-settings.php:255
880
- msgid "Exclusions"
881
- msgstr "Исключения"
882
-
883
- #: inc/cleantalk-settings.php:259
884
- msgid "URL exclusions"
885
- msgstr "Исключения по URL"
886
-
887
- #: inc/cleantalk-settings.php:260
888
- msgid "You could type here URL you want to exclude. Use comma as separator."
889
- msgstr ""
890
- "Вы можете ввести здесь URL, который вы хотите исключить. Используйте запятую "
891
- "в качестве разделителя."
892
-
893
- #: inc/cleantalk-settings.php:264
894
- msgid "Use Regular Expression in URL Exclusions"
895
- msgstr "Использовать регулярное выражение в исключении по URL"
896
-
897
- #: inc/cleantalk-settings.php:268
898
- msgid "Field name exclusions"
899
- msgstr "Исключение по имени поля"
900
-
901
- #: inc/cleantalk-settings.php:269
902
- msgid ""
903
- "You could type here fields names you want to exclude. Use comma as separator."
904
- msgstr ""
905
- "Вы можете ввести здесь имена полей, которые вы хотите исключить. Используйте "
906
- "запятую в качестве разделителя."
907
-
908
- #: inc/cleantalk-settings.php:273
909
- msgid "Use Regular Expression in Field Exclusions"
910
- msgstr "Использовать регулярное выражение в исключении по полю формы."
911
-
912
- #: inc/cleantalk-settings.php:280
913
- msgid "Roles which bypass spam test. Hold CTRL to select multiple roles."
914
- msgstr ""
915
- "Роли, которые обходят проверку на спам. Удерживайте CTRL, чтобы выбрать "
916
- "несколько ролей."
917
-
918
- #: inc/cleantalk-settings.php:287
919
- msgid "Admin bar"
920
- msgstr "Админ-бар"
921
-
922
- #: inc/cleantalk-settings.php:294
923
- msgid "Show statistics in admin bar"
924
- msgstr "Показывать статистику в админбаре"
925
-
926
- #: inc/cleantalk-settings.php:295
927
- msgid ""
928
- "Show/hide icon in top level menu in WordPress backend. The number of "
929
- "submissions is being counted for past 24 hours."
930
- msgstr ""
931
- "Показать/скрыть иконку в админ-баре WordPress. Статистика подсчитывается за "
932
- "последние 24 часа."
933
-
934
- #: inc/cleantalk-settings.php:299
935
- msgid "Show All-time counter"
936
- msgstr "Счетчик за все время"
937
-
938
- #: inc/cleantalk-settings.php:300
939
- msgid ""
940
- "Display all-time requests counter in the admin bar. Counter displays number "
941
- "of requests since plugin installation."
942
- msgstr ""
943
- "Отображать счетчик запросов за все время в админ-баре. Счетчик показывает "
944
- "записи с момента установки."
945
-
946
- #: inc/cleantalk-settings.php:305
947
- msgid "Show 24 hours counter"
948
- msgstr "24-х часовой счетчик"
949
-
950
- #: inc/cleantalk-settings.php:306
951
- msgid ""
952
- "Display daily requests counter in the admin bar. Counter displays number of "
953
- "requests of the past 24 hours."
954
- msgstr ""
955
- "Отображать 24-х часовой счетчик запросов в админ-баре. Отображает запросы за "
956
- "последние 24 часа."
957
-
958
- #: inc/cleantalk-settings.php:311
959
- msgid "SpamFireWall counter"
960
- msgstr "Счетчик SpamFireWall"
961
-
962
- #: inc/cleantalk-settings.php:312
963
- msgid ""
964
- "Display SpamFireWall requests in the admin bar. Counter displays number of "
965
- "requests since plugin installation."
966
- msgstr ""
967
- "Отображать счетчик SpamFireWall запросов в админ-баре. Отображает количество "
968
- "запросов с момента установки плагина."
969
-
970
- #: inc/cleantalk-settings.php:325
971
- msgid "Collect details about browsers"
972
- msgstr "Собирать данные браузера"
973
-
974
- #: inc/cleantalk-settings.php:326
975
- msgid ""
976
- "Checking this box you allow plugin store information about screen size and "
977
- "browser plugins of website visitors. The option in a beta state."
978
- msgstr ""
979
- "Включая эту опцию, Вы разрешаете плагину хранить информацию о размере экрана "
980
- "и плагинах браузера посетителей. Бета опция."
981
-
982
- #: inc/cleantalk-settings.php:330
983
- msgid "Send connection reports"
984
- msgstr "Отправлять отчеты о соединении"
985
-
986
- #: inc/cleantalk-settings.php:331
987
- msgid ""
988
- "Checking this box you allow plugin to send the information about your "
989
- "connection. The option in a beta state."
990
- msgstr ""
991
- "Ставя эту галочку вы разрешаете плагину отрпавлять информацию о интернет-"
992
- "соединении. Опция находится на бета-тестировании."
993
-
994
- #: inc/cleantalk-settings.php:335
995
- msgid "Async JavaScript loading"
996
- msgstr "Асинхронная загрузка JavaScript"
997
-
998
- #: inc/cleantalk-settings.php:336
999
- msgid ""
1000
- "Use async loading for scripts. Warning: This could reduce filtration quality."
1001
- msgstr ""
1002
- "Использовать асинхронную загрузку JS-скриптов. ВНИМАНИЕ! это может понизить "
1003
- "качество спам-фильтра."
1004
-
1005
- #: inc/cleantalk-settings.php:340
1006
- msgid "Allow to add GDPR notice via shortcode"
1007
- msgstr "Разрешить добавление GDPR-уведомления с помощью шордкода"
1008
-
1009
- #: inc/cleantalk-settings.php:341
1010
- msgid ""
1011
- " Adds small checkbox under your website form. To add it you should use the "
1012
- "shortcode on the form's page: [cleantalk_gdpr_form id=\"FORM_ID\"]"
1013
- msgstr ""
1014
- "Добавить не большой чекбокс в форму. Для добавления уведомления вставьте на "
1015
- "странице с формой этот шорткод: [cleantalk_gdpr_form id=\"FORM_ID\"]"
1016
-
1017
- #: inc/cleantalk-settings.php:346
1018
- msgid "GDPR text notice"
1019
- msgstr "Текст GDPR-уведомления"
1020
-
1021
- #: inc/cleantalk-settings.php:347
1022
- msgid "This text will be added as a description to the GDPR checkbox."
1023
- msgstr "Этот текст будет добавлен к чекбоксу как описание."
1024
-
1025
- #: inc/cleantalk-settings.php:353
1026
- msgid "Store visited URLs"
1027
- msgstr "Хранить посещенные URL-ы"
1028
-
1029
- #: inc/cleantalk-settings.php:354
1030
- msgid ""
1031
- "Plugin stores last 10 visited URLs (HTTP REFFERERS) before visitor submits "
1032
- "form on the site. You can see stored visited URLS for each visitor in your "
1033
- "Dashboard. Turn the option on to improve Anti-Spam protection."
1034
- msgstr ""
1035
- "Плагин хранит последние 10 посещенных URL (HTTP REFFERERS) до того, как "
1036
- "посетитель отправит форму на сайт. Вы можете видеть сохраненные посещенные "
1037
- "URL-адреса для каждого посетителя на своей панели инструментов. Включите эту "
1038
- "опцию, чтобы улучшить защиту от спама."
1039
-
1040
- #: inc/cleantalk-settings.php:359
1041
- msgid "Use cookies less sessions"
1042
- msgstr "Использовать сеансы без cookies"
1043
-
1044
- #: inc/cleantalk-settings.php:366
1045
- msgid ""
1046
- "Notify users with selected roles about new approved comments. Hold CTRL to "
1047
- "select multiple roles."
1048
- msgstr ""
1049
- "Уведомлять пользователей с выбранными ролями о новых одобренных комментариях."
1050
- " Удерживайте CTRL для выбора нескольких ролей."
1051
-
1052
- #: inc/cleantalk-settings.php:367
1053
- #, php-format
1054
- msgid "If enabled, overrides similar Wordpress %sdiscussion settings%s."
1055
- msgstr "Если включено, переопределяет аналогичные %sнастройки Wordpress%s."
1056
-
1057
- #: inc/cleantalk-settings.php:380
1058
- msgid "Complete deactivation"
1059
- msgstr "Полная деактивация"
1060
-
1061
- #: inc/cleantalk-settings.php:381
1062
- msgid "Leave no trace in the system after deactivation."
1063
- msgstr "Не оставлять следов в системе после деактивации."
1064
-
1065
- #: inc/cleantalk-settings.php:398
1066
- msgid "Enable White Label Mode"
1067
- msgstr "Активировать White Label Mode."
1068
-
1069
- #: inc/cleantalk-settings.php:399
1070
- #, php-format
1071
- msgid "Learn more information %shere%s."
1072
- msgstr "Узнать больше информации %sздесь%s"
1073
-
1074
- #: inc/cleantalk-settings.php:404
1075
- msgid "Hoster API Key"
1076
- msgstr "Хостинг API ключ"
1077
-
1078
- #: inc/cleantalk-settings.php:405
1079
- #, php-format
1080
- msgid "You can get it in %sCleantalk's Control Panel%s"
1081
- msgstr "Вы можете получить ключ в вашей %sпанели управления CleanTalk%s"
1082
-
1083
- #: inc/cleantalk-settings.php:413
1084
- msgid "Plugin name"
1085
- msgstr "Наименование плагина"
1086
-
1087
- #: inc/cleantalk-settings.php:414
1088
- #, php-format
1089
- msgid "Specify plugin name. Leave empty for deafult %sAntispam by Cleantalk%s"
1090
- msgstr ""
1091
- "Укажите название плагина. Оставьте пустым для названия по умолчанию "
1092
- "%sAntispam by Cleantalk%s"
1093
-
1094
- #: inc/cleantalk-settings.php:423
1095
- msgid "Allow users to use other key"
1096
- msgstr "Позволяет пользователям использовать другой ключ."
1097
-
1098
- #: inc/cleantalk-settings.php:424
1099
- msgid ""
1100
- "Allow users to use different Access key in their plugin settings on child "
1101
- "blogs. They could use different CleanTalk account."
1102
- msgstr ""
1103
- "Позволяет пользователям использовать разные Ключи доступа в настройках "
1104
- "плагина на их дочерних блогах. Они могут использовать разные аккаунты "
1105
- "CleanTalk."
1106
-
1107
- #: inc/cleantalk-settings.php:427
1108
- msgid ""
1109
- "Constant <b>CLEANTALK_ACCESS_KEY</b> is set. All websites will use API key "
1110
- "from this constant. Look into wp-config.php"
1111
- msgstr ""
1112
- "Константа <b>CLEANTALK_ACCESS_KEY</b> установлена. Все дочерние сайты будут "
1113
- "использовать ключ доступа из этой контсанты. Смотри в wp-config.php"
1114
-
1115
- #: inc/cleantalk-settings.php:533
1116
- msgid "CleanTalk's tech support:"
1117
- msgstr "Техническия поддержка CleanTalk: "
1118
-
1119
- #: inc/cleantalk-settings.php:539
1120
- msgid "Plugin Homepage at"
1121
- msgstr "Домашняя страница плагина на"
1122
-
1123
- #: inc/cleantalk-settings.php:540
1124
- msgid "GDPR compliance"
1125
- msgstr "Соответствие GDPR"
1126
-
1127
- #: inc/cleantalk-settings.php:541
1128
- msgid "Use s@cleantalk.org to test plugin in any WordPress form."
1129
- msgstr ""
1130
- "Используйте s@cleantalk.org чтобы проверить плагин в любой форме в WordPress."
1131
-
1132
- #: inc/cleantalk-settings.php:542
1133
- msgid "CleanTalk is registered Trademark. All rights reserved."
1134
- msgstr "CleanTalk - это зарегистрированая торговая марка. Все права защищены."
1135
-
1136
- #: inc/cleantalk-settings.php:559
1137
- #, php-format
1138
- msgid "%s has blocked <b>%s</b> spam."
1139
- msgstr "%s заблокировал <b>%s</b> спама."
1140
-
1141
- #: inc/cleantalk-settings.php:571
1142
- msgid "Click here to get anti-spam statistics"
1143
- msgstr "Щелкните, чтобы получить статистику"
1144
-
1145
- #: inc/cleantalk-settings.php:614
1146
- #, php-format
1147
- msgid "Please, enter the %splugin settings%s in main site dashboard."
1148
- msgstr ""
1149
- "Пожалуйста, перейдите в %sнастройки плагина%s в панели управления на главном "
1150
- "сайте."
1151
-
1152
- #: inc/cleantalk-settings.php:633
1153
- msgid "Error occured while API key validating. Error: "
1154
- msgstr "Произошла ошибка при проверке ключа API. Ошибка: "
1155
-
1156
- #: inc/cleantalk-settings.php:634
1157
- msgid "Error occured while automatically gettings access key. Error: "
1158
- msgstr "Произошла ошибка при автоматическом получении ключа доступа. Ошибка: "
1159
-
1160
- #: inc/cleantalk-settings.php:635
1161
- msgid "Error occured while sending sending SpamFireWall logs. Error: "
1162
- msgstr "Произошла ошибка при отправке логов Spam FireWall. Ошибка: "
1163
-
1164
- #: inc/cleantalk-settings.php:636
1165
- msgid "Error occured while updating SpamFireWall local base. Error: "
1166
- msgstr "Произошла ошибка при обновлении локальной базы Spam FireWall. Ошибка: "
1167
-
1168
- #: inc/cleantalk-settings.php:637
1169
- msgid "Error occured while checking account status. Error: "
1170
- msgstr "Произошла ошибка при проверке статуса аккаунта. Ошибка: "
1171
-
1172
- #: inc/cleantalk-settings.php:638
1173
- msgid "Error occured while excuting API call. Error: "
1174
- msgstr "Произошла ошибка при выполнении вызова API. Ошибка: "
1175
-
1176
- #: inc/cleantalk-settings.php:646
1177
- msgid "Unknown error. Error: "
1178
- msgstr "Неизвестная ошибка. Ошибка: "
1179
-
1180
- #: inc/cleantalk-settings.php:677
1181
- msgid "Errors:"
1182
- msgstr "Ошибки: "
1183
-
1184
- #: inc/cleantalk-settings.php:682
1185
- #, php-format
1186
- msgid "You can get support any time here: %s."
1187
- msgstr "Вы всегда можете получить техническую поддержку здесь: %s."
1188
-
1189
- #: inc/cleantalk-settings.php:757
1190
- msgid "Protection is active"
1191
- msgstr "Защита включена"
1192
-
1193
- #: inc/cleantalk-settings.php:759
1194
- msgid "Registration forms"
1195
- msgstr "Регистрации пользователей"
1196
-
1197
- #: inc/cleantalk-settings.php:760
1198
- msgid "Comments forms"
1199
- msgstr "Формы комментариев"
1200
-
1201
- #: inc/cleantalk-settings.php:765
1202
- msgid "Validate email for existence"
1203
- msgstr "Проверка e-mail на существование"
1204
-
1205
- #: inc/cleantalk-settings.php:769
1206
- msgid "Auto update"
1207
- msgstr "Автообновлние"
1208
-
1209
- #: inc/cleantalk-settings.php:793
1210
- msgid "<h3>Key is provided by Super Admin.</h3>"
1211
- msgstr "<h3>Ключ доступа предоставлен Супер Администратором.</h3>"
1212
-
1213
- #: inc/cleantalk-settings.php:797
1214
- msgid "Access key"
1215
- msgstr "Ключ доступа"
1216
-
1217
- #: inc/cleantalk-settings.php:812
1218
- msgid "Enter the key"
1219
- msgstr "Введите ключ"
1220
-
1221
- #: inc/cleantalk-settings.php:818
1222
- #, php-format
1223
- msgid "Account at cleantalk.org is %s."
1224
- msgstr "Аккаунт на cleantalk.org %s."
1225
-
1226
- #: inc/cleantalk-settings.php:827
1227
- msgid "Show the access key"
1228
- msgstr "Показать ключ доступа"
1229
-
1230
- #: inc/cleantalk-settings.php:838
1231
- msgid "Get Access Key Automatically"
1232
- msgstr "Получить ключ доступа автоматически"
1233
-
1234
- #: inc/cleantalk-settings.php:846
1235
- #, php-format
1236
- msgid ""
1237
- "Admin e-mail (%s) will be used for registration, if you want to use other "
1238
- "email please %sGet Access Key Manually%s."
1239
- msgstr ""
1240
- "E-mail администратора (%s) будет использован для регистрации. Если вы хотите "
1241
- "использовать другой e-mail, пожлуйста, %sполучите ключ доступа "
1242
- "самостоятельно%s."
1243
-
1244
- #: inc/cleantalk-settings.php:862
1245
- #, php-format
1246
- msgid "I accept %sLicense Agreement%s."
1247
- msgstr "Я принимаю %sЛицензионно Соглашение%s."
1248
-
1249
- #: inc/cleantalk-settings.php:888
1250
- msgid "Statistics & Reports"
1251
- msgstr "Статистика и отчеты"
1252
-
1253
- #: inc/cleantalk-settings.php:904
1254
- #, php-format
1255
- msgid "Last spam check request to %s server was at %s."
1256
- msgstr "Последний запрос проверки спама на сервере %s был произведен %s."
1257
-
1258
- #: inc/cleantalk-settings.php:905 inc/cleantalk-settings.php:906
1259
- #: inc/cleantalk-settings.php:915 inc/cleantalk-settings.php:922
1260
- #: inc/cleantalk-settings.php:923 inc/cleantalk-settings.php:931
1261
- #: inc/cleantalk-settings.php:932 inc/cleantalk-settings.php:939
1262
- #: inc/cleantalk-settings.php:940
1263
- msgid "unknown"
1264
- msgstr "неизвестно"
1265
-
1266
- #: inc/cleantalk-settings.php:912
1267
- #, php-format
1268
- msgid "Average request time for past 7 days: %s seconds."
1269
- msgstr "Среднее время запроса за последние 7 дней: %s секунд."
1270
-
1271
- #: inc/cleantalk-settings.php:921
1272
- #, php-format
1273
- msgid "Last time SpamFireWall was triggered for %s IP at %s"
1274
- msgstr "В последний раз SpamFireWall сработал на %s IP %s"
1275
-
1276
- #: inc/cleantalk-settings.php:930
1277
- #, php-format
1278
- msgid "SpamFireWall was updated %s. Now contains %s entries."
1279
- msgstr "SpamFireWall был обновлен %s. Содержится %s записей."
1280
-
1281
- #: inc/cleantalk-settings.php:938
1282
- #, php-format
1283
- msgid "SpamFireWall sent %s events at %s."
1284
- msgstr "SpamFireWall отправил %s событий %s."
1285
-
1286
- #: inc/cleantalk-settings.php:948
1287
- msgid "There are no failed connections to server."
1288
- msgstr "Проблем с подключением к серверу нет."
1289
-
1290
- #: inc/cleantalk-settings.php:975
1291
- msgid "Send report"
1292
- msgstr "Отправить отчет"
1293
-
1294
- #: inc/cleantalk-settings.php:979
1295
- msgid ""
1296
- "Please, enable \"Send connection reports\" setting to be able to send reports"
1297
- msgstr ""
1298
- "Пожалуйста, активируйте опцию \"Отправлять отчеты о соединении\" для "
1299
- "возможности отправлять отчеты."
1300
-
1301
- #: inc/cleantalk-settings.php:1327
1302
- msgid "Testing is failed. Please check the Access key."
1303
- msgstr "Ошибка тестирования. Пожалуйста, проверьте ключ доступа."
1304
-
1305
- #: inc/cleantalk-settings.php:1442
1306
- msgid "XSS check"
1307
- msgstr "Проверка XSS уязвимости"
1308
-
1309
- #: inc/cleantalk-settings.php:1443
1310
- msgid ""
1311
- "Cross-Site Scripting (XSS) — prevents malicious code to be executed/sent to "
1312
- "any user. As a result malicious scripts can not get access to the cookie "
1313
- "files, session tokens and any other confidential information browsers use "
1314
- "and store. Such scripts can even overwrite content of HTML pages. CleanTalk "
1315
- "WAF monitors for patterns of these parameters and block them."
1316
- msgstr ""
1317
- "Межсайтовый скриптинг (XSS) - предотвращает выполнение / отправку "
1318
- "вредоносного кода любому пользователю. В результате вредоносные сценарии не "
1319
- "могут получить доступ к файлам cookie, токенам сеансов и любой другой "
1320
- "конфиденциальной информации, которую используют и хранят браузеры. Такие "
1321
- "сценарии могут даже перезаписывать содержимое HTML-страниц. CleanTalk WAF "
1322
- "отслеживает шаблоны этих параметров и блокирует их."
1323
-
1324
- #: inc/cleantalk-settings.php:1446
1325
- msgid "SQL-injection check"
1326
- msgstr "Проверка на наличие SQL-injection"
1327
-
1328
- #: inc/cleantalk-settings.php:1447
1329
- msgid ""
1330
- "SQL Injection — one of the most popular ways to hack websites and programs "
1331
- "that work with databases. It is based on injection of a custom SQL code into "
1332
- "database queries. It could transmit data through GET, POST requests or "
1333
- "cookie files in an SQL code. If a website is vulnerable and execute such "
1334
- "injections then it would allow attackers to apply changes to the website's "
1335
- "MySQL database."
1336
- msgstr ""
1337
- "SQL-инъекция - один из самых популярных способов взлома сайтов и программ, "
1338
- "работающих с базами данных. Он основан на внедрении пользовательского кода "
1339
- "SQL в запросы к базе данных. Он может передавать данные через запросы GET, "
1340
- "POST или файлы cookie в коде SQL. Если веб-сайт уязвим и выполняет такие "
1341
- "инъекции, это позволит злоумышленникам применить изменения к базе данных "
1342
- "MySQL веб-сайта."
1343
-
1344
- #: inc/cleantalk-settings.php:1450
1345
- msgid "Check uploaded files"
1346
- msgstr "Проверка загруженных файлов"
1347
-
1348
- #: inc/cleantalk-settings.php:1451
1349
- msgid ""
1350
- "The option checks each uploaded file to a website for malicious code. If "
1351
- "it's possible for visitors to upload files to a website, for instance a work "
1352
- "resume, then attackers could abuse it and upload an infected file to execute "
1353
- "it later and get access to your website."
1354
- msgstr ""
1355
- "Опция проверяет каждый загруженный файл на веб-сайт на наличие вредоносного "
1356
- "кода. Если посетители могут загружать на сайт файлы, например, резюме, то "
1357
- "злоумышленники могут злоупотреблять им и загружать зараженный файл, чтобы "
1358
- "выполнить его позднее и получить доступ к вашему сайту."
1359
-
1360
- #: inc/cleantalk-users.php:15
1361
- msgid "Find spam users"
1362
- msgstr "Найти спам-пользователей"
1363
-
1364
- #: inc/cleantalk-users.php:67
1365
- msgid "Please wait for a while. CleanTalk is deleting spam users. Users left: "
1366
- msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-пользователей. Осталось:"
1367
-
1368
- #: inc/cleantalk-users.php:79
1369
- msgid ""
1370
- "The plugin will check all users against blacklists database and show you "
1371
- "senders that have spam activity on other websites."
1372
- msgstr ""
1373
- "Плагин проверит всех пользователей по базе данных чёрных списков и покажет "
1374
- "отправителей, которые занимаются спамом на других сайтах."
1375
-
1376
- #: inc/cleantalk-users.php:84
1377
- msgid ""
1378
- "Allows to use user's dates to perform more accurate check. Could seriously "
1379
- "slow down the check."
1380
- msgstr ""
1381
- "Позволяет использовать даты пользователей для выполения более тщательной "
1382
- "проверки. Может серьезно замедлить проверку."
1383
-
1384
- #: inc/cleantalk-users.php:108
1385
- msgid ""
1386
- "Please wait for a while. CleanTalk is checking all users via blacklist "
1387
- "database at cleantalk.org. You will have option to delete found spam users "
1388
- "after plugin finish."
1389
- msgstr ""
1390
- "Пожалуйста, подождите. ClenTalk проверяет всех пользователей по чёрным "
1391
- "спискам на cleantalk.org. У вас появится возможность удалить обнаруженных "
1392
- "спам-пользователей как только плагин закончит."
1393
-
1394
- #: inc/cleantalk-users.php:267
1395
- msgid "Delete all users from list"
1396
- msgstr "Удалить всех пользователей в списке"
1397
-
1398
- #: inc/cleantalk-users.php:269
1399
- msgid "Download results in CSV"
1400
- msgstr "Загрузить результаты (CSV)"
1401
-
1402
- #: inc/cleantalk-users.php:273
1403
- msgid "Insert accounts"
1404
- msgstr "Добавить аккаунты"
1405
-
1406
- #: inc/cleantalk-users.php:274
1407
- msgid "Delete accounts"
1408
- msgstr "Удалить тестовые спам-аккаунты"
1409
-
1410
- #: inc/cleantalk-users.php:527
1411
- #, php-format
1412
- msgid ""
1413
- "Total users %s, checked %s, last check %s, found %s spam users and %s bad "
1414
- "users (without IP or email)"
1415
- msgstr ""
1416
- "Всего пользователей %s, проверено %s, последняя проверка %s, найдено %s спам-"
1417
- "пользователей и %s плохих пользователей (без IP или электронной почты)"
1418
-
1419
- #: inc/cleantalk-widget.php:22
1420
- msgid "CleanTalk Widget"
1421
- msgstr "Виджет CleanTalk"
1422
-
1423
- #: inc/cleantalk-widget.php:25
1424
- msgid "CleanTalk widget"
1425
- msgstr "виджет CleanTalk"
1426
-
1427
- #: inc/cleantalk-widget.php:72
1428
- msgid "CleanTalk's main page"
1429
- msgstr "Главная страница CleanTalk"
1430
-
1431
- #: inc/cleantalk-widget.php:73
1432
- msgid "spam"
1433
- msgstr "спама"
1434
-
1435
- #: inc/cleantalk-widget.php:73
1436
- msgid "blocked by"
1437
- msgstr "заблокировано"
1438
-
1439
- #: inc/cleantalk-widget.php:85
1440
- msgid "Spam blocked"
1441
- msgstr "Спама заблокировано"
1442
-
1443
- #: inc/cleantalk-widget.php:90
1444
- msgid "Title:"
1445
- msgstr "Заголовок:"
1446
-
1447
- #: inc/cleantalk-widget.php:95
1448
- msgid "Style:"
1449
- msgstr "Стиль:"
1450
-
1451
- #: inc/cleantalk-widget.php:97
1452
- msgid "CleanTalk's Style"
1453
- msgstr "Фирменный стиль CleanTalk"
1454
-
1455
- #: inc/cleantalk-widget.php:98
1456
- msgid "Light"
1457
- msgstr "Лёгкий"
1458
-
1459
- #: inc/cleantalk-widget.php:99
1460
- msgid "Extremely Light"
1461
- msgstr "Очень легкий"
1462
-
1463
- #: inc/cleantalk-widget.php:100
1464
- msgid "Dark"
1465
- msgstr "Темный"
1466
-
1467
- #: inc/cleantalk-widget.php:105
1468
- msgid "Referal link ID:"
1469
- msgstr "ID партнера:"
1470
-
1471
- #: lib/CleantalkSFW.php:71
1472
- msgid "SpamFireWall is activated for your IP "
1473
- msgstr "Спам Фаервол заблокировал ваш IP"
1474
-
1475
- #: lib/CleantalkSFW.php:72
1476
- msgid ""
1477
- "To continue working with web site, please make sure that you have enabled "
1478
- "JavaScript."
1479
- msgstr ""
1480
- "Что бы продолжить работу с сайтом, пожалуйста, убедитесь что у вас включен "
1481
- "JavaScript."
1482
-
1483
- #: lib/CleantalkSFW.php:73
1484
- msgid "Please click below to pass protection,"
1485
- msgstr "Пожалуйста, нажмите, чтобы пройти защиту,"
1486
-
1487
- #: lib/CleantalkSFW.php:74
1488
- #, php-format
1489
- msgid ""
1490
- "Or you will be automatically redirected to the requested page after %d "
1491
- "seconds."
1492
- msgstr ""
1493
- "Или вы будете автоматически переадресованы на запрашиваемую страницу через "
1494
- "%d секунд."
1495
-
1496
- #: lib/CleantalkSFW.php:75
1497
- msgid "Antispam by CleanTalk"
1498
- msgstr "Антиспам от CleanTalk"
1499
-
1500
- #: lib/CleantalkSFW.php:76
1501
- msgid "This is the testing page for SpamFireWall"
1502
- msgstr "Это тестовая страница SpamFireWall"
1503
-
1504
- #: templates/translate_banner.php:6
1505
- msgid "Help others use the plugin in your language."
1506
- msgstr "Помогите другим пользователям использовать плагин на их языке."
1507
-
1508
- #: templates/translate_banner.php:7
1509
- msgid ""
1510
- "We ask you to help with the translation of the plugin in your language. "
1511
- "Please take a few minutes to make the plugin more comfortable."
1512
- msgstr ""
1513
- "Мы просим Вас помочь с переводом плагина на ваш язык. Пожалуйста, потратьте "
1514
- "несколько минут, чтобы сделать плагин более удобным."
1515
-
1516
- #: templates/translate_banner.php:10
1517
- msgid "TRANSLATE"
1518
- msgstr "ПЕРЕВЕСТИ"
1519
-
1520
- #. Description of the plugin/theme
1521
- msgid ""
1522
- "Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam,"
1523
- " no registration spam, no contact spam, protects any WordPress forms."
1524
- msgstr ""
1525
- "Максимальная эффективность, проверка всех форм, без Сaptcha, премиум "
1526
- "антиспам плагин. Нет спаму в комментариях, нет спаму в регистрациях, нету "
1527
- "спаму в контактных формах, защита любых форм в WordPress."
1528
-
1529
- #. Plugin URI of the plugin/theme
1530
- #. Author URI of the plugin/theme
1531
- msgid "http://cleantalk.org"
1532
- msgstr "http://cleantalk.org"
1533
-
1534
- #. Author of the plugin/theme
1535
- msgid "СleanTalk <welcome@cleantalk.org>"
1536
- msgstr "СleanTalk <welcome@cleantalk.org>"
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Anti-Spam by CleanTalk\n"
4
+ "POT-Creation-Date: 2019-10-27 16:02+0000\n"
5
+ "PO-Revision-Date: 2020-01-20 15:11+0000\n"
6
+ "Last-Translator: admin <ievlev@cleantalk.org>\n"
7
+ "Language-Team: Русский\n"
8
+ "Language: ru_RU\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Generator: Loco https://localise.biz/\n"
13
+ "X-Poedit-Basepath: ..\n"
14
+ "X-Poedit-WPHeader: cleantalk.php\n"
15
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
16
+ "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
17
+ "X-Poedit-SourceCharset: UTF-8\n"
18
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
19
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
20
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
21
+ "Report-Msgid-Bugs-To: \n"
22
+ "X-Loco-Version: 2.3.1; wp-5.3.2\n"
23
+ "X-Poedit-SearchPath-0: .\n"
24
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
25
+
26
+ #: inc/classCleantalkComments.php:32 inc/cleantalk-comments.php:16
27
+ #: inc/cleantalk-users.php:15
28
+ msgid "Check for spam"
29
+ msgstr "Проверить на спам"
30
+
31
+ #: inc/classCleantalkComments.php:33 inc/cleantalk-admin.php:350
32
+ #: inc/cleantalk-comments.php:16
33
+ msgid "Find spam comments"
34
+ msgstr "Найти спам в комментариях"
35
+
36
+ #: inc/classCleantalkComments.php:66 inc/cleantalk-comments.php:26
37
+ #: inc/cleantalk-users.php:25
38
+ msgid "Plugin Settings"
39
+ msgstr "Настройки плагина"
40
+
41
+ #: inc/classCleantalkComments.php:76 inc/cleantalk-comments.php:35
42
+ #: inc/cleantalk-users.php:34
43
+ #, php-format
44
+ msgid ""
45
+ "Antispam hosting tariff does not allow you to use this feature. To do so, "
46
+ "you need to enter an Access Key in the %splugin settings%s."
47
+ msgstr ""
48
+ "Тариф на антиспам хостинг не позволяет использовать эту функцию. Для этого "
49
+ "вам необходимо ввести ключ доступа в %sнастройках плагина%s."
50
+
51
+ #: inc/classCleantalkComments.php:101 inc/cleantalk-comments.php:60
52
+ #: inc/cleantalk-users.php:60
53
+ msgid ""
54
+ "Ajax error. Process will be automatically restarted in 3 seconds. Status: "
55
+ msgstr ""
56
+ "Ajax ошибка. Процесс проверки будет автоматически возобновлен через 3 "
57
+ "секунды. Статус:"
58
+
59
+ #: inc/classCleantalkComments.php:108 inc/cleantalk-comments.php:67
60
+ msgid ""
61
+ "Please wait for a while. CleanTalk is deleting spam comments. Comments left: "
62
+ msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-комментарии. Осталось:"
63
+
64
+ #: inc/classCleantalkComments.php:118 inc/cleantalk-comments.php:77
65
+ #: inc/cleantalk-users.php:77
66
+ msgid "Start check"
67
+ msgstr "Начать проверку"
68
+
69
+ #: inc/classCleantalkComments.php:119 inc/cleantalk-comments.php:78
70
+ #: inc/cleantalk-users.php:78
71
+ msgid "Continue check"
72
+ msgstr "Продолжить проверку"
73
+
74
+ #: inc/classCleantalkComments.php:120 inc/cleantalk-comments.php:79
75
+ msgid ""
76
+ "The plugin will check all comments against blacklists database and show you "
77
+ "senders that have spam activity on other websites."
78
+ msgstr ""
79
+ "Пожалуйста, подождите. CleanTalk проверяет комментарии по черным спискам на "
80
+ "cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
81
+ "работы."
82
+
83
+ #: inc/classCleantalkComments.php:123 inc/cleantalk-comments.php:82
84
+ #: inc/cleantalk-users.php:82
85
+ msgid "Accurate check"
86
+ msgstr "Точная проверка"
87
+
88
+ #: inc/classCleantalkComments.php:125 inc/cleantalk-comments.php:84
89
+ msgid ""
90
+ "Allows to use comment's dates to perform more accurate check. Could "
91
+ "seriously slow down the check."
92
+ msgstr ""
93
+ "Позволяет использовать даты комментариев для выполения более тщательной "
94
+ "проверки. Может серьезно замедлить проверку."
95
+
96
+ #: inc/classCleantalkComments.php:128 inc/cleantalk-comments.php:87
97
+ #: inc/cleantalk-users.php:87
98
+ msgid "Specify date range"
99
+ msgstr "Указать диапазон дат"
100
+
101
+ #: inc/classCleantalkComments.php:149 inc/cleantalk-comments.php:108
102
+ msgid ""
103
+ "Please wait! CleanTalk is checking all approved and pending comments via "
104
+ "blacklist database at cleantalk.org. You will have option to delete found "
105
+ "spam comments after plugin finish."
106
+ msgstr ""
107
+ "Пожалуйста, подождите! CleanTalk проверяет комментарии по черным спискам на "
108
+ "cleantalk.org. Вы сможете удалить комментарии со спамом после окончания "
109
+ "работы."
110
+
111
+ #: inc/classCleantalkCommentsListTable.php:24
112
+ msgid "Author"
113
+ msgstr "Автор"
114
+
115
+ #: inc/classCleantalkCommentsListTable.php:25 inc/cleantalk-comments.php:158
116
+ msgid "Comment"
117
+ msgstr "Комментарий"
118
+
119
+ #: inc/classCleantalkCommentsListTable.php:26 inc/cleantalk-comments.php:159
120
+ msgid "In Response To"
121
+ msgstr "В ответ на"
122
+
123
+ #: inc/classCleantalkCommentsListTable.php:33
124
+ msgid "No spam comments."
125
+ msgstr "Нет спам комментариев."
126
+
127
+ #: inc/cleantalk-admin.php:27
128
+ #, php-format
129
+ msgid "Find spam %s"
130
+ msgstr "Найти спам %s"
131
+
132
+ #: inc/cleantalk-admin.php:31
133
+ msgid "CleanTalk Anti-Spam Log"
134
+ msgstr "CleanTalk Anti-Spam лог"
135
+
136
+ #: inc/cleantalk-admin.php:50
137
+ #, php-format
138
+ msgid "%sRefresh%s"
139
+ msgstr "%sОбновить%s"
140
+
141
+ #: inc/cleantalk-admin.php:51
142
+ #, php-format
143
+ msgid "%sConfigure%s"
144
+ msgstr "%sКонфигурация%s"
145
+
146
+ #: inc/cleantalk-admin.php:68
147
+ msgid "7 days anti-spam stats"
148
+ msgstr "Статистика атак за 7 дней"
149
+
150
+ #: inc/cleantalk-admin.php:72
151
+ msgid "Top 5 spam IPs blocked"
152
+ msgstr "Топ 5 cамых заблокированных IP"
153
+
154
+ #: inc/cleantalk-admin.php:78
155
+ msgid "Get Access key to activate Anti-Spam protection!"
156
+ msgstr "Получите ключ доступа для активации спам защиты!"
157
+
158
+ #: inc/cleantalk-admin.php:86
159
+ #, php-format
160
+ msgid "Something went wrong! Error: \"%s\"."
161
+ msgstr "Что-то пошло не так: Ошибка: \"%s\"."
162
+
163
+ #: inc/cleantalk-admin.php:90
164
+ msgid "Please, visit your dashboard."
165
+ msgstr "Пожалуйста, посетите панель управления."
166
+
167
+ #: inc/cleantalk-admin.php:104
168
+ msgid "IP"
169
+ msgstr "IP"
170
+
171
+ #: inc/cleantalk-admin.php:105
172
+ msgid "Country"
173
+ msgstr "Страна"
174
+
175
+ #: inc/cleantalk-admin.php:106
176
+ msgid "Block Count"
177
+ msgstr "Заблкирован раз"
178
+
179
+ #: inc/cleantalk-admin.php:134
180
+ #, php-format
181
+ msgid ""
182
+ "This is the count from the %s's cloud and could be different to admin bar "
183
+ "counters"
184
+ msgstr ""
185
+ "Это счетчик из %s облака, эти данные могут отличаться от данных счетчика в "
186
+ "админ-баре."
187
+
188
+ #. %s: Number of spam messages
189
+ #: inc/cleantalk-admin.php:137
190
+ #, php-format
191
+ msgid ""
192
+ "%s%s%s has blocked %s spam for all time. The statistics are automatically "
193
+ "updated every 24 hours."
194
+ msgstr ""
195
+ "%s%s%s заблокировал %s спама за все время. Статистика автоматически "
196
+ "обновляется каждый 24 часа."
197
+
198
+ #: inc/cleantalk-admin.php:148 inc/cleantalk-settings.php:544
199
+ #, php-format
200
+ msgid "Do you like CleanTalk? %sPost your feedback here%s."
201
+ msgstr "Вам понравился CleanTalk?%s Напишите свой отзыв здесь%s."
202
+
203
+ #: inc/cleantalk-admin.php:234
204
+ msgid "Translate"
205
+ msgstr "Перевести"
206
+
207
+ #: inc/cleantalk-admin.php:237
208
+ msgid "Start here"
209
+ msgstr "Начать здесь"
210
+
211
+ #: inc/cleantalk-admin.php:238
212
+ msgid "FAQ"
213
+ msgstr "FAQ"
214
+
215
+ #: inc/cleantalk-admin.php:239 inc/cleantalk-admin.php:644
216
+ #: inc/cleantalk-settings.php:575
217
+ msgid "Support"
218
+ msgstr "Поддержка"
219
+
220
+ #: inc/cleantalk-admin.php:306 inc/cleantalk-settings.php:523
221
+ msgid "Hosting AntiSpam"
222
+ msgstr "Hosting AntiSpam"
223
+
224
+ #: inc/cleantalk-admin.php:333
225
+ msgid "Failed from timeout. Going to check comments again."
226
+ msgstr "Ошибка по таймауту. Попробовать еще раз?"
227
+
228
+ #: inc/cleantalk-admin.php:334
229
+ msgid "Added"
230
+ msgstr "Добавлены"
231
+
232
+ #: inc/cleantalk-admin.php:335 inc/cleantalk-admin.php:386
233
+ msgid "Deleted"
234
+ msgstr "Удалено"
235
+
236
+ #: inc/cleantalk-admin.php:336
237
+ msgid "comments"
238
+ msgstr "комментарии"
239
+
240
+ #: inc/cleantalk-admin.php:337
241
+ msgid "Delete all spam comments?"
242
+ msgstr "Удалить ВСЕ найденные спам-комментарии?"
243
+
244
+ #: inc/cleantalk-admin.php:338
245
+ msgid "Delete checked comments?"
246
+ msgstr "Удалить отмеченые спам-комментарии?"
247
+
248
+ #: inc/cleantalk-admin.php:339
249
+ #, php-format
250
+ msgid ""
251
+ "Total comments %s. Checked %s. Found %s spam comments. %s bad comments "
252
+ "(without IP or email)."
253
+ msgstr ""
254
+ "Всего комментариев %s. Проверено %s. Найдено %s спам комментариев. %s плохих "
255
+ "комментариев (без IP и Email'а)."
256
+
257
+ #: inc/cleantalk-admin.php:340 inc/cleantalk-admin.php:393
258
+ #: inc/cleantalk-users.php:531
259
+ msgid "Please do backup of WordPress database before delete any accounts!"
260
+ msgstr ""
261
+ "Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
262
+ "аккаунтов."
263
+
264
+ #: inc/cleantalk-admin.php:351
265
+ msgid "The sender has been whitelisted."
266
+ msgstr "Отправитель был добавлен в белый список."
267
+
268
+ #: inc/cleantalk-admin.php:352
269
+ msgid "The sender has been blacklisted."
270
+ msgstr "Отправитель был добавлен в черный список."
271
+
272
+ #: inc/cleantalk-admin.php:353 inc/cleantalk-public.php:3321
273
+ #, php-format
274
+ msgid "Feedback has been sent to %sCleanTalk Dashboard%s."
275
+ msgstr "Обратная связь отправлена в панель управления %sCleanTalk%s."
276
+
277
+ #: inc/cleantalk-admin.php:383
278
+ msgid "Failed from timeout. Going to check users again."
279
+ msgstr "Ошибка по таймауту. Попробовать еще раз?"
280
+
281
+ #: inc/cleantalk-admin.php:384
282
+ msgid "Failed from timeout. Going to run a new attempt to delete spam users."
283
+ msgstr "Ошибка по таймауту. Попробовать еще раз?"
284
+
285
+ #: inc/cleantalk-admin.php:385
286
+ msgid "Inserted"
287
+ msgstr "Добавлено"
288
+
289
+ #: inc/cleantalk-admin.php:387
290
+ msgid "users."
291
+ msgstr "пользователей."
292
+
293
+ #: inc/cleantalk-admin.php:388
294
+ msgid "Delete all spam users?"
295
+ msgstr "Удалить ВСЕХ найденых спам-пользователей?"
296
+
297
+ #: inc/cleantalk-admin.php:389
298
+ msgid "Delete checked users?"
299
+ msgstr "Удалить отмеченых спам-пользователей?"
300
+
301
+ #: inc/cleantalk-admin.php:392
302
+ #, php-format
303
+ msgid ""
304
+ "Total users %s, checked %s, found %s spam users and %s bad users (without IP "
305
+ "or email)"
306
+ msgstr ""
307
+ "Всего пользователей %s, проверено %s, найдено %s спам пользователей и %s "
308
+ "плохих пользователей (без IP и Email'а)"
309
+
310
+ #: inc/cleantalk-admin.php:401
311
+ msgid "Find spam-users"
312
+ msgstr "Найти спам-пользователей"
313
+
314
+ #: inc/cleantalk-admin.php:449
315
+ #, php-format
316
+ msgid "Unable to get Access key automatically: %s"
317
+ msgstr "Невозможно получить ключ автоматически: %s"
318
+
319
+ #: inc/cleantalk-admin.php:450
320
+ msgid "Get the Access key"
321
+ msgstr "Получить ключ вручную"
322
+
323
+ #: inc/cleantalk-admin.php:459
324
+ #, php-format
325
+ msgid "Please enter Access Key in %s settings to enable anti spam protection!"
326
+ msgstr ""
327
+ "Пожалуйста, укажите Ключ доступа в настройках %s для активации защиты от "
328
+ "спама!"
329
+
330
+ #: inc/cleantalk-admin.php:469
331
+ #, php-format
332
+ msgid "%s trial period ends, please upgrade to %s!"
333
+ msgstr ""
334
+ "%s заканчивается ознакомительный срок пользования антиспам плагином "
335
+ "CleanTalk, пожалуйста продлите подключение %s."
336
+
337
+ #: inc/cleantalk-admin.php:481
338
+ msgid "RENEW ANTI-SPAM"
339
+ msgstr "ПРОДЛИТЬ АНТИСПАМ"
340
+
341
+ #: inc/cleantalk-admin.php:482
342
+ msgid "next year"
343
+ msgstr "следующий год"
344
+
345
+ #: inc/cleantalk-admin.php:486
346
+ #, php-format
347
+ msgid "Please renew your anti-spam license for %s."
348
+ msgstr "Пожалуйста, продлите свою антиспам-лицензию на %s."
349
+
350
+ #: inc/cleantalk-admin.php:511
351
+ msgid "Make it right!"
352
+ msgstr "Сделай все правильно!"
353
+
354
+ #: inc/cleantalk-admin.php:513
355
+ #, php-format
356
+ msgid "%sGet premium%s"
357
+ msgstr "%sПолучить премиум%s"
358
+
359
+ #: inc/cleantalk-admin.php:552
360
+ msgid "Since"
361
+ msgstr "От"
362
+
363
+ #: inc/cleantalk-admin.php:558
364
+ msgid ""
365
+ "All / Allowed / Blocked submissions. The number of submissions is being "
366
+ "counted since CleanTalk plugin installation."
367
+ msgstr "Все / Разрешенные / Запрещенные запросы с момента установки CleanTalk."
368
+
369
+ #: inc/cleantalk-admin.php:558
370
+ msgid "All"
371
+ msgstr "Все"
372
+
373
+ #: inc/cleantalk-admin.php:566
374
+ msgid ""
375
+ "Allowed / Blocked submissions. The number of submissions for past 24 hours. "
376
+ msgstr "Разрешенные / Запрещенные запросы за последние 24 часа."
377
+
378
+ #: inc/cleantalk-admin.php:566
379
+ msgid "Day"
380
+ msgstr "За день"
381
+
382
+ #: inc/cleantalk-admin.php:572
383
+ msgid ""
384
+ "All / Blocked events. Access attempts regitred by SpamFireWall counted since "
385
+ "the last plugin activation."
386
+ msgstr ""
387
+ "Все / Запрещенные попытки просмотра сайта. Отображет попытки с момента "
388
+ "последней активации плагина."
389
+
390
+ #: inc/cleantalk-admin.php:582
391
+ msgid ""
392
+ "Allowed / Blocked submissions. The number of submissions is being counted "
393
+ "since "
394
+ msgstr "Разрешенные / Запрещенные попытки."
395
+
396
+ #: inc/cleantalk-admin.php:593
397
+ msgid "dashboard"
398
+ msgstr "панель управления"
399
+
400
+ #: inc/cleantalk-admin.php:600
401
+ msgid "Settings"
402
+ msgstr "Настройки"
403
+
404
+ #: inc/cleantalk-admin.php:608
405
+ msgid "Bulk spam comments removal tool."
406
+ msgstr "Инструмент массового удаления пользователей."
407
+
408
+ #: inc/cleantalk-admin.php:608 inc/cleantalk-settings.php:882
409
+ msgid "Check comments for spam"
410
+ msgstr "Проверка комментариев"
411
+
412
+ #: inc/cleantalk-admin.php:618 inc/cleantalk-settings.php:885
413
+ msgid "Check users for spam"
414
+ msgstr "Проверить пользователей на спам"
415
+
416
+ #: inc/cleantalk-admin.php:627
417
+ msgid "Reset first counter"
418
+ msgstr "Сбросить первый счетчик"
419
+
420
+ #: inc/cleantalk-admin.php:635
421
+ msgid "Reset all counters"
422
+ msgstr "Сбросить все счетчики"
423
+
424
+ #: inc/cleantalk-comments.php:221 inc/cleantalk-users.php:220
425
+ msgid "Approve"
426
+ msgstr "Одобрить"
427
+
428
+ #: inc/cleantalk-comments.php:223 inc/cleantalk-users.php:222
429
+ msgid "Delete"
430
+ msgstr "Удалить"
431
+
432
+ #: inc/cleantalk-comments.php:265
433
+ msgid "Delete all comments from the list"
434
+ msgstr "Удалить все сообщения в списке"
435
+
436
+ #: inc/cleantalk-comments.php:266 inc/cleantalk-users.php:268
437
+ msgid "Delete selected"
438
+ msgstr "Удалить отмеченные"
439
+
440
+ #: inc/cleantalk-comments.php:270
441
+ msgid "Insert comments"
442
+ msgstr "Добавить комментарии"
443
+
444
+ #: inc/cleantalk-comments.php:271
445
+ msgid "Delete comments"
446
+ msgstr "Удалить тестовые спам-комментарии?"
447
+
448
+ #: inc/cleantalk-comments.php:276 inc/cleantalk-users.php:279
449
+ msgid ""
450
+ "There is some differencies between blacklists database and our API "
451
+ "mechanisms. Blacklists shows all history of spam activity, but our API (that "
452
+ "used in spam checking) used another parameters, too: last day of activity, "
453
+ "number of spam attacks during last days etc. This mechanisms help us to "
454
+ "reduce number of false positivitie. So, there is nothing strange, if some "
455
+ "emails/IPs will be not found by this checking."
456
+ msgstr ""
457
+ "Есть некоторые отличия между проверкой через базу данных черных списков и "
458
+ "через механизм API. В черных списках отображается вся история о спам-"
459
+ "активности, но наш API используетс другие механизмы: последний день "
460
+ "активности, количество спам-атак в течение последних дней и т. д. Эти "
461
+ "механизмы помогают нам сократить количество ложных обнаружений. Поэтому, нет "
462
+ "ничего странного, если некоторые письма/IP не будут обнаружены при этой "
463
+ "проверке."
464
+
465
+ #: inc/cleantalk-comments.php:281 inc/cleantalk-users.php:284
466
+ msgid "Stop deletion"
467
+ msgstr "Остановить удаление"
468
+
469
+ #: inc/cleantalk-comments.php:495
470
+ #, php-format
471
+ msgid ""
472
+ "Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad "
473
+ "comments (without IP or email)."
474
+ msgstr ""
475
+ "Всего комментариев %s. Проверено %s. Последняя проверка %s. Найдено %s спам-"
476
+ "комментариев. %s плохие комментарии (без IP или электронной почты)."
477
+
478
+ #: inc/cleantalk-comments.php:499
479
+ msgid "Please do backup of WordPress database before delete any comments!"
480
+ msgstr ""
481
+ "Пожалуйста, сделайте резервную копию базы данных Wordpress перед удалением "
482
+ "комментариев."
483
+
484
+ #: inc/cleantalk-public.php:500 inc/cleantalk-public.php:641
485
+ #: inc/cleantalk-public.php:743 inc/cleantalk-public.php:2363
486
+ #: inc/cleantalk-public.php:3052
487
+ msgid "Spam protection by CleanTalk"
488
+ msgstr "Спам защита CleanTalk"
489
+
490
+ #: inc/cleantalk-public.php:1233 inc/cleantalk-public.php:1361
491
+ #: inc/cleantalk-public.php:1379
492
+ msgid "Spam protection"
493
+ msgstr "Защита от спама"
494
+
495
+ #: inc/cleantalk-public.php:1332
496
+ msgid "CleanTalk AntiSpam: This message is possible spam."
497
+ msgstr "CleanTalk AntiSpam: Это сообщение, возможно, является спамом."
498
+
499
+ #: inc/cleantalk-public.php:1333
500
+ msgid "You could check it in CleanTalk's anti-spam database:"
501
+ msgstr "Вы можете проверить это по антиспам-базе CleanTalk:"
502
+
503
+ #: inc/cleantalk-public.php:1569
504
+ #, php-format
505
+ msgid "Registration approved by %s."
506
+ msgstr "Регистрация одобрена %s."
507
+
508
+ #: inc/cleantalk-public.php:1849
509
+ msgid "CleanTalk AntiSpam: This registration is spam."
510
+ msgstr "CleanTalk AntiSpam: Эта регистрация - спам."
511
+
512
+ #: inc/cleantalk-public.php:1850 inc/cleantalk-public.php:2219
513
+ #: inc/cleantalk-public.php:2387 inc/cleantalk-public.php:2542
514
+ msgid "CleanTalk's anti-spam database:"
515
+ msgstr "Антиспам-база CleanTalk:"
516
+
517
+ #: inc/cleantalk-public.php:2218 inc/cleantalk-public.php:2386
518
+ #: inc/cleantalk-public.php:2541
519
+ msgid "CleanTalk AntiSpam: This message is spam."
520
+ msgstr "CleanTalk AntiSpam: Это сообщение - спам."
521
+
522
+ #: inc/cleantalk-public.php:2666
523
+ msgid "Comment approved. Anti-spam by CleanTalk."
524
+ msgstr "Комментарий одобрен. Антиспам от CleanTalk."
525
+
526
+ #: inc/cleantalk-public.php:3219
527
+ msgid "Attention, please!"
528
+ msgstr "Внимание!"
529
+
530
+ #: inc/cleantalk-public.php:3220
531
+ #, php-format
532
+ msgid "\"%s\" plugin error on your site \"%s\":"
533
+ msgstr "\"%s\" ошибка плагина на сайте \"%s\":"
534
+
535
+ #: inc/cleantalk-public.php:3222
536
+ #, php-format
537
+ msgid "[%s] \"%s\" error!"
538
+ msgstr "[%s] \"%s\" ошибка!"
539
+
540
+ #: inc/cleantalk-public.php:3271
541
+ msgid ""
542
+ "By using this form you agree with the storage and processing of your data by "
543
+ "using the Privacy Policy on this website."
544
+ msgstr ""
545
+ "Используя эту форму, вы соглашаетесь с хранением и обработкой ваших данных, "
546
+ "в соответствии с Политикой конфиденциальности на этом сайте."
547
+
548
+ #: inc/cleantalk-public.php:3319
549
+ msgid "Error occurred while sending feedback."
550
+ msgstr "Случилась ошибка при отправке обратной связи."
551
+
552
+ #: inc/cleantalk-public.php:3320
553
+ msgid "Feedback wasn't sent. There is no associated request."
554
+ msgstr "Обратная связь не была отправлена. Нет связанного запроса."
555
+
556
+ #: inc/cleantalk-public.php:3364
557
+ msgid "Sender info"
558
+ msgstr "Информация об отправителе"
559
+
560
+ #: inc/cleantalk-public.php:3367
561
+ msgid "by"
562
+ msgstr " от"
563
+
564
+ #: inc/cleantalk-public.php:3378
565
+ msgid "No email"
566
+ msgstr "Email отсутствует"
567
+
568
+ #: inc/cleantalk-public.php:3388
569
+ msgid "No IP"
570
+ msgstr "IP отсутствует"
571
+
572
+ #: inc/cleantalk-public.php:3391
573
+ msgid "Mark as spam"
574
+ msgstr "Отметить как спам"
575
+
576
+ #: inc/cleantalk-public.php:3392
577
+ msgid "Unspam"
578
+ msgstr "Вернуть из спама"
579
+
580
+ #: inc/cleantalk-public.php:3394
581
+ msgid "Marked as spam."
582
+ msgstr "Отмечено как спам."
583
+
584
+ #: inc/cleantalk-public.php:3395
585
+ msgid "Marked as not spam."
586
+ msgstr "Отмечено как не спам."
587
+
588
+ #: inc/cleantalk-settings.php:96
589
+ msgid "SpamFireWall"
590
+ msgstr "SpamFireWall"
591
+
592
+ #: inc/cleantalk-settings.php:97
593
+ msgid ""
594
+ "This option allows to filter spam bots before they access website. Also "
595
+ "reduces CPU usage on hosting server and accelerates pages load time."
596
+ msgstr ""
597
+ "Эта опция позволяет фильтровать спам-ботов прежде, чем они войдут на сайт. "
598
+ "Также уменьшает загрузку процессора на хостинге и ускоряет время загрузки "
599
+ "страниц."
600
+
601
+ #: inc/cleantalk-settings.php:104
602
+ msgid "Forms to protect"
603
+ msgstr "Защищаемые формы"
604
+
605
+ #: inc/cleantalk-settings.php:110
606
+ msgid "Advanced settings"
607
+ msgstr "Продвинутые настройки"
608
+
609
+ #: inc/cleantalk-settings.php:117
610
+ msgid "Registration Forms"
611
+ msgstr "Формы регистрации"
612
+
613
+ #: inc/cleantalk-settings.php:118
614
+ msgid "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
615
+ msgstr "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
616
+
617
+ #: inc/cleantalk-settings.php:121
618
+ msgid "Comments form"
619
+ msgstr "Комментарии в блоге"
620
+
621
+ #: inc/cleantalk-settings.php:122
622
+ msgid "WordPress, JetPack, WooCommerce."
623
+ msgstr "WordPress, JetPack, WooCommerce."
624
+
625
+ #: inc/cleantalk-settings.php:125 inc/cleantalk-settings.php:761
626
+ msgid "Contact forms"
627
+ msgstr "Контактные формы"
628
+
629
+ #: inc/cleantalk-settings.php:126
630
+ msgid ""
631
+ "Contact Form 7, Formidable forms, JetPack, Fast Secure Contact Form, "
632
+ "WordPress Landing Pages, Gravity Forms."
633
+ msgstr ""
634
+ "Contact Form 7, Formidable Forms, Jetpack, Fast Secure Contact Form, "
635
+ "WordPress Landing Pages, Gravity Forms."
636
+
637
+ #: inc/cleantalk-settings.php:129 inc/cleantalk-settings.php:762
638
+ msgid "Custom contact forms"
639
+ msgstr "Произвольные контактные формы"
640
+
641
+ #: inc/cleantalk-settings.php:130
642
+ msgid "Anti spam test for any WordPress themes or contacts forms."
643
+ msgstr "Защита от спама любой контактной формы или темы."
644
+
645
+ #: inc/cleantalk-settings.php:133 inc/cleantalk-settings.php:775
646
+ msgid "WooCommerce checkout form"
647
+ msgstr "Форма заказа WooCommerce"
648
+
649
+ #: inc/cleantalk-settings.php:134
650
+ msgid "Anti spam test for WooCommerce checkout form."
651
+ msgstr "Спам тест для формы заказа WooCommerce"
652
+
653
+ #: inc/cleantalk-settings.php:138
654
+ msgid "Spam test for registration during checkout"
655
+ msgstr "Регистрация на странице заказа"
656
+
657
+ #: inc/cleantalk-settings.php:139
658
+ msgid ""
659
+ "Enable anti spam test for registration process which during woocommerce's "
660
+ "checkout."
661
+ msgstr ""
662
+ "Включить защиту от спама в регистрациях, которые проходят во время "
663
+ "оформления заказа."
664
+
665
+ #: inc/cleantalk-settings.php:145
666
+ msgid "Test default Wordpress search form for spam"
667
+ msgstr "Стандартная форма поиска Wordpress"
668
+
669
+ #: inc/cleantalk-settings.php:146
670
+ msgid "Spam protection for Search form."
671
+ msgstr "Защита от спама для Форм поиска."
672
+
673
+ #: inc/cleantalk-settings.php:148
674
+ #, php-format
675
+ msgid "Read more about %sspam protection for Search form%s on our blog."
676
+ msgstr "Прочтите о %sспам-защите для Форм поиска%s на нашем блоге."
677
+
678
+ #: inc/cleantalk-settings.php:156
679
+ msgid "Protect external forms"
680
+ msgstr "Защита внешних форм"
681
+
682
+ #: inc/cleantalk-settings.php:157
683
+ msgid ""
684
+ "Turn this option on to protect forms on your WordPress that send data to "
685
+ "third-part servers (like MailChimp)."
686
+ msgstr ""
687
+ "Включите эту опцию, что бы защитить формы, которые отсылают данные на "
688
+ "сторонние ресурсы, например MailChimp."
689
+
690
+ #: inc/cleantalk-settings.php:161
691
+ msgid "Capture buffer"
692
+ msgstr "Захват буфера"
693
+
694
+ #: inc/cleantalk-settings.php:162
695
+ msgid ""
696
+ "This setting gives you more sophisticated and strengthened protection for "
697
+ "external forms. But it could break plugins which use a buffer like Ninja "
698
+ "Forms."
699
+ msgstr ""
700
+ "Этот параметр дает вам более сложную и усиленную защиту для внешних форм. Но "
701
+ "это может сломать плагины, которые используют буфер, такой как Ninja Forms."
702
+
703
+ #: inc/cleantalk-settings.php:167
704
+ msgid "Protect internal forms"
705
+ msgstr "Защита внутренних форм"
706
+
707
+ #: inc/cleantalk-settings.php:168
708
+ msgid ""
709
+ "This option will enable protection for custom (hand-made) AJAX forms with "
710
+ "PHP scripts handlers on your WordPress."
711
+ msgstr "Эта опция обеспечит защиту созданных вручную форм, использующих AJAX."
712
+
713
+ #: inc/cleantalk-settings.php:175
714
+ msgid "Comments and Messages"
715
+ msgstr "Комментарии и сообщения"
716
+
717
+ #: inc/cleantalk-settings.php:178
718
+ msgid "BuddyPress Private Messages"
719
+ msgstr "Личные сообщения buddyPress"
720
+
721
+ #: inc/cleantalk-settings.php:179
722
+ msgid "Check buddyPress private messages."
723
+ msgstr "Проверять личные сообщения buddyPress "
724
+
725
+ #: inc/cleantalk-settings.php:182
726
+ msgid "Don't check trusted user's comments"
727
+ msgstr "Не проверять доверенных пользователей"
728
+
729
+ #: inc/cleantalk-settings.php:183
730
+ #, php-format
731
+ msgid "Don't check comments for users with above %d comments."
732
+ msgstr "Не проверять комментарии пользователей с более %d комментариями."
733
+
734
+ #: inc/cleantalk-settings.php:186
735
+ msgid "Automatically delete spam comments"
736
+ msgstr "Автоматически удалять спам-комментарии"
737
+
738
+ #: inc/cleantalk-settings.php:187
739
+ #, php-format
740
+ msgid "Delete spam comments older than %d days."
741
+ msgstr "Удалять комментарии старше %d дней."
742
+
743
+ #: inc/cleantalk-settings.php:190
744
+ msgid "Remove links from approved comments"
745
+ msgstr "Удалять ссылки из одобреных комментариев"
746
+
747
+ #: inc/cleantalk-settings.php:191
748
+ msgid "Remove links from approved comments. Replace it with \"[Link deleted]\""
749
+ msgstr "Удалять ссылки из одобренных сообщений"
750
+
751
+ #: inc/cleantalk-settings.php:194
752
+ msgid "Show links to check Emails, IPs for spam."
753
+ msgstr "Отобразить ссылки для проверки Email'ов и IP адресов."
754
+
755
+ #: inc/cleantalk-settings.php:195
756
+ msgid ""
757
+ "Shows little icon near IP addresses and Emails allowing you to check it via "
758
+ "CleanTalk's database. Also allowing you to manage comments from the public "
759
+ "post's page."
760
+ msgstr ""
761
+ "Показывает маленькую иконку около IP и Email'a позволяющую проверить их "
762
+ "через базу данных. Так же позволяет управлять комментариями с публичной "
763
+ "страницы записи."
764
+
765
+ #: inc/cleantalk-settings.php:203
766
+ msgid "Data Processing"
767
+ msgstr "Обработка данных"
768
+
769
+ #: inc/cleantalk-settings.php:206
770
+ msgid "Protect logged in Users"
771
+ msgstr "Проверять залогиненых пользователей"
772
+
773
+ #: inc/cleantalk-settings.php:207
774
+ msgid ""
775
+ "Turn this option on to check for spam any submissions (comments, contact "
776
+ "forms and etc.) from registered Users."
777
+ msgstr "Включите, чтобы проверять зарегистрированных пользователей."
778
+
779
+ #: inc/cleantalk-settings.php:210
780
+ msgid "Use AJAX for JavaScript check"
781
+ msgstr "Использовать AJAX для проверки JavaScript"
782
+
783
+ #: inc/cleantalk-settings.php:211
784
+ msgid ""
785
+ "Options helps protect WordPress against spam with any caching plugins. Turn "
786
+ "this option on to avoid issues with caching plugins."
787
+ msgstr "Данная настройка помогает избежать конфликтов с кеширующими плагинами."
788
+
789
+ #: inc/cleantalk-settings.php:214
790
+ msgid "Use static keys for JS check."
791
+ msgstr "Использовать постоянный (статичный) ключ для проверки JS."
792
+
793
+ #: inc/cleantalk-settings.php:215
794
+ msgid ""
795
+ "Could help if you have cache for AJAX requests and you are dealing with "
796
+ "false positives. Slightly decreases protection quality. Auto - Static key "
797
+ "will be used if caching plugin is spotted."
798
+ msgstr ""
799
+ "Может помочь, если у вас кешируются запросы AJAX и вы имеете дело с ложными "
800
+ "срабатываниями. Немного снижает качество защиты. Статический ключ будет "
801
+ "использоваться автоматически, если обнаружен плагин кэширования."
802
+
803
+ #: inc/cleantalk-settings.php:223
804
+ msgid "Check all post data"
805
+ msgstr "Проверять все POST-данные"
806
+
807
+ #: inc/cleantalk-settings.php:224
808
+ msgid ""
809
+ "Check all POST submissions from website visitors. Enable this option if you "
810
+ "have spam misses on website."
811
+ msgstr ""
812
+ "Проверять все POST-данные, отправляемые посетителями. Активируйте, если у "
813
+ "вас есть спам на сайте."
814
+
815
+ #: inc/cleantalk-settings.php:226
816
+ msgid " Or you don`t have records about missed spam here:"
817
+ msgstr " Или у вас нет записей о спаме здесь:"
818
+
819
+ #: inc/cleantalk-settings.php:226
820
+ msgid "CleanTalk dashboard"
821
+ msgstr "панель управления CleanTalk"
822
+
823
+ #: inc/cleantalk-settings.php:229
824
+ msgid "СAUTION! Option can catch POST requests in WordPress backend"
825
+ msgstr ""
826
+ "ВНИМАНИЕ! Опция может перехватывать все POST запросы в панели управления "
827
+ "Wordpress. Отключите, если возникают проблемы/ошибки."
828
+
829
+ #: inc/cleantalk-settings.php:232
830
+ msgid "Set cookies"
831
+ msgstr "Устанавливать куки"
832
+
833
+ #: inc/cleantalk-settings.php:233
834
+ msgid ""
835
+ "Turn this option off to deny plugin generates any cookies on website front-"
836
+ "end. This option is helpful if you use Varnish. But most of contact forms "
837
+ "will not be protected if the option is turned off! <b>Warning: We strongly "
838
+ "recommend you to enable this otherwise it could cause false positives spam "
839
+ "detection.</b>"
840
+ msgstr ""
841
+ "Отключите эту опцию, чтобы запретить плагину создавать любые файлы cookies "
842
+ "на веб-сайте. Эта опция полезна, если вы используете Varnish. Но большинство "
843
+ "контактных форм не будут защищены, если опция отключена! <b>ВНИМАНИЕ! Мы "
844
+ "настоятельно рекомендуем не отключать опцию, иначе это может привести к "
845
+ "ложному обнаружению спама.</b>"
846
+
847
+ #: inc/cleantalk-settings.php:237
848
+ msgid "Use alternative mechanism for cookies"
849
+ msgstr "Использовать альтернативный механизм хранения файлов cookie"
850
+
851
+ #: inc/cleantalk-settings.php:238 inc/cleantalk-settings.php:360
852
+ msgid "Doesn't use cookie or PHP sessions. Collect data for all types of bots."
853
+ msgstr ""
854
+ "Не использовать файлы cookies или PHP-сессии. Собирать данные обо всех типах "
855
+ "ботов."
856
+
857
+ #: inc/cleantalk-settings.php:243
858
+ msgid "Use SSL"
859
+ msgstr "Использовать SSL"
860
+
861
+ #: inc/cleantalk-settings.php:244
862
+ msgid "Turn this option on to use encrypted (SSL) connection with servers."
863
+ msgstr ""
864
+ "Включите эту опцию для использования защищенного (SSL) соединения между "
865
+ "серверами."
866
+
867
+ #: inc/cleantalk-settings.php:247
868
+ msgid "Use Wordpress HTTP API"
869
+ msgstr "Использовать стандартное Wordpress HTTP API"
870
+
871
+ #: inc/cleantalk-settings.php:248
872
+ msgid ""
873
+ "Alternative way to connect the Cloud. Use this if you have connection "
874
+ "problems."
875
+ msgstr ""
876
+ "Альтернативный способ подключения к CleanTalk Cloud. Используйте, если вы "
877
+ "имеете проблемы с подключением."
878
+
879
+ #: inc/cleantalk-settings.php:255
880
+ msgid "Exclusions"
881
+ msgstr "Исключения"
882
+
883
+ #: inc/cleantalk-settings.php:259
884
+ msgid "URL exclusions"
885
+ msgstr "Исключения по URL"
886
+
887
+ #: inc/cleantalk-settings.php:260
888
+ msgid "You could type here URL you want to exclude. Use comma as separator."
889
+ msgstr ""
890
+ "Вы можете ввести здесь URL, который вы хотите исключить. Используйте запятую "
891
+ "в качестве разделителя."
892
+
893
+ #: inc/cleantalk-settings.php:264
894
+ msgid "Use Regular Expression in URL Exclusions"
895
+ msgstr "Использовать регулярное выражение в исключении по URL"
896
+
897
+ #: inc/cleantalk-settings.php:268
898
+ msgid "Field name exclusions"
899
+ msgstr "Исключение по имени поля"
900
+
901
+ #: inc/cleantalk-settings.php:269
902
+ msgid ""
903
+ "You could type here fields names you want to exclude. Use comma as separator."
904
+ msgstr ""
905
+ "Вы можете ввести здесь имена полей, которые вы хотите исключить. Используйте "
906
+ "запятую в качестве разделителя."
907
+
908
+ #: inc/cleantalk-settings.php:273
909
+ msgid "Use Regular Expression in Field Exclusions"
910
+ msgstr "Использовать регулярное выражение в исключении по полю формы."
911
+
912
+ #: inc/cleantalk-settings.php:280
913
+ msgid "Roles which bypass spam test. Hold CTRL to select multiple roles."
914
+ msgstr ""
915
+ "Роли, которые обходят проверку на спам. Удерживайте CTRL, чтобы выбрать "
916
+ "несколько ролей."
917
+
918
+ #: inc/cleantalk-settings.php:287
919
+ msgid "Admin bar"
920
+ msgstr "Админ-бар"
921
+
922
+ #: inc/cleantalk-settings.php:294
923
+ msgid "Show statistics in admin bar"
924
+ msgstr "Показывать статистику в админбаре"
925
+
926
+ #: inc/cleantalk-settings.php:295
927
+ msgid ""
928
+ "Show/hide icon in top level menu in WordPress backend. The number of "
929
+ "submissions is being counted for past 24 hours."
930
+ msgstr ""
931
+ "Показать/скрыть иконку в админ-баре WordPress. Статистика подсчитывается за "
932
+ "последние 24 часа."
933
+
934
+ #: inc/cleantalk-settings.php:299
935
+ msgid "Show All-time counter"
936
+ msgstr "Счетчик за все время"
937
+
938
+ #: inc/cleantalk-settings.php:300
939
+ msgid ""
940
+ "Display all-time requests counter in the admin bar. Counter displays number "
941
+ "of requests since plugin installation."
942
+ msgstr ""
943
+ "Отображать счетчик запросов за все время в админ-баре. Счетчик показывает "
944
+ "записи с момента установки."
945
+
946
+ #: inc/cleantalk-settings.php:305
947
+ msgid "Show 24 hours counter"
948
+ msgstr "24-х часовой счетчик"
949
+
950
+ #: inc/cleantalk-settings.php:306
951
+ msgid ""
952
+ "Display daily requests counter in the admin bar. Counter displays number of "
953
+ "requests of the past 24 hours."
954
+ msgstr ""
955
+ "Отображать 24-х часовой счетчик запросов в админ-баре. Отображает запросы за "
956
+ "последние 24 часа."
957
+
958
+ #: inc/cleantalk-settings.php:311
959
+ msgid "SpamFireWall counter"
960
+ msgstr "Счетчик SpamFireWall"
961
+
962
+ #: inc/cleantalk-settings.php:312
963
+ msgid ""
964
+ "Display SpamFireWall requests in the admin bar. Counter displays number of "
965
+ "requests since plugin installation."
966
+ msgstr ""
967
+ "Отображать счетчик SpamFireWall запросов в админ-баре. Отображает количество "
968
+ "запросов с момента установки плагина."
969
+
970
+ #: inc/cleantalk-settings.php:325
971
+ msgid "Collect details about browsers"
972
+ msgstr "Собирать данные браузера"
973
+
974
+ #: inc/cleantalk-settings.php:326
975
+ msgid ""
976
+ "Checking this box you allow plugin store information about screen size and "
977
+ "browser plugins of website visitors. The option in a beta state."
978
+ msgstr ""
979
+ "Включая эту опцию, Вы разрешаете плагину хранить информацию о размере экрана "
980
+ "и плагинах браузера посетителей. Бета опция."
981
+
982
+ #: inc/cleantalk-settings.php:330
983
+ msgid "Send connection reports"
984
+ msgstr "Отправлять отчеты о соединении"
985
+
986
+ #: inc/cleantalk-settings.php:331
987
+ msgid ""
988
+ "Checking this box you allow plugin to send the information about your "
989
+ "connection. The option in a beta state."
990
+ msgstr ""
991
+ "Ставя эту галочку вы разрешаете плагину отрпавлять информацию о интернет-"
992
+ "соединении. Опция находится на бета-тестировании."
993
+
994
+ #: inc/cleantalk-settings.php:335
995
+ msgid "Async JavaScript loading"
996
+ msgstr "Асинхронная загрузка JavaScript"
997
+
998
+ #: inc/cleantalk-settings.php:336
999
+ msgid ""
1000
+ "Use async loading for scripts. Warning: This could reduce filtration quality."
1001
+ msgstr ""
1002
+ "Использовать асинхронную загрузку JS-скриптов. ВНИМАНИЕ! это может понизить "
1003
+ "качество спам-фильтра."
1004
+
1005
+ #: inc/cleantalk-settings.php:340
1006
+ msgid "Allow to add GDPR notice via shortcode"
1007
+ msgstr "Разрешить добавление GDPR-уведомления с помощью шордкода"
1008
+
1009
+ #: inc/cleantalk-settings.php:341
1010
+ msgid ""
1011
+ " Adds small checkbox under your website form. To add it you should use the "
1012
+ "shortcode on the form's page: [cleantalk_gdpr_form id=\"FORM_ID\"]"
1013
+ msgstr ""
1014
+ "Добавить не большой чекбокс в форму. Для добавления уведомления вставьте на "
1015
+ "странице с формой этот шорткод: [cleantalk_gdpr_form id=\"FORM_ID\"]"
1016
+
1017
+ #: inc/cleantalk-settings.php:346
1018
+ msgid "GDPR text notice"
1019
+ msgstr "Текст GDPR-уведомления"
1020
+
1021
+ #: inc/cleantalk-settings.php:347
1022
+ msgid "This text will be added as a description to the GDPR checkbox."
1023
+ msgstr "Этот текст будет добавлен к чекбоксу как описание."
1024
+
1025
+ #: inc/cleantalk-settings.php:353
1026
+ msgid "Store visited URLs"
1027
+ msgstr "Хранить посещенные URL-ы"
1028
+
1029
+ #: inc/cleantalk-settings.php:354
1030
+ msgid ""
1031
+ "Plugin stores last 10 visited URLs (HTTP REFFERERS) before visitor submits "
1032
+ "form on the site. You can see stored visited URLS for each visitor in your "
1033
+ "Dashboard. Turn the option on to improve Anti-Spam protection."
1034
+ msgstr ""
1035
+ "Плагин хранит последние 10 посещенных URL (HTTP REFFERERS) до того, как "
1036
+ "посетитель отправит форму на сайт. Вы можете видеть сохраненные посещенные "
1037
+ "URL-адреса для каждого посетителя на своей панели инструментов. Включите эту "
1038
+ "опцию, чтобы улучшить защиту от спама."
1039
+
1040
+ #: inc/cleantalk-settings.php:359
1041
+ msgid "Use cookies less sessions"
1042
+ msgstr "Использовать сеансы без cookies"
1043
+
1044
+ #: inc/cleantalk-settings.php:366
1045
+ msgid ""
1046
+ "Notify users with selected roles about new approved comments. Hold CTRL to "
1047
+ "select multiple roles."
1048
+ msgstr ""
1049
+ "Уведомлять пользователей с выбранными ролями о новых одобренных комментариях."
1050
+ " Удерживайте CTRL для выбора нескольких ролей."
1051
+
1052
+ #: inc/cleantalk-settings.php:367
1053
+ #, php-format
1054
+ msgid "If enabled, overrides similar Wordpress %sdiscussion settings%s."
1055
+ msgstr "Если включено, переопределяет аналогичные %sнастройки Wordpress%s."
1056
+
1057
+ #: inc/cleantalk-settings.php:380
1058
+ msgid "Complete deactivation"
1059
+ msgstr "Полная деактивация"
1060
+
1061
+ #: inc/cleantalk-settings.php:381
1062
+ msgid "Leave no trace in the system after deactivation."
1063
+ msgstr "Не оставлять следов в системе после деактивации."
1064
+
1065
+ #: inc/cleantalk-settings.php:398
1066
+ msgid "Enable White Label Mode"
1067
+ msgstr "Активировать White Label Mode."
1068
+
1069
+ #: inc/cleantalk-settings.php:399
1070
+ #, php-format
1071
+ msgid "Learn more information %shere%s."
1072
+ msgstr "Узнать больше информации %sздесь%s"
1073
+
1074
+ #: inc/cleantalk-settings.php:404
1075
+ msgid "Hoster API Key"
1076
+ msgstr "Хостинг API ключ"
1077
+
1078
+ #: inc/cleantalk-settings.php:405
1079
+ #, php-format
1080
+ msgid "You can get it in %sCleantalk's Control Panel%s"
1081
+ msgstr "Вы можете получить ключ в вашей %sпанели управления CleanTalk%s"
1082
+
1083
+ #: inc/cleantalk-settings.php:413
1084
+ msgid "Plugin name"
1085
+ msgstr "Наименование плагина"
1086
+
1087
+ #: inc/cleantalk-settings.php:414
1088
+ #, php-format
1089
+ msgid "Specify plugin name. Leave empty for deafult %sAntispam by Cleantalk%s"
1090
+ msgstr ""
1091
+ "Укажите название плагина. Оставьте пустым для названия по умолчанию "
1092
+ "%sAntispam by Cleantalk%s"
1093
+
1094
+ #: inc/cleantalk-settings.php:423
1095
+ msgid "Allow users to use other key"
1096
+ msgstr "Позволяет пользователям использовать другой ключ."
1097
+
1098
+ #: inc/cleantalk-settings.php:424
1099
+ msgid ""
1100
+ "Allow users to use different Access key in their plugin settings on child "
1101
+ "blogs. They could use different CleanTalk account."
1102
+ msgstr ""
1103
+ "Позволяет пользователям использовать разные Ключи доступа в настройках "
1104
+ "плагина на их дочерних блогах. Они могут использовать разные аккаунты "
1105
+ "CleanTalk."
1106
+
1107
+ #: inc/cleantalk-settings.php:427
1108
+ msgid ""
1109
+ "Constant <b>CLEANTALK_ACCESS_KEY</b> is set. All websites will use API key "
1110
+ "from this constant. Look into wp-config.php"
1111
+ msgstr ""
1112
+ "Константа <b>CLEANTALK_ACCESS_KEY</b> установлена. Все дочерние сайты будут "
1113
+ "использовать ключ доступа из этой контсанты. Смотри в wp-config.php"
1114
+
1115
+ #: inc/cleantalk-settings.php:533
1116
+ msgid "CleanTalk's tech support:"
1117
+ msgstr "Техническия поддержка CleanTalk: "
1118
+
1119
+ #: inc/cleantalk-settings.php:539
1120
+ msgid "Plugin Homepage at"
1121
+ msgstr "Домашняя страница плагина на"
1122
+
1123
+ #: inc/cleantalk-settings.php:540
1124
+ msgid "GDPR compliance"
1125
+ msgstr "Соответствие GDPR"
1126
+
1127
+ #: inc/cleantalk-settings.php:541
1128
+ msgid "Use s@cleantalk.org to test plugin in any WordPress form."
1129
+ msgstr ""
1130
+ "Используйте s@cleantalk.org чтобы проверить плагин в любой форме в WordPress."
1131
+
1132
+ #: inc/cleantalk-settings.php:542
1133
+ msgid "CleanTalk is registered Trademark. All rights reserved."
1134
+ msgstr "CleanTalk - это зарегистрированая торговая марка. Все права защищены."
1135
+
1136
+ #: inc/cleantalk-settings.php:559
1137
+ #, php-format
1138
+ msgid "%s has blocked <b>%s</b> spam."
1139
+ msgstr "%s заблокировал <b>%s</b> спама."
1140
+
1141
+ #: inc/cleantalk-settings.php:571
1142
+ msgid "Click here to get anti-spam statistics"
1143
+ msgstr "Щелкните, чтобы получить статистику"
1144
+
1145
+ #: inc/cleantalk-settings.php:614
1146
+ #, php-format
1147
+ msgid "Please, enter the %splugin settings%s in main site dashboard."
1148
+ msgstr ""
1149
+ "Пожалуйста, перейдите в %sнастройки плагина%s в панели управления на главном "
1150
+ "сайте."
1151
+
1152
+ #: inc/cleantalk-settings.php:633
1153
+ msgid "Error occurred while API key validating. Error: "
1154
+ msgstr "Произошла ошибка при проверке ключа API. Ошибка: "
1155
+
1156
+ #: inc/cleantalk-settings.php:634
1157
+ msgid "Error occurred while automatically gettings access key. Error: "
1158
+ msgstr "Произошла ошибка при автоматическом получении ключа доступа. Ошибка: "
1159
+
1160
+ #: inc/cleantalk-settings.php:635
1161
+ msgid "Error occurred while sending sending SpamFireWall logs. Error: "
1162
+ msgstr "Произошла ошибка при отправке логов Spam FireWall. Ошибка: "
1163
+
1164
+ #: inc/cleantalk-settings.php:636
1165
+ msgid "Error occurred while updating SpamFireWall local base. Error: "
1166
+ msgstr "Произошла ошибка при обновлении локальной базы Spam FireWall. Ошибка: "
1167
+
1168
+ #: inc/cleantalk-settings.php:637
1169
+ msgid "Error occurred while checking account status. Error: "
1170
+ msgstr "Произошла ошибка при проверке статуса аккаунта. Ошибка: "
1171
+
1172
+ #: inc/cleantalk-settings.php:638
1173
+ msgid "Error occurred while excuting API call. Error: "
1174
+ msgstr "Произошла ошибка при выполнении вызова API. Ошибка: "
1175
+
1176
+ #: inc/cleantalk-settings.php:646
1177
+ msgid "Unknown error. Error: "
1178
+ msgstr "Неизвестная ошибка. Ошибка: "
1179
+
1180
+ #: inc/cleantalk-settings.php:677
1181
+ msgid "Errors:"
1182
+ msgstr "Ошибки: "
1183
+
1184
+ #: inc/cleantalk-settings.php:682
1185
+ #, php-format
1186
+ msgid "You can get support any time here: %s."
1187
+ msgstr "Вы всегда можете получить техническую поддержку здесь: %s."
1188
+
1189
+ #: inc/cleantalk-settings.php:757
1190
+ msgid "Protection is active"
1191
+ msgstr "Защита включена"
1192
+
1193
+ #: inc/cleantalk-settings.php:759
1194
+ msgid "Registration forms"
1195
+ msgstr "Регистрации пользователей"
1196
+
1197
+ #: inc/cleantalk-settings.php:760
1198
+ msgid "Comments forms"
1199
+ msgstr "Формы комментариев"
1200
+
1201
+ #: inc/cleantalk-settings.php:765
1202
+ msgid "Validate email for existence"
1203
+ msgstr "Проверка e-mail на существование"
1204
+
1205
+ #: inc/cleantalk-settings.php:769
1206
+ msgid "Auto update"
1207
+ msgstr "Автообновлние"
1208
+
1209
+ #: inc/cleantalk-settings.php:793
1210
+ msgid "<h3>Key is provided by Super Admin.</h3>"
1211
+ msgstr "<h3>Ключ доступа предоставлен Супер Администратором.</h3>"
1212
+
1213
+ #: inc/cleantalk-settings.php:797
1214
+ msgid "Access key"
1215
+ msgstr "Ключ доступа"
1216
+
1217
+ #: inc/cleantalk-settings.php:812
1218
+ msgid "Enter the key"
1219
+ msgstr "Введите ключ"
1220
+
1221
+ #: inc/cleantalk-settings.php:818
1222
+ #, php-format
1223
+ msgid "Account at cleantalk.org is %s."
1224
+ msgstr "Аккаунт на cleantalk.org %s."
1225
+
1226
+ #: inc/cleantalk-settings.php:827
1227
+ msgid "Show the access key"
1228
+ msgstr "Показать ключ доступа"
1229
+
1230
+ #: inc/cleantalk-settings.php:838
1231
+ msgid "Get Access Key Automatically"
1232
+ msgstr "Получить ключ доступа автоматически"
1233
+
1234
+ #: inc/cleantalk-settings.php:846
1235
+ #, php-format
1236
+ msgid ""
1237
+ "Admin e-mail (%s) will be used for registration, if you want to use other "
1238
+ "email please %sGet Access Key Manually%s."
1239
+ msgstr ""
1240
+ "E-mail администратора (%s) будет использован для регистрации. Если вы хотите "
1241
+ "использовать другой e-mail, пожлуйста, %sполучите ключ доступа "
1242
+ "самостоятельно%s."
1243
+
1244
+ #: inc/cleantalk-settings.php:862
1245
+ #, php-format
1246
+ msgid "I accept %sLicense Agreement%s."
1247
+ msgstr "Я принимаю %sЛицензионно Соглашение%s."
1248
+
1249
+ #: inc/cleantalk-settings.php:888
1250
+ msgid "Statistics & Reports"
1251
+ msgstr "Статистика и отчеты"
1252
+
1253
+ #: inc/cleantalk-settings.php:904
1254
+ #, php-format
1255
+ msgid "Last spam check request to %s server was at %s."
1256
+ msgstr "Последний запрос проверки спама на сервере %s был произведен %s."
1257
+
1258
+ #: inc/cleantalk-settings.php:905 inc/cleantalk-settings.php:906
1259
+ #: inc/cleantalk-settings.php:915 inc/cleantalk-settings.php:922
1260
+ #: inc/cleantalk-settings.php:923 inc/cleantalk-settings.php:931
1261
+ #: inc/cleantalk-settings.php:932 inc/cleantalk-settings.php:939
1262
+ #: inc/cleantalk-settings.php:940
1263
+ msgid "unknown"
1264
+ msgstr "неизвестно"
1265
+
1266
+ #: inc/cleantalk-settings.php:912
1267
+ #, php-format
1268
+ msgid "Average request time for past 7 days: %s seconds."
1269
+ msgstr "Среднее время запроса за последние 7 дней: %s секунд."
1270
+
1271
+ #: inc/cleantalk-settings.php:921
1272
+ #, php-format
1273
+ msgid "Last time SpamFireWall was triggered for %s IP at %s"
1274
+ msgstr "В последний раз SpamFireWall сработал на %s IP %s"
1275
+
1276
+ #: inc/cleantalk-settings.php:930
1277
+ #, php-format
1278
+ msgid "SpamFireWall was updated %s. Now contains %s entries."
1279
+ msgstr "SpamFireWall был обновлен %s. Содержится %s записей."
1280
+
1281
+ #: inc/cleantalk-settings.php:938
1282
+ #, php-format
1283
+ msgid "SpamFireWall sent %s events at %s."
1284
+ msgstr "SpamFireWall отправил %s событий %s."
1285
+
1286
+ #: inc/cleantalk-settings.php:948
1287
+ msgid "There are no failed connections to server."
1288
+ msgstr "Проблем с подключением к серверу нет."
1289
+
1290
+ #: inc/cleantalk-settings.php:975
1291
+ msgid "Send report"
1292
+ msgstr "Отправить отчет"
1293
+
1294
+ #: inc/cleantalk-settings.php:979
1295
+ msgid ""
1296
+ "Please, enable \"Send connection reports\" setting to be able to send reports"
1297
+ msgstr ""
1298
+ "Пожалуйста, активируйте опцию \"Отправлять отчеты о соединении\" для "
1299
+ "возможности отправлять отчеты."
1300
+
1301
+ #: inc/cleantalk-settings.php:1327
1302
+ msgid "Testing is failed. Please check the Access key."
1303
+ msgstr "Ошибка тестирования. Пожалуйста, проверьте ключ доступа."
1304
+
1305
+ #: inc/cleantalk-settings.php:1442
1306
+ msgid "XSS check"
1307
+ msgstr "Проверка XSS уязвимости"
1308
+
1309
+ #: inc/cleantalk-settings.php:1443
1310
+ msgid ""
1311
+ "Cross-Site Scripting (XSS) — prevents malicious code to be executed/sent to "
1312
+ "any user. As a result malicious scripts can not get access to the cookie "
1313
+ "files, session tokens and any other confidential information browsers use "
1314
+ "and store. Such scripts can even overwrite content of HTML pages. CleanTalk "
1315
+ "WAF monitors for patterns of these parameters and block them."
1316
+ msgstr ""
1317
+ "Межсайтовый скриптинг (XSS) - предотвращает выполнение / отправку "
1318
+ "вредоносного кода любому пользователю. В результате вредоносные сценарии не "
1319
+ "могут получить доступ к файлам cookie, токенам сеансов и любой другой "
1320
+ "конфиденциальной информации, которую используют и хранят браузеры. Такие "
1321
+ "сценарии могут даже перезаписывать содержимое HTML-страниц. CleanTalk WAF "
1322
+ "отслеживает шаблоны этих параметров и блокирует их."
1323
+
1324
+ #: inc/cleantalk-settings.php:1446
1325
+ msgid "SQL-injection check"
1326
+ msgstr "Проверка на наличие SQL-injection"
1327
+
1328
+ #: inc/cleantalk-settings.php:1447
1329
+ msgid ""
1330
+ "SQL Injection — one of the most popular ways to hack websites and programs "
1331
+ "that work with databases. It is based on injection of a custom SQL code into "
1332
+ "database queries. It could transmit data through GET, POST requests or "
1333
+ "cookie files in an SQL code. If a website is vulnerable and execute such "
1334
+ "injections then it would allow attackers to apply changes to the website's "
1335
+ "MySQL database."
1336
+ msgstr ""
1337
+ "SQL-инъекция - один из самых популярных способов взлома сайтов и программ, "
1338
+ "работающих с базами данных. Он основан на внедрении пользовательского кода "
1339
+ "SQL в запросы к базе данных. Он может передавать данные через запросы GET, "
1340
+ "POST или файлы cookie в коде SQL. Если веб-сайт уязвим и выполняет такие "
1341
+ "инъекции, это позволит злоумышленникам применить изменения к базе данных "
1342
+ "MySQL веб-сайта."
1343
+
1344
+ #: inc/cleantalk-settings.php:1450
1345
+ msgid "Check uploaded files"
1346
+ msgstr "Проверка загруженных файлов"
1347
+
1348
+ #: inc/cleantalk-settings.php:1451
1349
+ msgid ""
1350
+ "The option checks each uploaded file to a website for malicious code. If "
1351
+ "it's possible for visitors to upload files to a website, for instance a work "
1352
+ "resume, then attackers could abuse it and upload an infected file to execute "
1353
+ "it later and get access to your website."
1354
+ msgstr ""
1355
+ "Опция проверяет каждый загруженный файл на веб-сайт на наличие вредоносного "
1356
+ "кода. Если посетители могут загружать на сайт файлы, например, резюме, то "
1357
+ "злоумышленники могут злоупотреблять им и загружать зараженный файл, чтобы "
1358
+ "выполнить его позднее и получить доступ к вашему сайту."
1359
+
1360
+ #: inc/cleantalk-users.php:15
1361
+ msgid "Find spam users"
1362
+ msgstr "Найти спам-пользователей"
1363
+
1364
+ #: inc/cleantalk-users.php:67
1365
+ msgid "Please wait for a while. CleanTalk is deleting spam users. Users left: "
1366
+ msgstr "Пожалуйста, подождите. CleanTalk удаляет спам-пользователей. Осталось:"
1367
+
1368
+ #: inc/cleantalk-users.php:79
1369
+ msgid ""
1370
+ "The plugin will check all users against blacklists database and show you "
1371
+ "senders that have spam activity on other websites."
1372
+ msgstr ""
1373
+ "Плагин проверит всех пользователей по базе данных чёрных списков и покажет "
1374
+ "отправителей, которые занимаются спамом на других сайтах."
1375
+
1376
+ #: inc/cleantalk-users.php:84
1377
+ msgid ""
1378
+ "Allows to use user's dates to perform more accurate check. Could seriously "
1379
+ "slow down the check."
1380
+ msgstr ""
1381
+ "Позволяет использовать даты пользователей для выполения более тщательной "
1382
+ "проверки. Может серьезно замедлить проверку."
1383
+
1384
+ #: inc/cleantalk-users.php:108
1385
+ msgid ""
1386
+ "Please wait for a while. CleanTalk is checking all users via blacklist "
1387
+ "database at cleantalk.org. You will have option to delete found spam users "
1388
+ "after plugin finish."
1389
+ msgstr ""
1390
+ "Пожалуйста, подождите. ClenTalk проверяет всех пользователей по чёрным "
1391
+ "спискам на cleantalk.org. У вас появится возможность удалить обнаруженных "
1392
+ "спам-пользователей как только плагин закончит."
1393
+
1394
+ #: inc/cleantalk-users.php:267
1395
+ msgid "Delete all users from list"
1396
+ msgstr "Удалить всех пользователей в списке"
1397
+
1398
+ #: inc/cleantalk-users.php:269
1399
+ msgid "Download results in CSV"
1400
+ msgstr "Загрузить результаты (CSV)"
1401
+
1402
+ #: inc/cleantalk-users.php:273
1403
+ msgid "Insert accounts"
1404
+ msgstr "Добавить аккаунты"
1405
+
1406
+ #: inc/cleantalk-users.php:274
1407
+ msgid "Delete accounts"
1408
+ msgstr "Удалить тестовые спам-аккаунты"
1409
+
1410
+ #: inc/cleantalk-users.php:527
1411
+ #, php-format
1412
+ msgid ""
1413
+ "Total users %s, checked %s, last check %s, found %s spam users and %s bad "
1414
+ "users (without IP or email)"
1415
+ msgstr ""
1416
+ "Всего пользователей %s, проверено %s, последняя проверка %s, найдено %s спам-"
1417
+ "пользователей и %s плохих пользователей (без IP или электронной почты)"
1418
+
1419
+ #: inc/cleantalk-widget.php:22
1420
+ msgid "CleanTalk Widget"
1421
+ msgstr "Виджет CleanTalk"
1422
+
1423
+ #: inc/cleantalk-widget.php:25
1424
+ msgid "CleanTalk widget"
1425
+ msgstr "виджет CleanTalk"
1426
+
1427
+ #: inc/cleantalk-widget.php:72
1428
+ msgid "CleanTalk's main page"
1429
+ msgstr "Главная страница CleanTalk"
1430
+
1431
+ #: inc/cleantalk-widget.php:73
1432
+ msgid "spam"
1433
+ msgstr "спама"
1434
+
1435
+ #: inc/cleantalk-widget.php:73
1436
+ msgid "blocked by"
1437
+ msgstr "заблокировано"
1438
+
1439
+ #: inc/cleantalk-widget.php:85
1440
+ msgid "Spam blocked"
1441
+ msgstr "Спама заблокировано"
1442
+
1443
+ #: inc/cleantalk-widget.php:90
1444
+ msgid "Title:"
1445
+ msgstr "Заголовок:"
1446
+
1447
+ #: inc/cleantalk-widget.php:95
1448
+ msgid "Style:"
1449
+ msgstr "Стиль:"
1450
+
1451
+ #: inc/cleantalk-widget.php:97
1452
+ msgid "CleanTalk's Style"
1453
+ msgstr "Фирменный стиль CleanTalk"
1454
+
1455
+ #: inc/cleantalk-widget.php:98
1456
+ msgid "Light"
1457
+ msgstr "Лёгкий"
1458
+
1459
+ #: inc/cleantalk-widget.php:99
1460
+ msgid "Extremely Light"
1461
+ msgstr "Очень легкий"
1462
+
1463
+ #: inc/cleantalk-widget.php:100
1464
+ msgid "Dark"
1465
+ msgstr "Темный"
1466
+
1467
+ #: inc/cleantalk-widget.php:105
1468
+ msgid "Referal link ID:"
1469
+ msgstr "ID партнера:"
1470
+
1471
+ #: lib/CleantalkSFW.php:71
1472
+ msgid "SpamFireWall is activated for your IP "
1473
+ msgstr "Спам Фаервол заблокировал ваш IP"
1474
+
1475
+ #: lib/CleantalkSFW.php:72
1476
+ msgid ""
1477
+ "To continue working with web site, please make sure that you have enabled "
1478
+ "JavaScript."
1479
+ msgstr ""
1480
+ "Что бы продолжить работу с сайтом, пожалуйста, убедитесь что у вас включен "
1481
+ "JavaScript."
1482
+
1483
+ #: lib/CleantalkSFW.php:73
1484
+ msgid "Please click below to pass protection,"
1485
+ msgstr "Пожалуйста, нажмите, чтобы пройти защиту,"
1486
+
1487
+ #: lib/CleantalkSFW.php:74
1488
+ #, php-format
1489
+ msgid ""
1490
+ "Or you will be automatically redirected to the requested page after %d "
1491
+ "seconds."
1492
+ msgstr ""
1493
+ "Или вы будете автоматически переадресованы на запрашиваемую страницу через "
1494
+ "%d секунд."
1495
+
1496
+ #: lib/CleantalkSFW.php:75
1497
+ msgid "Antispam by CleanTalk"
1498
+ msgstr "Антиспам от CleanTalk"
1499
+
1500
+ #: lib/CleantalkSFW.php:76
1501
+ msgid "This is the testing page for SpamFireWall"
1502
+ msgstr "Это тестовая страница SpamFireWall"
1503
+
1504
+ #: templates/translate_banner.php:6
1505
+ msgid "Help others use the plugin in your language."
1506
+ msgstr "Помогите другим пользователям использовать плагин на их языке."
1507
+
1508
+ #: templates/translate_banner.php:7
1509
+ msgid ""
1510
+ "We ask you to help with the translation of the plugin in your language. "
1511
+ "Please take a few minutes to make the plugin more comfortable."
1512
+ msgstr ""
1513
+ "Мы просим Вас помочь с переводом плагина на ваш язык. Пожалуйста, потратьте "
1514
+ "несколько минут, чтобы сделать плагин более удобным."
1515
+
1516
+ #: templates/translate_banner.php:10
1517
+ msgid "TRANSLATE"
1518
+ msgstr "ПЕРЕВЕСТИ"
1519
+
1520
+ #. Description of the plugin/theme
1521
+ msgid ""
1522
+ "Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam,"
1523
+ " no registration spam, no contact spam, protects any WordPress forms."
1524
+ msgstr ""
1525
+ "Максимальная эффективность, проверка всех форм, без Сaptcha, премиум "
1526
+ "антиспам плагин. Нет спаму в комментариях, нет спаму в регистрациях, нету "
1527
+ "спаму в контактных формах, защита любых форм в WordPress."
1528
+
1529
+ #. Plugin URI of the plugin/theme
1530
+ #. Author URI of the plugin/theme
1531
+ msgid "http://cleantalk.org"
1532
+ msgstr "http://cleantalk.org"
1533
+
1534
+ #. Author of the plugin/theme
1535
+ msgid "СleanTalk <welcome@cleantalk.org>"
1536
+ msgstr "СleanTalk <welcome@cleantalk.org>"
i18n/cleantalk.pot CHANGED
@@ -1,1388 +1,1388 @@
1
- #, fuzzy
2
- msgid ""
3
- msgstr ""
4
- "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
- "Project-Id-Version: Anti-Spam by CleanTalk\n"
6
- "POT-Creation-Date: 2019-10-27 16:02+0000\n"
7
- "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
- "Last-Translator: \n"
9
- "Language-Team: \n"
10
- "MIME-Version: 1.0\n"
11
- "Content-Type: text/plain; charset=UTF-8\n"
12
- "Content-Transfer-Encoding: 8bit\n"
13
- "X-Generator: Loco https://localise.biz/\n"
14
- "X-Poedit-Basepath: ..\n"
15
- "X-Poedit-WPHeader: cleantalk.php\n"
16
- "X-Poedit-SourceCharset: UTF-8\n"
17
- "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
18
- "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
19
- "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
20
- "X-Poedit-SearchPath-0: .\n"
21
- "X-Poedit-SearchPathExcluded-0: *.js\n"
22
- "Language: "
23
-
24
- #: inc/classCleantalkComments.php:32 inc/cleantalk-comments.php:16
25
- #: inc/cleantalk-users.php:15
26
- msgid "Check for spam"
27
- msgstr ""
28
-
29
- #: inc/classCleantalkComments.php:33 inc/cleantalk-admin.php:350
30
- #: inc/cleantalk-comments.php:16
31
- msgid "Find spam comments"
32
- msgstr ""
33
-
34
- #: inc/classCleantalkComments.php:66 inc/cleantalk-comments.php:26
35
- #: inc/cleantalk-users.php:25
36
- msgid "Plugin Settings"
37
- msgstr ""
38
-
39
- #: inc/classCleantalkComments.php:76 inc/cleantalk-comments.php:35
40
- #: inc/cleantalk-users.php:34
41
- #, php-format
42
- msgid ""
43
- "Antispam hosting tariff does not allow you to use this feature. To do so, "
44
- "you need to enter an Access Key in the %splugin settings%s."
45
- msgstr ""
46
-
47
- #: inc/classCleantalkComments.php:101 inc/cleantalk-comments.php:60
48
- #: inc/cleantalk-users.php:60
49
- msgid ""
50
- "Ajax error. Process will be automatically restarted in 3 seconds. Status: "
51
- msgstr ""
52
-
53
- #: inc/classCleantalkComments.php:108 inc/cleantalk-comments.php:67
54
- msgid ""
55
- "Please wait for a while. CleanTalk is deleting spam comments. Comments left: "
56
- msgstr ""
57
-
58
- #: inc/classCleantalkComments.php:118 inc/cleantalk-comments.php:77
59
- #: inc/cleantalk-users.php:77
60
- msgid "Start check"
61
- msgstr ""
62
-
63
- #: inc/classCleantalkComments.php:119 inc/cleantalk-comments.php:78
64
- #: inc/cleantalk-users.php:78
65
- msgid "Continue check"
66
- msgstr ""
67
-
68
- #: inc/classCleantalkComments.php:120 inc/cleantalk-comments.php:79
69
- msgid ""
70
- "The plugin will check all comments against blacklists database and show you "
71
- "senders that have spam activity on other websites."
72
- msgstr ""
73
-
74
- #: inc/classCleantalkComments.php:123 inc/cleantalk-comments.php:82
75
- #: inc/cleantalk-users.php:82
76
- msgid "Accurate check"
77
- msgstr ""
78
-
79
- #: inc/classCleantalkComments.php:125 inc/cleantalk-comments.php:84
80
- msgid ""
81
- "Allows to use comment's dates to perform more accurate check. Could "
82
- "seriously slow down the check."
83
- msgstr ""
84
-
85
- #: inc/classCleantalkComments.php:128 inc/cleantalk-comments.php:87
86
- #: inc/cleantalk-users.php:87
87
- msgid "Specify date range"
88
- msgstr ""
89
-
90
- #: inc/classCleantalkComments.php:149 inc/cleantalk-comments.php:108
91
- msgid ""
92
- "Please wait! CleanTalk is checking all approved and pending comments via "
93
- "blacklist database at cleantalk.org. You will have option to delete found "
94
- "spam comments after plugin finish."
95
- msgstr ""
96
-
97
- #: inc/classCleantalkCommentsListTable.php:24
98
- msgid "Author"
99
- msgstr ""
100
-
101
- #: inc/classCleantalkCommentsListTable.php:25 inc/cleantalk-comments.php:158
102
- msgid "Comment"
103
- msgstr ""
104
-
105
- #: inc/classCleantalkCommentsListTable.php:26 inc/cleantalk-comments.php:159
106
- msgid "In Response To"
107
- msgstr ""
108
-
109
- #: inc/classCleantalkCommentsListTable.php:33
110
- msgid "No spam comments."
111
- msgstr ""
112
-
113
- #: inc/cleantalk-admin.php:27
114
- #, php-format
115
- msgid "Find spam %s"
116
- msgstr ""
117
-
118
- #: inc/cleantalk-admin.php:31
119
- msgid "CleanTalk Anti-Spam Log"
120
- msgstr ""
121
-
122
- #: inc/cleantalk-admin.php:50
123
- #, php-format
124
- msgid "%sRefresh%s"
125
- msgstr ""
126
-
127
- #: inc/cleantalk-admin.php:51
128
- #, php-format
129
- msgid "%sConfigure%s"
130
- msgstr ""
131
-
132
- #: inc/cleantalk-admin.php:68
133
- msgid "7 days anti-spam stats"
134
- msgstr ""
135
-
136
- #: inc/cleantalk-admin.php:72
137
- msgid "Top 5 spam IPs blocked"
138
- msgstr ""
139
-
140
- #: inc/cleantalk-admin.php:78
141
- msgid "Get Access key to activate Anti-Spam protection!"
142
- msgstr ""
143
-
144
- #: inc/cleantalk-admin.php:86
145
- #, php-format
146
- msgid "Something went wrong! Error: \"%s\"."
147
- msgstr ""
148
-
149
- #: inc/cleantalk-admin.php:90
150
- msgid "Please, visit your dashboard."
151
- msgstr ""
152
-
153
- #: inc/cleantalk-admin.php:104
154
- msgid "IP"
155
- msgstr ""
156
-
157
- #: inc/cleantalk-admin.php:105
158
- msgid "Country"
159
- msgstr ""
160
-
161
- #: inc/cleantalk-admin.php:106
162
- msgid "Block Count"
163
- msgstr ""
164
-
165
- #: inc/cleantalk-admin.php:134
166
- #, php-format
167
- msgid ""
168
- "This is the count from the %s's cloud and could be different to admin bar "
169
- "counters"
170
- msgstr ""
171
-
172
- #. %s: Number of spam messages
173
- #: inc/cleantalk-admin.php:137
174
- #, php-format
175
- msgid ""
176
- "%s%s%s has blocked %s spam for all time. The statistics are automatically "
177
- "updated every 24 hours."
178
- msgstr ""
179
-
180
- #: inc/cleantalk-admin.php:148 inc/cleantalk-settings.php:544
181
- #, php-format
182
- msgid "Do you like CleanTalk? %sPost your feedback here%s."
183
- msgstr ""
184
-
185
- #: inc/cleantalk-admin.php:234
186
- msgid "Translate"
187
- msgstr ""
188
-
189
- #: inc/cleantalk-admin.php:237
190
- msgid "Start here"
191
- msgstr ""
192
-
193
- #: inc/cleantalk-admin.php:238
194
- msgid "FAQ"
195
- msgstr ""
196
-
197
- #: inc/cleantalk-admin.php:239 inc/cleantalk-admin.php:644
198
- #: inc/cleantalk-settings.php:575
199
- msgid "Support"
200
- msgstr ""
201
-
202
- #: inc/cleantalk-admin.php:306 inc/cleantalk-settings.php:523
203
- msgid "Hosting AntiSpam"
204
- msgstr ""
205
-
206
- #: inc/cleantalk-admin.php:333
207
- msgid "Failed from timeout. Going to check comments again."
208
- msgstr ""
209
-
210
- #: inc/cleantalk-admin.php:334
211
- msgid "Added"
212
- msgstr ""
213
-
214
- #: inc/cleantalk-admin.php:335 inc/cleantalk-admin.php:386
215
- msgid "Deleted"
216
- msgstr ""
217
-
218
- #: inc/cleantalk-admin.php:336
219
- msgid "comments"
220
- msgstr ""
221
-
222
- #: inc/cleantalk-admin.php:337
223
- msgid "Delete all spam comments?"
224
- msgstr ""
225
-
226
- #: inc/cleantalk-admin.php:338
227
- msgid "Delete checked comments?"
228
- msgstr ""
229
-
230
- #: inc/cleantalk-admin.php:339
231
- #, php-format
232
- msgid ""
233
- "Total comments %s. Checked %s. Found %s spam comments. %s bad comments "
234
- "(without IP or email)."
235
- msgstr ""
236
-
237
- #: inc/cleantalk-admin.php:340 inc/cleantalk-admin.php:393
238
- #: inc/cleantalk-users.php:531
239
- msgid "Please do backup of WordPress database before delete any accounts!"
240
- msgstr ""
241
-
242
- #: inc/cleantalk-admin.php:351
243
- msgid "The sender has been whitelisted."
244
- msgstr ""
245
-
246
- #: inc/cleantalk-admin.php:352
247
- msgid "The sender has been blacklisted."
248
- msgstr ""
249
-
250
- #: inc/cleantalk-admin.php:353 inc/cleantalk-public.php:3321
251
- #, php-format
252
- msgid "Feedback has been sent to %sCleanTalk Dashboard%s."
253
- msgstr ""
254
-
255
- #: inc/cleantalk-admin.php:383
256
- msgid "Failed from timeout. Going to check users again."
257
- msgstr ""
258
-
259
- #: inc/cleantalk-admin.php:384
260
- msgid "Failed from timeout. Going to run a new attempt to delete spam users."
261
- msgstr ""
262
-
263
- #: inc/cleantalk-admin.php:385
264
- msgid "Inserted"
265
- msgstr ""
266
-
267
- #: inc/cleantalk-admin.php:387
268
- msgid "users."
269
- msgstr ""
270
-
271
- #: inc/cleantalk-admin.php:388
272
- msgid "Delete all spam users?"
273
- msgstr ""
274
-
275
- #: inc/cleantalk-admin.php:389
276
- msgid "Delete checked users?"
277
- msgstr ""
278
-
279
- #: inc/cleantalk-admin.php:392
280
- #, php-format
281
- msgid ""
282
- "Total users %s, checked %s, found %s spam users and %s bad users (without IP "
283
- "or email)"
284
- msgstr ""
285
-
286
- #: inc/cleantalk-admin.php:401
287
- msgid "Find spam-users"
288
- msgstr ""
289
-
290
- #: inc/cleantalk-admin.php:449
291
- #, php-format
292
- msgid "Unable to get Access key automatically: %s"
293
- msgstr ""
294
-
295
- #: inc/cleantalk-admin.php:450
296
- msgid "Get the Access key"
297
- msgstr ""
298
-
299
- #: inc/cleantalk-admin.php:459
300
- #, php-format
301
- msgid "Please enter Access Key in %s settings to enable anti spam protection!"
302
- msgstr ""
303
-
304
- #: inc/cleantalk-admin.php:469
305
- #, php-format
306
- msgid "%s trial period ends, please upgrade to %s!"
307
- msgstr ""
308
-
309
- #: inc/cleantalk-admin.php:481
310
- msgid "RENEW ANTI-SPAM"
311
- msgstr ""
312
-
313
- #: inc/cleantalk-admin.php:482
314
- msgid "next year"
315
- msgstr ""
316
-
317
- #: inc/cleantalk-admin.php:486
318
- #, php-format
319
- msgid "Please renew your anti-spam license for %s."
320
- msgstr ""
321
-
322
- #: inc/cleantalk-admin.php:511
323
- msgid "Make it right!"
324
- msgstr ""
325
-
326
- #: inc/cleantalk-admin.php:513
327
- #, php-format
328
- msgid "%sGet premium%s"
329
- msgstr ""
330
-
331
- #: inc/cleantalk-admin.php:552
332
- msgid "Since"
333
- msgstr ""
334
-
335
- #: inc/cleantalk-admin.php:558
336
- msgid ""
337
- "All / Allowed / Blocked submissions. The number of submissions is being "
338
- "counted since CleanTalk plugin installation."
339
- msgstr ""
340
-
341
- #: inc/cleantalk-admin.php:558
342
- msgid "All"
343
- msgstr ""
344
-
345
- #: inc/cleantalk-admin.php:566
346
- msgid ""
347
- "Allowed / Blocked submissions. The number of submissions for past 24 hours. "
348
- msgstr ""
349
-
350
- #: inc/cleantalk-admin.php:566
351
- msgid "Day"
352
- msgstr ""
353
-
354
- #: inc/cleantalk-admin.php:572
355
- msgid ""
356
- "All / Blocked events. Access attempts regitred by SpamFireWall counted since "
357
- "the last plugin activation."
358
- msgstr ""
359
-
360
- #: inc/cleantalk-admin.php:582
361
- msgid ""
362
- "Allowed / Blocked submissions. The number of submissions is being counted "
363
- "since "
364
- msgstr ""
365
-
366
- #: inc/cleantalk-admin.php:593
367
- msgid "dashboard"
368
- msgstr ""
369
-
370
- #: inc/cleantalk-admin.php:600
371
- msgid "Settings"
372
- msgstr ""
373
-
374
- #: inc/cleantalk-admin.php:608
375
- msgid "Bulk spam comments removal tool."
376
- msgstr ""
377
-
378
- #: inc/cleantalk-admin.php:608 inc/cleantalk-settings.php:882
379
- msgid "Check comments for spam"
380
- msgstr ""
381
-
382
- #: inc/cleantalk-admin.php:618 inc/cleantalk-settings.php:885
383
- msgid "Check users for spam"
384
- msgstr ""
385
-
386
- #: inc/cleantalk-admin.php:627
387
- msgid "Reset first counter"
388
- msgstr ""
389
-
390
- #: inc/cleantalk-admin.php:635
391
- msgid "Reset all counters"
392
- msgstr ""
393
-
394
- #: inc/cleantalk-comments.php:221 inc/cleantalk-users.php:220
395
- msgid "Approve"
396
- msgstr ""
397
-
398
- #: inc/cleantalk-comments.php:223 inc/cleantalk-users.php:222
399
- msgid "Delete"
400
- msgstr ""
401
-
402
- #: inc/cleantalk-comments.php:265
403
- msgid "Delete all comments from the list"
404
- msgstr ""
405
-
406
- #: inc/cleantalk-comments.php:266 inc/cleantalk-users.php:268
407
- msgid "Delete selected"
408
- msgstr ""
409
-
410
- #: inc/cleantalk-comments.php:270
411
- msgid "Insert comments"
412
- msgstr ""
413
-
414
- #: inc/cleantalk-comments.php:271
415
- msgid "Delete comments"
416
- msgstr ""
417
-
418
- #: inc/cleantalk-comments.php:276 inc/cleantalk-users.php:279
419
- msgid ""
420
- "There is some differencies between blacklists database and our API "
421
- "mechanisms. Blacklists shows all history of spam activity, but our API (that "
422
- "used in spam checking) used another parameters, too: last day of activity, "
423
- "number of spam attacks during last days etc. This mechanisms help us to "
424
- "reduce number of false positivitie. So, there is nothing strange, if some "
425
- "emails/IPs will be not found by this checking."
426
- msgstr ""
427
-
428
- #: inc/cleantalk-comments.php:281 inc/cleantalk-users.php:284
429
- msgid "Stop deletion"
430
- msgstr ""
431
-
432
- #: inc/cleantalk-comments.php:495
433
- #, php-format
434
- msgid ""
435
- "Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad "
436
- "comments (without IP or email)."
437
- msgstr ""
438
-
439
- #: inc/cleantalk-comments.php:499
440
- msgid "Please do backup of WordPress database before delete any comments!"
441
- msgstr ""
442
-
443
- #: inc/cleantalk-public.php:500 inc/cleantalk-public.php:641
444
- #: inc/cleantalk-public.php:743 inc/cleantalk-public.php:2363
445
- #: inc/cleantalk-public.php:3052
446
- msgid "Spam protection by CleanTalk"
447
- msgstr ""
448
-
449
- #: inc/cleantalk-public.php:1233 inc/cleantalk-public.php:1361
450
- #: inc/cleantalk-public.php:1379
451
- msgid "Spam protection"
452
- msgstr ""
453
-
454
- #: inc/cleantalk-public.php:1332
455
- msgid "CleanTalk AntiSpam: This message is possible spam."
456
- msgstr ""
457
-
458
- #: inc/cleantalk-public.php:1333
459
- msgid "You could check it in CleanTalk's anti-spam database:"
460
- msgstr ""
461
-
462
- #: inc/cleantalk-public.php:1569
463
- #, php-format
464
- msgid "Registration approved by %s."
465
- msgstr ""
466
-
467
- #: inc/cleantalk-public.php:1849
468
- msgid "CleanTalk AntiSpam: This registration is spam."
469
- msgstr ""
470
-
471
- #: inc/cleantalk-public.php:1850 inc/cleantalk-public.php:2219
472
- #: inc/cleantalk-public.php:2387 inc/cleantalk-public.php:2542
473
- msgid "CleanTalk's anti-spam database:"
474
- msgstr ""
475
-
476
- #: inc/cleantalk-public.php:2218 inc/cleantalk-public.php:2386
477
- #: inc/cleantalk-public.php:2541
478
- msgid "CleanTalk AntiSpam: This message is spam."
479
- msgstr ""
480
-
481
- #: inc/cleantalk-public.php:2666
482
- msgid "Comment approved. Anti-spam by CleanTalk."
483
- msgstr ""
484
-
485
- #: inc/cleantalk-public.php:3219
486
- msgid "Attention, please!"
487
- msgstr ""
488
-
489
- #: inc/cleantalk-public.php:3220
490
- #, php-format
491
- msgid "\"%s\" plugin error on your site \"%s\":"
492
- msgstr ""
493
-
494
- #: inc/cleantalk-public.php:3222
495
- #, php-format
496
- msgid "[%s] \"%s\" error!"
497
- msgstr ""
498
-
499
- #: inc/cleantalk-public.php:3271
500
- msgid ""
501
- "By using this form you agree with the storage and processing of your data by "
502
- "using the Privacy Policy on this website."
503
- msgstr ""
504
-
505
- #: inc/cleantalk-public.php:3319
506
- msgid "Error occured while sending feedback."
507
- msgstr ""
508
-
509
- #: inc/cleantalk-public.php:3320
510
- msgid "Feedback wasn't sent. There is no associated request."
511
- msgstr ""
512
-
513
- #: inc/cleantalk-public.php:3364
514
- msgid "Sender info"
515
- msgstr ""
516
-
517
- #: inc/cleantalk-public.php:3367
518
- msgid "by"
519
- msgstr ""
520
-
521
- #: inc/cleantalk-public.php:3378
522
- msgid "No email"
523
- msgstr ""
524
-
525
- #: inc/cleantalk-public.php:3388
526
- msgid "No IP"
527
- msgstr ""
528
-
529
- #: inc/cleantalk-public.php:3391
530
- msgid "Mark as spam"
531
- msgstr ""
532
-
533
- #: inc/cleantalk-public.php:3392
534
- msgid "Unspam"
535
- msgstr ""
536
-
537
- #: inc/cleantalk-public.php:3394
538
- msgid "Marked as spam."
539
- msgstr ""
540
-
541
- #: inc/cleantalk-public.php:3395
542
- msgid "Marked as not spam."
543
- msgstr ""
544
-
545
- #: inc/cleantalk-settings.php:96
546
- msgid "SpamFireWall"
547
- msgstr ""
548
-
549
- #: inc/cleantalk-settings.php:97
550
- msgid ""
551
- "This option allows to filter spam bots before they access website. Also "
552
- "reduces CPU usage on hosting server and accelerates pages load time."
553
- msgstr ""
554
-
555
- #: inc/cleantalk-settings.php:104
556
- msgid "Forms to protect"
557
- msgstr ""
558
-
559
- #: inc/cleantalk-settings.php:110
560
- msgid "Advanced settings"
561
- msgstr ""
562
-
563
- #: inc/cleantalk-settings.php:117
564
- msgid "Registration Forms"
565
- msgstr ""
566
-
567
- #: inc/cleantalk-settings.php:118
568
- msgid "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
569
- msgstr ""
570
-
571
- #: inc/cleantalk-settings.php:121
572
- msgid "Comments form"
573
- msgstr ""
574
-
575
- #: inc/cleantalk-settings.php:122
576
- msgid "WordPress, JetPack, WooCommerce."
577
- msgstr ""
578
-
579
- #: inc/cleantalk-settings.php:125 inc/cleantalk-settings.php:761
580
- msgid "Contact forms"
581
- msgstr ""
582
-
583
- #: inc/cleantalk-settings.php:126
584
- msgid ""
585
- "Contact Form 7, Formidable forms, JetPack, Fast Secure Contact Form, "
586
- "WordPress Landing Pages, Gravity Forms."
587
- msgstr ""
588
-
589
- #: inc/cleantalk-settings.php:129 inc/cleantalk-settings.php:762
590
- msgid "Custom contact forms"
591
- msgstr ""
592
-
593
- #: inc/cleantalk-settings.php:130
594
- msgid "Anti spam test for any WordPress themes or contacts forms."
595
- msgstr ""
596
-
597
- #: inc/cleantalk-settings.php:133 inc/cleantalk-settings.php:775
598
- msgid "WooCommerce checkout form"
599
- msgstr ""
600
-
601
- #: inc/cleantalk-settings.php:134
602
- msgid "Anti spam test for WooCommerce checkout form."
603
- msgstr ""
604
-
605
- #: inc/cleantalk-settings.php:138
606
- msgid "Spam test for registration during checkout"
607
- msgstr ""
608
-
609
- #: inc/cleantalk-settings.php:139
610
- msgid ""
611
- "Enable anti spam test for registration process which during woocommerce's "
612
- "checkout."
613
- msgstr ""
614
-
615
- #: inc/cleantalk-settings.php:145
616
- msgid "Test default Wordpress search form for spam"
617
- msgstr ""
618
-
619
- #: inc/cleantalk-settings.php:146
620
- msgid "Spam protection for Search form."
621
- msgstr ""
622
-
623
- #: inc/cleantalk-settings.php:148
624
- #, php-format
625
- msgid "Read more about %sspam protection for Search form%s on our blog."
626
- msgstr ""
627
-
628
- #: inc/cleantalk-settings.php:156
629
- msgid "Protect external forms"
630
- msgstr ""
631
-
632
- #: inc/cleantalk-settings.php:157
633
- msgid ""
634
- "Turn this option on to protect forms on your WordPress that send data to "
635
- "third-part servers (like MailChimp)."
636
- msgstr ""
637
-
638
- #: inc/cleantalk-settings.php:161
639
- msgid "Capture buffer"
640
- msgstr ""
641
-
642
- #: inc/cleantalk-settings.php:162
643
- msgid ""
644
- "This setting gives you more sophisticated and strengthened protection for "
645
- "external forms. But it could break plugins which use a buffer like Ninja "
646
- "Forms."
647
- msgstr ""
648
-
649
- #: inc/cleantalk-settings.php:167
650
- msgid "Protect internal forms"
651
- msgstr ""
652
-
653
- #: inc/cleantalk-settings.php:168
654
- msgid ""
655
- "This option will enable protection for custom (hand-made) AJAX forms with "
656
- "PHP scripts handlers on your WordPress."
657
- msgstr ""
658
-
659
- #: inc/cleantalk-settings.php:175
660
- msgid "Comments and Messages"
661
- msgstr ""
662
-
663
- #: inc/cleantalk-settings.php:178
664
- msgid "BuddyPress Private Messages"
665
- msgstr ""
666
-
667
- #: inc/cleantalk-settings.php:179
668
- msgid "Check buddyPress private messages."
669
- msgstr ""
670
-
671
- #: inc/cleantalk-settings.php:182
672
- msgid "Don't check trusted user's comments"
673
- msgstr ""
674
-
675
- #: inc/cleantalk-settings.php:183
676
- #, php-format
677
- msgid "Don't check comments for users with above %d comments."
678
- msgstr ""
679
-
680
- #: inc/cleantalk-settings.php:186
681
- msgid "Automatically delete spam comments"
682
- msgstr ""
683
-
684
- #: inc/cleantalk-settings.php:187
685
- #, php-format
686
- msgid "Delete spam comments older than %d days."
687
- msgstr ""
688
-
689
- #: inc/cleantalk-settings.php:190
690
- msgid "Remove links from approved comments"
691
- msgstr ""
692
-
693
- #: inc/cleantalk-settings.php:191
694
- msgid "Remove links from approved comments. Replace it with \"[Link deleted]\""
695
- msgstr ""
696
-
697
- #: inc/cleantalk-settings.php:194
698
- msgid "Show links to check Emails, IPs for spam."
699
- msgstr ""
700
-
701
- #: inc/cleantalk-settings.php:195
702
- msgid ""
703
- "Shows little icon near IP addresses and Emails allowing you to check it via "
704
- "CleanTalk's database. Also allowing you to manage comments from the public "
705
- "post's page."
706
- msgstr ""
707
-
708
- #: inc/cleantalk-settings.php:203
709
- msgid "Data Processing"
710
- msgstr ""
711
-
712
- #: inc/cleantalk-settings.php:206
713
- msgid "Protect logged in Users"
714
- msgstr ""
715
-
716
- #: inc/cleantalk-settings.php:207
717
- msgid ""
718
- "Turn this option on to check for spam any submissions (comments, contact "
719
- "forms and etc.) from registered Users."
720
- msgstr ""
721
-
722
- #: inc/cleantalk-settings.php:210
723
- msgid "Use AJAX for JavaScript check"
724
- msgstr ""
725
-
726
- #: inc/cleantalk-settings.php:211
727
- msgid ""
728
- "Options helps protect WordPress against spam with any caching plugins. Turn "
729
- "this option on to avoid issues with caching plugins."
730
- msgstr ""
731
-
732
- #: inc/cleantalk-settings.php:214
733
- msgid "Use static keys for JS check."
734
- msgstr ""
735
-
736
- #: inc/cleantalk-settings.php:215
737
- msgid ""
738
- "Could help if you have cache for AJAX requests and you are dealing with "
739
- "false positives. Slightly decreases protection quality. Auto - Static key "
740
- "will be used if caching plugin is spotted."
741
- msgstr ""
742
-
743
- #: inc/cleantalk-settings.php:223
744
- msgid "Check all post data"
745
- msgstr ""
746
-
747
- #: inc/cleantalk-settings.php:224
748
- msgid ""
749
- "Check all POST submissions from website visitors. Enable this option if you "
750
- "have spam misses on website."
751
- msgstr ""
752
-
753
- #: inc/cleantalk-settings.php:226
754
- msgid " Or you don`t have records about missed spam here:"
755
- msgstr ""
756
-
757
- #: inc/cleantalk-settings.php:226
758
- msgid "CleanTalk dashboard"
759
- msgstr ""
760
-
761
- #: inc/cleantalk-settings.php:229
762
- msgid "СAUTION! Option can catch POST requests in WordPress backend"
763
- msgstr ""
764
-
765
- #: inc/cleantalk-settings.php:232
766
- msgid "Set cookies"
767
- msgstr ""
768
-
769
- #: inc/cleantalk-settings.php:233
770
- msgid ""
771
- "Turn this option off to deny plugin generates any cookies on website front-"
772
- "end. This option is helpful if you use Varnish. But most of contact forms "
773
- "will not be protected if the option is turned off! <b>Warning: We strongly "
774
- "recommend you to enable this otherwise it could cause false positives spam "
775
- "detection.</b>"
776
- msgstr ""
777
-
778
- #: inc/cleantalk-settings.php:237
779
- msgid "Use alternative mechanism for cookies"
780
- msgstr ""
781
-
782
- #: inc/cleantalk-settings.php:238 inc/cleantalk-settings.php:360
783
- msgid "Doesn't use cookie or PHP sessions. Collect data for all types of bots."
784
- msgstr ""
785
-
786
- #: inc/cleantalk-settings.php:243
787
- msgid "Use SSL"
788
- msgstr ""
789
-
790
- #: inc/cleantalk-settings.php:244
791
- msgid "Turn this option on to use encrypted (SSL) connection with servers."
792
- msgstr ""
793
-
794
- #: inc/cleantalk-settings.php:247
795
- msgid "Use Wordpress HTTP API"
796
- msgstr ""
797
-
798
- #: inc/cleantalk-settings.php:248
799
- msgid ""
800
- "Alternative way to connect the Cloud. Use this if you have connection "
801
- "problems."
802
- msgstr ""
803
-
804
- #: inc/cleantalk-settings.php:255
805
- msgid "Exclusions"
806
- msgstr ""
807
-
808
- #: inc/cleantalk-settings.php:259
809
- msgid "URL exclusions"
810
- msgstr ""
811
-
812
- #: inc/cleantalk-settings.php:260
813
- msgid "You could type here URL you want to exclude. Use comma as separator."
814
- msgstr ""
815
-
816
- #: inc/cleantalk-settings.php:264
817
- msgid "Use Regular Expression in URL Exclusions"
818
- msgstr ""
819
-
820
- #: inc/cleantalk-settings.php:268
821
- msgid "Field name exclusions"
822
- msgstr ""
823
-
824
- #: inc/cleantalk-settings.php:269
825
- msgid ""
826
- "You could type here fields names you want to exclude. Use comma as separator."
827
- msgstr ""
828
-
829
- #: inc/cleantalk-settings.php:273
830
- msgid "Use Regular Expression in Field Exclusions"
831
- msgstr ""
832
-
833
- #: inc/cleantalk-settings.php:280
834
- msgid "Roles which bypass spam test. Hold CTRL to select multiple roles."
835
- msgstr ""
836
-
837
- #: inc/cleantalk-settings.php:287
838
- msgid "Admin bar"
839
- msgstr ""
840
-
841
- #: inc/cleantalk-settings.php:294
842
- msgid "Show statistics in admin bar"
843
- msgstr ""
844
-
845
- #: inc/cleantalk-settings.php:295
846
- msgid ""
847
- "Show/hide icon in top level menu in WordPress backend. The number of "
848
- "submissions is being counted for past 24 hours."
849
- msgstr ""
850
-
851
- #: inc/cleantalk-settings.php:299
852
- msgid "Show All-time counter"
853
- msgstr ""
854
-
855
- #: inc/cleantalk-settings.php:300
856
- msgid ""
857
- "Display all-time requests counter in the admin bar. Counter displays number "
858
- "of requests since plugin installation."
859
- msgstr ""
860
-
861
- #: inc/cleantalk-settings.php:305
862
- msgid "Show 24 hours counter"
863
- msgstr ""
864
-
865
- #: inc/cleantalk-settings.php:306
866
- msgid ""
867
- "Display daily requests counter in the admin bar. Counter displays number of "
868
- "requests of the past 24 hours."
869
- msgstr ""
870
-
871
- #: inc/cleantalk-settings.php:311
872
- msgid "SpamFireWall counter"
873
- msgstr ""
874
-
875
- #: inc/cleantalk-settings.php:312
876
- msgid ""
877
- "Display SpamFireWall requests in the admin bar. Counter displays number of "
878
- "requests since plugin installation."
879
- msgstr ""
880
-
881
- #: inc/cleantalk-settings.php:325
882
- msgid "Collect details about browsers"
883
- msgstr ""
884
-
885
- #: inc/cleantalk-settings.php:326
886
- msgid ""
887
- "Checking this box you allow plugin store information about screen size and "
888
- "browser plugins of website visitors. The option in a beta state."
889
- msgstr ""
890
-
891
- #: inc/cleantalk-settings.php:330
892
- msgid "Send connection reports"
893
- msgstr ""
894
-
895
- #: inc/cleantalk-settings.php:331
896
- msgid ""
897
- "Checking this box you allow plugin to send the information about your "
898
- "connection. The option in a beta state."
899
- msgstr ""
900
-
901
- #: inc/cleantalk-settings.php:335
902
- msgid "Async JavaScript loading"
903
- msgstr ""
904
-
905
- #: inc/cleantalk-settings.php:336
906
- msgid ""
907
- "Use async loading for scripts. Warning: This could reduce filtration quality."
908
- msgstr ""
909
-
910
- #: inc/cleantalk-settings.php:340
911
- msgid "Allow to add GDPR notice via shortcode"
912
- msgstr ""
913
-
914
- #: inc/cleantalk-settings.php:341
915
- msgid ""
916
- " Adds small checkbox under your website form. To add it you should use the "
917
- "shortcode on the form's page: [cleantalk_gdpr_form id=\"FORM_ID\"]"
918
- msgstr ""
919
-
920
- #: inc/cleantalk-settings.php:346
921
- msgid "GDPR text notice"
922
- msgstr ""
923
-
924
- #: inc/cleantalk-settings.php:347
925
- msgid "This text will be added as a description to the GDPR checkbox."
926
- msgstr ""
927
-
928
- #: inc/cleantalk-settings.php:353
929
- msgid "Store visited URLs"
930
- msgstr ""
931
-
932
- #: inc/cleantalk-settings.php:354
933
- msgid ""
934
- "Plugin stores last 10 visited URLs (HTTP REFFERERS) before visitor submits "
935
- "form on the site. You can see stored visited URLS for each visitor in your "
936
- "Dashboard. Turn the option on to improve Anti-Spam protection."
937
- msgstr ""
938
-
939
- #: inc/cleantalk-settings.php:359
940
- msgid "Use cookies less sessions"
941
- msgstr ""
942
-
943
- #: inc/cleantalk-settings.php:366
944
- msgid ""
945
- "Notify users with selected roles about new approved comments. Hold CTRL to "
946
- "select multiple roles."
947
- msgstr ""
948
-
949
- #: inc/cleantalk-settings.php:367
950
- #, php-format
951
- msgid "If enabled, overrides similar Wordpress %sdiscussion settings%s."
952
- msgstr ""
953
-
954
- #: inc/cleantalk-settings.php:380
955
- msgid "Complete deactivation"
956
- msgstr ""
957
-
958
- #: inc/cleantalk-settings.php:381
959
- msgid "Leave no trace in the system after deactivation."
960
- msgstr ""
961
-
962
- #: inc/cleantalk-settings.php:398
963
- msgid "Enable White Label Mode"
964
- msgstr ""
965
-
966
- #: inc/cleantalk-settings.php:399
967
- #, php-format
968
- msgid "Learn more information %shere%s."
969
- msgstr ""
970
-
971
- #: inc/cleantalk-settings.php:404
972
- msgid "Hoster API Key"
973
- msgstr ""
974
-
975
- #: inc/cleantalk-settings.php:405
976
- #, php-format
977
- msgid "You can get it in %sCleantalk's Control Panel%s"
978
- msgstr ""
979
-
980
- #: inc/cleantalk-settings.php:413
981
- msgid "Plugin name"
982
- msgstr ""
983
-
984
- #: inc/cleantalk-settings.php:414
985
- #, php-format
986
- msgid "Specify plugin name. Leave empty for deafult %sAntispam by Cleantalk%s"
987
- msgstr ""
988
-
989
- #: inc/cleantalk-settings.php:423
990
- msgid "Allow users to use other key"
991
- msgstr ""
992
-
993
- #: inc/cleantalk-settings.php:424
994
- msgid ""
995
- "Allow users to use different Access key in their plugin settings on child "
996
- "blogs. They could use different CleanTalk account."
997
- msgstr ""
998
-
999
- #: inc/cleantalk-settings.php:427
1000
- msgid ""
1001
- "Constant <b>CLEANTALK_ACCESS_KEY</b> is set. All websites will use API key "
1002
- "from this constant. Look into wp-config.php"
1003
- msgstr ""
1004
-
1005
- #: inc/cleantalk-settings.php:533
1006
- msgid "CleanTalk's tech support:"
1007
- msgstr ""
1008
-
1009
- #: inc/cleantalk-settings.php:539
1010
- msgid "Plugin Homepage at"
1011
- msgstr ""
1012
-
1013
- #: inc/cleantalk-settings.php:540
1014
- msgid "GDPR compliance"
1015
- msgstr ""
1016
-
1017
- #: inc/cleantalk-settings.php:541
1018
- msgid "Use s@cleantalk.org to test plugin in any WordPress form."
1019
- msgstr ""
1020
-
1021
- #: inc/cleantalk-settings.php:542
1022
- msgid "CleanTalk is registered Trademark. All rights reserved."
1023
- msgstr ""
1024
-
1025
- #: inc/cleantalk-settings.php:559
1026
- #, php-format
1027
- msgid "%s has blocked <b>%s</b> spam."
1028
- msgstr ""
1029
-
1030
- #: inc/cleantalk-settings.php:571
1031
- msgid "Click here to get anti-spam statistics"
1032
- msgstr ""
1033
-
1034
- #: inc/cleantalk-settings.php:614
1035
- #, php-format
1036
- msgid "Please, enter the %splugin settings%s in main site dashboard."
1037
- msgstr ""
1038
-
1039
- #: inc/cleantalk-settings.php:633
1040
- msgid "Error occured while API key validating. Error: "
1041
- msgstr ""
1042
-
1043
- #: inc/cleantalk-settings.php:634
1044
- msgid "Error occured while automatically gettings access key. Error: "
1045
- msgstr ""
1046
-
1047
- #: inc/cleantalk-settings.php:635
1048
- msgid "Error occured while sending sending SpamFireWall logs. Error: "
1049
- msgstr ""
1050
-
1051
- #: inc/cleantalk-settings.php:636
1052
- msgid "Error occured while updating SpamFireWall local base. Error: "
1053
- msgstr ""
1054
-
1055
- #: inc/cleantalk-settings.php:637
1056
- msgid "Error occured while checking account status. Error: "
1057
- msgstr ""
1058
-
1059
- #: inc/cleantalk-settings.php:638
1060
- msgid "Error occured while excuting API call. Error: "
1061
- msgstr ""
1062
-
1063
- #: inc/cleantalk-settings.php:646
1064
- msgid "Unknown error. Error: "
1065
- msgstr ""
1066
-
1067
- #: inc/cleantalk-settings.php:677
1068
- msgid "Errors:"
1069
- msgstr ""
1070
-
1071
- #: inc/cleantalk-settings.php:682
1072
- #, php-format
1073
- msgid "You can get support any time here: %s."
1074
- msgstr ""
1075
-
1076
- #: inc/cleantalk-settings.php:757
1077
- msgid "Protection is active"
1078
- msgstr ""
1079
-
1080
- #: inc/cleantalk-settings.php:759
1081
- msgid "Registration forms"
1082
- msgstr ""
1083
-
1084
- #: inc/cleantalk-settings.php:760
1085
- msgid "Comments forms"
1086
- msgstr ""
1087
-
1088
- #: inc/cleantalk-settings.php:765
1089
- msgid "Validate email for existence"
1090
- msgstr ""
1091
-
1092
- #: inc/cleantalk-settings.php:769
1093
- msgid "Auto update"
1094
- msgstr ""
1095
-
1096
- #: inc/cleantalk-settings.php:793
1097
- msgid "<h3>Key is provided by Super Admin.</h3>"
1098
- msgstr ""
1099
-
1100
- #: inc/cleantalk-settings.php:797
1101
- msgid "Access key"
1102
- msgstr ""
1103
-
1104
- #: inc/cleantalk-settings.php:812
1105
- msgid "Enter the key"
1106
- msgstr ""
1107
-
1108
- #: inc/cleantalk-settings.php:818
1109
- #, php-format
1110
- msgid "Account at cleantalk.org is %s."
1111
- msgstr ""
1112
-
1113
- #: inc/cleantalk-settings.php:827
1114
- msgid "Show the access key"
1115
- msgstr ""
1116
-
1117
- #: inc/cleantalk-settings.php:838
1118
- msgid "Get Access Key Automatically"
1119
- msgstr ""
1120
-
1121
- #: inc/cleantalk-settings.php:846
1122
- #, php-format
1123
- msgid ""
1124
- "Admin e-mail (%s) will be used for registration, if you want to use other "
1125
- "email please %sGet Access Key Manually%s."
1126
- msgstr ""
1127
-
1128
- #: inc/cleantalk-settings.php:862
1129
- #, php-format
1130
- msgid "I accept %sLicense Agreement%s."
1131
- msgstr ""
1132
-
1133
- #: inc/cleantalk-settings.php:888
1134
- msgid "Statistics & Reports"
1135
- msgstr ""
1136
-
1137
- #: inc/cleantalk-settings.php:904
1138
- #, php-format
1139
- msgid "Last spam check request to %s server was at %s."
1140
- msgstr ""
1141
-
1142
- #: inc/cleantalk-settings.php:905 inc/cleantalk-settings.php:906
1143
- #: inc/cleantalk-settings.php:915 inc/cleantalk-settings.php:922
1144
- #: inc/cleantalk-settings.php:923 inc/cleantalk-settings.php:931
1145
- #: inc/cleantalk-settings.php:932 inc/cleantalk-settings.php:939
1146
- #: inc/cleantalk-settings.php:940
1147
- msgid "unknown"
1148
- msgstr ""
1149
-
1150
- #: inc/cleantalk-settings.php:912
1151
- #, php-format
1152
- msgid "Average request time for past 7 days: %s seconds."
1153
- msgstr ""
1154
-
1155
- #: inc/cleantalk-settings.php:921
1156
- #, php-format
1157
- msgid "Last time SpamFireWall was triggered for %s IP at %s"
1158
- msgstr ""
1159
-
1160
- #: inc/cleantalk-settings.php:930
1161
- #, php-format
1162
- msgid "SpamFireWall was updated %s. Now contains %s entries."
1163
- msgstr ""
1164
-
1165
- #: inc/cleantalk-settings.php:938
1166
- #, php-format
1167
- msgid "SpamFireWall sent %s events at %s."
1168
- msgstr ""
1169
-
1170
- #: inc/cleantalk-settings.php:948
1171
- msgid "There are no failed connections to server."
1172
- msgstr ""
1173
-
1174
- #: inc/cleantalk-settings.php:975
1175
- msgid "Send report"
1176
- msgstr ""
1177
-
1178
- #: inc/cleantalk-settings.php:979
1179
- msgid ""
1180
- "Please, enable \"Send connection reports\" setting to be able to send reports"
1181
- msgstr ""
1182
-
1183
- #: inc/cleantalk-settings.php:1327
1184
- msgid "Testing is failed. Please check the Access key."
1185
- msgstr ""
1186
-
1187
- #: inc/cleantalk-settings.php:1442
1188
- msgid "XSS check"
1189
- msgstr ""
1190
-
1191
- #: inc/cleantalk-settings.php:1443
1192
- msgid ""
1193
- "Cross-Site Scripting (XSS) — prevents malicious code to be executed/sent to "
1194
- "any user. As a result malicious scripts can not get access to the cookie "
1195
- "files, session tokens and any other confidential information browsers use "
1196
- "and store. Such scripts can even overwrite content of HTML pages. CleanTalk "
1197
- "WAF monitors for patterns of these parameters and block them."
1198
- msgstr ""
1199
-
1200
- #: inc/cleantalk-settings.php:1446
1201
- msgid "SQL-injection check"
1202
- msgstr ""
1203
-
1204
- #: inc/cleantalk-settings.php:1447
1205
- msgid ""
1206
- "SQL Injection — one of the most popular ways to hack websites and programs "
1207
- "that work with databases. It is based on injection of a custom SQL code into "
1208
- "database queries. It could transmit data through GET, POST requests or "
1209
- "cookie files in an SQL code. If a website is vulnerable and execute such "
1210
- "injections then it would allow attackers to apply changes to the website's "
1211
- "MySQL database."
1212
- msgstr ""
1213
-
1214
- #: inc/cleantalk-settings.php:1450
1215
- msgid "Check uploaded files"
1216
- msgstr ""
1217
-
1218
- #: inc/cleantalk-settings.php:1451
1219
- msgid ""
1220
- "The option checks each uploaded file to a website for malicious code. If "
1221
- "it's possible for visitors to upload files to a website, for instance a work "
1222
- "resume, then attackers could abuse it and upload an infected file to execute "
1223
- "it later and get access to your website."
1224
- msgstr ""
1225
-
1226
- #: inc/cleantalk-users.php:15
1227
- msgid "Find spam users"
1228
- msgstr ""
1229
-
1230
- #: inc/cleantalk-users.php:67
1231
- msgid "Please wait for a while. CleanTalk is deleting spam users. Users left: "
1232
- msgstr ""
1233
-
1234
- #: inc/cleantalk-users.php:79
1235
- msgid ""
1236
- "The plugin will check all users against blacklists database and show you "
1237
- "senders that have spam activity on other websites."
1238
- msgstr ""
1239
-
1240
- #: inc/cleantalk-users.php:84
1241
- msgid ""
1242
- "Allows to use user's dates to perform more accurate check. Could seriously "
1243
- "slow down the check."
1244
- msgstr ""
1245
-
1246
- #: inc/cleantalk-users.php:108
1247
- msgid ""
1248
- "Please wait for a while. CleanTalk is checking all users via blacklist "
1249
- "database at cleantalk.org. You will have option to delete found spam users "
1250
- "after plugin finish."
1251
- msgstr ""
1252
-
1253
- #: inc/cleantalk-users.php:267
1254
- msgid "Delete all users from list"
1255
- msgstr ""
1256
-
1257
- #: inc/cleantalk-users.php:269
1258
- msgid "Download results in CSV"
1259
- msgstr ""
1260
-
1261
- #: inc/cleantalk-users.php:273
1262
- msgid "Insert accounts"
1263
- msgstr ""
1264
-
1265
- #: inc/cleantalk-users.php:274
1266
- msgid "Delete accounts"
1267
- msgstr ""
1268
-
1269
- #: inc/cleantalk-users.php:527
1270
- #, php-format
1271
- msgid ""
1272
- "Total users %s, checked %s, last check %s, found %s spam users and %s bad "
1273
- "users (without IP or email)"
1274
- msgstr ""
1275
-
1276
- #: inc/cleantalk-widget.php:22
1277
- msgid "CleanTalk Widget"
1278
- msgstr ""
1279
-
1280
- #: inc/cleantalk-widget.php:25
1281
- msgid "CleanTalk widget"
1282
- msgstr ""
1283
-
1284
- #: inc/cleantalk-widget.php:72
1285
- msgid "CleanTalk's main page"
1286
- msgstr ""
1287
-
1288
- #: inc/cleantalk-widget.php:73
1289
- msgid "spam"
1290
- msgstr ""
1291
-
1292
- #: inc/cleantalk-widget.php:73
1293
- msgid "blocked by"
1294
- msgstr ""
1295
-
1296
- #: inc/cleantalk-widget.php:85
1297
- msgid "Spam blocked"
1298
- msgstr ""
1299
-
1300
- #: inc/cleantalk-widget.php:90
1301
- msgid "Title:"
1302
- msgstr ""
1303
-
1304
- #: inc/cleantalk-widget.php:95
1305
- msgid "Style:"
1306
- msgstr ""
1307
-
1308
- #: inc/cleantalk-widget.php:97
1309
- msgid "CleanTalk's Style"
1310
- msgstr ""
1311
-
1312
- #: inc/cleantalk-widget.php:98
1313
- msgid "Light"
1314
- msgstr ""
1315
-
1316
- #: inc/cleantalk-widget.php:99
1317
- msgid "Extremely Light"
1318
- msgstr ""
1319
-
1320
- #: inc/cleantalk-widget.php:100
1321
- msgid "Dark"
1322
- msgstr ""
1323
-
1324
- #: inc/cleantalk-widget.php:105
1325
- msgid "Referal link ID:"
1326
- msgstr ""
1327
-
1328
- #: lib/CleantalkSFW.php:71
1329
- msgid "SpamFireWall is activated for your IP "
1330
- msgstr ""
1331
-
1332
- #: lib/CleantalkSFW.php:72
1333
- msgid ""
1334
- "To continue working with web site, please make sure that you have enabled "
1335
- "JavaScript."
1336
- msgstr ""
1337
-
1338
- #: lib/CleantalkSFW.php:73
1339
- msgid "Please click below to pass protection,"
1340
- msgstr ""
1341
-
1342
- #: lib/CleantalkSFW.php:74
1343
- #, php-format
1344
- msgid ""
1345
- "Or you will be automatically redirected to the requested page after %d "
1346
- "seconds."
1347
- msgstr ""
1348
-
1349
- #: lib/CleantalkSFW.php:75
1350
- msgid "Antispam by CleanTalk"
1351
- msgstr ""
1352
-
1353
- #: lib/CleantalkSFW.php:76
1354
- msgid "This is the testing page for SpamFireWall"
1355
- msgstr ""
1356
-
1357
- #: templates/translate_banner.php:6
1358
- msgid "Help others use the plugin in your language."
1359
- msgstr ""
1360
-
1361
- #: templates/translate_banner.php:7
1362
- msgid ""
1363
- "We ask you to help with the translation of the plugin in your language. "
1364
- "Please take a few minutes to make the plugin more comfortable."
1365
- msgstr ""
1366
-
1367
- #: templates/translate_banner.php:10
1368
- msgid "TRANSLATE"
1369
- msgstr ""
1370
-
1371
- #. Plugin Name of the plugin/theme
1372
- msgid "Anti-Spam by CleanTalk"
1373
- msgstr ""
1374
-
1375
- #. Description of the plugin/theme
1376
- msgid ""
1377
- "Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam,"
1378
- " no registration spam, no contact spam, protects any WordPress forms."
1379
- msgstr ""
1380
-
1381
- #. Plugin URI of the plugin/theme
1382
- #. Author URI of the plugin/theme
1383
- msgid "http://cleantalk.org"
1384
- msgstr ""
1385
-
1386
- #. Author of the plugin/theme
1387
- msgid "СleanTalk <welcome@cleantalk.org>"
1388
- msgstr ""
1
+ #, fuzzy
2
+ msgid ""
3
+ msgstr ""
4
+ "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
+ "Project-Id-Version: Anti-Spam by CleanTalk\n"
6
+ "POT-Creation-Date: 2019-10-27 16:02+0000\n"
7
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
+ "Last-Translator: \n"
9
+ "Language-Team: \n"
10
+ "MIME-Version: 1.0\n"
11
+ "Content-Type: text/plain; charset=UTF-8\n"
12
+ "Content-Transfer-Encoding: 8bit\n"
13
+ "X-Generator: Loco https://localise.biz/\n"
14
+ "X-Poedit-Basepath: ..\n"
15
+ "X-Poedit-WPHeader: cleantalk.php\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
18
+ "esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
19
+ "_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
20
+ "X-Poedit-SearchPath-0: .\n"
21
+ "X-Poedit-SearchPathExcluded-0: *.js\n"
22
+ "Language: "
23
+
24
+ #: inc/classCleantalkComments.php:32 inc/cleantalk-comments.php:16
25
+ #: inc/cleantalk-users.php:15
26
+ msgid "Check for spam"
27
+ msgstr ""
28
+
29
+ #: inc/classCleantalkComments.php:33 inc/cleantalk-admin.php:350
30
+ #: inc/cleantalk-comments.php:16
31
+ msgid "Find spam comments"
32
+ msgstr ""
33
+
34
+ #: inc/classCleantalkComments.php:66 inc/cleantalk-comments.php:26
35
+ #: inc/cleantalk-users.php:25
36
+ msgid "Plugin Settings"
37
+ msgstr ""
38
+
39
+ #: inc/classCleantalkComments.php:76 inc/cleantalk-comments.php:35
40
+ #: inc/cleantalk-users.php:34
41
+ #, php-format
42
+ msgid ""
43
+ "Antispam hosting tariff does not allow you to use this feature. To do so, "
44
+ "you need to enter an Access Key in the %splugin settings%s."
45
+ msgstr ""
46
+
47
+ #: inc/classCleantalkComments.php:101 inc/cleantalk-comments.php:60
48
+ #: inc/cleantalk-users.php:60
49
+ msgid ""
50
+ "Ajax error. Process will be automatically restarted in 3 seconds. Status: "
51
+ msgstr ""
52
+
53
+ #: inc/classCleantalkComments.php:108 inc/cleantalk-comments.php:67
54
+ msgid ""
55
+ "Please wait for a while. CleanTalk is deleting spam comments. Comments left: "
56
+ msgstr ""
57
+
58
+ #: inc/classCleantalkComments.php:118 inc/cleantalk-comments.php:77
59
+ #: inc/cleantalk-users.php:77
60
+ msgid "Start check"
61
+ msgstr ""
62
+
63
+ #: inc/classCleantalkComments.php:119 inc/cleantalk-comments.php:78
64
+ #: inc/cleantalk-users.php:78
65
+ msgid "Continue check"
66
+ msgstr ""
67
+
68
+ #: inc/classCleantalkComments.php:120 inc/cleantalk-comments.php:79
69
+ msgid ""
70
+ "The plugin will check all comments against blacklists database and show you "
71
+ "senders that have spam activity on other websites."
72
+ msgstr ""
73
+
74
+ #: inc/classCleantalkComments.php:123 inc/cleantalk-comments.php:82
75
+ #: inc/cleantalk-users.php:82
76
+ msgid "Accurate check"
77
+ msgstr ""
78
+
79
+ #: inc/classCleantalkComments.php:125 inc/cleantalk-comments.php:84
80
+ msgid ""
81
+ "Allows to use comment's dates to perform more accurate check. Could "
82
+ "seriously slow down the check."
83
+ msgstr ""
84
+
85
+ #: inc/classCleantalkComments.php:128 inc/cleantalk-comments.php:87
86
+ #: inc/cleantalk-users.php:87
87
+ msgid "Specify date range"
88
+ msgstr ""
89
+
90
+ #: inc/classCleantalkComments.php:149 inc/cleantalk-comments.php:108
91
+ msgid ""
92
+ "Please wait! CleanTalk is checking all approved and pending comments via "
93
+ "blacklist database at cleantalk.org. You will have option to delete found "
94
+ "spam comments after plugin finish."
95
+ msgstr ""
96
+
97
+ #: inc/classCleantalkCommentsListTable.php:24
98
+ msgid "Author"
99
+ msgstr ""
100
+
101
+ #: inc/classCleantalkCommentsListTable.php:25 inc/cleantalk-comments.php:158
102
+ msgid "Comment"
103
+ msgstr ""
104
+
105
+ #: inc/classCleantalkCommentsListTable.php:26 inc/cleantalk-comments.php:159
106
+ msgid "In Response To"
107
+ msgstr ""
108
+
109
+ #: inc/classCleantalkCommentsListTable.php:33
110
+ msgid "No spam comments."
111
+ msgstr ""
112
+
113
+ #: inc/cleantalk-admin.php:27
114
+ #, php-format
115
+ msgid "Find spam %s"
116
+ msgstr ""
117
+
118
+ #: inc/cleantalk-admin.php:31
119
+ msgid "CleanTalk Anti-Spam Log"
120
+ msgstr ""
121
+
122
+ #: inc/cleantalk-admin.php:50
123
+ #, php-format
124
+ msgid "%sRefresh%s"
125
+ msgstr ""
126
+
127
+ #: inc/cleantalk-admin.php:51
128
+ #, php-format
129
+ msgid "%sConfigure%s"
130
+ msgstr ""
131
+
132
+ #: inc/cleantalk-admin.php:68
133
+ msgid "7 days anti-spam stats"
134
+ msgstr ""
135
+
136
+ #: inc/cleantalk-admin.php:72
137
+ msgid "Top 5 spam IPs blocked"
138
+ msgstr ""
139
+
140
+ #: inc/cleantalk-admin.php:78
141
+ msgid "Get Access key to activate Anti-Spam protection!"
142
+ msgstr ""
143
+
144
+ #: inc/cleantalk-admin.php:86
145
+ #, php-format
146
+ msgid "Something went wrong! Error: \"%s\"."
147
+ msgstr ""
148
+
149
+ #: inc/cleantalk-admin.php:90
150
+ msgid "Please, visit your dashboard."
151
+ msgstr ""
152
+
153
+ #: inc/cleantalk-admin.php:104
154
+ msgid "IP"
155
+ msgstr ""
156
+
157
+ #: inc/cleantalk-admin.php:105
158
+ msgid "Country"
159
+ msgstr ""
160
+
161
+ #: inc/cleantalk-admin.php:106
162
+ msgid "Block Count"
163
+ msgstr ""
164
+
165
+ #: inc/cleantalk-admin.php:134
166
+ #, php-format
167
+ msgid ""
168
+ "This is the count from the %s's cloud and could be different to admin bar "
169
+ "counters"
170
+ msgstr ""
171
+
172
+ #. %s: Number of spam messages
173
+ #: inc/cleantalk-admin.php:137
174
+ #, php-format
175
+ msgid ""
176
+ "%s%s%s has blocked %s spam for all time. The statistics are automatically "
177
+ "updated every 24 hours."
178
+ msgstr ""
179
+
180
+ #: inc/cleantalk-admin.php:148 inc/cleantalk-settings.php:544
181
+ #, php-format
182
+ msgid "Do you like CleanTalk? %sPost your feedback here%s."
183
+ msgstr ""
184
+
185
+ #: inc/cleantalk-admin.php:234
186
+ msgid "Translate"
187
+ msgstr ""
188
+
189
+ #: inc/cleantalk-admin.php:237
190
+ msgid "Start here"
191
+ msgstr ""
192
+
193
+ #: inc/cleantalk-admin.php:238
194
+ msgid "FAQ"
195
+ msgstr ""
196
+
197
+ #: inc/cleantalk-admin.php:239 inc/cleantalk-admin.php:644
198
+ #: inc/cleantalk-settings.php:575
199
+ msgid "Support"
200
+ msgstr ""
201
+
202
+ #: inc/cleantalk-admin.php:306 inc/cleantalk-settings.php:523
203
+ msgid "Hosting AntiSpam"
204
+ msgstr ""
205
+
206
+ #: inc/cleantalk-admin.php:333
207
+ msgid "Failed from timeout. Going to check comments again."
208
+ msgstr ""
209
+
210
+ #: inc/cleantalk-admin.php:334
211
+ msgid "Added"
212
+ msgstr ""
213
+
214
+ #: inc/cleantalk-admin.php:335 inc/cleantalk-admin.php:386
215
+ msgid "Deleted"
216
+ msgstr ""
217
+
218
+ #: inc/cleantalk-admin.php:336
219
+ msgid "comments"
220
+ msgstr ""
221
+
222
+ #: inc/cleantalk-admin.php:337
223
+ msgid "Delete all spam comments?"
224
+ msgstr ""
225
+
226
+ #: inc/cleantalk-admin.php:338
227
+ msgid "Delete checked comments?"
228
+ msgstr ""
229
+
230
+ #: inc/cleantalk-admin.php:339
231
+ #, php-format
232
+ msgid ""
233
+ "Total comments %s. Checked %s. Found %s spam comments. %s bad comments "
234
+ "(without IP or email)."
235
+ msgstr ""
236
+
237
+ #: inc/cleantalk-admin.php:340 inc/cleantalk-admin.php:393
238
+ #: inc/cleantalk-users.php:531
239
+ msgid "Please do backup of WordPress database before delete any accounts!"
240
+ msgstr ""
241
+
242
+ #: inc/cleantalk-admin.php:351
243
+ msgid "The sender has been whitelisted."
244
+ msgstr ""
245
+
246
+ #: inc/cleantalk-admin.php:352
247
+ msgid "The sender has been blacklisted."
248
+ msgstr ""
249
+
250
+ #: inc/cleantalk-admin.php:353 inc/cleantalk-public.php:3321
251
+ #, php-format
252
+ msgid "Feedback has been sent to %sCleanTalk Dashboard%s."
253
+ msgstr ""
254
+
255
+ #: inc/cleantalk-admin.php:383
256
+ msgid "Failed from timeout. Going to check users again."
257
+ msgstr ""
258
+
259
+ #: inc/cleantalk-admin.php:384
260
+ msgid "Failed from timeout. Going to run a new attempt to delete spam users."
261
+ msgstr ""
262
+
263
+ #: inc/cleantalk-admin.php:385
264
+ msgid "Inserted"
265
+ msgstr ""
266
+
267
+ #: inc/cleantalk-admin.php:387
268
+ msgid "users."
269
+ msgstr ""
270
+
271
+ #: inc/cleantalk-admin.php:388
272
+ msgid "Delete all spam users?"
273
+ msgstr ""
274
+
275
+ #: inc/cleantalk-admin.php:389
276
+ msgid "Delete checked users?"
277
+ msgstr ""
278
+
279
+ #: inc/cleantalk-admin.php:392
280
+ #, php-format
281
+ msgid ""
282
+ "Total users %s, checked %s, found %s spam users and %s bad users (without IP "
283
+ "or email)"
284
+ msgstr ""
285
+
286
+ #: inc/cleantalk-admin.php:401
287
+ msgid "Find spam-users"
288
+ msgstr ""
289
+
290
+ #: inc/cleantalk-admin.php:449
291
+ #, php-format
292
+ msgid "Unable to get Access key automatically: %s"
293
+ msgstr ""
294
+
295
+ #: inc/cleantalk-admin.php:450
296
+ msgid "Get the Access key"
297
+ msgstr ""
298
+
299
+ #: inc/cleantalk-admin.php:459
300
+ #, php-format
301
+ msgid "Please enter Access Key in %s settings to enable anti spam protection!"
302
+ msgstr ""
303
+
304
+ #: inc/cleantalk-admin.php:469
305
+ #, php-format
306
+ msgid "%s trial period ends, please upgrade to %s!"
307
+ msgstr ""
308
+
309
+ #: inc/cleantalk-admin.php:481
310
+ msgid "RENEW ANTI-SPAM"
311
+ msgstr ""
312
+
313
+ #: inc/cleantalk-admin.php:482
314
+ msgid "next year"
315
+ msgstr ""
316
+
317
+ #: inc/cleantalk-admin.php:486
318
+ #, php-format
319
+ msgid "Please renew your anti-spam license for %s."
320
+ msgstr ""
321
+
322
+ #: inc/cleantalk-admin.php:511
323
+ msgid "Make it right!"
324
+ msgstr ""
325
+
326
+ #: inc/cleantalk-admin.php:513
327
+ #, php-format
328
+ msgid "%sGet premium%s"
329
+ msgstr ""
330
+
331
+ #: inc/cleantalk-admin.php:552
332
+ msgid "Since"
333
+ msgstr ""
334
+
335
+ #: inc/cleantalk-admin.php:558
336
+ msgid ""
337
+ "All / Allowed / Blocked submissions. The number of submissions is being "
338
+ "counted since CleanTalk plugin installation."
339
+ msgstr ""
340
+
341
+ #: inc/cleantalk-admin.php:558
342
+ msgid "All"
343
+ msgstr ""
344
+
345
+ #: inc/cleantalk-admin.php:566
346
+ msgid ""
347
+ "Allowed / Blocked submissions. The number of submissions for past 24 hours. "
348
+ msgstr ""
349
+
350
+ #: inc/cleantalk-admin.php:566
351
+ msgid "Day"
352
+ msgstr ""
353
+
354
+ #: inc/cleantalk-admin.php:572
355
+ msgid ""
356
+ "All / Blocked events. Access attempts regitred by SpamFireWall counted since "
357
+ "the last plugin activation."
358
+ msgstr ""
359
+
360
+ #: inc/cleantalk-admin.php:582
361
+ msgid ""
362
+ "Allowed / Blocked submissions. The number of submissions is being counted "
363
+ "since "
364
+ msgstr ""
365
+
366
+ #: inc/cleantalk-admin.php:593
367
+ msgid "dashboard"
368
+ msgstr ""
369
+
370
+ #: inc/cleantalk-admin.php:600
371
+ msgid "Settings"
372
+ msgstr ""
373
+
374
+ #: inc/cleantalk-admin.php:608
375
+ msgid "Bulk spam comments removal tool."
376
+ msgstr ""
377
+
378
+ #: inc/cleantalk-admin.php:608 inc/cleantalk-settings.php:882
379
+ msgid "Check comments for spam"
380
+ msgstr ""
381
+
382
+ #: inc/cleantalk-admin.php:618 inc/cleantalk-settings.php:885
383
+ msgid "Check users for spam"
384
+ msgstr ""
385
+
386
+ #: inc/cleantalk-admin.php:627
387
+ msgid "Reset first counter"
388
+ msgstr ""
389
+
390
+ #: inc/cleantalk-admin.php:635
391
+ msgid "Reset all counters"
392
+ msgstr ""
393
+
394
+ #: inc/cleantalk-comments.php:221 inc/cleantalk-users.php:220
395
+ msgid "Approve"
396
+ msgstr ""
397
+
398
+ #: inc/cleantalk-comments.php:223 inc/cleantalk-users.php:222
399
+ msgid "Delete"
400
+ msgstr ""
401
+
402
+ #: inc/cleantalk-comments.php:265
403
+ msgid "Delete all comments from the list"
404
+ msgstr ""
405
+
406
+ #: inc/cleantalk-comments.php:266 inc/cleantalk-users.php:268
407
+ msgid "Delete selected"
408
+ msgstr ""
409
+
410
+ #: inc/cleantalk-comments.php:270
411
+ msgid "Insert comments"
412
+ msgstr ""
413
+
414
+ #: inc/cleantalk-comments.php:271
415
+ msgid "Delete comments"
416
+ msgstr ""
417
+
418
+ #: inc/cleantalk-comments.php:276 inc/cleantalk-users.php:279
419
+ msgid ""
420
+ "There is some differencies between blacklists database and our API "
421
+ "mechanisms. Blacklists shows all history of spam activity, but our API (that "
422
+ "used in spam checking) used another parameters, too: last day of activity, "
423
+ "number of spam attacks during last days etc. This mechanisms help us to "
424
+ "reduce number of false positivitie. So, there is nothing strange, if some "
425
+ "emails/IPs will be not found by this checking."
426
+ msgstr ""
427
+
428
+ #: inc/cleantalk-comments.php:281 inc/cleantalk-users.php:284
429
+ msgid "Stop deletion"
430
+ msgstr ""
431
+
432
+ #: inc/cleantalk-comments.php:495
433
+ #, php-format
434
+ msgid ""
435
+ "Total comments %s. Checked %s. Last check %s. Found %s spam comments. %s bad "
436
+ "comments (without IP or email)."
437
+ msgstr ""
438
+
439
+ #: inc/cleantalk-comments.php:499
440
+ msgid "Please do backup of WordPress database before delete any comments!"
441
+ msgstr ""
442
+
443
+ #: inc/cleantalk-public.php:500 inc/cleantalk-public.php:641
444
+ #: inc/cleantalk-public.php:743 inc/cleantalk-public.php:2363
445
+ #: inc/cleantalk-public.php:3052
446
+ msgid "Spam protection by CleanTalk"
447
+ msgstr ""
448
+
449
+ #: inc/cleantalk-public.php:1233 inc/cleantalk-public.php:1361
450
+ #: inc/cleantalk-public.php:1379
451
+ msgid "Spam protection"
452
+ msgstr ""
453
+
454
+ #: inc/cleantalk-public.php:1332
455
+ msgid "CleanTalk AntiSpam: This message is possible spam."
456
+ msgstr ""
457
+
458
+ #: inc/cleantalk-public.php:1333
459
+ msgid "You could check it in CleanTalk's anti-spam database:"
460
+ msgstr ""
461
+
462
+ #: inc/cleantalk-public.php:1569
463
+ #, php-format
464
+ msgid "Registration approved by %s."
465
+ msgstr ""
466
+
467
+ #: inc/cleantalk-public.php:1849
468
+ msgid "CleanTalk AntiSpam: This registration is spam."
469
+ msgstr ""
470
+
471
+ #: inc/cleantalk-public.php:1850 inc/cleantalk-public.php:2219
472
+ #: inc/cleantalk-public.php:2387 inc/cleantalk-public.php:2542
473
+ msgid "CleanTalk's anti-spam database:"
474
+ msgstr ""
475
+
476
+ #: inc/cleantalk-public.php:2218 inc/cleantalk-public.php:2386
477
+ #: inc/cleantalk-public.php:2541
478
+ msgid "CleanTalk AntiSpam: This message is spam."
479
+ msgstr ""
480
+
481
+ #: inc/cleantalk-public.php:2666
482
+ msgid "Comment approved. Anti-spam by CleanTalk."
483
+ msgstr ""
484
+
485
+ #: inc/cleantalk-public.php:3219
486
+ msgid "Attention, please!"
487
+ msgstr ""
488
+
489
+ #: inc/cleantalk-public.php:3220
490
+ #, php-format
491
+ msgid "\"%s\" plugin error on your site \"%s\":"
492
+ msgstr ""
493
+
494
+ #: inc/cleantalk-public.php:3222
495
+ #, php-format
496
+ msgid "[%s] \"%s\" error!"
497
+ msgstr ""
498
+
499
+ #: inc/cleantalk-public.php:3271
500
+ msgid ""
501
+ "By using this form you agree with the storage and processing of your data by "
502
+ "using the Privacy Policy on this website."
503
+ msgstr ""
504
+
505
+ #: inc/cleantalk-public.php:3319
506
+ msgid "Error occurred while sending feedback."
507
+ msgstr ""
508
+
509
+ #: inc/cleantalk-public.php:3320
510
+ msgid "Feedback wasn't sent. There is no associated request."
511
+ msgstr ""
512
+
513
+ #: inc/cleantalk-public.php:3364
514
+ msgid "Sender info"
515
+ msgstr ""
516
+
517
+ #: inc/cleantalk-public.php:3367
518
+ msgid "by"
519
+ msgstr ""
520
+
521
+ #: inc/cleantalk-public.php:3378
522
+ msgid "No email"
523
+ msgstr ""
524
+
525
+ #: inc/cleantalk-public.php:3388
526
+ msgid "No IP"
527
+ msgstr ""
528
+
529
+ #: inc/cleantalk-public.php:3391
530
+ msgid "Mark as spam"
531
+ msgstr ""
532
+
533
+ #: inc/cleantalk-public.php:3392
534
+ msgid "Unspam"
535
+ msgstr ""
536
+
537
+ #: inc/cleantalk-public.php:3394
538
+ msgid "Marked as spam."
539
+ msgstr ""
540
+
541
+ #: inc/cleantalk-public.php:3395
542
+ msgid "Marked as not spam."
543
+ msgstr ""
544
+
545
+ #: inc/cleantalk-settings.php:96
546
+ msgid "SpamFireWall"
547
+ msgstr ""
548
+
549
+ #: inc/cleantalk-settings.php:97
550
+ msgid ""
551
+ "This option allows to filter spam bots before they access website. Also "
552
+ "reduces CPU usage on hosting server and accelerates pages load time."
553
+ msgstr ""
554
+
555
+ #: inc/cleantalk-settings.php:104
556
+ msgid "Forms to protect"
557
+ msgstr ""
558
+
559
+ #: inc/cleantalk-settings.php:110
560
+ msgid "Advanced settings"
561
+ msgstr ""
562
+
563
+ #: inc/cleantalk-settings.php:117
564
+ msgid "Registration Forms"
565
+ msgstr ""
566
+
567
+ #: inc/cleantalk-settings.php:118
568
+ msgid "WordPress, BuddyPress, bbPress, S2Member, WooCommerce."
569
+ msgstr ""
570
+
571
+ #: inc/cleantalk-settings.php:121
572
+ msgid "Comments form"
573
+ msgstr ""
574
+
575
+ #: inc/cleantalk-settings.php:122
576
+ msgid "WordPress, JetPack, WooCommerce."
577
+ msgstr ""
578
+
579
+ #: inc/cleantalk-settings.php:125 inc/cleantalk-settings.php:761
580
+ msgid "Contact forms"
581
+ msgstr ""
582
+
583
+ #: inc/cleantalk-settings.php:126
584
+ msgid ""
585
+ "Contact Form 7, Formidable forms, JetPack, Fast Secure Contact Form, "
586
+ "WordPress Landing Pages, Gravity Forms."
587
+ msgstr ""
588
+
589
+ #: inc/cleantalk-settings.php:129 inc/cleantalk-settings.php:762
590
+ msgid "Custom contact forms"
591
+ msgstr ""
592
+
593
+ #: inc/cleantalk-settings.php:130
594
+ msgid "Anti spam test for any WordPress themes or contacts forms."
595
+ msgstr ""
596
+
597
+ #: inc/cleantalk-settings.php:133 inc/cleantalk-settings.php:775
598
+ msgid "WooCommerce checkout form"
599
+ msgstr ""
600
+
601
+ #: inc/cleantalk-settings.php:134
602
+ msgid "Anti spam test for WooCommerce checkout form."
603
+ msgstr ""
604
+
605
+ #: inc/cleantalk-settings.php:138
606
+ msgid "Spam test for registration during checkout"
607
+ msgstr ""
608
+
609
+ #: inc/cleantalk-settings.php:139
610
+ msgid ""
611
+ "Enable anti spam test for registration process which during woocommerce's "
612
+ "checkout."
613
+ msgstr ""
614
+
615
+ #: inc/cleantalk-settings.php:145
616
+ msgid "Test default Wordpress search form for spam"
617
+ msgstr ""
618
+
619
+ #: inc/cleantalk-settings.php:146
620
+ msgid "Spam protection for Search form."
621
+ msgstr ""
622
+
623
+ #: inc/cleantalk-settings.php:148
624
+ #, php-format
625
+ msgid "Read more about %sspam protection for Search form%s on our blog."
626
+ msgstr ""
627
+
628
+ #: inc/cleantalk-settings.php:156
629
+ msgid "Protect external forms"
630
+ msgstr ""
631
+
632
+ #: inc/cleantalk-settings.php:157
633
+ msgid ""
634
+ "Turn this option on to protect forms on your WordPress that send data to "
635
+ "third-part servers (like MailChimp)."
636
+ msgstr ""
637
+
638
+ #: inc/cleantalk-settings.php:161
639
+ msgid "Capture buffer"
640
+ msgstr ""
641
+
642
+ #: inc/cleantalk-settings.php:162
643
+ msgid ""
644
+ "This setting gives you more sophisticated and strengthened protection for "
645
+ "external forms. But it could break plugins which use a buffer like Ninja "
646
+ "Forms."
647
+ msgstr ""
648
+
649
+ #: inc/cleantalk-settings.php:167
650
+ msgid "Protect internal forms"
651
+ msgstr ""
652
+
653
+ #: inc/cleantalk-settings.php:168
654
+ msgid ""
655
+ "This option will enable protection for custom (hand-made) AJAX forms with "
656
+ "PHP scripts handlers on your WordPress."
657
+ msgstr ""
658
+
659
+ #: inc/cleantalk-settings.php:175
660
+ msgid "Comments and Messages"
661
+ msgstr ""
662
+
663
+ #: inc/cleantalk-settings.php:178
664
+ msgid "BuddyPress Private Messages"
665
+ msgstr ""
666
+
667
+ #: inc/cleantalk-settings.php:179
668
+ msgid "Check buddyPress private messages."
669
+ msgstr ""
670
+
671
+ #: inc/cleantalk-settings.php:182
672
+ msgid "Don't check trusted user's comments"
673
+ msgstr ""
674
+
675
+ #: inc/cleantalk-settings.php:183
676
+ #, php-format
677
+ msgid "Don't check comments for users with above %d comments."
678
+ msgstr ""
679
+
680
+ #: inc/cleantalk-settings.php:186
681
+ msgid "Automatically delete spam comments"
682
+ msgstr ""
683
+
684
+ #: inc/cleantalk-settings.php:187
685
+ #, php-format
686
+ msgid "Delete spam comments older than %d days."
687
+ msgstr ""
688
+
689
+ #: inc/cleantalk-settings.php:190
690
+ msgid "Remove links from approved comments"
691
+ msgstr ""
692
+
693
+ #: inc/cleantalk-settings.php:191
694
+ msgid "Remove links from approved comments. Replace it with \"[Link deleted]\""
695
+ msgstr ""
696
+
697
+ #: inc/cleantalk-settings.php:194
698
+ msgid "Show links to check Emails, IPs for spam."
699
+ msgstr ""
700
+
701
+ #: inc/cleantalk-settings.php:195
702
+ msgid ""
703
+ "Shows little icon near IP addresses and Emails allowing you to check it via "
704
+ "CleanTalk's database. Also allowing you to manage comments from the public "
705
+ "post's page."
706
+ msgstr ""
707
+
708
+ #: inc/cleantalk-settings.php:203
709
+ msgid "Data Processing"
710
+ msgstr ""
711
+
712
+ #: inc/cleantalk-settings.php:206
713
+ msgid "Protect logged in Users"
714
+ msgstr ""
715
+
716
+ #: inc/cleantalk-settings.php:207
717
+ msgid ""
718
+ "Turn this option on to check for spam any submissions (comments, contact "
719
+ "forms and etc.) from registered Users."
720
+ msgstr ""
721
+
722
+ #: inc/cleantalk-settings.php:210
723
+ msgid "Use AJAX for JavaScript check"
724
+ msgstr ""
725
+
726
+ #: inc/cleantalk-settings.php:211
727
+ msgid ""
728
+ "Options helps protect WordPress against spam with any caching plugins. Turn "
729
+ "this option on to avoid issues with caching plugins."
730
+ msgstr ""
731
+
732
+ #: inc/cleantalk-settings.php:214
733
+ msgid "Use static keys for JS check."
734
+ msgstr ""
735
+
736
+ #: inc/cleantalk-settings.php:215
737
+ msgid ""
738
+ "Could help if you have cache for AJAX requests and you are dealing with "
739
+ "false positives. Slightly decreases protection quality. Auto - Static key "
740
+ "will be used if caching plugin is spotted."
741
+ msgstr ""
742
+
743
+ #: inc/cleantalk-settings.php:223
744
+ msgid "Check all post data"
745
+ msgstr ""
746
+
747
+ #: inc/cleantalk-settings.php:224
748
+ msgid ""
749
+ "Check all POST submissions from website visitors. Enable this option if you "
750
+ "have spam misses on website."
751
+ msgstr ""
752
+
753
+ #: inc/cleantalk-settings.php:226
754
+ msgid " Or you don`t have records about missed spam here:"
755
+ msgstr ""
756
+
757
+ #: inc/cleantalk-settings.php:226
758
+ msgid "CleanTalk dashboard"
759
+ msgstr ""
760
+
761
+ #: inc/cleantalk-settings.php:229
762
+ msgid "СAUTION! Option can catch POST requests in WordPress backend"
763
+ msgstr ""
764
+
765
+ #: inc/cleantalk-settings.php:232
766
+ msgid "Set cookies"
767
+ msgstr ""
768
+
769
+ #: inc/cleantalk-settings.php:233
770
+ msgid ""
771
+ "Turn this option off to deny plugin generates any cookies on website front-"
772
+ "end. This option is helpful if you use Varnish. But most of contact forms "
773
+ "will not be protected if the option is turned off! <b>Warning: We strongly "
774
+ "recommend you to enable this otherwise it could cause false positives spam "
775
+ "detection.</b>"
776
+ msgstr ""
777
+
778
+ #: inc/cleantalk-settings.php:237
779
+ msgid "Use alternative mechanism for cookies"
780
+ msgstr ""
781
+
782
+ #: inc/cleantalk-settings.php:238 inc/cleantalk-settings.php:360
783
+ msgid "Doesn't use cookie or PHP sessions. Collect data for all types of bots."
784
+ msgstr ""
785
+
786
+ #: inc/cleantalk-settings.php:243
787
+ msgid "Use SSL"
788
+ msgstr ""
789
+
790
+ #: inc/cleantalk-settings.php:244
791
+ msgid "Turn this option on to use encrypted (SSL) connection with servers."
792
+ msgstr ""
793
+
794
+ #: inc/cleantalk-settings.php:247
795
+ msgid "Use Wordpress HTTP API"
796
+ msgstr ""
797
+
798
+ #: inc/cleantalk-settings.php:248
799
+ msgid ""
800
+ "Alternative way to connect the Cloud. Use this if you have connection "
801
+ "problems."
802
+ msgstr ""
803
+
804
+ #: inc/cleantalk-settings.php:255
805
+ msgid "Exclusions"
806
+ msgstr ""
807
+
808
+ #: inc/cleantalk-settings.php:259
809
+ msgid "URL exclusions"
810
+ msgstr ""
811
+
812
+ #: inc/cleantalk-settings.php:260
813
+ msgid "You could type here URL you want to exclude. Use comma as separator."
814
+ msgstr ""
815
+
816
+ #: inc/cleantalk-settings.php:264
817
+ msgid "Use Regular Expression in URL Exclusions"
818
+ msgstr ""
819
+
820
+ #: inc/cleantalk-settings.php:268
821
+ msgid "Field name exclusions"
822
+ msgstr ""
823
+
824
+ #: inc/cleantalk-settings.php:269
825
+ msgid ""
826
+ "You could type here fields names you want to exclude. Use comma as separator."
827
+ msgstr ""
828
+
829
+ #: inc/cleantalk-settings.php:273
830
+ msgid "Use Regular Expression in Field Exclusions"
831
+ msgstr ""
832
+
833
+ #: inc/cleantalk-settings.php:280
834
+ msgid "Roles which bypass spam test. Hold CTRL to select multiple roles."
835
+ msgstr ""
836
+
837
+ #: inc/cleantalk-settings.php:287
838
+ msgid "Admin bar"
839
+ msgstr ""
840
+
841
+ #: inc/cleantalk-settings.php:294
842
+ msgid "Show statistics in admin bar"
843
+ msgstr ""
844
+
845
+ #: inc/cleantalk-settings.php:295
846
+ msgid ""
847
+ "Show/hide icon in top level menu in WordPress backend. The number of "
848
+ "submissions is being counted for past 24 hours."
849
+ msgstr ""
850
+
851
+ #: inc/cleantalk-settings.php:299
852
+ msgid "Show All-time counter"
853
+ msgstr ""
854
+
855
+ #: inc/cleantalk-settings.php:300
856
+ msgid ""
857
+ "Display all-time requests counter in the admin bar. Counter displays number "
858
+ "of requests since plugin installation."
859
+ msgstr ""
860
+
861
+ #: inc/cleantalk-settings.php:305
862
+ msgid "Show 24 hours counter"
863
+ msgstr ""
864
+
865
+ #: inc/cleantalk-settings.php:306
866
+ msgid ""
867
+ "Display daily requests counter in the admin bar. Counter displays number of "
868
+ "requests of the past 24 hours."
869
+ msgstr ""
870
+
871
+ #: inc/cleantalk-settings.php:311
872
+ msgid "SpamFireWall counter"
873
+ msgstr ""
874
+
875
+ #: inc/cleantalk-settings.php:312
876
+ msgid ""
877
+ "Display SpamFireWall requests in the admin bar. Counter displays number of "
878
+ "requests since plugin installation."
879
+ msgstr ""
880
+
881
+ #: inc/cleantalk-settings.php:325
882
+ msgid "Collect details about browsers"
883
+ msgstr ""
884
+
885
+ #: inc/cleantalk-settings.php:326
886
+ msgid ""
887
+ "Checking this box you allow plugin store information about screen size and "
888
+ "browser plugins of website visitors. The option in a beta state."
889
+ msgstr ""
890
+
891
+ #: inc/cleantalk-settings.php:330
892
+ msgid "Send connection reports"
893
+ msgstr ""
894
+
895
+ #: inc/cleantalk-settings.php:331
896
+ msgid ""
897
+ "Checking this box you allow plugin to send the information about your "
898
+ "connection. The option in a beta state."
899
+ msgstr ""
900
+
901
+ #: inc/cleantalk-settings.php:335
902
+ msgid "Async JavaScript loading"
903
+ msgstr ""
904
+
905
+ #: inc/cleantalk-settings.php:336
906
+ msgid ""
907
+ "Use async loading for scripts. Warning: This could reduce filtration quality."
908
+ msgstr ""
909
+
910
+ #: inc/cleantalk-settings.php:340
911
+ msgid "Allow to add GDPR notice via shortcode"
912
+ msgstr ""
913
+
914
+ #: inc/cleantalk-settings.php:341
915
+ msgid ""
916
+ " Adds small checkbox under your website form. To add it you should use the "
917
+ "shortcode on the form's page: [cleantalk_gdpr_form id=\"FORM_ID\"]"
918
+ msgstr ""
919
+
920
+ #: inc/cleantalk-settings.php:346
921
+ msgid "GDPR text notice"
922
+ msgstr ""
923
+
924
+ #: inc/cleantalk-settings.php:347
925
+ msgid "This text will be added as a description to the GDPR checkbox."
926
+ msgstr ""
927
+
928
+ #: inc/cleantalk-settings.php:353
929
+ msgid "Store visited URLs"
930
+ msgstr ""
931
+
932
+ #: inc/cleantalk-settings.php:354
933
+ msgid ""
934
+ "Plugin stores last 10 visited URLs (HTTP REFFERERS) before visitor submits "
935
+ "form on the site. You can see stored visited URLS for each visitor in your "
936
+ "Dashboard. Turn the option on to improve Anti-Spam protection."
937
+ msgstr ""
938
+
939
+ #: inc/cleantalk-settings.php:359
940
+ msgid "Use cookies less sessions"
941
+ msgstr ""
942
+
943
+ #: inc/cleantalk-settings.php:366
944
+ msgid ""
945
+ "Notify users with selected roles about new approved comments. Hold CTRL to "
946
+ "select multiple roles."
947
+ msgstr ""
948
+
949
+ #: inc/cleantalk-settings.php:367
950
+ #, php-format
951
+ msgid "If enabled, overrides similar Wordpress %sdiscussion settings%s."
952
+ msgstr ""
953
+
954
+ #: inc/cleantalk-settings.php:380
955
+ msgid "Complete deactivation"
956
+ msgstr ""
957
+
958
+ #: inc/cleantalk-settings.php:381
959
+ msgid "Leave no trace in the system after deactivation."
960
+ msgstr ""
961
+
962
+ #: inc/cleantalk-settings.php:398
963
+ msgid "Enable White Label Mode"
964
+ msgstr ""
965
+
966
+ #: inc/cleantalk-settings.php:399
967
+ #, php-format
968
+ msgid "Learn more information %shere%s."
969
+ msgstr ""
970
+
971
+ #: inc/cleantalk-settings.php:404
972
+ msgid "Hoster API Key"
973
+ msgstr ""
974
+
975
+ #: inc/cleantalk-settings.php:405
976
+ #, php-format
977
+ msgid "You can get it in %sCleantalk's Control Panel%s"
978
+ msgstr ""
979
+
980
+ #: inc/cleantalk-settings.php:413
981
+ msgid "Plugin name"
982
+ msgstr ""
983
+
984
+ #: inc/cleantalk-settings.php:414
985
+ #, php-format
986
+ msgid "Specify plugin name. Leave empty for deafult %sAntispam by Cleantalk%s"
987
+ msgstr ""
988
+
989
+ #: inc/cleantalk-settings.php:423
990
+ msgid "Allow users to use other key"
991
+ msgstr ""
992
+
993
+ #: inc/cleantalk-settings.php:424
994
+ msgid ""
995
+ "Allow users to use different Access key in their plugin settings on child "
996
+ "blogs. They could use different CleanTalk account."
997
+ msgstr ""
998
+
999
+ #: inc/cleantalk-settings.php:427
1000
+ msgid ""
1001
+ "Constant <b>CLEANTALK_ACCESS_KEY</b> is set. All websites will use API key "
1002
+ "from this constant. Look into wp-config.php"
1003
+ msgstr ""
1004
+
1005
+ #: inc/cleantalk-settings.php:533
1006
+ msgid "CleanTalk's tech support:"
1007
+ msgstr ""
1008
+
1009
+ #: inc/cleantalk-settings.php:539
1010
+ msgid "Plugin Homepage at"
1011
+ msgstr ""
1012
+
1013
+ #: inc/cleantalk-settings.php:540
1014
+ msgid "GDPR compliance"
1015
+ msgstr ""
1016
+
1017
+ #: inc/cleantalk-settings.php:541
1018
+ msgid "Use s@cleantalk.org to test plugin in any WordPress form."
1019
+ msgstr ""
1020
+
1021
+ #: inc/cleantalk-settings.php:542
1022
+ msgid "CleanTalk is registered Trademark. All rights reserved."
1023
+ msgstr ""
1024
+
1025
+ #: inc/cleantalk-settings.php:559
1026
+ #, php-format
1027
+ msgid "%s has blocked <b>%s</b> spam."
1028
+ msgstr ""
1029
+
1030
+ #: inc/cleantalk-settings.php:571
1031
+ msgid "Click here to get anti-spam statistics"
1032
+ msgstr ""
1033
+
1034
+ #: inc/cleantalk-settings.php:614
1035
+ #, php-format
1036
+ msgid "Please, enter the %splugin settings%s in main site dashboard."
1037
+ msgstr ""
1038
+
1039
+ #: inc/cleantalk-settings.php:633
1040
+ msgid "Error occurred while API key validating. Error: "
1041
+ msgstr ""
1042
+
1043
+ #: inc/cleantalk-settings.php:634
1044
+ msgid "Error occurred while automatically gettings access key. Error: "
1045
+ msgstr ""
1046
+
1047
+ #: inc/cleantalk-settings.php:635
1048
+ msgid "Error occurred while sending sending SpamFireWall logs. Error: "
1049
+ msgstr ""
1050
+
1051
+ #: inc/cleantalk-settings.php:636
1052
+ msgid "Error occurred while updating SpamFireWall local base. Error: "
1053
+ msgstr ""
1054
+
1055
+ #: inc/cleantalk-settings.php:637
1056
+ msgid "Error occurred while checking account status. Error: "
1057
+ msgstr ""
1058
+
1059
+ #: inc/cleantalk-settings.php:638
1060
+ msgid "Error occurred while excuting API call. Error: "
1061
+ msgstr ""
1062
+
1063
+ #: inc/cleantalk-settings.php:646
1064
+ msgid "Unknown error. Error: "
1065
+ msgstr ""
1066
+
1067
+ #: inc/cleantalk-settings.php:677
1068
+ msgid "Errors:"
1069
+ msgstr ""
1070
+
1071
+ #: inc/cleantalk-settings.php:682
1072
+ #, php-format
1073
+ msgid "You can get support any time here: %s."
1074
+ msgstr ""
1075
+
1076
+ #: inc/cleantalk-settings.php:757
1077
+ msgid "Protection is active"
1078
+ msgstr ""
1079
+
1080
+ #: inc/cleantalk-settings.php:759
1081
+ msgid "Registration forms"
1082
+ msgstr ""
1083
+
1084
+ #: inc/cleantalk-settings.php:760
1085
+ msgid "Comments forms"
1086
+ msgstr ""
1087
+
1088
+ #: inc/cleantalk-settings.php:765
1089
+ msgid "Validate email for existence"
1090
+ msgstr ""
1091
+
1092
+ #: inc/cleantalk-settings.php:769
1093
+ msgid "Auto update"
1094
+ msgstr ""
1095
+
1096
+ #: inc/cleantalk-settings.php:793
1097
+ msgid "<h3>Key is provided by Super Admin.</h3>"
1098
+ msgstr ""
1099
+
1100
+ #: inc/cleantalk-settings.php:797
1101
+ msgid "Access key"
1102
+ msgstr ""
1103
+
1104
+ #: inc/cleantalk-settings.php:812
1105
+ msgid "Enter the key"
1106
+ msgstr ""
1107
+
1108
+ #: inc/cleantalk-settings.php:818
1109
+ #, php-format
1110
+ msgid "Account at cleantalk.org is %s."
1111
+ msgstr ""
1112
+
1113
+ #: inc/cleantalk-settings.php:827
1114
+ msgid "Show the access key"
1115
+ msgstr ""
1116
+
1117
+ #: inc/cleantalk-settings.php:838
1118
+ msgid "Get Access Key Automatically"
1119
+ msgstr ""
1120
+
1121
+ #: inc/cleantalk-settings.php:846
1122
+ #, php-format
1123
+ msgid ""
1124
+ "Admin e-mail (%s) will be used for registration, if you want to use other "
1125
+ "email please %sGet Access Key Manually%s."
1126
+ msgstr ""
1127
+
1128
+ #: inc/cleantalk-settings.php:862
1129
+ #, php-format
1130
+ msgid "I accept %sLicense Agreement%s."
1131
+ msgstr ""
1132
+
1133
+ #: inc/cleantalk-settings.php:888
1134
+ msgid "Statistics & Reports"
1135
+ msgstr ""
1136
+
1137
+ #: inc/cleantalk-settings.php:904
1138
+ #, php-format
1139
+ msgid "Last spam check request to %s server was at %s."
1140
+ msgstr ""
1141
+
1142
+ #: inc/cleantalk-settings.php:905 inc/cleantalk-settings.php:906
1143
+ #: inc/cleantalk-settings.php:915 inc/cleantalk-settings.php:922
1144
+ #: inc/cleantalk-settings.php:923 inc/cleantalk-settings.php:931
1145
+ #: inc/cleantalk-settings.php:932 inc/cleantalk-settings.php:939
1146
+ #: inc/cleantalk-settings.php:940
1147
+ msgid "unknown"
1148
+ msgstr ""
1149
+
1150
+ #: inc/cleantalk-settings.php:912
1151
+ #, php-format
1152
+ msgid "Average request time for past 7 days: %s seconds."
1153
+ msgstr ""
1154
+
1155
+ #: inc/cleantalk-settings.php:921
1156
+ #, php-format
1157
+ msgid "Last time SpamFireWall was triggered for %s IP at %s"
1158
+ msgstr ""
1159
+
1160
+ #: inc/cleantalk-settings.php:930
1161
+ #, php-format
1162
+ msgid "SpamFireWall was updated %s. Now contains %s entries."
1163
+ msgstr ""
1164
+
1165
+ #: inc/cleantalk-settings.php:938
1166
+ #, php-format
1167
+ msgid "SpamFireWall sent %s events at %s."
1168
+ msgstr ""
1169
+
1170
+ #: inc/cleantalk-settings.php:948
1171
+ msgid "There are no failed connections to server."
1172
+ msgstr ""
1173
+
1174
+ #: inc/cleantalk-settings.php:975
1175
+ msgid "Send report"
1176
+ msgstr ""
1177
+
1178
+ #: inc/cleantalk-settings.php:979
1179
+ msgid ""
1180
+ "Please, enable \"Send connection reports\" setting to be able to send reports"
1181
+ msgstr ""
1182
+
1183
+ #: inc/cleantalk-settings.php:1327
1184
+ msgid "Testing is failed. Please check the Access key."
1185
+ msgstr ""
1186
+
1187
+ #: inc/cleantalk-settings.php:1442
1188
+ msgid "XSS check"
1189
+ msgstr ""
1190
+
1191
+ #: inc/cleantalk-settings.php:1443
1192
+ msgid ""
1193
+ "Cross-Site Scripting (XSS) — prevents malicious code to be executed/sent to "
1194
+ "any user. As a result malicious scripts can not get access to the cookie "
1195
+ "files, session tokens and any other confidential information browsers use "
1196
+ "and store. Such scripts can even overwrite content of HTML pages. CleanTalk "
1197
+ "WAF monitors for patterns of these parameters and block them."
1198
+ msgstr ""
1199
+
1200
+ #: inc/cleantalk-settings.php:1446
1201
+ msgid "SQL-injection check"
1202
+ msgstr ""
1203
+
1204
+ #: inc/cleantalk-settings.php:1447
1205
+ msgid ""
1206
+ "SQL Injection — one of the most popular ways to hack websites and programs "
1207
+ "that work with databases. It is based on injection of a custom SQL code into "
1208
+ "database queries. It could transmit data through GET, POST requests or "
1209
+ "cookie files in an SQL code. If a website is vulnerable and execute such "
1210
+ "injections then it would allow attackers to apply changes to the website's "
1211
+ "MySQL database."
1212
+ msgstr ""
1213
+
1214
+ #: inc/cleantalk-settings.php:1450
1215
+ msgid "Check uploaded files"
1216
+ msgstr ""
1217
+
1218
+ #: inc/cleantalk-settings.php:1451
1219
+ msgid ""
1220
+ "The option checks each uploaded file to a website for malicious code. If "
1221
+ "it's possible for visitors to upload files to a website, for instance a work "
1222
+ "resume, then attackers could abuse it and upload an infected file to execute "
1223
+ "it later and get access to your website."
1224
+ msgstr ""
1225
+
1226
+ #: inc/cleantalk-users.php:15
1227
+ msgid "Find spam users"
1228
+ msgstr ""
1229
+
1230
+ #: inc/cleantalk-users.php:67
1231
+ msgid "Please wait for a while. CleanTalk is deleting spam users. Users left: "
1232
+ msgstr ""
1233
+
1234
+ #: inc/cleantalk-users.php:79
1235
+ msgid ""
1236
+ "The plugin will check all users against blacklists database and show you "
1237
+ "senders that have spam activity on other websites."
1238
+ msgstr ""
1239
+
1240
+ #: inc/cleantalk-users.php:84
1241
+ msgid ""
1242
+ "Allows to use user's dates to perform more accurate check. Could seriously "
1243
+ "slow down the check."
1244
+ msgstr ""
1245
+
1246
+ #: inc/cleantalk-users.php:108
1247
+ msgid ""
1248
+ "Please wait for a while. CleanTalk is checking all users via blacklist "
1249
+ "database at cleantalk.org. You will have option to delete found spam users "
1250
+ "after plugin finish."
1251
+ msgstr ""
1252
+
1253
+ #: inc/cleantalk-users.php:267
1254
+ msgid "Delete all users from list"
1255
+ msgstr ""
1256
+
1257
+ #: inc/cleantalk-users.php:269
1258
+ msgid "Download results in CSV"
1259
+ msgstr ""
1260
+
1261
+ #: inc/cleantalk-users.php:273
1262
+ msgid "Insert accounts"
1263
+ msgstr ""
1264
+
1265
+ #: inc/cleantalk-users.php:274
1266
+ msgid "Delete accounts"
1267
+ msgstr ""
1268
+
1269
+ #: inc/cleantalk-users.php:527
1270
+ #, php-format
1271
+ msgid ""
1272
+ "Total users %s, checked %s, last check %s, found %s spam users and %s bad "
1273
+ "users (without IP or email)"
1274
+ msgstr ""
1275
+
1276
+ #: inc/cleantalk-widget.php:22
1277
+ msgid "CleanTalk Widget"
1278
+ msgstr ""
1279
+
1280
+ #: inc/cleantalk-widget.php:25
1281
+ msgid "CleanTalk widget"
1282
+ msgstr ""
1283
+
1284
+ #: inc/cleantalk-widget.php:72
1285
+ msgid "CleanTalk's main page"
1286
+ msgstr ""
1287
+
1288
+ #: inc/cleantalk-widget.php:73
1289
+ msgid "spam"
1290
+ msgstr ""
1291
+
1292
+ #: inc/cleantalk-widget.php:73
1293
+ msgid "blocked by"
1294
+ msgstr ""
1295
+
1296
+ #: inc/cleantalk-widget.php:85
1297
+ msgid "Spam blocked"
1298
+ msgstr ""
1299
+
1300
+ #: inc/cleantalk-widget.php:90
1301
+ msgid "Title:"
1302
+ msgstr ""
1303
+
1304
+ #: inc/cleantalk-widget.php:95
1305
+ msgid "Style:"
1306
+ msgstr ""
1307
+
1308
+ #: inc/cleantalk-widget.php:97
1309
+ msgid "CleanTalk's Style"
1310
+ msgstr ""
1311
+
1312
+ #: inc/cleantalk-widget.php:98
1313
+ msgid "Light"
1314
+ msgstr ""
1315
+
1316
+ #: inc/cleantalk-widget.php:99
1317
+ msgid "Extremely Light"
1318
+ msgstr ""
1319
+
1320
+ #: inc/cleantalk-widget.php:100
1321
+ msgid "Dark"
1322
+ msgstr ""
1323
+
1324
+ #: inc/cleantalk-widget.php:105
1325
+ msgid "Referal link ID:"
1326
+ msgstr ""
1327
+
1328
+ #: lib/CleantalkSFW.php:71
1329
+ msgid "SpamFireWall is activated for your IP "
1330
+ msgstr ""
1331
+
1332
+ #: lib/CleantalkSFW.php:72
1333
+ msgid ""
1334
+ "To continue working with web site, please make sure that you have enabled "
1335
+ "JavaScript."
1336
+ msgstr ""
1337
+
1338
+ #: lib/CleantalkSFW.php:73
1339
+ msgid "Please click below to pass protection,"
1340
+ msgstr ""
1341
+
1342
+ #: lib/CleantalkSFW.php:74
1343
+ #, php-format
1344
+ msgid ""
1345
+ "Or you will be automatically redirected to the requested page after %d "
1346
+ "seconds."
1347
+ msgstr ""
1348
+
1349
+ #: lib/CleantalkSFW.php:75
1350
+ msgid "Antispam by CleanTalk"
1351
+ msgstr ""
1352
+
1353
+ #: lib/CleantalkSFW.php:76
1354
+ msgid "This is the testing page for SpamFireWall"
1355
+ msgstr ""
1356
+
1357
+ #: templates/translate_banner.php:6
1358
+ msgid "Help others use the plugin in your language."
1359
+ msgstr ""
1360
+
1361
+ #: templates/translate_banner.php:7
1362
+ msgid ""
1363
+ "We ask you to help with the translation of the plugin in your language. "
1364
+ "Please take a few minutes to make the plugin more comfortable."
1365
+ msgstr ""
1366
+
1367
+ #: templates/translate_banner.php:10
1368
+ msgid "TRANSLATE"
1369
+ msgstr ""
1370
+
1371
+ #. Plugin Name of the plugin/theme
1372
+ msgid "Anti-Spam by CleanTalk"
1373
+ msgstr ""
1374
+
1375
+ #. Description of the plugin/theme
1376
+ msgid ""
1377
+ "Max power, all-in-one, no Captcha, premium anti-spam plugin. No comment spam,"
1378
+ " no registration spam, no contact spam, protects any WordPress forms."
1379
+ msgstr ""
1380
+
1381
+ #. Plugin URI of the plugin/theme
1382
+ #. Author URI of the plugin/theme
1383
+ msgid "http://cleantalk.org"
1384
+ msgstr ""
1385
+
1386
+ #. Author of the plugin/theme
1387
+ msgid "СleanTalk <welcome@cleantalk.org>"
1388
+ msgstr ""
inc/cleantalk-common.php CHANGED
@@ -1,1007 +1,1007 @@
1
- <?php
2
-
3
- function apbct_array( $array ){
4
- return new Cleantalk\Arr( $array );
5
- }
6
-
7
- $ct_checkjs_frm = 'ct_checkjs_frm';
8
- $ct_checkjs_register_form = 'ct_checkjs_register_form';
9
-
10
- $apbct_cookie_request_id_label = 'request_id';
11
- $apbct_cookie_register_ok_label = 'register_ok';
12
-
13
- $ct_checkjs_cf7 = 'ct_checkjs_cf7';
14
- $ct_cf7_comment = '';
15
-
16
- $ct_checkjs_jpcf = 'ct_checkjs_jpcf';
17
- $ct_jpcf_patched = false;
18
- $ct_jpcf_fields = array('name', 'email');
19
-
20
- // Comment already proccessed
21
- $ct_comment_done = false;
22
-
23
- // Comment already proccessed
24
- $ct_signup_done = false;
25
-
26
- //Contains registration error
27
- $ct_registration_error_comment = false;
28
-
29
- // Default value for JS test
30
- $ct_checkjs_def = 0;
31
-
32
- // COOKIE label to store request id for last approved
33
- $ct_approved_request_id_label = 'ct_approved_request_id';
34
-
35
- // Last request id approved for publication
36
- $ct_approved_request_id = null;
37
-
38
- // Trial notice show time in minutes
39
- $trial_notice_showtime = 10;
40
-
41
- // Renew notice show time in minutes
42
- $renew_notice_showtime = 10;
43
-
44
- // COOKIE label for WP Landing Page proccessing result
45
- $ct_wplp_result_label = 'ct_wplp_result';
46
-
47
- // Flag indicates active JetPack comments
48
- $ct_jp_comments = false;
49
-
50
- // WP admin email notice interval in seconds
51
- $ct_admin_notoice_period = 21600;
52
-
53
- // Sevice negative comment to visitor.
54
- // It uses for BuddyPress registrations to avoid double checks
55
- $ct_negative_comment = null;
56
-
57
- // Set globals to NULL to avoid massive DB requests. Globals will be set when needed only and by accessors only.
58
- $ct_server = NULL;
59
- $admin_email = NULL;
60
-
61
- /**
62
- * Public action 'plugins_loaded' - Loads locale, see http://codex.wordpress.org/Function_Reference/load_plugin_textdomain
63
- */
64
- function apbct_plugin_loaded() {
65
- $dir=plugin_basename( dirname( __FILE__ ) ) . '/../i18n';
66
- $loaded=load_plugin_textdomain('cleantalk', false, $dir);
67
- }
68
-
69
- /**
70
- * Inner function - Request's wrapper for anything
71
- * @param array Array of parameters:
72
- * 'message' - string
73
- * 'example' - string
74
- * 'checkjs' - int
75
- * 'sender_email' - string
76
- * 'sender_nickname' - string
77
- * 'sender_info' - array
78
- * 'post_info' - string
79
- * @return array array('ct'=> Cleantalk, 'ct_result' => CleantalkResponse)
80
- */
81
- function apbct_base_call($params = array(), $reg_flag = false){
82
-
83
- global $apbct, $cleantalk_executed;
84
-
85
- $cleantalk_executed = true;
86
-
87
- $sender_info = !empty($params['sender_info'])
88
- ? CleantalkHelper::array_merge__save_numeric_keys__recursive(apbct_get_sender_info(), (array)$params['sender_info'])
89
- : apbct_get_sender_info();
90
-
91
- // Fields exclusions
92
- if( ! empty( $params['message'] ) && is_array( $params['message'] ) ){
93
-
94
- $params['message'] = apbct_array( $params['message'] )
95
- ->get_keys( $apbct->settings['exclusions__fields'], $apbct->settings['exclusions__fields__use_regexp'] )
96
- ->delete();
97
- }
98
-
99
- // Reversed url exclusions. Pass everything except one.
100
- if( ! apbct_exclusions_check__url__reversed() ){
101
- return array(
102
- 'ct' => false,
103
- 'ct_result' => new CleantalkResponse( null, null )
104
- );
105
- }
106
-
107
- $default_params = array(
108
-
109
- // IPs
110
- 'sender_ip' => defined('CT_TEST_IP') ? CT_TEST_IP : (isset($params['sender_ip']) ? $params['sender_ip'] : CleantalkHelper::ip__get(array('real'), false)),
111
- 'x_forwarded_for' => CleantalkHelper::ip__get(array('x_forwarded_for'), false),
112
- 'x_real_ip' => CleantalkHelper::ip__get(array('x_real_ip'), false),
113
-
114
- // Misc
115
- 'auth_key' => $apbct->api_key,
116
- 'js_on' => apbct_js_test('ct_checkjs', $_COOKIE) ? 1 : apbct_js_test('ct_checkjs', $_POST),
117
-
118
- 'agent' => APBCT_AGENT,
119
- 'sender_info' => $sender_info,
120
- 'submit_time' => apbct_get_submit_time(),
121
- );
122
-
123
- // Send $_SERVER if couldn't find IP
124
- if(empty($default_params['sender_ip']))
125
- $default_params['sender_info']['server_info'] = $_SERVER;
126
-
127
- $ct_request = new CleantalkRequest(
128
- CleantalkHelper::array_merge__save_numeric_keys__recursive($default_params, $params)
129
- );
130
-
131
- $ct = new Cleantalk();
132
-
133
- $ct->use_bultin_api = $apbct->settings['use_buitin_http_api'] ? true : false;
134
- $ct->ssl_on = $apbct->settings['ssl_on'];
135
- $ct->ssl_path = APBCT_CASERT_PATH;
136
-
137
- // Options store url without shceme because of DB error with ''://'
138
- $config = ct_get_server();
139
- $ct->server_url = APBCT_MODERATE_URL;
140
- $ct->work_url = preg_match('/http:\/\/.+/', $config['ct_work_url']) ? $config['ct_work_url'] : null;
141
- $ct->server_ttl = $config['ct_server_ttl'];
142
- $ct->server_changed = $config['ct_server_changed'];
143
-
144
- $start = microtime(true);
145
- $ct_result = $reg_flag
146
- ? @$ct->isAllowUser($ct_request)
147
- : @$ct->isAllowMessage($ct_request);
148
- $exec_time = microtime(true) - $start;
149
-
150
- // Statistics
151
- // Average request time
152
- apbct_statistics__rotate($exec_time);
153
- // Last request
154
- $apbct->stats['last_request']['time'] = time();
155
- $apbct->stats['last_request']['server'] = $ct->work_url;
156
- $apbct->save('stats');
157
-
158
- // Connection reports
159
- if ($ct_result->errno === 0 && empty($ct_result->errstr))
160
- $apbct->data['connection_reports']['success']++;
161
- else
162
- {
163
- $apbct->data['connection_reports']['negative']++;
164
- $apbct->data['connection_reports']['negative_report'][] = array(
165
- 'date' => date("Y-m-d H:i:s"),
166
- 'page_url' => apbct_get_server_variable( 'REQUEST_URI' ),
167
- 'lib_report' => $ct_result->errstr,
168
- 'work_url' => $ct->work_url,
169
- );
170
-
171
- if(count($apbct->data['connection_reports']['negative_report']) > 20)
172
- $apbct->data['connection_reports']['negative_report'] = array_slice($apbct->data['connection_reports']['negative_report'], -20, 20);
173
-
174
- }
175
-
176
- if ($ct->server_change) {
177
- update_option(
178
- 'cleantalk_server',
179
- array(
180
- 'ct_work_url' => $ct->work_url,
181
- 'ct_server_ttl' => $ct->server_ttl,
182
- 'ct_server_changed' => time(),
183
- )
184
- );
185
- }
186
-
187
- $ct_result = ct_change_plugin_resonse($ct_result, $ct_request->js_on);
188
-
189
- // Restart submit form counter for failed requests
190
- if ($ct_result->allow == 0){
191
- apbct_cookie(); // Setting page timer and cookies
192
- ct_add_event('no');
193
- }else{
194
- ct_add_event('yes');
195
- }
196
-
197
- // Set cookies if it's not.
198
- if(empty($apbct->flags__cookies_setuped))
199
- apbct_cookie();
200
-
201
- return array('ct' => $ct, 'ct_result' => $ct_result);
202
-
203
- }
204
-
205
- function apbct_exclusions_check($func = null){
206
-
207
- global $apbct, $cleantalk_executed;
208
-
209
- // Common exclusions
210
- if(
211
- apbct_exclusions_check__ip() ||
212
- apbct_exclusions_check__url() ||
213
- apbct_is_user_role_in( $apbct->settings['exclusions__roles'] ) ||
214
- $cleantalk_executed
215
- )
216
- return true;
217
-
218
- // Personal exclusions
219
- switch ($func){
220
- case 'ct_contact_form_validate_postdata':
221
- if(
222
- (defined( 'DOING_AJAX' ) && DOING_AJAX) ||
223
- apbct_array( $_POST )->get_keys( 'members_search_submit' )->result()
224
- )
225
- return true;
226
- break;
227
- case 'ct_contact_form_validate':
228
- if(
229
- apbct_array( $_POST )->get_keys( 'members_search_submit' )->result()
230
- )
231
- return true;
232
- break;
233
- default:
234
- return false;
235
- break;
236
- }
237
-
238
- return false;
239
- }
240
-
241
- function apbct_exclusions_check__url__reversed(){
242
- return defined( 'APBCT_URL_EXCLUSIONS__REVERSED' ) && ! \Cleantalk\Common\Server::has_string( 'REQUEST_URI', APBCT_URL_EXCLUSIONS__REVERSED )
243
- ? false
244
- : true;
245
- }
246
-
247
- /**
248
- * Checks if reuqest URI is in exclusion list
249
- *
250
- * @return bool
251
- */
252
- function apbct_exclusions_check__url() {
253
-
254
- global $apbct;
255
-
256
- if ( ! empty( $apbct->settings['exclusions__urls'] ) ) {
257
-
258
- $exclusions = explode( ',', $apbct->settings['exclusions__urls'] );
259
-
260
- // Fix for AJAX forms
261
- $haystack = apbct_get_server_variable( 'REQUEST_URI' ) == '/wp-admin/admin-ajax.php' && ! apbct_get_server_variable( 'HTTP_REFERER' )
262
- ? apbct_get_server_variable( 'HTTP_REFERER' )
263
- : apbct_get_server_variable( 'REQUEST_URI' );
264
-
265
- foreach ( $exclusions as $exclusion ) {
266
- if (
267
- ($apbct->settings['exclusions__urls__use_regexp'] && preg_match( '/' . $exclusion . '/', $haystack ) === 1) ||
268
- stripos( $haystack, $exclusion ) !== false
269
- ){
270
- return true;
271
- }
272
- }
273
- return false;
274
- }
275
- }
276
- /**
277
- * @deprecated 5.128 Using IP white-lists instead
278
- * @deprecated since 18.09.2019
279
- * Checks if sender_ip is in exclusion list
280
- *
281
- * @return bool
282
- */
283
- function apbct_exclusions_check__ip(){
284
-
285
- global $cleantalk_ip_exclusions;
286
-
287
- if( apbct_get_server_variable( 'REMOTE_ADDR' ) ){
288
-
289
- if( CleantalkHelper::ip__is_cleantalks( apbct_get_server_variable( 'REMOTE_ADDR' ) ) ){
290
- return true;
291
- }
292
-
293
- if( ! empty( $cleantalk_ip_exclusions ) && is_array( $cleantalk_ip_exclusions ) ){
294
- foreach ( $cleantalk_ip_exclusions as $exclusion ){
295
- if( stripos( apbct_get_server_variable( 'REMOTE_ADDR' ), $exclusion ) !== false ){
296
- return true;
297
- }
298
- }
299
- }
300
- }
301
-
302
- return false;
303
- }
304
-
305
- /**
306
- * Inner function - Default data array for senders
307
- * @return array
308
- */
309
- function apbct_get_sender_info() {
310
-
311
- global $apbct;
312
-
313
- // Validate cookie from the backend
314
- $cookie_is_ok = apbct_cookies_test();
315
-
316
- $referer_previous = $apbct->settings['set_cookies__sessions']
317
- ? apbct_alt_session__get('apbct_prev_referer')
318
- : filter_input(INPUT_COOKIE, 'apbct_prev_referer');
319
-
320
- $site_landing_ts = $apbct->settings['set_cookies__sessions']
321
- ? apbct_alt_session__get('apbct_site_landing_ts')
322
- : filter_input(INPUT_COOKIE, 'apbct_site_landing_ts');
323
-
324
- $page_hits = $apbct->settings['set_cookies__sessions']
325
- ? apbct_alt_session__get('apbct_page_hits')
326
- : filter_input(INPUT_COOKIE, 'apbct_page_hits');
327
-
328
- if (count($_POST) > 0) {
329
- foreach ($_POST as $k => $v) {
330
- if (preg_match("/^(ct_check|checkjs).+/", $k)) {
331
- $checkjs_data_post = $v;
332
- }
333
- }
334
- }
335
-
336
- // AMP check
337
- $amp_detected = apbct_get_server_variable( 'HTTP_REFERER' )
338
- ? strpos(apbct_get_server_variable( 'HTTP_REFERER' ), '/amp/') !== false || strpos(apbct_get_server_variable( 'HTTP_REFERER' ), '?amp=1') !== false || strpos(apbct_get_server_variable( 'HTTP_REFERER' ), '&amp=1') !== false
339
- ? 1
340
- : 0
341
- : null;
342
-
343
- $site_referer = $apbct->settings['store_urls__sessions']
344
- ? apbct_alt_session__get('apbct_site_referer')
345
- : filter_input(INPUT_COOKIE, 'apbct_site_referer');
346
-
347
- $urls = $apbct->settings['store_urls__sessions']
348
- ? (array)apbct_alt_session__get('apbct_urls')
349
- : (array)json_decode(filter_input(INPUT_COOKIE, 'apbct_urls'), true);
350
-
351
- return array(
352
- 'remote_addr' => CleantalkHelper::ip__get(array('remote_addr'), false),
353
- 'REFFERRER' => apbct_get_server_variable( 'HTTP_REFERER' ),
354
- 'USER_AGENT' => apbct_get_server_variable( 'HTTP_USER_AGENT' ),
355
- 'page_url' => apbct_get_server_variable( 'SERVER_NAME' ) . apbct_get_server_variable( 'REQUEST_URI' ),
356
- 'cms_lang' => substr(get_locale(), 0, 2),
357
- 'ct_options' => json_encode($apbct->settings),
358
- 'fields_number' => sizeof($_POST),
359
- 'direct_post' => $cookie_is_ok === null && apbct_is_post() ? 1 : 0,
360
- // Raw data to validated JavaScript test in the cloud
361
- 'checkjs_data_cookies' => !empty($_COOKIE['ct_checkjs']) ? $_COOKIE['ct_checkjs'] : null,
362
- 'checkjs_data_post' => !empty($checkjs_data_post) ? $checkjs_data_post : null,
363
- // PHP cookies
364
- 'cookies_enabled' => $cookie_is_ok,
365
- 'REFFERRER_PREVIOUS' => !empty($referer_previous) && $cookie_is_ok ? $referer_previous : null,
366
- 'site_landing_ts' => !empty($site_landing_ts) && $cookie_is_ok ? $site_landing_ts : null,
367
- 'page_hits' => !empty($page_hits) ? $page_hits : null,
368
- // JS cookies
369
- 'js_info' => !empty($_COOKIE['ct_user_info']) ? json_decode(stripslashes($_COOKIE['ct_user_info']), true) : null,
370
- 'mouse_cursor_positions' => !empty($_COOKIE['ct_pointer_data']) ? json_decode(stripslashes($_COOKIE['ct_pointer_data']), true) : null,
371
- 'js_timezone' => !empty($_COOKIE['ct_timezone']) ? $_COOKIE['ct_timezone'] : null,
372
- 'key_press_timestamp' => !empty($_COOKIE['ct_fkp_timestamp']) ? $_COOKIE['ct_fkp_timestamp'] : null,
373
- 'page_set_timestamp' => !empty($_COOKIE['ct_ps_timestamp']) ? $_COOKIE['ct_ps_timestamp'] : null,
374
- 'form_visible_inputs' => !empty($_COOKIE['apbct_visible_fields_count']) ? $_COOKIE['apbct_visible_fields_count'] : null,
375
- 'apbct_visible_fields' => !empty($_COOKIE['apbct_visible_fields']) ? apbct_visibile_fields__process($_COOKIE['apbct_visible_fields']) : null,
376
- // Misc
377
- 'site_referer' => !empty($site_referer) ? $site_referer : null,
378
- 'source_url' => !empty($urls) ? json_encode($urls) : null,
379
- // Debug stuff
380
- 'amp_detected' => $amp_detected,
381
- 'hook' => current_action() ? current_action() : 'no_hook',
382
- 'headers_sent' => !empty($apbct->headers_sent) ? $apbct->headers_sent : false,
383
- 'headers_sent__hook' => !empty($apbct->headers_sent__hook) ? $apbct->headers_sent__hook : 'no_hook',
384
- 'headers_sent__where' => !empty($apbct->headers_sent__where) ? $apbct->headers_sent__where : false,
385
- 'request_type' => apbct_get_server_variable('REQUEST_METHOD') ? apbct_get_server_variable('REQUEST_METHOD') : 'UNKNOWN',
386
- );
387
- }
388
-
389
- /**
390
- * Process visible fields for specific form to match the fields from request
391
- *
392
- * @param string $visible_fields
393
- *
394
- * @return string
395
- */
396
- function apbct_visibile_fields__process($visible_fields) {
397
- if(strpos($visible_fields, 'wpforms') !== false){
398
- $visible_fields = preg_replace(
399
- array('/\[/', '/\]/'),
400
- '',
401
- str_replace(
402
- '][',
403
- '_',
404
- str_replace(
405
- 'wpforms[fields]',
406
- '',
407
- $visible_fields
408
- )
409
- )
410
- );
411
- }
412
-
413
- return $visible_fields;
414
- }
415
-
416
- /*
417
- * Outputs JS key for AJAX-use only. Stops script.
418
- */
419
- function apbct_js_keys__get__ajax($direct_call = false){
420
- if(!$direct_call){
421
- if(isset($_POST['_ajax_nonce'])){
422
- if(!wp_verify_nonce($_POST['_ajax_nonce'], 'ct_secret_stuff')){
423
- wp_doing_ajax()
424
- ? wp_die( -1, 403 )
425
- : die( '-1' );
426
- }
427
- }else{
428
- wp_doing_ajax()
429
- ? wp_die( -1, 403 )
430
- : die( '-1' );
431
- }
432
- }
433
- die(json_encode(array(
434
- 'js_key' => ct_get_checkjs_value()
435
- )));
436
- }
437
-
438
- /**
439
- * Get ct_get_checkjs_value
440
- *
441
- * @param bool $random_key
442
- *
443
- * @return int|string|null
444
- */
445
- function ct_get_checkjs_value(){
446
-
447
- global $apbct;
448
-
449
- // Use static JS keys
450
- if($apbct->settings['use_static_js_key'] == 1){
451
-
452
- $key = hash('sha256', $apbct->api_key.ct_get_admin_email().$apbct->salt);
453
-
454
- // Auto detecting. Detected.
455
- }elseif(
456
- $apbct->settings['use_static_js_key'] == - 1 &&
457
- ( apbct_is_cache_plugins_exists() ||
458
- ( apbct_is_post() && $apbct->data['cache_detected'] == 1 )
459
- )
460
- ){
461
- $key = hash('sha256', $apbct->api_key.ct_get_admin_email().$apbct->salt);
462
- if( apbct_is_cache_plugins_exists() )
463
- $apbct->data['cache_detected'] = 1;
464
-
465
- // Using dynamic JS keys
466
- }else{
467
-
468
- $keys = $apbct->data['js_keys'];
469
- $keys_checksum = md5(json_encode($keys));
470
-
471
- $key = null;
472
- $latest_key_time = 0;
473
-
474
- foreach ($keys as $k => $t) {
475
-
476
- // Removing key if it's to old
477
- if (time() - $t > $apbct->data['js_keys_store_days'] * 86400 * 7) {
478
- unset($keys[$k]);
479
- continue;
480
- }
481
-
482
- if ($t > $latest_key_time) {
483
- $latest_key_time = $t;
484
- $key = $k;
485
- }
486
- }
487
-
488
- // Set new key if the latest key is too old
489
- if (time() - $latest_key_time > $apbct->data['js_key_lifetime']) {
490
- $key = rand();
491
- $keys[$key] = time();
492
- }
493
-
494
- // Save keys if they were changed
495
- if (md5(json_encode($keys)) != $keys_checksum) {
496
- $apbct->data['js_keys'] = $keys;
497
- // $apbct->saveData();
498
- }
499
-
500
- $apbct->data['cache_detected'] = 0;
501
- }
502
-
503
- $apbct->saveData();
504
-
505
- return $key;
506
- }
507
-
508
- function apbct_is_cache_plugins_exists(){
509
- return
510
- defined('WP_ROCKET_VERSION') || // WPRocket
511
- defined('LSCWP_DIR') || // LiteSpeed Cache
512
- defined('WPFC_WP_CONTENT_BASENAME') || // WP Fastest Cache
513
- defined('W3TC') || // W3 Total Cache
514
- defined('WPO_VERSION') || // WP-Optimize – Clean, Compress, Cache
515
- defined('AUTOPTIMIZE_PLUGIN_VERSION') || // Autoptimize
516
- defined('WPCACHEHOME') || // WP Super Cache
517
- defined('WPHB_VERSION') || // Hummingbird – Speed up, Cache, Optimize Your CSS and JS
518
- defined('CE_FILE') || // Cache Enabler – WordPress Cache
519
- class_exists('RedisObjectCache') || // Redis Object Cache
520
- defined('SiteGround_Optimizer\VERSION') || // SG Optimizer
521
- class_exists('WP_Rest_Cache_Plugin\Includes\Plugin'); // WP REST Cache
522
- }
523
-
524
- /**
525
- * Inner function - Current site admin e-mail
526
- * @return string Admin e-mail
527
- */
528
- function ct_get_admin_email() {
529
- global $admin_email;
530
- if(!isset($admin_email))
531
- {
532
- $admin_email = get_option('admin_email');
533
- }
534
- return $admin_email;
535
- }
536
-
537
- /**
538
- * Inner function - Current Cleantalk working server info
539
- * @return mixed[] Array of server data
540
- */
541
- function ct_get_server($force=false) {
542
- global $ct_server;
543
- if(!$force && isset($ct_server) && isset($ct_server['ct_work_url']) && !empty($ct_server['ct_work_url'])){
544
-
545
- return $ct_server;
546
-
547
- }else{
548
-
549
- $ct_server = get_option('cleantalk_server');
550
- if (!is_array($ct_server)){
551
- $ct_server = array(
552
- 'ct_work_url' => NULL,
553
- 'ct_server_ttl' => NULL,
554
- 'ct_server_changed' => NULL
555
- );
556
- }
557
- return $ct_server;
558
- }
559
- }
560
-
561
- /**
562
- * Inner function - Stores ang returns cleantalk hash of current comment
563
- * @param string New hash or NULL
564
- * @return string New hash or current hash depending on parameter
565
- */
566
- function ct_hash($new_hash = '') {
567
- /**
568
- * Current hash
569
- */
570
- static $hash;
571
-
572
- if (!empty($new_hash)) {
573
- $hash = $new_hash;
574
- }
575
- return $hash;
576
- }
577
-
578
- /**
579
- * Inner function - Write manual moderation results to PHP sessions
580
- * @param string $hash Cleantalk comment hash
581
- * @param string $message comment_content
582
- * @param int $allow flag good comment (1) or bad (0)
583
- * @return string comment_content w\o cleantalk resume
584
- */
585
- function ct_feedback($hash, $allow) {
586
- global $apbct;
587
-
588
- $ct_feedback = $hash . ':' . $allow . ';';
589
- if($apbct->data['feedback_request'])
590
- $apbct->data['feedback_request'] = $ct_feedback;
591
- else
592
- $apbct->data['feedback_request'] .= $ct_feedback;
593
-
594
- $apbct->saveData();
595
- }
596
-
597
- /**
598
- * Inner function - Sends the results of moderation
599
- * Scheduled in 3600 seconds!
600
- * @param string $feedback_request
601
- * @return bool
602
- */
603
- function ct_send_feedback($feedback_request = null) {
604
-
605
- global $apbct;
606
-
607
- if (empty($feedback_request) && isset($apbct->data['feedback_request']) && preg_match("/^[a-z0-9\;\:]+$/", $apbct->data['feedback_request'])){
608
- $feedback_request = $apbct->data['feedback_request'];
609
- $apbct->data['feedback_request'] = '';
610
- $apbct->saveData();
611
- }
612
-
613
- if ($feedback_request !== null) {
614
-
615
- $ct_request = new CleantalkRequest(array(
616
- // General
617
- 'auth_key' => $apbct->api_key,
618
- // Additional
619
- 'feedback' => $feedback_request,
620
- ));
621
-
622
- $ct = new Cleantalk();
623
-
624
- // Server URL handling
625
- $config = ct_get_server();
626
- $ct->server_url = APBCT_MODERATE_URL;
627
- $ct->work_url = preg_match('/http:\/\/.+/', $config['ct_work_url']) ? $config['ct_work_url'] : null;
628
- $ct->server_ttl = $config['ct_server_ttl'];
629
- $ct->server_changed = $config['ct_server_changed'];
630
-
631
- $ct->sendFeedback($ct_request);
632
-
633
- if ($ct->server_change) {
634
- update_option(
635
- 'cleantalk_server',
636
- array(
637
- 'ct_work_url' => $ct->work_url,
638
- 'ct_server_ttl' => $ct->server_ttl,
639
- 'ct_server_changed' => time(),
640
- )
641
- );
642
- }
643
-
644
- return true;
645
- }
646
-
647
- return false;
648
- }
649
-
650
- /**
651
- * Delete old spam comments
652
- * Scheduled in 3600 seconds!
653
- * @return null
654
- */
655
- function ct_delete_spam_comments() {
656
-
657
- global $apbct;
658
-
659
- if ($apbct->settings['remove_old_spam'] == 1) {
660
- $last_comments = get_comments(array('status' => 'spam', 'number' => 1000, 'order' => 'ASC'));
661
- foreach ($last_comments as $c) {
662
- $comment_date_gmt = strtotime($c->comment_date_gmt);
663
- if ($comment_date_gmt && is_numeric($comment_date_gmt)) {
664
- if (time() - $comment_date_gmt > 86400 * $apbct->data['spam_store_days']) {
665
- // Force deletion old spam comments
666
- wp_delete_comment($c->comment_ID, true);
667
- }
668
- }
669
- }
670
- }
671
-
672
- return null;
673
- }
674
-
675
- /*
676
- * Get data from an ARRAY recursively
677
- * @return array
678
- */
679
- function ct_get_fields_any($arr, $message=array(), $email = null, $nickname = array('nick' => '', 'first' => '', 'last' => ''), $subject = null, $contact = true, $prev_name = ''){
680
-
681
- //Skip request if fields exists
682
- $skip_params = array(
683
- 'ipn_track_id', // PayPal IPN #
684
- 'txn_type', // PayPal transaction type
685
- 'payment_status', // PayPal payment status
686
- 'ccbill_ipn', // CCBill IPN
687
- 'ct_checkjs', // skip ct_checkjs field
688
- 'api_mode', // DigiStore-API
689
- 'loadLastCommentId' // Plugin: WP Discuz. ticket_id=5571
690
- );
691
-
692
- // Fields to replace with ****
693
- $obfuscate_params = array(
694
- 'password',
695
- 'pass',
696
- 'pwd',
697
- 'pswd'
698
- );
699
-
700
- // Skip feilds with these strings and known service fields
701
- $skip_fields_with_strings = array(
702
- // Common
703
- 'ct_checkjs', //Do not send ct_checkjs
704
- 'nonce', //nonce for strings such as 'rsvp_nonce_name'
705
- 'security',
706
- // 'action',
707
- 'http_referer',
708
- 'referer-page',
709
- 'timestamp',
710
- 'captcha',
711
- // Formidable Form
712
- 'form_key',
713
- 'submit_entry',
714
- // Custom Contact Forms
715
- 'form_id',
716
- 'ccf_form',
717
- 'form_page',
718
- // Qu Forms
719
- 'iphorm_uid',
720
- 'form_url',
721
- 'post_id',
722
- 'iphorm_ajax',
723
- 'iphorm_id',
724
- // Fast SecureContact Froms
725
- 'fs_postonce_1',
726
- 'fscf_submitted',
727
- 'mailto_id',
728
- 'si_contact_action',
729
- // Ninja Forms
730
- 'formData_id',
731
- 'formData_settings',
732
- 'formData_fields_\d+_id',
733
- 'formData_fields_\d+_files.*',
734
- // E_signature
735
- 'recipient_signature',
736
- 'output_\d+_\w{0,2}',
737
- // Contact Form by Web-Settler protection
738
- '_formId',
739
- '_returnLink',
740
- // Social login and more
741
- '_save',
742
- '_facebook',
743
- '_social',
744
- 'user_login-',
745
- // Contact Form 7
746
- '_wpcf7',
747
- 'ebd_settings',
748
- 'ebd_downloads_',
749
- 'ecole_origine',
750
- 'signature',
751
- );
752
-
753
- // Reset $message if we have a sign-up data
754
- $skip_message_post = array(
755
- 'edd_action', // Easy Digital Downloads
756
- );
757
-
758
- if( apbct_array( array( $_POST, $_GET ) )->get_keys( $skip_params )->result() )
759
- $contact = false;
760
-
761
- if(count($arr)){
762
-
763
- foreach($arr as $key => $value){
764
-
765
- if(gettype($value) == 'string'){
766
-
767
- $tmp = strpos($value, '\\') !== false ? stripslashes($value) : $value;
768
- $decoded_json_value = json_decode($tmp, true);
769
-
770
- // Decoding JSON
771
- if($decoded_json_value !== null){
772
- $value = $decoded_json_value;
773
-
774
- // Ajax Contact Forms. Get data from such strings:
775
- // acfw30_name %% Blocked~acfw30_email %% s@cleantalk.org
776
- // acfw30_textarea %% msg
777
- }elseif(preg_match('/^\S+\s%%\s\S+.+$/', $value)){
778
- $value = explode('~', $value);
779
- foreach ($value as &$val){
780
- $tmp = explode(' %% ', $val);
781
- $val = array($tmp[0] => $tmp[1]);
782
- }
783
- }
784
- }
785
-
786
- if(!is_array($value) && !is_object($value)){
787
-
788
- if (in_array($key, $skip_params, true) && $key != 0 && $key != '' || preg_match("/^ct_checkjs/", $key))
789
- $contact = false;
790
-
791
- if($value === '')
792
- continue;
793
-
794
- // Skipping fields names with strings from (array)skip_fields_with_strings
795
- foreach($skip_fields_with_strings as $needle){
796
- if (preg_match("/".$needle."/", $prev_name.$key) == 1){
797
- continue(2);
798
- }
799
- }unset($needle);
800
-
801
- // Obfuscating params
802
- foreach($obfuscate_params as $needle){
803
- if (strpos($key, $needle) !== false){
804
- $value = ct_obfuscate_param($value);
805
- continue(2);
806
- }
807
- }unset($needle);
808
-
809
- $value_for_email = trim( strip_shortcodes( $value ) ); // Removes shortcodes to do better spam filtration on server side.
810
-
811
- // Email
812
- if ( ! $email && preg_match( "/^\S+@\S+\.\S+$/", $value_for_email ) ) {
813
- $email = $value_for_email;
814
-
815
- // Removes whitespaces
816
- $value = urldecode( trim( strip_shortcodes( $value ) ) ); // Fully cleaned message
817
-
818
- // Names
819
- }elseif (preg_match("/name/i", $key)){
820
-
821
- preg_match("/((name.?)?(your|first|for)(.?name)?)/", $key, $match_forename);
822
- preg_match("/((name.?)?(last|family|second|sur)(.?name)?)/", $key, $match_surname);
823
- preg_match("/(name.?)?(nick|user)(.?name)?/", $key, $match_nickname);
824
-
825
- if(count($match_forename) > 1)
826
- $nickname['first'] = $value;
827
- elseif(count($match_surname) > 1)
828
- $nickname['last'] = $value;
829
- elseif(count($match_nickname) > 1)
830
- $nickname['nick'] = $value;
831
- else
832
- $message[$prev_name.$key] = $value;
833
-
834
- // Subject
835
- }elseif ($subject === null && preg_match("/subject/i", $key)){
836
- $subject = $value;
837
-
838
- // Message
839
- }else{
840
- $message[$prev_name.$key] = $value;
841
- }
842
-
843
- }elseif(!is_object($value)){
844
-
845
- $prev_name_original = $prev_name;
846
- $prev_name = ($prev_name === '' ? $key.'_' : $prev_name.$key.'_');
847
-
848
- $temp = ct_get_fields_any($value, $message, $email, $nickname, $subject, $contact, $prev_name);
849
-
850
- $message = $temp['message'];
851
- $email = ($temp['email'] ? $temp['email'] : null);
852
- $nickname = ($temp['nickname'] ? $temp['nickname'] : null);
853
- $subject = ($temp['subject'] ? $temp['subject'] : null);
854
- if($contact === true)
855
- $contact = ($temp['contact'] === false ? false : true);
856
- $prev_name = $prev_name_original;
857
- }
858
- } unset($key, $value);
859
- }
860
-
861
- foreach ($skip_message_post as $v) {
862
- if (isset($_POST[$v])) {
863
- $message = null;
864
- break;
865
- }
866
- } unset($v);
867
-
868
- //If top iteration, returns compiled name field. Example: "Nickname Firtsname Lastname".
869
- if($prev_name === ''){
870
- if(!empty($nickname)){
871
- $nickname_str = '';
872
- foreach($nickname as $value){
873
- $nickname_str .= ($value ? $value." " : "");
874
- }unset($value);
875
- }
876
- $nickname = $nickname_str;
877
- }
878
-
879
- $return_param = array(
880
- 'email' => $email,
881
- 'nickname' => $nickname,
882
- 'subject' => $subject,
883
- 'contact' => $contact,
884
- 'message' => $message
885
- );
886
- return $return_param;
887
- }
888
-
889
- /**
890
- * Masks a value with asterisks (*)
891
- * @return string
892
- */
893
- function ct_obfuscate_param($value = null) {
894
- if ($value && (!is_object($value) || !is_array($value))) {
895
- $length = strlen($value);
896
- $value = str_repeat('*', $length);
897
- }
898
-
899
- return $value;
900
- }
901
-
902
- //New ct_get_fields_any_postdata
903
- function ct_get_fields_any_postdata($arr, $message=array()){
904
- $skip_params = array(
905
- 'ipn_track_id', // PayPal IPN #
906
- 'txn_type', // PayPal transaction type
907
- 'payment_status', // PayPal payment status
908
- );
909
-
910
- foreach($arr as $key => $value){
911
- if(!is_array($value)){
912
- if($value == '')
913
- continue;
914
- if (!(in_array($key, $skip_params) || preg_match("/^ct_checkjs/", $key)) && $value!='')
915
- $message[$key] = $value;
916
- }else{
917
- $temp = ct_get_fields_any_postdata($value);
918
- $message = (count($temp) == 0 ? $message : array_merge($message, $temp));
919
- }
920
- }
921
- return $message;
922
- }
923
-
924
- /**
925
- * Checks if given string is valid regular expression
926
- *
927
- * @param string $regexp
928
- *
929
- * @return bool
930
- */
931
- function apbct_is_regexp($regexp){
932
- return @preg_match('/' . $regexp . '/', null) !== false;
933
- }
934
-
935
- function cleantalk_debug($key,$value)
936
- {
937
- if(isset($_COOKIE) && isset($_COOKIE['cleantalk_debug']))
938
- {
939
- @header($key.": ".$value);
940
- }
941
- }
942
-
943
- /**
944
- * Function changes CleanTalk result object if an error occured.
945
- * @return object
946
- */
947
- function ct_change_plugin_resonse($ct_result = null, $checkjs = null) {
948
-
949
- global $apbct;
950
-
951
- if (!$ct_result) {
952
- return $ct_result;
953
- }
954
-
955
- if(@intval($ct_result->errno) != 0)
956
- {
957
- if($checkjs === null || $checkjs != 1)
958
- {
959
- $ct_result->allow = 0;
960
- $ct_result->spam = 1;
961
- $ct_result->comment = sprintf('We\'ve got an issue: %s. Forbidden. Please, enable Javascript. %s.',
962
- $ct_result->comment,
963
- $apbct->plugin_name
964
- );
965
- }
966
- else
967
- {
968
- $ct_result->allow = 1;
969
- $ct_result->comment = 'Allow';
970
- }
971
- }
972
-
973
- return $ct_result;
974
- }
975
-
976
- /**
977
- * Does key has correct symbols? Checks against regexp ^[a-z\d]{3,15}$
978
- * @param api_key
979
- * @return bool
980
- */
981
- function apbct_api_key__is_correct($api_key = null)
982
- {
983
- global $apbct;
984
- $api_key = $api_key !== null ? $api_key : $apbct->api_key;
985
- return $api_key && preg_match('/^[a-z\d]{3,15}$/', $api_key) ? true : false;
986
- }
987
-
988
- function apbct_add_async_attribute($tag, $handle, $src) {
989
-
990
- global $apbct;
991
-
992
- if(
993
- $apbct->settings['async_js'] &&
994
- (
995
- $handle === 'ct_public'
996
- || $handle === 'ct_public_gdpr'
997
- || $handle === 'ct_debug_js'
998
- || $handle === 'ct_public_admin_js'
999
- || $handle === 'ct_internal'
1000
- || $handle === 'ct_external'
1001
- || $handle === 'ct_nocache'
1002
- )
1003
- )
1004
- return str_replace( ' src', ' async="async" src', $tag );
1005
- else
1006
- return $tag;
1007
  }
1
+ <?php
2
+
3
+ function apbct_array( $array ){
4
+ return new Cleantalk\Arr( $array );
5
+ }
6
+
7
+ $ct_checkjs_frm = 'ct_checkjs_frm';
8
+ $ct_checkjs_register_form = 'ct_checkjs_register_form';
9
+
10
+ $apbct_cookie_request_id_label = 'request_id';
11
+ $apbct_cookie_register_ok_label = 'register_ok';
12
+
13
+ $ct_checkjs_cf7 = 'ct_checkjs_cf7';
14
+ $ct_cf7_comment = '';
15
+
16
+ $ct_checkjs_jpcf = 'ct_checkjs_jpcf';
17
+ $ct_jpcf_patched = false;
18
+ $ct_jpcf_fields = array('name', 'email');
19
+
20
+ // Comment already proccessed
21
+ $ct_comment_done = false;
22
+
23
+ // Comment already proccessed
24
+ $ct_signup_done = false;
25
+
26
+ //Contains registration error
27
+ $ct_registration_error_comment = false;
28
+
29
+ // Default value for JS test
30
+ $ct_checkjs_def = 0;
31
+
32
+ // COOKIE label to store request id for last approved
33
+ $ct_approved_request_id_label = 'ct_approved_request_id';
34
+
35
+ // Last request id approved for publication
36
+ $ct_approved_request_id = null;
37
+
38
+ // Trial notice show time in minutes
39
+ $trial_notice_showtime = 10;
40
+
41
+ // Renew notice show time in minutes
42
+ $renew_notice_showtime = 10;
43
+
44
+ // COOKIE label for WP Landing Page proccessing result
45
+ $ct_wplp_result_label = 'ct_wplp_result';
46
+
47
+ // Flag indicates active JetPack comments
48
+ $ct_jp_comments = false;
49
+
50
+ // WP admin email notice interval in seconds
51
+ $ct_admin_notoice_period = 21600;
52
+
53
+ // Sevice negative comment to visitor.
54
+ // It uses for BuddyPress registrations to avoid double checks
55
+ $ct_negative_comment = null;
56
+
57
+ // Set globals to NULL to avoid massive DB requests. Globals will be set when needed only and by accessors only.
58
+ $ct_server = NULL;
59
+ $admin_email = NULL;
60
+
61
+ /**
62
+ * Public action 'plugins_loaded' - Loads locale, see http://codex.wordpress.org/Function_Reference/load_plugin_textdomain
63
+ */
64
+ function apbct_plugin_loaded() {
65
+ $dir=plugin_basename( dirname( __FILE__ ) ) . '/../i18n';
66
+ $loaded=load_plugin_textdomain('cleantalk', false, $dir);
67
+ }
68
+
69
+ /**
70
+ * Inner function - Request's wrapper for anything
71
+ * @param array Array of parameters:
72
+ * 'message' - string
73
+ * 'example' - string
74
+ * 'checkjs' - int
75
+ * 'sender_email' - string
76
+ * 'sender_nickname' - string
77
+ * 'sender_info' - array
78
+ * 'post_info' - string
79
+ * @return array array('ct'=> Cleantalk, 'ct_result' => CleantalkResponse)
80
+ */
81
+ function apbct_base_call($params = array(), $reg_flag = false){
82
+
83
+ global $apbct, $cleantalk_executed;
84
+
85
+ $cleantalk_executed = true;
86
+
87
+ $sender_info = !empty($params['sender_info'])
88
+ ? CleantalkHelper::array_merge__save_numeric_keys__recursive(apbct_get_sender_info(), (array)$params['sender_info'])
89
+ : apbct_get_sender_info();
90
+
91
+ // Fields exclusions
92
+ if( ! empty( $params['message'] ) && is_array( $params['message'] ) ){
93
+
94
+ $params['message'] = apbct_array( $params['message'] )
95
+ ->get_keys( $apbct->settings['exclusions__fields'], $apbct->settings['exclusions__fields__use_regexp'] )
96
+ ->delete();
97
+ }
98
+
99
+ // Reversed url exclusions. Pass everything except one.
100
+ if( ! apbct_exclusions_check__url__reversed() ){
101
+ return array(
102
+ 'ct' => false,
103
+ 'ct_result' => new CleantalkResponse( null, null )
104
+ );
105
+ }
106
+
107
+ $default_params = array(
108
+
109
+ // IPs
110
+ 'sender_ip' => defined('CT_TEST_IP') ? CT_TEST_IP : (isset($params['sender_ip']) ? $params['sender_ip'] : CleantalkHelper::ip__get(array('real'), false)),
111
+ 'x_forwarded_for' => CleantalkHelper::ip__get(array('x_forwarded_for'), false),
112
+ 'x_real_ip' => CleantalkHelper::ip__get(array('x_real_ip'), false),
113
+
114
+ // Misc
115
+ 'auth_key' => $apbct->api_key,
116
+ 'js_on' => apbct_js_test('ct_checkjs', $_COOKIE) ? 1 : apbct_js_test('ct_checkjs', $_POST),
117
+
118
+ 'agent' => APBCT_AGENT,
119
+ 'sender_info' => $sender_info,
120
+ 'submit_time' => apbct_get_submit_time(),
121
+ );
122
+
123
+ // Send $_SERVER if couldn't find IP
124
+ if(empty($default_params['sender_ip']))
125
+ $default_params['sender_info']['server_info'] = $_SERVER;
126
+
127
+ $ct_request = new CleantalkRequest(
128
+ CleantalkHelper::array_merge__save_numeric_keys__recursive($default_params, $params)
129
+ );
130
+
131
+ $ct = new Cleantalk();
132
+
133
+ $ct->use_bultin_api = $apbct->settings['use_buitin_http_api'] ? true : false;
134
+ $ct->ssl_on = $apbct->settings['ssl_on'];
135
+ $ct->ssl_path = APBCT_CASERT_PATH;
136
+
137
+ // Options store url without shceme because of DB error with ''://'
138
+ $config = ct_get_server();
139
+ $ct->server_url = APBCT_MODERATE_URL;
140
+ $ct->work_url = preg_match('/http:\/\/.+/', $config['ct_work_url']) ? $config['ct_work_url'] : null;
141
+ $ct->server_ttl = $config['ct_server_ttl'];
142
+ $ct->server_changed = $config['ct_server_changed'];
143
+
144
+ $start = microtime(true);
145
+ $ct_result = $reg_flag
146
+ ? @$ct->isAllowUser($ct_request)
147
+ : @$ct->isAllowMessage($ct_request);
148
+ $exec_time = microtime(true) - $start;
149
+
150
+ // Statistics
151
+ // Average request time
152
+ apbct_statistics__rotate($exec_time);
153
+ // Last request
154
+ $apbct->stats['last_request']['time'] = time();
155
+ $apbct->stats['last_request']['server'] = $ct->work_url;
156
+ $apbct->save('stats');
157
+
158
+ // Connection reports
159
+ if ($ct_result->errno === 0 && empty($ct_result->errstr))
160
+ $apbct->data['connection_reports']['success']++;
161
+ else
162
+ {
163
+ $apbct->data['connection_reports']['negative']++;
164
+ $apbct->data['connection_reports']['negative_report'][] = array(
165
+ 'date' => date("Y-m-d H:i:s"),
166
+ 'page_url' => apbct_get_server_variable( 'REQUEST_URI' ),
167
+ 'lib_report' => $ct_result->errstr,
168
+ 'work_url' => $ct->work_url,
169
+ );
170
+
171
+ if(count($apbct->data['connection_reports']['negative_report']) > 20)
172
+ $apbct->data['connection_reports']['negative_report'] = array_slice($apbct->data['connection_reports']['negative_report'], -20, 20);
173
+
174
+ }
175
+
176
+ if ($ct->server_change) {
177
+ update_option(
178
+ 'cleantalk_server',
179
+ array(
180
+ 'ct_work_url' => $ct->work_url,
181
+ 'ct_server_ttl' => $ct->server_ttl,
182
+ 'ct_server_changed' => time(),
183
+ )
184
+ );
185
+ }
186
+
187
+ $ct_result = ct_change_plugin_resonse($ct_result, $ct_request->js_on);
188
+
189
+ // Restart submit form counter for failed requests
190
+ if ($ct_result->allow == 0){
191
+ apbct_cookie(); // Setting page timer and cookies
192
+ ct_add_event('no');
193
+ }else{
194
+ ct_add_event('yes');
195
+ }
196
+
197
+ // Set cookies if it's not.
198
+ if(empty($apbct->flags__cookies_setuped))
199
+ apbct_cookie();
200
+
201
+ return array('ct' => $ct, 'ct_result' => $ct_result);
202
+
203
+ }
204
+
205
+ function apbct_exclusions_check($func = null){
206
+
207
+ global $apbct, $cleantalk_executed;
208
+
209
+ // Common exclusions
210
+ if(
211
+ apbct_exclusions_check__ip() ||
212
+ apbct_exclusions_check__url() ||
213
+ apbct_is_user_role_in( $apbct->settings['exclusions__roles'] ) ||
214
+ $cleantalk_executed
215
+ )
216
+ return true;
217
+
218
+ // Personal exclusions
219
+ switch ($func){
220
+ case 'ct_contact_form_validate_postdata':
221
+ if(
222
+ (defined( 'DOING_AJAX' ) && DOING_AJAX) ||
223
+ apbct_array( $_POST )->get_keys( 'members_search_submit' )->result()
224
+ )
225
+ return true;
226
+ break;
227
+ case 'ct_contact_form_validate':
228
+ if(
229
+ apbct_array( $_POST )->get_keys( 'members_search_submit' )->result()
230
+ )
231
+ return true;
232
+ break;
233
+ default:
234
+ return false;
235
+ break;
236
+ }
237
+
238
+ return false;
239
+ }
240
+
241
+ function apbct_exclusions_check__url__reversed(){
242
+ return defined( 'APBCT_URL_EXCLUSIONS__REVERSED' ) && ! \Cleantalk\Common\Server::has_string( 'REQUEST_URI', APBCT_URL_EXCLUSIONS__REVERSED )
243
+ ? false
244
+ : true;
245
+ }
246
+
247
+ /**
248
+ * Checks if reuqest URI is in exclusion list
249
+ *
250
+ * @return bool
251
+ */
252
+ function apbct_exclusions_check__url() {
253
+
254
+ global $apbct;
255
+
256
+ if ( ! empty( $apbct->settings['exclusions__urls'] ) ) {
257
+
258
+ $exclusions = explode( ',', $apbct->settings['exclusions__urls'] );
259
+
260
+ // Fix for AJAX forms
261
+ $haystack = apbct_get_server_variable( 'REQUEST_URI' ) == '/wp-admin/admin-ajax.php' && ! apbct_get_server_variable( 'HTTP_REFERER' )
262
+ ? apbct_get_server_variable( 'HTTP_REFERER' )
263
+ : apbct_get_server_variable( 'REQUEST_URI' );
264
+
265
+ foreach ( $exclusions as $exclusion ) {
266
+ if (
267
+ ($apbct->settings['exclusions__urls__use_regexp'] && preg_match( '/' . $exclusion . '/', $haystack ) === 1) ||
268
+ stripos( $haystack, $exclusion ) !== false
269
+ ){
270
+ return true;
271
+ }
272
+ }
273
+ return false;
274
+ }
275
+ }
276
+ /**
277
+ * @deprecated 5.128 Using IP white-lists instead
278
+ * @deprecated since 18.09.2019
279
+ * Checks if sender_ip is in exclusion list
280
+ *
281
+ * @return bool
282
+ */
283
+ function apbct_exclusions_check__ip(){
284
+
285
+ global $cleantalk_ip_exclusions;
286
+
287
+ if( apbct_get_server_variable( 'REMOTE_ADDR' ) ){
288
+
289
+ if( CleantalkHelper::ip__is_cleantalks( apbct_get_server_variable( 'REMOTE_ADDR' ) ) ){
290
+ return true;
291
+ }
292
+
293
+ if( ! empty( $cleantalk_ip_exclusions ) && is_array( $cleantalk_ip_exclusions ) ){
294
+ foreach ( $cleantalk_ip_exclusions as $exclusion ){
295
+ if( stripos( apbct_get_server_variable( 'REMOTE_ADDR' ), $exclusion ) !== false ){
296
+ return true;
297
+ }
298
+ }
299
+ }
300
+ }
301
+
302
+ return false;
303
+ }
304
+
305
+ /**
306
+ * Inner function - Default data array for senders
307
+ * @return array
308
+ */
309
+ function apbct_get_sender_info() {
310
+
311
+ global $apbct;
312
+
313
+ // Validate cookie from the backend
314
+ $cookie_is_ok = apbct_cookies_test();
315
+
316
+ $referer_previous = $apbct->settings['set_cookies__sessions']
317
+ ? apbct_alt_session__get('apbct_prev_referer')
318
+ : filter_input(INPUT_COOKIE, 'apbct_prev_referer');
319
+
320
+ $site_landing_ts = $apbct->settings['set_cookies__sessions']
321
+ ? apbct_alt_session__get('apbct_site_landing_ts')
322
+ : filter_input(INPUT_COOKIE, 'apbct_site_landing_ts');
323
+
324
+ $page_hits = $apbct->settings['set_cookies__sessions']
325
+ ? apbct_alt_session__get('apbct_page_hits')
326
+ : filter_input(INPUT_COOKIE, 'apbct_page_hits');
327
+
328
+ if (count($_POST) > 0) {
329
+ foreach ($_POST as $k => $v) {
330
+ if (preg_match("/^(ct_check|checkjs).+/", $k)) {
331
+ $checkjs_data_post = $v;
332
+ }
333
+ }
334
+ }
335
+
336
+ // AMP check
337
+ $amp_detected = apbct_get_server_variable( 'HTTP_REFERER' )
338
+ ? strpos(apbct_get_server_variable( 'HTTP_REFERER' ), '/amp/') !== false || strpos(apbct_get_server_variable( 'HTTP_REFERER' ), '?amp=1') !== false || strpos(apbct_get_server_variable( 'HTTP_REFERER' ), '&amp=1') !== false
339
+ ? 1
340
+ : 0
341
+ : null;
342
+
343
+ $site_referer = $apbct->settings['store_urls__sessions']
344
+ ? apbct_alt_session__get('apbct_site_referer')
345
+ : filter_input(INPUT_COOKIE, 'apbct_site_referer');
346
+
347
+ $urls = $apbct->settings['store_urls__sessions']
348
+ ? (array)apbct_alt_session__get('apbct_urls')
349
+ : (array)json_decode(filter_input(INPUT_COOKIE, 'apbct_urls'), true);
350
+
351
+ return array(
352
+ 'remote_addr' => CleantalkHelper::ip__get(array('remote_addr'), false),
353
+ 'REFFERRER' => apbct_get_server_variable( 'HTTP_REFERER' ),
354
+ 'USER_AGENT' => apbct_get_server_variable( 'HTTP_USER_AGENT' ),
355
+ 'page_url' => apbct_get_server_variable( 'SERVER_NAME' ) . apbct_get_server_variable( 'REQUEST_URI' ),
356
+ 'cms_lang' => substr(get_locale(), 0, 2),
357
+ 'ct_options' => json_encode($apbct->settings),
358
+ 'fields_number' => sizeof($_POST),
359
+ 'direct_post' => $cookie_is_ok === null && apbct_is_post() ? 1 : 0,
360
+ // Raw data to validated JavaScript test in the cloud
361
+ 'checkjs_data_cookies' => !empty($_COOKIE['ct_checkjs']) ? $_COOKIE['ct_checkjs'] : null,
362
+ 'checkjs_data_post' => !empty($checkjs_data_post) ? $checkjs_data_post : null,
363
+ // PHP cookies
364
+ 'cookies_enabled' => $cookie_is_ok,
365
+ 'REFFERRER_PREVIOUS' => !empty($referer_previous) && $cookie_is_ok ? $referer_previous : null,
366
+ 'site_landing_ts' => !empty($site_landing_ts) && $cookie_is_ok ? $site_landing_ts : null,
367
+ 'page_hits' => !empty($page_hits) ? $page_hits : null,
368
+ // JS cookies
369
+ 'js_info' => !empty($_COOKIE['ct_user_info']) ? json_decode(stripslashes($_COOKIE['ct_user_info']), true) : null,
370
+ 'mouse_cursor_positions' => !empty($_COOKIE['ct_pointer_data']) ? json_decode(stripslashes($_COOKIE['ct_pointer_data']), true) : null,
371
+ 'js_timezone' => !empty($_COOKIE['ct_timezone']) ? $_COOKIE['ct_timezone'] : null,
372
+ 'key_press_timestamp' => !empty($_COOKIE['ct_fkp_timestamp']) ? $_COOKIE['ct_fkp_timestamp'] : null,
373
+ 'page_set_timestamp' => !empty($_COOKIE['ct_ps_timestamp']) ? $_COOKIE['ct_ps_timestamp'] : null,
374
+ 'form_visible_inputs' => !empty($_COOKIE['apbct_visible_fields_count']) ? $_COOKIE['apbct_visible_fields_count'] : null,
375
+ 'apbct_visible_fields' => !empty($_COOKIE['apbct_visible_fields']) ? apbct_visibile_fields__process($_COOKIE['apbct_visible_fields']) : null,
376
+ // Misc
377
+ 'site_referer' => !empty($site_referer) ? $site_referer : null,
378
+ 'source_url' => !empty($urls) ? json_encode($urls) : null,
379
+ // Debug stuff
380
+ 'amp_detected' => $amp_detected,
381
+ 'hook' => current_action() ? current_action() : 'no_hook',
382
+ 'headers_sent' => !empty($apbct->headers_sent) ? $apbct->headers_sent : false,
383
+ 'headers_sent__hook' => !empty($apbct->headers_sent__hook) ? $apbct->headers_sent__hook : 'no_hook',
384
+ 'headers_sent__where' => !empty($apbct->headers_sent__where) ? $apbct->headers_sent__where : false,
385
+ 'request_type' => apbct_get_server_variable('REQUEST_METHOD') ? apbct_get_server_variable('REQUEST_METHOD') : 'UNKNOWN',
386
+ );
387
+ }
388
+
389
+ /**
390
+ * Process visible fields for specific form to match the fields from request
391
+ *
392
+ * @param string $visible_fields
393
+ *
394
+ * @return string
395
+ */
396
+ function apbct_visibile_fields__process($visible_fields) {
397
+ if(strpos($visible_fields, 'wpforms') !== false){
398
+ $visible_fields = preg_replace(
399
+ array('/\[/', '/\]/'),
400
+ '',
401
+ str_replace(
402
+ '][',
403
+ '_',
404
+ str_replace(
405
+ 'wpforms[fields]',
406
+ '',
407
+ $visible_fields
408
+ )
409
+ )
410
+ );
411
+ }
412
+
413
+ return $visible_fields;
414
+ }
415
+
416
+ /*
417
+ * Outputs JS key for AJAX-use only. Stops script.
418
+ */
419
+ function apbct_js_keys__get__ajax($direct_call = false){
420
+ if(!$direct_call){
421
+ if(isset($_POST['_ajax_nonce'])){
422
+ if(!wp_verify_nonce($_POST['_ajax_nonce'], 'ct_secret_stuff')){
423
+ wp_doing_ajax()
424
+ ? wp_die( -1, 403 )
425
+ : die( '-1' );
426
+ }
427
+ }else{
428
+ wp_doing_ajax()
429
+ ? wp_die( -1, 403 )
430
+ : die( '-1' );
431
+ }
432
+ }
433
+ die(json_encode(array(
434
+ 'js_key' => ct_get_checkjs_value()
435
+ )));
436
+ }
437
+
438
+ /**
439
+ * Get ct_get_checkjs_value
440
+ *
441
+ * @param bool $random_key
442
+ *
443
+ * @return int|string|null
444
+ */
445
+ function ct_get_checkjs_value(){
446
+
447
+ global $apbct;
448
+
449
+ // Use static JS keys
450
+ if($apbct->settings['use_static_js_key'] == 1){
451
+
452
+ $key = hash('sha256', $apbct->api_key.ct_get_admin_email().$apbct->salt);
453
+
454
+ // Auto detecting. Detected.
455
+ }elseif(
456
+ $apbct->settings['use_static_js_key'] == - 1 &&
457
+ ( apbct_is_cache_plugins_exists() ||
458
+ ( apbct_is_post() && $apbct->data['cache_detected'] == 1 )
459
+ )
460
+ ){
461
+ $key = hash('sha256', $apbct->api_key.ct_get_admin_email().$apbct->salt);
462
+ if( apbct_is_cache_plugins_exists() )
463
+ $apbct->data['cache_detected'] = 1;
464
+
465
+ // Using dynamic JS keys
466
+ }else{
467
+
468
+ $keys = $apbct->data['js_keys'];
469
+ $keys_checksum = md5(json_encode($keys));
470
+
471
+ $key = null;
472
+ $latest_key_time = 0;
473
+
474
+ foreach ($keys as $k => $t) {
475
+
476
+ // Removing key if it's to old
477
+ if (time() - $t > $apbct->data['js_keys_store_days'] * 86400 * 7) {
478
+ unset($keys[$k]);
479
+ continue;
480
+ }
481
+
482
+ if ($t > $latest_key_time) {
483
+ $latest_key_time = $t;
484
+ $key = $k;
485
+ }
486
+ }
487
+
488
+ // Set new key if the latest key is too old
489
+ if (time() - $latest_key_time > $apbct->data['js_key_lifetime']) {
490
+ $key = rand();
491
+ $keys[$key] = time();
492
+ }
493
+
494
+ // Save keys if they were changed
495
+ if (md5(json_encode($keys)) != $keys_checksum) {
496
+ $apbct->data['js_keys'] = $keys;
497
+ // $apbct->saveData();
498
+ }
499
+
500
+ $apbct->data['cache_detected'] = 0;
501
+ }
502
+
503
+ $apbct->saveData();
504
+
505
+ return $key;
506
+ }
507
+
508
+ function apbct_is_cache_plugins_exists(){
509
+ return
510
+ defined('WP_ROCKET_VERSION') || // WPRocket
511
+ defined('LSCWP_DIR') || // LiteSpeed Cache
512
+ defined('WPFC_WP_CONTENT_BASENAME') || // WP Fastest Cache
513
+ defined('W3TC') || // W3 Total Cache
514
+ defined('WPO_VERSION') || // WP-Optimize – Clean, Compress, Cache
515
+ defined('AUTOPTIMIZE_PLUGIN_VERSION') || // Autoptimize
516
+ defined('WPCACHEHOME') || // WP Super Cache
517
+ defined('WPHB_VERSION') || // Hummingbird – Speed up, Cache, Optimize Your CSS and JS
518
+ defined('CE_FILE') || // Cache Enabler – WordPress Cache
519
+ class_exists('RedisObjectCache') || // Redis Object Cache
520
+ defined('SiteGround_Optimizer\VERSION') || // SG Optimizer
521
+ class_exists('WP_Rest_Cache_Plugin\Includes\Plugin'); // WP REST Cache
522
+ }
523
+
524
+ /**
525
+ * Inner function - Current site admin e-mail
526
+ * @return string Admin e-mail
527
+ */
528
+ function ct_get_admin_email() {
529
+ global $admin_email;
530
+ if(!isset($admin_email))
531
+ {
532
+ $admin_email = get_option('admin_email');
533
+ }
534
+ return $admin_email;
535
+ }
536
+
537
+ /**
538
+ * Inner function - Current Cleantalk working server info
539
+ * @return mixed[] Array of server data
540
+ */
541
+ function ct_get_server($force=false) {
542
+ global $ct_server;
543
+ if(!$force && isset($ct_server) && isset($ct_server['ct_work_url']) && !empty($ct_server['ct_work_url'])){
544
+
545
+ return $ct_server;
546
+
547
+ }else{
548
+
549
+ $ct_server = get_option('cleantalk_server');
550
+ if (!is_array($ct_server)){
551
+ $ct_server = array(
552
+ 'ct_work_url' => NULL,
553
+ 'ct_server_ttl' => NULL,
554
+ 'ct_server_changed' => NULL
555
+ );
556
+ }
557
+ return $ct_server;
558
+ }
559
+ }
560
+
561
+ /**
562
+ * Inner function - Stores ang returns cleantalk hash of current comment
563
+ * @param string New hash or NULL
564
+ * @return string New hash or current hash depending on parameter
565
+ */
566
+ function ct_hash($new_hash = '') {
567
+ /**
568
+ * Current hash
569
+ */
570
+ static $hash;
571
+
572
+ if (!empty($new_hash)) {
573
+ $hash = $new_hash;
574
+ }
575
+ return $hash;
576
+ }
577
+
578
+ /**
579
+ * Inner function - Write manual moderation results to PHP sessions
580
+ * @param string $hash Cleantalk comment hash
581
+ * @param string $message comment_content
582
+ * @param int $allow flag good comment (1) or bad (0)
583
+ * @return string comment_content w\o cleantalk resume
584
+ */
585
+ function ct_feedback($hash, $allow) {
586
+ global $apbct;
587
+
588
+ $ct_feedback = $hash . ':' . $allow . ';';
589
+ if($apbct->data['feedback_request'])
590
+ $apbct->data['feedback_request'] = $ct_feedback;
591
+ else
592
+ $apbct->data['feedback_request'] .= $ct_feedback;
593
+
594
+ $apbct->saveData();
595
+ }
596
+
597
+ /**
598
+ * Inner function - Sends the results of moderation
599
+ * Scheduled in 3600 seconds!
600
+ * @param string $feedback_request
601
+ * @return bool
602
+ */
603
+ function ct_send_feedback($feedback_request = null) {
604
+
605
+ global $apbct;
606
+
607
+ if (empty($feedback_request) && isset($apbct->data['feedback_request']) && preg_match("/^[a-z0-9\;\:]+$/", $apbct->data['feedback_request'])){
608
+ $feedback_request = $apbct->data['feedback_request'];
609
+ $apbct->data['feedback_request'] = '';
610
+ $apbct->saveData();
611
+ }
612
+
613
+ if ($feedback_request !== null) {
614
+
615
+ $ct_request = new CleantalkRequest(array(
616
+ // General
617
+ 'auth_key' => $apbct->api_key,
618
+ // Additional
619
+ 'feedback' => $feedback_request,
620
+ ));
621
+
622
+ $ct = new Cleantalk();
623
+
624
+ // Server URL handling
625
+ $config = ct_get_server();
626
+ $ct->server_url = APBCT_MODERATE_URL;
627
+ $ct->work_url = preg_match('/http:\/\/.+/', $config['ct_work_url']) ? $config['ct_work_url'] : null;
628
+ $ct->server_ttl = $config['ct_server_ttl'];
629
+ $ct->server_changed = $config['ct_server_changed'];
630
+
631
+ $ct->sendFeedback($ct_request);
632
+
633
+ if ($ct->server_change) {
634
+ update_option(
635
+ 'cleantalk_server',
636
+ array(
637
+ 'ct_work_url' => $ct->work_url,
638
+ 'ct_server_ttl' => $ct->server_ttl,
639
+ 'ct_server_changed' => time(),
640
+ )
641
+ );
642
+ }
643
+
644
+ return true;
645
+ }
646
+
647
+ return false;
648
+ }
649
+
650
+ /**
651
+ * Delete old spam comments
652
+ * Scheduled in 3600 seconds!
653
+ * @return null
654
+ */
655
+ function ct_delete_spam_comments() {
656
+
657
+ global $apbct;
658
+
659
+ if ($apbct->settings['remove_old_spam'] == 1) {
660
+ $last_comments = get_comments(array('status' => 'spam', 'number' => 1000, 'order' => 'ASC'));
661
+ foreach ($last_comments as $c) {
662
+ $comment_date_gmt = strtotime($c->comment_date_gmt);
663
+ if ($comment_date_gmt && is_numeric($comment_date_gmt)) {
664
+ if (time() - $comment_date_gmt > 86400 * $apbct->data['spam_store_days']) {
665
+ // Force deletion old spam comments
666
+ wp_delete_comment($c->comment_ID, true);
667
+ }
668
+ }
669
+ }
670
+ }
671
+
672
+ return null;
673
+ }
674
+
675
+ /*
676
+ * Get data from an ARRAY recursively
677
+ * @return array
678
+ */
679
+ function ct_get_fields_any($arr, $message=array(), $email = null, $nickname = array('nick' => '', 'first' => '', 'last' => ''), $subject = null, $contact = true, $prev_name = ''){
680
+
681
+ //Skip request if fields exists
682
+ $skip_params = array(
683
+ 'ipn_track_id', // PayPal IPN #
684
+ 'txn_type', // PayPal transaction type
685
+ 'payment_status', // PayPal payment status
686
+ 'ccbill_ipn', // CCBill IPN
687
+ 'ct_checkjs', // skip ct_checkjs field
688
+ 'api_mode', // DigiStore-API
689
+ 'loadLastCommentId' // Plugin: WP Discuz. ticket_id=5571
690
+ );
691
+
692
+ // Fields to replace with ****
693
+ $obfuscate_params = array(
694
+ 'password',
695
+ 'pass',
696
+ 'pwd',
697
+ 'pswd'
698
+ );
699
+
700
+ // Skip feilds with these strings and known service fields
701
+ $skip_fields_with_strings = array(
702
+ // Common
703
+ 'ct_checkjs', //Do not send ct_checkjs
704
+ 'nonce', //nonce for strings such as 'rsvp_nonce_name'
705
+ 'security',
706
+ // 'action',
707
+ 'http_referer',
708
+ 'referer-page',
709
+ 'timestamp',
710
+ 'captcha',
711
+ // Formidable Form
712
+ 'form_key',
713
+ 'submit_entry',
714
+ // Custom Contact Forms
715
+ 'form_id',
716
+ 'ccf_form',
717
+ 'form_page',
718
+ // Qu Forms
719
+ 'iphorm_uid',
720
+ 'form_url',
721
+ 'post_id',
722
+ 'iphorm_ajax',
723
+ 'iphorm_id',
724
+ // Fast SecureContact Froms
725
+ 'fs_postonce_1',
726
+ 'fscf_submitted',
727
+ 'mailto_id',
728
+ 'si_contact_action',
729
+ // Ninja Forms
730
+ 'formData_id',
731
+ 'formData_settings',
732
+ 'formData_fields_\d+_id',
733
+ 'formData_fields_\d+_files.*',
734
+ // E_signature
735
+ 'recipient_signature',
736
+ 'output_\d+_\w{0,2}',
737
+ // Contact Form by Web-Settler protection
738
+ '_formId',
739
+ '_returnLink',
740
+ // Social login and more
741
+ '_save',
742
+ '_facebook',
743
+ '_social',
744
+ 'user_login-',
745
+ // Contact Form 7
746
+ '_wpcf7',
747
+ 'ebd_settings',
748
+ 'ebd_downloads_',
749
+ 'ecole_origine',
750
+ 'signature',
751
+ );
752
+
753
+ // Reset $message if we have a sign-up data
754
+ $skip_message_post = array(
755
+ 'edd_action', // Easy Digital Downloads
756
+ );
757
+
758
+ if( apbct_array( array( $_POST, $_GET ) )->get_keys( $skip_params )->result() )
759
+ $contact = false;
760
+
761
+ if(count($arr)){
762
+
763
+ foreach($arr as $key => $value){
764
+
765
+ if(gettype($value) == 'string'){
766
+
767
+ $tmp = strpos($value, '\\') !== false ? stripslashes($value) : $value;
768
+ $decoded_json_value = json_decode($tmp, true);
769
+
770
+ // Decoding JSON
771
+ if($decoded_json_value !== null){
772
+ $value = $decoded_json_value;
773
+
774
+ // Ajax Contact Forms. Get data from such strings:
775
+ // acfw30_name %% Blocked~acfw30_email %% s@cleantalk.org
776
+ // acfw30_textarea %% msg
777
+ }elseif(preg_match('/^\S+\s%%\s\S+.+$/', $value)){
778
+ $value = explode('~', $value);
779
+ foreach ($value as &$val){
780
+ $tmp = explode(' %% ', $val);
781
+ $val = array($tmp[0] => $tmp[1]);
782
+ }
783
+ }
784
+ }
785
+
786
+ if(!is_array($value) && !is_object($value)){
787
+
788
+ if (in_array($key, $skip_params, true) && $key != 0 && $key != '' || preg_match("/^ct_checkjs/", $key))
789
+ $contact = false;
790
+
791
+ if($value === '')
792
+ continue;
793
+
794
+ // Skipping fields names with strings from (array)skip_fields_with_strings
795
+ foreach($skip_fields_with_strings as $needle){
796
+ if (preg_match("/".$needle."/", $prev_name.$key) == 1){
797
+ continue(2);
798
+ }
799
+ }unset($needle);
800
+
801
+ // Obfuscating params
802
+ foreach($obfuscate_params as $needle){
803
+ if (strpos($key, $needle) !== false){
804
+ $value = ct_obfuscate_param($value);
805
+ continue(2);
806
+ }
807
+ }unset($needle);
808
+
809
+ $value_for_email = trim( strip_shortcodes( $value ) ); // Removes shortcodes to do better spam filtration on server side.
810
+
811
+ // Email
812
+ if ( ! $email && preg_match( "/^\S+@\S+\.\S+$/", $value_for_email ) ) {
813
+ $email = $value_for_email;
814
+
815
+ // Removes whitespaces
816
+ $value = urldecode( trim( strip_shortcodes( $value ) ) ); // Fully cleaned message
817
+
818
+ // Names
819
+ }elseif (preg_match("/name/i", $key)){
820
+
821
+ preg_match("/((name.?)?(your|first|for)(.?name)?)/", $key, $match_forename);
822
+ preg_match("/((name.?)?(last|family|second|sur)(.?name)?)/", $key, $match_surname);
823
+ preg_match("/(name.?)?(nick|user)(.?name)?/", $key, $match_nickname);
824
+
825
+ if(count($match_forename) > 1)
826
+ $nickname['first'] = $value;
827
+ elseif(count($match_surname) > 1)
828
+ $nickname['last'] = $value;
829
+ elseif(count($match_nickname) > 1)
830
+ $nickname['nick'] = $value;
831
+ else
832
+ $message[$prev_name.$key] = $value;
833
+
834
+ // Subject
835
+ }elseif ($subject === null && preg_match("/subject/i", $key)){
836
+ $subject = $value;
837
+
838
+ // Message
839
+ }else{
840
+ $message[$prev_name.$key] = $value;
841
+ }
842
+
843
+ }elseif(!is_object($value)){
844
+
845
+ $prev_name_original = $prev_name;
846
+ $prev_name = ($prev_name === '' ? $key.'_' : $prev_name.$key.'_');
847
+
848
+ $temp = ct_get_fields_any($value, $message, $email, $nickname, $subject, $contact, $prev_name);
849
+
850
+ $message = $temp['message'];
851
+ $email = ($temp['email'] ? $temp['email'] : null);
852
+ $nickname = ($temp['nickname'] ? $temp['nickname'] : null);
853
+ $subject = ($temp['subject'] ? $temp['subject'] : null);
854
+ if($contact === true)
855
+ $contact = ($temp['contact'] === false ? false : true);
856
+ $prev_name = $prev_name_original;
857
+ }
858
+ } unset($key, $value);
859
+ }
860
+
861
+ foreach ($skip_message_post as $v) {
862
+ if (isset($_POST[$v])) {
863
+ $message = null;
864
+ break;
865
+ }
866
+ } unset($v);
867
+
868
+ //If top iteration, returns compiled name field. Example: "Nickname Firtsname Lastname".
869
+ if($prev_name === ''){
870
+ if(!empty($nickname)){
871
+ $nickname_str = '';
872
+ foreach($nickname as $value){
873
+ $nickname_str .= ($value ? $value." " : "");
874
+ }unset($value);
875
+ }
876
+ $nickname = $nickname_str;
877
+ }
878
+
879
+ $return_param = array(
880
+ 'email' => $email,
881
+ 'nickname' => $nickname,
882
+ 'subject' => $subject,
883
+ 'contact' => $contact,
884
+ 'message' => $message
885
+ );
886
+ return $return_param;
887
+ }
888
+
889
+ /**
890
+ * Masks a value with asterisks (*)
891
+ * @return string
892
+ */
893
+ function ct_obfuscate_param($value = null) {
894
+ if ($value && (!is_object($value) || !is_array($value))) {
895
+ $length = strlen($value);
896
+ $value = str_repeat('*', $length);
897
+ }
898
+
899
+ return $value;
900
+ }
901
+
902
+ //New ct_get_fields_any_postdata
903
+ function ct_get_fields_any_postdata($arr, $message=array()){
904
+ $skip_params = array(
905
+ 'ipn_track_id', // PayPal IPN #
906
+ 'txn_type', // PayPal transaction type
907
+ 'payment_status', // PayPal payment status
908
+ );
909
+
910
+ foreach($arr as $key => $value){
911
+ if(!is_array($value)){
912
+ if($value == '')
913
+ continue;
914
+ if (!(in_array($key, $skip_params) || preg_match("/^ct_checkjs/", $key)) && $value!='')
915
+ $message[$key] = $value;
916
+ }else{
917
+ $temp = ct_get_fields_any_postdata($value);
918
+ $message = (count($temp) == 0 ? $message : array_merge($message, $temp));
919
+ }
920
+ }
921
+ return $message;
922
+ }
923
+
924
+ /**
925
+ * Checks if given string is valid regular expression
926
+ *
927
+ * @param string $regexp
928
+ *
929
+ * @return bool
930
+ */
931
+ function apbct_is_regexp($regexp){
932
+ return @preg_match('/' . $regexp . '/', null) !== false;
933
+ }
934
+
935
+ function cleantalk_debug($key,$value)
936
+ {
937
+ if(isset($_COOKIE) && isset($_COOKIE['cleantalk_debug']))
938
+ {
939
+ @header($key.": ".$value);
940
+ }
941
+ }
942
+
943
+ /**
944
+ * Function changes CleanTalk result object if an error occurred.
945
+ * @return object
946
+ */
947
+ function ct_change_plugin_resonse($ct_result = null, $checkjs = null) {
948
+
949
+ global $apbct;
950
+
951
+ if (!$ct_result) {
952
+ return $ct_result;
953
+ }
954
+
955
+ if(@intval($ct_result->errno) != 0)
956
+ {
957
+ if($checkjs === null || $checkjs != 1)
958
+ {
959
+ $ct_result->allow = 0;
960
+ $ct_result->spam = 1;
961
+ $ct_result->comment = sprintf('We\'ve got an issue: %s. Forbidden. Please, enable Javascript. %s.',
962
+ $ct_result->comment,
963
+ $apbct->plugin_name
964
+ );
965
+ }
966
+ else
967
+ {
968
+ $ct_result->allow = 1;
969
+ $ct_result->comment = 'Allow';
970
+ }
971
+ }
972
+
973
+ return $ct_result;
974
+ }
975
+
976
+ /**
977
+ * Does key has correct symbols? Checks against regexp ^[a-z\d]{3,15}$
978
+ * @param api_key
979
+ * @return bool
980
+ */
981
+ function apbct_api_key__is_correct($api_key = null)
982
+ {
983
+ global $apbct;
984
+ $api_key = $api_key !== null ? $api_key : $apbct->api_key;
985
+ return $api_key && preg_match('/^[a-z\d]{3,15}$/', $api_key) ? true : false;
986
+ }
987
+
988
+ function apbct_add_async_attribute($tag, $handle, $src) {
989
+
990
+ global $apbct;
991
+
992
+ if(
993
+ $apbct->settings['async_js'] &&
994
+ (
995
+ $handle === 'ct_public'
996
+ || $handle === 'ct_public_gdpr'
997
+ || $handle === 'ct_debug_js'
998
+ || $handle === 'ct_public_admin_js'
999
+ || $handle === 'ct_internal'
1000
+ || $handle === 'ct_external'
1001
+ || $handle === 'ct_nocache'
1002
+ )
1003
+ )
1004
+ return str_replace( ' src', ' async="async" src', $tag );
1005
+ else
1006
+ return $tag;
1007
  }
inc/cleantalk-public.php CHANGED
@@ -393,6 +393,7 @@ function apbct_buffer__output(){
393
  : $apbct->buffer;
394
 
395
  echo $output;
 
396
  }
397
 
398
  // MailChimp Premium for Wordpress
@@ -3275,7 +3276,8 @@ function ct_contact_form_validate() {
3275
  (isset($_POST['spl_action']) && $_POST['spl_action'] == 'register') || //Skip interal action with empty params
3276
  (isset($_POST['action']) && $_POST['action'] == 'bwfan_insert_abandoned_cart' && apbct_is_in_uri( 'my-account/edit-address' )) || //Skip edit account
3277
  apbct_is_in_uri('login-1') || //Skip login form
3278
- apbct_is_in_uri('recuperacao-de-senha-2') //Skip form reset password
 
3279
  ) {
3280
  do_action( 'apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '():' . __LINE__, $_POST );
3281
  return null;
@@ -3664,7 +3666,7 @@ function ct_enqueue_scripts_public($hook){
3664
  wp_localize_script('ct_public_admin_js', 'ctPublicAdmin', array(
3665
  'ct_ajax_nonce' => $ajax_nonce,
3666
  'ajaxurl' => admin_url('admin-ajax.php'),
3667
- 'ct_feedback_error' => __('Error occured while sending feedback.', 'cleantalk'),
3668
  'ct_feedback_no_hash' => __('Feedback wasn\'t sent. There is no associated request.', 'cleantalk'),
3669
  'ct_feedback_msg' => sprintf(__("Feedback has been sent to %sCleanTalk Dashboard%s.", 'cleantalk'), $apbct->user_token ? "<a target='_blank' href=https://cleantalk.org/my/show_requests?user_token={$apbct->user_token}&cp_mode=antispam>" : '', $apbct->user_token ? "</a>" : ''),
3670
  ));
393
  : $apbct->buffer;
394
 
395
  echo $output;
396
+ die();
397
  }
398
 
399
  // MailChimp Premium for Wordpress
3276
  (isset($_POST['spl_action']) && $_POST['spl_action'] == 'register') || //Skip interal action with empty params
3277
  (isset($_POST['action']) && $_POST['action'] == 'bwfan_insert_abandoned_cart' && apbct_is_in_uri( 'my-account/edit-address' )) || //Skip edit account
3278
  apbct_is_in_uri('login-1') || //Skip login form
3279
+ apbct_is_in_uri('recuperacao-de-senha-2') || //Skip form reset password
3280
+ apbct_is_in_uri('membermouse/api/request.php') && isset($_POST['membership_level_id'],$_POST['apikey'],$_POST['apisecret']) // Membermouse API
3281
  ) {
3282
  do_action( 'apbct_skipped_request', __FILE__ . ' -> ' . __FUNCTION__ . '():' . __LINE__, $_POST );
3283
  return null;
3666
  wp_localize_script('ct_public_admin_js', 'ctPublicAdmin', array(
3667
  'ct_ajax_nonce' => $ajax_nonce,
3668
  'ajaxurl' => admin_url('admin-ajax.php'),
3669
+ 'ct_feedback_error' => __('Error occurred while sending feedback.', 'cleantalk'),
3670
  'ct_feedback_no_hash' => __('Feedback wasn\'t sent. There is no associated request.', 'cleantalk'),
3671
  'ct_feedback_msg' => sprintf(__("Feedback has been sent to %sCleanTalk Dashboard%s.", 'cleantalk'), $apbct->user_token ? "<a target='_blank' href=https://cleantalk.org/my/show_requests?user_token={$apbct->user_token}&cp_mode=antispam>" : '', $apbct->user_token ? "</a>" : ''),
3672
  ));
inc/cleantalk-settings.php CHANGED
@@ -682,12 +682,12 @@ function apbct_settings__error__output($return = false){
682
 
683
  $error_texts = array(
684
  // Misc
685
- 'key_invalid' => __('Error occured while API key validating. Error: ', 'cleantalk'),
686
- 'key_get' => __('Error occured while automatically gettings access key. Error: ', 'cleantalk'),
687
- 'sfw_send_logs' => __('Error occured while sending sending SpamFireWall logs. Error: ', 'cleantalk'),
688
- 'sfw_update' => __('Error occured while updating SpamFireWall local base. Error: ' , 'cleantalk'),
689
- 'account_check' => __('Error occured while checking account status. Error: ', 'cleantalk'),
690
- 'api' => __('Error occured while excuting API call. Error: ', 'cleantalk'),
691
 
692
  // Validating settings
693
  'settings_validate' => 'Validate Settings',
682
 
683
  $error_texts = array(
684
  // Misc
685
+ 'key_invalid' => __('Error occurred while API key validating. Error: ', 'cleantalk'),
686
+ 'key_get' => __('Error occurred while automatically gettings access key. Error: ', 'cleantalk'),
687
+ 'sfw_send_logs' => __('Error occurred while sending sending SpamFireWall logs. Error: ', 'cleantalk'),
688
+ 'sfw_update' => __('Error occurred while updating SpamFireWall local base. Error: ' , 'cleantalk'),
689
+ 'account_check' => __('Error occurred while checking account status. Error: ', 'cleantalk'),
690
+ 'api' => __('Error occurred while excuting API call. Error: ', 'cleantalk'),
691
 
692
  // Validating settings
693
  'settings_validate' => 'Validate Settings',
inc/cleantalk-updater.php CHANGED
@@ -412,27 +412,107 @@ function apbct_update_to_5_133_0() {
412
 
413
  }
414
 
415
- function apbct_update_to_5_137_1() {
416
 
417
- global $apbct;
418
 
419
- if( APBCT_WPMS && $apbct->white_label ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
 
421
- $initial_blog = get_current_blog_id();
 
 
 
 
 
 
 
 
 
 
422
 
423
- if ( $initial_blog !== 1 && $apbct->settings[''] ) {
424
 
425
- $allow_custom_settings = $apbct->network_settings['allow_custom_settings'];
426
- $apbct->network_settings['allow_custom_settings'] = 1;
427
 
428
- switch_to_blog( 1 );
429
- $main_blog_settings = get_option( 'cleantalk_settings' );
430
- switch_to_blog( $initial_blog );
 
431
 
432
- update_option( 'cleantalk_settings', $main_blog_settings );
 
 
 
433
 
434
- $apbct->network_settings['allow_custom_settings'] = $allow_custom_settings;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
435
 
436
  }
 
 
 
 
 
 
 
437
  }
 
438
  }
412
 
413
  }
414
 
415
+ function apbct_update_to_5_138_0() {
416
 
417
+ global $wpdb;
418
 
419
+ // SQL queries for each blog
420
+ $sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_spamscan_logs` (
421
+ `id` int(11) NOT NULL AUTO_INCREMENT,
422
+ `scan_type` varchar(11) NOT NULL,
423
+ `start_time` datetime NOT NULL,
424
+ `finish_time` datetime NOT NULL,
425
+ `count_to_scan` int(11) DEFAULT NULL,
426
+ `found_spam` int(11) DEFAULT NULL,
427
+ `found_bad` int(11) DEFAULT NULL,
428
+ PRIMARY KEY (`id`));';
429
+ $sqls[] = 'CREATE TABLE IF NOT EXISTS `%scleantalk_sfw` (
430
+ `network` int(11) unsigned NOT NULL,
431
+ `mask` int(11) unsigned NOT NULL,
432
+ INDEX ( `network` , `mask` )
433
+ );';
434
+ $sqls[] = 'ALTER TABLE `%scleantalk_sfw` ADD COLUMN status TINYINT(1) NOT NULL DEFAULT 0 AFTER mask;';
435
+
436
+ // Actions for WPMS
437
+ if( APBCT_WPMS ){
438
 
439
+ // Getting all blog ids
440
+ $initial_blog = get_current_blog_id();
441
+ $blogs = array_keys($wpdb->get_results('SELECT blog_id FROM '. $wpdb->blogs, OBJECT_K));
442
+
443
+ // Getting main blog setting
444
+ switch_to_blog( 1 );
445
+ $main_blog_settings = get_option( 'cleantalk_settings' );
446
+ switch_to_blog( $initial_blog );
447
+
448
+ // Getting network settings
449
+ $net_settings = get_site_option('cleantalk_network_settings');
450
 
451
+ foreach ($blogs as $blog) {
452
 
453
+ // Update time limit to prevent exec time error
454
+ set_time_limit(20);
455
 
456
+ switch_to_blog($blog);
457
+
458
+ // Update SQL structure
459
+ apbct_activation__create_tables($sqls);
460
 
461
+ // Getting key
462
+ $settings = $net_settings['allow_custom_key']
463
+ ? get_option('cleantalk_settings')
464
+ : $main_blog_settings;
465
 
466
+ // Update plugin status
467
+ if( ! empty( $settings['apikey'] ) ){
468
+
469
+ $data = get_option( 'cleantalk_data', array() );
470
+
471
+ $result = CleantalkAPI::method__notice_paid_till(
472
+ $settings['api_key'],
473
+ preg_replace('/http[s]?:\/\//', '', get_option('siteurl'), 1),
474
+ ! is_main_site() && $net_settings['white_label'] ? 'anti-spam-hosting' : 'antispam'
475
+ );
476
+
477
+ if( empty( $result['error'] ) || ! empty( $result['valid'] ) ){
478
+
479
+ // Notices
480
+ $data['notice_show'] = isset($result['show_notice']) ? (int)$result['show_notice'] : 0;
481
+ $data['notice_renew'] = isset($result['renew']) ? (int)$result['renew'] : 0;
482
+ $data['notice_trial'] = isset($result['trial']) ? (int)$result['trial'] : 0;
483
+ $data['notice_review'] = isset($result['show_review']) ? (int)$result['show_review'] : 0;
484
+ $data['notice_auto_update'] = isset($result['show_auto_update_notice']) ? (int)$result['show_auto_update_notice'] : 0;
485
+
486
+ // Other
487
+ $data['service_id'] = isset($result['service_id']) ? (int)$result['service_id'] : 0;
488
+ $data['valid'] = isset($result['valid']) ? (int)$result['valid'] : 0;
489
+ $data['moderate'] = isset($result['moderate']) ? (int)$result['moderate'] : 0;
490
+ $data['ip_license'] = isset($result['ip_license']) ? (int)$result['ip_license'] : 0;
491
+ $data['moderate_ip'] = isset($result['moderate_ip'], $result['ip_license']) ? (int)$result['moderate_ip'] : 0;
492
+ $data['spam_count'] = isset($result['spam_count']) ? (int)$result['spam_count'] : 0;
493
+ $data['auto_update'] = isset($result['auto_update_app']) ? (int)$result['auto_update_app'] : 0;
494
+ $data['user_token'] = isset($result['user_token']) ? (string)$result['user_token'] : '';
495
+ $data['license_trial'] = isset($result['license_trial']) ? (int)$result['license_trial'] : 0;
496
+ $data['account_name_ob'] = isset($result['account_name_ob']) ? (string)$result['account_name_ob'] : '';
497
+
498
+ }
499
+
500
+ $data['key_is_ok'] = ! empty( $result['valid'] )
501
+ ? true
502
+ : false;
503
+
504
+ update_option( 'cleantalk_data', $data );
505
+
506
+ }
507
 
508
  }
509
+
510
+ // Restoring initial blog
511
+ switch_to_blog($initial_blog);
512
+
513
+ // Actions for stand alone blog
514
+ }else{
515
+ apbct_activation__create_tables($sqls);
516
  }
517
+
518
  }
inc/find-spam/ClassCleantalkFindSpamUsersChecker.php CHANGED
@@ -141,6 +141,11 @@ class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
141
  );
142
 
143
  $params = array(
 
 
 
 
 
144
  'meta_query' => array(
145
  'relation' => 'AND',
146
  array(
@@ -210,7 +215,7 @@ class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
210
  $user_meta = array_values( $user_meta );
211
 
212
  $curr_ip = !empty( $user_meta[0]['ip' ]) ? trim( $user_meta[0]['ip'] ) : '';
213
- $curr_email = !empty( $u[$i]->data->user_email ) ? trim( $u[$i]->data->user_email ) : '';
214
 
215
  // Check for identity
216
  $curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
@@ -227,6 +232,7 @@ class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
227
  if( !empty( $curr_email ) )
228
  $data[] = $curr_email;
229
  // Patch for empty IP/Email
 
230
  $u[$i]->data->user_ip = empty($curr_ip) ? 'none' : $curr_ip;
231
  $u[$i]->data->user_email = empty($curr_email) ? 'none' : $curr_email;
232
  }
@@ -255,7 +261,9 @@ class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
255
 
256
  // Do not display forbidden roles.
257
  foreach ( $skip_roles as $role ) {
258
- if ( in_array( $role, $u[$i]->roles ) ){
 
 
259
  delete_user_meta( $u[$i]->ID, 'ct_marked_as_spam' );
260
  continue 2;
261
  }
@@ -340,54 +348,37 @@ class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
340
 
341
  if (!$direct_call)
342
  check_ajax_referer( 'ct_secret_nonce', 'security' );
343
-
344
- // Checked users
345
- $params_checked = array(
346
- 'fields' => 'ID',
347
- 'meta_key' => 'ct_checked_now',
348
- 'count_total' => true,
349
- 'orderby' => 'ct_checked_now'
350
- );
351
- $checked_users = new WP_User_Query($params_checked);
352
- $cnt_checked = $checked_users->get_total();
353
-
354
- // Spam users
355
- $params_spam = array(
356
- 'fields' => 'ID',
357
- 'meta_query' => array(
358
- 'relation' => 'AND',
359
- array(
360
- 'key' => 'ct_marked_as_spam',
361
- 'compare' => 'EXISTS'
362
- ),
363
- array(
364
- 'key' => 'ct_checked_now',
365
- 'compare' => 'EXISTS'
366
- ),
367
- ),
368
- 'count_total' => true,
369
- );
370
- $spam_users = new WP_User_Query($params_spam);
371
- $cnt_spam = $spam_users->get_total();
372
-
373
- // Bad users (without IP and Email)
374
- $params_bad = array(
375
- 'fields' => 'ID',
376
- 'meta_query' => array(
377
- 'relation' => 'AND',
378
- array(
379
- 'key' => 'ct_bad',
380
- 'compare' => 'EXISTS'
381
- ),
382
- array(
383
- 'key' => 'ct_checked_now',
384
- 'compare' => 'EXISTS'
385
- ),
386
- ),
387
- 'count_total' => true,
388
- );
389
- $bad_users = new WP_User_Query($params_bad);
390
- $cnt_bad = $bad_users->get_total();
391
 
392
  $return = array(
393
  'message' => '',
@@ -433,54 +424,37 @@ class ClassCleantalkFindSpamUsersChecker extends ClassCleantalkFindSpamChecker
433
 
434
  private static function get_log_data() {
435
 
436
- // Checked users
437
- $params_checked = array(
438
- 'fields' => 'ID',
439
- 'meta_key' => 'ct_checked_now',
440
- 'count_total' => true,
441
- 'orderby' => 'ct_checked_now'
442
- );
443
- $checked_users = new WP_User_Query($params_checked);
444
- $cnt_checked = $checked_users->get_total();
445
-
446
- // Spam users
447
- $params_spam = array(
448
- 'fields' => 'ID',
449
- 'meta_query' => array(
450
- 'relation' => 'AND',
451
- array(
452
- 'key' => 'ct_marked_as_spam',
453
- 'compare' => 'EXISTS'
454
- ),
455
- array(
456
- 'key' => 'ct_checked_now',
457
- 'compare' => 'EXISTS'
458
- ),
459
- ),
460
- 'count_total' => true,
461
- );
462
- $spam_users = new WP_User_Query($params_spam);
463
- $cnt_spam = $spam_users->get_total();
464
-
465
- // Bad users (without IP and Email)
466
- $params_bad = array(
467
- 'fields' => 'ID',
468
- 'meta_query' => array(
469
- 'relation' => 'AND',
470
- array(
471
- 'key' => 'ct_bad',
472
- 'compare' => 'EXISTS'
473
- ),
474
- array(
475
- 'key' => 'ct_checked_now',
476
- 'compare' => 'EXISTS'
477
- ),
478
- ),
479
- 'count_total' => true,
480
- );
481
- $bad_users = new WP_User_Query($params_bad);
482
- $cnt_bad = $bad_users->get_total();
483
-
484
  return array(
485
  'spam' => $cnt_spam,
486
  'checked' => $cnt_checked,
141
  );
142
 
143
  $params = array(
144
+ 'fields' => array(
145
+ 'ID',
146
+ 'user_email',
147
+ 'user_registered',
148
+ ),
149
  'meta_query' => array(
150
  'relation' => 'AND',
151
  array(
215
  $user_meta = array_values( $user_meta );
216
 
217
  $curr_ip = !empty( $user_meta[0]['ip' ]) ? trim( $user_meta[0]['ip'] ) : '';
218
+ $curr_email = !empty( $u[$i]->user_email ) ? trim( $u[$i]->user_email ) : '';
219
 
220
  // Check for identity
221
  $curr_ip = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $curr_ip) === 1 ? $curr_ip : null;
232
  if( !empty( $curr_email ) )
233
  $data[] = $curr_email;
234
  // Patch for empty IP/Email
235
+ $u[$i]->data = new \stdClass();
236
  $u[$i]->data->user_ip = empty($curr_ip) ? 'none' : $curr_ip;
237
  $u[$i]->data->user_email = empty($curr_email) ? 'none' : $curr_email;
238
  }
261
 
262
  // Do not display forbidden roles.
263
  foreach ( $skip_roles as $role ) {
264
+ $user_meta = get_userdata($u[$i]->ID);
265
+ $user_roles = $user_meta->roles;
266
+ if ( in_array( $role, $user_roles ) ){
267
  delete_user_meta( $u[$i]->ID, 'ct_marked_as_spam' );
268
  continue 2;
269
  }
348
 
349
  if (!$direct_call)
350
  check_ajax_referer( 'ct_secret_nonce', 'security' );
351
+
352
+ global $wpdb;
353
+
354
+ // Checked users
355
+ $cnt_checked = $wpdb->get_results("
356
+ SELECT COUNT(*) AS cnt
357
+ FROM {$wpdb->usermeta}
358
+ WHERE meta_key='ct_checked_now'"
359
+ )[0]->cnt;
360
+
361
+ // Spam users
362
+ $cnt_spam = $wpdb->get_results("
363
+ SELECT COUNT({$wpdb->users}.ID) AS cnt
364
+ FROM {$wpdb->users}
365
+ INNER JOIN {$wpdb->usermeta} AS meta1 ON ( {$wpdb->users}.ID = meta1.user_id )
366
+ INNER JOIN {$wpdb->usermeta} AS meta2 ON ( {$wpdb->users}.ID = meta2.user_id )
367
+ WHERE
368
+ meta1.meta_key = 'ct_marked_as_spam' AND
369
+ meta2.meta_key = 'ct_checked_now';"
370
+ )[0]->cnt;
371
+
372
+ // Bad users (without IP and Email)
373
+ $cnt_bad = $wpdb->get_results("
374
+ SELECT COUNT({$wpdb->users}.ID) AS cnt
375
+ FROM {$wpdb->users}
376
+ INNER JOIN {$wpdb->usermeta} AS meta1 ON ( {$wpdb->users}.ID = meta1.user_id )
377
+ INNER JOIN {$wpdb->usermeta} AS meta2 ON ( {$wpdb->users}.ID = meta2.user_id )
378
+ WHERE
379
+ meta1.meta_key = 'ct_bad' AND
380
+ meta2.meta_key = 'ct_checked_now';"
381
+ )[0]->cnt;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
 
383
  $return = array(
384
  'message' => '',
424
 
425
  private static function get_log_data() {
426
 
427
+ global $wpdb;
428
+
429
+ // Checked users
430
+ $cnt_checked = $wpdb->get_results("
431
+ SELECT COUNT(*) AS cnt
432
+ FROM {$wpdb->usermeta}
433
+ WHERE meta_key='ct_checked_now'"
434
+ )[0]->cnt;
435
+
436
+ // Spam users
437
+ $cnt_spam = $wpdb->get_results("
438
+ SELECT COUNT({$wpdb->users}.ID) AS cnt
439
+ FROM {$wpdb->users}
440
+ INNER JOIN {$wpdb->usermeta} AS meta1 ON ( {$wpdb->users}.ID = meta1.user_id )
441
+ INNER JOIN {$wpdb->usermeta} AS meta2 ON ( {$wpdb->users}.ID = meta2.user_id )
442
+ WHERE
443
+ meta1.meta_key = 'ct_marked_as_spam' AND
444
+ meta2.meta_key = 'ct_checked_now';"
445
+ )[0]->cnt;
446
+
447
+ // Bad users (without IP and Email)
448
+ $cnt_bad = $wpdb->get_results("
449
+ SELECT COUNT({$wpdb->users}.ID) AS cnt
450
+ FROM {$wpdb->users}
451
+ INNER JOIN {$wpdb->usermeta} AS meta1 ON ( {$wpdb->users}.ID = meta1.user_id )
452
+ INNER JOIN {$wpdb->usermeta} AS meta2 ON ( {$wpdb->users}.ID = meta2.user_id )
453
+ WHERE
454
+ meta1.meta_key = 'ct_bad' AND
455
+ meta2.meta_key = 'ct_checked_now';"
456
+ )[0]->cnt;
457
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  return array(
459
  'spam' => $cnt_spam,
460
  'checked' => $cnt_checked,
js/cleantalk-comments-checkspam.min.js CHANGED
@@ -1,2 +1 @@
1
- var ct_working=!(String.prototype.printf=function(){var e=this;for(var t in arguments){var c=e.substring(0,e.indexOf("%s",0)),_=e.substring(e.indexOf("%s",0)+2,e.length);e=c+arguments[t]+_}return e}),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctCommentsCheck.ct_prev_accurate,ct_prev_from=ctCommentsCheck.ct_prev_from,ct_prev_till=ctCommentsCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctCommentsCheck.ct_ajax_nonce,ct_comments_total=0,ct_comments_checked=0,ct_comments_spam=0,ct_comments_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function animate_comment(e,t){ct_close_animate?.3==e?jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(1,t)}):jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(.3,t)}):ct_close_animate=!0}function ct_clear_comments(){var e=0,t=0;jQuery("#ct_allow_date_range").is(":checked")&&(e=jQuery("#ct_date_range_from").val(),t=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_comments",security:ct_ajax_nonce,from:e,till:t};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(e){ct_show_info(),ct_send_comments()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_comments(),ct_show_info()}function ct_send_comments(){if(!0!==ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var e={action:"ajax_check_comments",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked};ct_accurate_check&&(e.accurate_check=!0),ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(e=jQuery.parseJSON(e),parseInt(e.error))if(ct_working=!1,confirm(e.error_message+". Do you want to proceed?"))ct_send_comments();else{var t="edit-comments.php?page=ct_check_spam";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(ct_new_check=!1,1==parseInt(e.end)||!0===ct_pause){1==parseInt(e.end)&&(document.cookie="ct_paused_comments_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide();t="edit-comments.php?page=ct_check_spam";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(0==parseInt(e.end)){ct_comments_checked+=e.checked,ct_comments_spam+=e.spam,ct_comments_bad+=e.bad,ct_unchecked=ct_comments_total-ct_comments_checked-ct_comments_bad;var c=(c=String(ctCommentsCheck.ct_status_string)).printf(ct_comments_total,ct_comments_checked,ct_comments_spam,ct_comments_bad);0<parseInt(ct_comments_spam)&&(c+=ctCommentsCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),+ct_comments_total<ct_comments_checked+ct_comments_bad&&(document.cookie="ct_comments_start_check=1; path=/",document.cookie="ct_comments_safe_check=1; path=/",location.href="edit-comments.php?page=ct_check_spam"),ct_send_comments()}},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_send_comments(),3e3)},timeout:25e3})}}function ct_show_info(){if(ct_working){if(1==ct_cooling_down_flag)return jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)"),void jQuery("#ct_cooling_notice").show();if(jQuery("#ct_cooling_notice").hide(),!ct_comments_total){var e={action:"ajax_info_comments",security:ct_ajax_nonce};ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){e=jQuery.parseJSON(e),jQuery("#ct_checking_status").html(e.message),ct_comments_total=e.total,ct_comments_spam=e.spam,ct_comments_checked=e.checked,ct_comments_bad=e.bad},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_show_info(),3e3)},timeout:15e3})}}}function ct_toggle_depended(e,t){t=t||null;var c=jQuery(e.data("depended"));e.data("state")||t?(e.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(e.data("state",!0),c.removeProp("disabled"))}function ct_delete_all(_){var e={action:"ajax_delete_all",security:ct_ajax_nonce};jQuery("."+_.target.id).addClass("disabled"),jQuery(".spinner").css("visibility","visible"),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){0<e?(jQuery("#cleantalk_comments_left").html(e),ct_delete_all(_)):(jQuery("."+_.target.id).removeClass("disabled"),jQuery(".spinner").css("visibility","hidden"),location.href="edit-comments.php?page=ct_check_spam_total")},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_delete_all(_),3e3)},timeout:25e3})}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))}),jQuery.datepicker.setDefaults(jQuery.datepicker.regional.en);var a=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(e){var t="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,e,c.settings);a.not(this).datepicker("option",t,_)}});function e(e){e=e||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""==ct_date_from||""==ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,e?(ct_show_info(),ct_send_comments()):ct_clear_comments())}jQuery("#ct_check_spam_button").click(function(){e(!(document.cookie="ct_paused_comments_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){e(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var e={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_comments_check="+JSON.stringify(e)+"; path=/"}),"1"===ctCommentsCheck.start&&(document.cookie="ct_comments_start_check=0; expires="+new Date(0).toUTCString()+"; path=/",jQuery("#ct_check_spam_button").click()),jQuery(".ct_delete_all").click(function(e){if(!confirm(ctCommentsCheck.ct_confirm_deletion_all))return!1;ct_delete_all(e)})});
2
- //# sourceMappingURL=cleantalk-comments-checkspam.min.js.map
1
+ var ct_working=!(String.prototype.printf=function(){var e=this;for(var t in arguments){var c=e.substring(0,e.indexOf("%s",0)),_=e.substring(e.indexOf("%s",0)+2,e.length);e=c+arguments[t]+_}return e}),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctCommentsCheck.ct_prev_accurate,ct_prev_from=ctCommentsCheck.ct_prev_from,ct_prev_till=ctCommentsCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctCommentsCheck.ct_ajax_nonce,ct_comments_total=0,ct_comments_checked=0,ct_comments_spam=0,ct_comments_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function animate_comment(e,t){ct_close_animate?.3==e?jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(1,t)}):jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(.3,t)}):ct_close_animate=!0}function ct_clear_comments(){var e=0,t=0;jQuery("#ct_allow_date_range").is(":checked")&&(e=jQuery("#ct_date_range_from").val(),t=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_comments",security:ct_ajax_nonce,from:e,till:t};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(e){ct_show_info(),ct_send_comments()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_comments(),ct_show_info()}function ct_send_comments(){if(!0!==ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var e={action:"ajax_check_comments",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked};ct_accurate_check&&(e.accurate_check=!0),ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(e=jQuery.parseJSON(e),parseInt(e.error))if(ct_working=!1,confirm(e.error_message+". Do you want to proceed?"))ct_send_comments();else{var t="edit-comments.php?page=ct_check_spam";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(ct_new_check=!1,1==parseInt(e.end)||!0===ct_pause){1==parseInt(e.end)&&(document.cookie="ct_paused_comments_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide();t="edit-comments.php?page=ct_check_spam";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(0==parseInt(e.end)){ct_comments_checked+=e.checked,ct_comments_spam+=e.spam,ct_comments_bad+=e.bad,ct_unchecked=ct_comments_total-ct_comments_checked-ct_comments_bad;var c=(c=String(ctCommentsCheck.ct_status_string)).printf(ct_comments_checked,ct_comments_spam,ct_comments_bad);0<parseInt(ct_comments_spam)&&(c+=ctCommentsCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),+ct_comments_total<ct_comments_checked+ct_comments_bad&&(document.cookie="ct_comments_start_check=1; path=/",document.cookie="ct_comments_safe_check=1; path=/",location.href="edit-comments.php?page=ct_check_spam"),ct_send_comments()}},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_send_comments(),3e3)},timeout:25e3})}}function ct_show_info(){if(ct_working){if(1==ct_cooling_down_flag)return jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)"),void jQuery("#ct_cooling_notice").show();if(jQuery("#ct_cooling_notice").hide(),!ct_comments_total){var e={action:"ajax_info_comments",security:ct_ajax_nonce};ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){e=jQuery.parseJSON(e),jQuery("#ct_checking_status").html(e.message),ct_comments_total=e.total,ct_comments_spam=e.spam,ct_comments_checked=e.checked,ct_comments_bad=e.bad},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_show_info(),3e3)},timeout:15e3})}}}function ct_toggle_depended(e,t){t=t||null;var c=jQuery(e.data("depended"));e.data("state")||t?(e.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(e.data("state",!0),c.removeProp("disabled"))}function ct_delete_all(_){var e={action:"ajax_delete_all",security:ct_ajax_nonce};jQuery("."+_.target.id).addClass("disabled"),jQuery(".spinner").css("visibility","visible"),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){0<e?(jQuery("#cleantalk_comments_left").html(e),ct_delete_all(_)):(jQuery("."+_.target.id).removeClass("disabled"),jQuery(".spinner").css("visibility","hidden"),location.href="edit-comments.php?page=ct_check_spam_total")},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check comments"),setTimeout(ct_delete_all(_),3e3)},timeout:25e3})}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))}),jQuery.datepicker.setDefaults(jQuery.datepicker.regional.en);var a=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(e){var t="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,e,c.settings);a.not(this).datepicker("option",t,_)}});function e(e){e=e||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""==ct_date_from||""==ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,e?(ct_show_info(),ct_send_comments()):ct_clear_comments())}jQuery("#ct_check_spam_button").click(function(){e(!(document.cookie="ct_paused_comments_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){e(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var e={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_comments_check="+JSON.stringify(e)+"; path=/"}),"1"===ctCommentsCheck.start&&(document.cookie="ct_comments_start_check=0; expires="+new Date(0).toUTCString()+"; path=/",jQuery("#ct_check_spam_button").click()),jQuery(".ct_delete_all").click(function(e){if(!confirm(ctCommentsCheck.ct_confirm_deletion_all))return!1;ct_delete_all(e)})});
 
js/cleantalk-comments-checkspam.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["cleantalk-comments-checkspam.js"],"names":["ct_working","String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctCommentsCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_comments_total","ct_comments_checked","ct_comments_spam","ct_comments_bad","ct_unchecked","ct_date_from","ct_date_till","animate_comment","to","id","jQuery","fadeTo","ct_clear_comments","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_info","ct_send_comments","ct_cooling_down_toggle","setTimeout","new_check","unchecked","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","document","cookie","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","total","ct_toggle_depended","obj","secondary","depended","prop","removeProp","ct_delete_all","e","target","addClass","css","removeClass","ready","state","on","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_start_check","continue_check","alert","click","ct_check","accurate","JSON","stringify","start","Date","toUTCString","ct_confirm_deletion_all"],"mappings":"AAYA,IAAIA,aAXJC,OAAOC,UAAUC,OAAS,WACtB,IAAIC,EAAYC,KAChB,IAAK,IAAIC,KAAOC,UAAY,CAC9B,IAAIC,EAAmBJ,EAAUK,UAAU,EAAGL,EAAUM,QAAQ,KAAM,IAClEC,EAAmBP,EAAUK,UAAUL,EAAUM,QAAQ,KAAM,GAAG,EAAGN,EAAUQ,QACnFR,EAAYI,EAAmBD,UAAUD,GAAOK,EAE9C,OAAOP,IAKVS,cAAe,EACfC,sBAAuB,EACvBC,kBAAmB,EACnBC,mBAAoB,EACpBC,UAAW,EACXC,iBAAmBC,gBAAgBD,iBACnCE,aAAeD,gBAAgBC,aAC/BC,aAAeF,gBAAgBE,aAE5BC,kBAAoB,IACvBC,oBAAsB,EACtBC,gBAAkB,GAEfC,cAAgBN,gBAAgBM,cACnCC,kBAAoB,EACpBC,oBAAsB,EACtBC,iBAAmB,EACnBC,gBAAkB,EAClBC,aAAe,QACfC,aAAe,EACfC,aAAe,EAEhB,SAASC,gBAAgBC,EAAGC,GACxBpB,iBACK,IAAJmB,EACFE,OAAO,YAAYD,GAAIE,OAAO,IAAIH,EAAG,WACpCD,gBAAgB,EAAEE,KAGnBC,OAAO,YAAYD,GAAIE,OAAO,IAAIH,EAAG,WACpCD,gBAAgB,GAAIE,KAItBpB,kBAAiB,EAInB,SAASuB,oBAER,IAAIC,EAAO,EAAGC,EAAO,EAClBJ,OAAO,wBAAwBK,GAAG,cACpCF,EAAOH,OAAO,uBAAuBM,MACrCF,EAAOJ,OAAO,uBAAuBM,OAEtC,IAAIC,EAAO,CACVC,OAAa,sBACbC,SAAapB,cACbc,KAAaA,EACbC,KAAaA,GAGdJ,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBC,eACAC,sBAOH,SAASC,yBACRxC,sBAAuB,EACvBuC,mBACAD,eAGD,SAASC,mBAER,IAA4B,IAAzBvC,qBAAH,CAGA,GAA0BU,iBAAvBD,oBAIF,OAHAgC,WAAWD,uBAAwBhC,wBAEnCR,uBADAS,oBAAsB,IAItBA,sBAGD,IAAIoB,EAAO,CACVC,OAAU,sBACVC,SAAYpB,cACZ+B,UAAa3C,aACb4C,UAAa3B,cAGXd,oBACF2B,EAAqB,gBAAI,GAEvBZ,cAAgBC,eAClBW,EAAW,KAAIZ,aACfY,EAAW,KAAIX,cAGhBI,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GAIjB,GAFAA,EAAMf,OAAOsB,UAAUP,GAEpBQ,SAASR,EAAIS,OAEf,GADA5D,YAAW,EACP6D,QAAQV,EAAIW,cAAc,6BAM7BT,uBAN0D,CAC1D,IAAIU,EAAW,uCACI,GAAhBhC,cAAqC,GAAhBC,eACvB+B,GAAU,SAAShC,aAAa,SAASC,cAC1CgC,SAASC,KAAOF,OAKjB,GADAlD,cAAe,EACS,GAArB8C,SAASR,EAAIe,OAA0B,IAAbjD,SAAkB,CACtB,GAArB0C,SAASR,EAAIe,OACfC,SAASC,OAAS,sCACnBpE,YAAW,EACXoC,OAAO,uBAAuBiC,OAC1BN,EAAW,uCACI,GAAhBhC,cAAqC,GAAhBC,eACvB+B,GAAU,SAAShC,aAAa,SAASC,cAC1CgC,SAASC,KAAOF,OACX,GAAwB,GAArBJ,SAASR,EAAIe,KAAU,CAC/BvC,qBAAuBwB,EAAImB,QAC3B1C,kBAAoBuB,EAAIoB,KACxB1C,iBAAmBsB,EAAIqB,IACvB1C,aAAeJ,kBAAoBC,oBAAsBE,gBACzD,IACI4C,GADAA,EAAgBxE,OAAOkB,gBAAgBuD,mBACTvE,OAAOuB,kBAAmBC,oBAAqBC,iBAAkBC,iBACnE,EAA7B8B,SAAS/B,oBACX6C,GAAiBtD,gBAAgBwD,0BAClCvC,OAAO,uBAAuBwC,KAAKH,GACnCrC,OAAO,qBAAqBiC,QAExB3C,kBAAoBC,oBAAsBE,kBAC7CsC,SAASC,OAAS,oCAClBD,SAASC,OAAS,mCAClBJ,SAASC,KAAO,wCAEjBZ,qBAIGO,MAAO,SAASiB,EAAOC,EAAYC,GACxC3C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBwC,KAAKE,GACrC1C,OAAO,sBAAsBwC,KAAK,kBAClCrB,WAAWF,mBAAoB,MAE1B4B,QAAS,QAGjB,SAAS7B,eAER,GAAGpD,WAAW,CAEb,GAA2B,GAAxBc,qBAGF,OAFAsB,OAAO,sBAAsBwC,KAAK,uDAClCxC,OAAO,sBAAsB4C,OAM9B,GAHC5C,OAAO,sBAAsBiC,QAG1B3C,kBAAkB,CAErB,IAAIiB,EAAO,CACVC,OAAU,qBACVC,SAAYpB,eAGVM,cAAgBC,eAClBW,EAAW,KAAIZ,aACfY,EAAW,KAAIX,cAGhBI,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAASC,GACjBA,EAAMf,OAAOsB,UAAUP,GACvBf,OAAO,uBAAuBwC,KAAKzB,EAAI+B,SACvCxD,kBAAsByB,EAAIgC,MAC1BvD,iBAAsBuB,EAAIoB,KAC1B5C,oBAAsBwB,EAAImB,QAC1BzC,gBAAsBsB,EAAIqB,KAE3BZ,MAAO,SAASiB,EAAOC,EAAYC,GAClC3C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBwC,KAAKE,GACrC1C,OAAO,sBAAsBwC,KAAK,kBAClCrB,WAAWH,eAAgB,MAE5B6B,QAAS,SAOb,SAASG,mBAAmBC,EAAKC,GAE7BA,EAAYA,GAAa,KAE5B,IAAIC,EAAWnD,OAAOiD,EAAI1C,KAAK,aACtB0C,EAAI1C,KAAK,UAEJ2C,GAIbD,EAAI1C,KAAK,SAAS,GAClB4C,EAASC,KAAK,YAAY,GAC1BD,EAASE,WAAW,WACjBF,EAAS5C,KAAK,aAChByC,mBAAmBG,GAAU,KAP9BF,EAAI1C,KAAK,SAAS,GAClB4C,EAASE,WAAW,aAUtB,SAASC,cAAeC,GAEvB,IAAIhD,EAAO,CACVC,OAAU,kBACVC,SAAYpB,eAGbW,OAAO,IAAMuD,EAAEC,OAAOzD,IAAI0D,SAAS,YACnCzD,OAAO,YAAY0D,IAAI,aAAc,WACrC1D,OAAOU,KAAK,CACXC,KAAM,OACNC,IAAKC,QACLN,KAAMA,EACNO,QAAS,SAAUC,GACR,EAANA,GACHf,OAAO,4BAA4BwC,KAAKzB,GACxCuC,cAAeC,KAEfvD,OAAO,IAAMuD,EAAEC,OAAOzD,IAAI4D,YAAY,YACtC3D,OAAO,YAAY0D,IAAI,aAAc,UACrC9B,SAASC,KAAK,+CAGhBL,MAAO,SAASiB,EAAOC,EAAYC,GAClC3C,OAAO,qBAAqB4C,OAC5B5C,OAAO,yBAAyBwC,KAAKE,GACrC1C,OAAO,sBAAsBwC,KAAK,kBAClCrB,WAAWmC,cAAeC,GAAK,MAEhCV,QAAS,OAKX7C,OAAO+B,UAAU6B,MAAM,WAItB5D,OAAO,wBAAwBO,KAAK,CAAC4C,SAAY,WAAYU,OAAS,IAGnE/E,kBACFkB,OAAO,sBAAsBoD,KAAK,WAAW,GAE3CpE,eACFgB,OAAO,wBAAwBoD,KAAK,WAAW,GAAM7C,KAAK,SAAS,GACnEP,OAAO,uBAAuBqD,WAAW,YAAY/C,IAAItB,cACzDgB,OAAO,uBAAuBqD,WAAW,YAAY/C,IAAIrB,eAI1De,OAAO,4CAA4C8D,GAAG,SAAU,WAC/Dd,mBAAmBhD,OAAO/B,SAGxB+B,OAAO+D,WAAWC,YAAYhE,OAAO+D,WAAWE,SAAa,IAChE,IAAIC,EAAQlE,OAAO,4CAA4C+D,WAC9D,CACCI,WAAY,SACZC,QAAQ,MACRC,aAAY,EACZC,YAAW,EACXC,SAAU,YACVC,SAAU,SAASC,GACnB,IAAIC,EAAoB,sBAAXzG,KAAK8B,GAA6B,UAAY,UAC1D4E,EAAW3E,OAAQ/B,MAAOsC,KAAM,cAChCqE,EAAO5E,OAAO+D,WAAWc,UACxBF,EAASG,SAASX,YAAcnE,OAAO+D,WAAWgB,UAAUZ,WAC5DM,EAAcE,EAASG,UACxBZ,EAAMc,IAAI/G,MAAM8F,WAAW,SAAUW,EAAQE,MAKhD,SAASK,EAAeC,GAEjBA,EAAiBA,GAAkB,KAEtClF,OAAO,wBAAwBK,GAAG,cAEpCV,aAAeK,OAAO,uBAAuBM,MAC7CV,aAAeI,OAAO,uBAAuBM,MAExB,IAAhBX,cAAsC,IAAhBC,cAC1BuF,MAAM,kCAKLnF,OAAO,sBAAsBK,GAAG,cAClCzB,mBAAoB,GAGrBoB,OAAO,eAAeiC,OACtBjC,OAAO,uBAAuB4C,OAC9B5C,OAAO,iBAAiB4C,OACxB5C,OAAO,aAAa4C,OAEpBhF,YAAW,EAERsH,GACFlE,eACAC,oBAEAf,qBAKFF,OAAO,yBAAyBoF,MAAM,WAErCH,IADAlD,SAASC,OAAS,yCAGnBhC,OAAO,4BAA4BoF,MAAM,WACxCH,GAAe,KAIhBjF,OAAO,aAAa8D,GAAG,QAAS,WAC/BjF,UAAW,EACX,IAAIwG,EAAW,CACdC,SAAY1G,kBACZuB,KAAYR,aACZS,KAAYR,cAEbmC,SAASC,OAAS,4BAA8BuD,KAAKC,UAAUH,GAAY,aAI/C,MAA1BtG,gBAAgB0G,QAClB1D,SAASC,OAAS,sCAAwC,IAAI0D,KAAK,GAAGC,cAAgB,WACtF3F,OAAO,yBAAyBoF,SAIjCpF,OAAO,kBAAkBoF,MAAM,SAAU7B,GAExC,IAAK9B,QAAQ1C,gBAAgB6G,yBAC5B,OAAO,EAERtC,cAAeC","file":"cleantalk-comments-checkspam.min.js","sourcesContent":["// Printf for JS\r\nString.prototype.printf = function(){\r\n var formatted = this;\r\n for( var arg in arguments ) {\r\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\r\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\r\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\r\n }\r\n return formatted;\r\n};\r\n\r\n// Flags\r\nvar ct_working = false,\r\n\tct_new_check = true,\r\n\tct_cooling_down_flag = false,\r\n\tct_close_animate = true,\r\n\tct_accurate_check = false,\r\n\tct_pause = false,\r\n\tct_prev_accurate = ctCommentsCheck.ct_prev_accurate,\r\n\tct_prev_from = ctCommentsCheck.ct_prev_from,\t\r\n\tct_prev_till = ctCommentsCheck.ct_prev_till;\r\n// Settings\r\nvar ct_cool_down_time = 90000,\r\n\tct_requests_counter = 0,\r\n\tct_max_requests = 60;\r\n// Variables\r\nvar ct_ajax_nonce = ctCommentsCheck.ct_ajax_nonce,\r\n\tct_comments_total = 0,\r\n\tct_comments_checked = 0,\r\n\tct_comments_spam = 0,\r\n\tct_comments_bad = 0,\r\n\tct_unchecked = 'unset',\r\n\tct_date_from = 0,\r\n\tct_date_till = 0;\r\n\r\nfunction animate_comment(to,id){\r\n\tif(ct_close_animate){\r\n\t\tif(to==0.3){\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(1,id)\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(0.3,id)\r\n\t\t\t});\r\n\t\t}\r\n\t}else{\r\n\t\tct_close_animate=true;\r\n\t}\r\n}\r\n\r\nfunction ct_clear_comments(){\r\n\r\n\tvar from = 0, till = 0;\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\r\n\t\tfrom = jQuery('#ct_date_range_from').val();\r\n\t\ttill = jQuery('#ct_date_range_till').val();\r\n\t}\r\n\tvar data = {\r\n\t\t'action' : 'ajax_clear_comments',\r\n\t\t'security' : ct_ajax_nonce,\r\n\t\t'from' : from,\r\n\t\t'till' : till\r\n\t};\r\n\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tct_show_info();\r\n\t\t\tct_send_comments();\r\n\t\t}\r\n\t});\r\n}\r\n\r\n//Continues the check after cooldown time\r\n//Called by ct_send_users();\r\nfunction ct_cooling_down_toggle(){\r\n\tct_cooling_down_flag = false;\r\n\tct_send_comments();\r\n\tct_show_info();\r\n}\r\n\r\nfunction ct_send_comments(){\r\n\t\r\n\tif(ct_cooling_down_flag === true)\r\n\t\treturn;\r\n\t\r\n\tif(ct_requests_counter >= ct_max_requests){\r\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\r\n\t\tct_requests_counter = 0;\r\n\t\tct_cooling_down_flag = true;\r\n\t\treturn;\r\n\t}else{\r\n\t\tct_requests_counter++;\r\n\t}\r\n\t\r\n\tvar data = {\r\n\t\t'action': 'ajax_check_comments',\r\n\t\t'security': ct_ajax_nonce,\r\n\t\t'new_check': ct_new_check,\r\n\t\t'unchecked': ct_unchecked\r\n\t};\r\n\t\r\n\tif(ct_accurate_check)\r\n\t\tdata['accurate_check'] = true;\r\n\t\r\n\tif(ct_date_from && ct_date_till){\r\n\t\tdata['from'] = ct_date_from;\r\n\t\tdata['till'] = ct_date_till;\r\n\t}\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\t\r\n\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\r\n\t\t\tif(parseInt(msg.error)){\r\n\t\t\t\tct_working=false;\r\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\r\n\t\t\t\t\tvar new_href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else\r\n\t\t\t\t\tct_send_comments();\r\n\t\t\t}else{\r\n\t\t\t\tct_new_check = false;\r\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause === true){\r\n\t\t\t\t\tif(parseInt(msg.end) == 1)\r\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_comments_check=0; path=/';\r\n\t\t\t\t\tct_working=false;\r\n\t\t\t\t\tjQuery('#ct_working_message').hide();\r\n\t\t\t\t\tvar new_href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else if(parseInt(msg.end) == 0){\r\n\t\t\t\t\tct_comments_checked += msg.checked;\r\n\t\t\t\t\tct_comments_spam += msg.spam;\r\n\t\t\t\t\tct_comments_bad += msg.bad;\r\n\t\t\t\t\tct_unchecked = ct_comments_total - ct_comments_checked - ct_comments_bad;\r\n\t\t\t\t\tvar status_string = String(ctCommentsCheck.ct_status_string);\r\n\t\t\t\t\tvar status_string = status_string.printf(ct_comments_total, ct_comments_checked, ct_comments_spam, ct_comments_bad);\r\n\t\t\t\t\tif(parseInt(ct_comments_spam) > 0)\r\n\t\t\t\t\t\tstatus_string += ctCommentsCheck.ct_status_string_warning;\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\r\n\t\t\t\t\tjQuery('#ct_error_message').hide();\r\n\t\t\t\t\t// If DB woks not properly\r\n\t\t\t\t\tif(+ct_comments_total < ct_comments_checked + ct_comments_bad){\r\n\t\t\t\t\t\tdocument.cookie = 'ct_comments_start_check=1; path=/';\r\n\t\t\t\t\t\tdocument.cookie = 'ct_comments_safe_check=1; path=/';\r\n\t\t\t\t\t\tlocation.href = 'edit-comments.php?page=ct_check_spam';\r\n\t\t\t\t\t}\r\n\t\t\t\t\tct_send_comments();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\tsetTimeout(ct_send_comments(), 3000); \r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_show_info(){\r\n\t\r\n\tif(ct_working){\r\n\t\t\r\n\t\tif(ct_cooling_down_flag == true){\r\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\r\n\t\t\tjQuery('#ct_cooling_notice').show();\r\n\t\t\treturn;\t\t\t\r\n\t\t}else{\r\n\t\t\tjQuery('#ct_cooling_notice').hide();\r\n\t\t}\r\n\t\t\r\n\t\tif(!ct_comments_total){\r\n\t\t\t\r\n\t\t\tvar data = {\r\n\t\t\t\t'action': 'ajax_info_comments',\r\n\t\t\t\t'security': ct_ajax_nonce\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif(ct_date_from && ct_date_till){\r\n\t\t\t\tdata['from'] = ct_date_from;\r\n\t\t\t\tdata['till'] = ct_date_till;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tjQuery.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: ajaxurl,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(msg){\r\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\r\n\t\t\t\t\tct_comments_total = msg.total;\r\n\t\t\t\t\tct_comments_spam = msg.spam;\r\n\t\t\t\t\tct_comments_checked = msg.checked;\r\n\t\t\t\t\tct_comments_bad = msg.bad;\r\n\t\t\t\t},\r\n\t\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\t\t\tsetTimeout(ct_show_info(), 3000); \r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 15000\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// Function to toggle dependences\r\nfunction ct_toggle_depended(obj, secondary){\r\n\r\n secondary = secondary || null;\r\n\r\n\tvar depended = jQuery(obj.data('depended')),\r\n\t\tstate = obj.data('state');\r\n\t\t\r\n\tif(!state && !secondary){\r\n\t\tobj.data('state', true);\r\n\t\tdepended.removeProp('disabled');\r\n\t}else{\r\n\t\tobj.data('state', false);\r\n\t\tdepended.prop('disabled', true);\r\n\t\tdepended.removeProp('checked');\r\n\t\tif(depended.data('depended'))\r\n\t\t\tct_toggle_depended(depended, true);\r\n\t}\r\n}\r\n\r\nfunction ct_delete_all( e ) {\r\n\r\n\tvar data = {\r\n\t\t'action': 'ajax_delete_all',\r\n\t\t'security': ct_ajax_nonce\r\n\t};\r\n\r\n\tjQuery('.' + e.target.id).addClass('disabled');\r\n\tjQuery('.spinner').css('visibility', 'visible');\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function( msg ){\r\n\t\t\tif( msg > 0 ){\r\n\t\t\t\tjQuery('#cleantalk_comments_left').html(msg);\r\n\t\t\t\tct_delete_all( e );\r\n\t\t\t}else{\r\n\t\t\t\tjQuery('.' + e.target.id).removeClass('disabled');\r\n\t\t\t\tjQuery('.spinner').css('visibility', 'hidden');\r\n\t\t\t\tlocation.href='edit-comments.php?page=ct_check_spam_total';\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check comments');\r\n\t\t\tsetTimeout(ct_delete_all( e ), 3000);\r\n\t\t},\r\n\t\ttimeout: 25000\r\n\t});\r\n\r\n}\r\n\r\njQuery(document).ready(function(){\r\n\r\n\t// Setting dependences\r\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\r\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\r\n\t\r\n\t// Prev check parameters\r\n\tif(ct_prev_accurate){\r\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\r\n\t}\r\n\tif(ct_prev_from){\r\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\r\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\r\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\r\n\t}\r\n\t\r\n\t// Toggle dependences\r\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\r\n\t\tct_toggle_depended(jQuery(this));\r\n\t});\r\n\r\n jQuery.datepicker.setDefaults(jQuery.datepicker.regional['en']);\r\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\r\n\t\t{\r\n\t\t\tdateFormat: 'M d yy',\r\n\t\t\tmaxDate:\"+0D\",\r\n\t\t\tchangeMonth:true,\r\n\t\t\tchangeYear:true,\r\n\t\t\tshowAnim: 'slideDown',\r\n\t\t\tonSelect: function(selectedDate){\r\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\r\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\r\n\t\t\t\tdate = jQuery.datepicker.parseDate(\r\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\r\n\t\t\t\t\tselectedDate, instance.settings);\r\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\t\r\n\tfunction ct_start_check(continue_check){\r\n\r\n continue_check = continue_check || null;\r\n\r\n\t\tif(jQuery('#ct_allow_date_range').is(':checked')){\r\n\t\t\t\r\n\t\t\tct_date_from = jQuery('#ct_date_range_from').val(),\r\n\t\t\tct_date_till = jQuery('#ct_date_range_till').val();\r\n\t\t\t\t\t\t\r\n\t\t\tif(!(ct_date_from != '' && ct_date_till != '')){\r\n\t\t\t\talert('Please, specify a date range.');\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif(jQuery('#ct_accurate_check').is(':checked')){\r\n\t\t\tct_accurate_check = true;\r\n\t\t}\r\n\t\t\r\n\t\tjQuery('.ct_to_hide').hide();\r\n\t\tjQuery('#ct_working_message').show();\r\n\t\tjQuery('#ct_preloader').show();\r\n\t\tjQuery('#ct_pause').show();\r\n\r\n\t\tct_working=true;\r\n\t\t\r\n\t\tif(continue_check){\r\n\t\t\tct_show_info();\r\n\t\t\tct_send_comments();\r\n\t\t}else\r\n\t\t\tct_clear_comments();\r\n\t\t\r\n\t}\r\n\t\r\n\t// Check comments\r\n\tjQuery(\"#ct_check_spam_button\").click(function(){\r\n\t\tdocument.cookie = 'ct_paused_comments_check=0; path=/';\r\n\t\tct_start_check(false);\r\n\t});\r\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\r\n\t\tct_start_check(true);\r\n\t});\r\n\r\n\t// Pause the check\r\n\tjQuery('#ct_pause').on('click', function(){\r\n\t\tct_pause = true;\r\n\t\tvar ct_check = {\r\n\t\t\t'accurate': ct_accurate_check,\r\n\t\t\t'from' : ct_date_from,\r\n\t\t\t'till' : ct_date_till\r\n\t\t};\r\n\t\tdocument.cookie = 'ct_paused_comments_check=' + JSON.stringify(ct_check) + '; path=/';\r\n\t});\r\n\r\n\r\n\tif(ctCommentsCheck.start === '1'){\r\n\t\tdocument.cookie = 'ct_comments_start_check=0; expires=' + new Date(0).toUTCString() + '; path=/';\r\n\t\tjQuery('#ct_check_spam_button').click();\t\r\n\t}\r\n\r\n\t// Delete all spam comments\r\n\tjQuery(\".ct_delete_all\").click(function( e ){\r\n\r\n\t\tif (!confirm(ctCommentsCheck.ct_confirm_deletion_all))\r\n\t\t\treturn false;\r\n\r\n\t\tct_delete_all( e );\r\n\r\n\t});\r\n\r\n});"]}
1
+ {"version":3,"sources":["cleantalk-comments-checkspam.js"],"names":["ct_working","String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctCommentsCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_comments_total","ct_comments_checked","ct_comments_spam","ct_comments_bad","ct_unchecked","ct_date_from","ct_date_till","animate_comment","to","id","jQuery","fadeTo","ct_clear_comments","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_info","ct_send_comments","ct_cooling_down_toggle","setTimeout","new_check","unchecked","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","document","cookie","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","total","ct_toggle_depended","obj","secondary","depended","prop","removeProp","ct_delete_all","e","target","addClass","css","removeClass","ready","state","on","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_start_check","continue_check","alert","click","ct_check","accurate","JSON","stringify","start","Date","toUTCString","ct_confirm_deletion_all"],"mappings":"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"}
js/cleantalk-users-checkspam.min.js CHANGED
@@ -1,2 +1,2 @@
1
- String.prototype.printf=function(){var e=this;for(var t in arguments){var c=e.substring(0,e.indexOf("%s",0)),_=e.substring(e.indexOf("%s",0)+2,e.length);e=c+arguments[t]+_}return e};var ct_working=!(document.cookie="ct_check_users__amount=100; path=/"),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctUsersCheck.ct_prev_accurate,ct_prev_from=ctUsersCheck.ct_prev_from,ct_prev_till=ctUsersCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctUsersCheck.ct_ajax_nonce,ct_users_total=0,ct_users_checked=0,ct_users_spam=0,ct_users_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function apbct_cookie__get(a,r){var s={};return"string"==typeof(a=a||null)&&(a=a.split()),"none"===(r=r||["apbct_","ct_"])&&(r=null),"string"==typeof r&&(r=r.split()),document.cookie.split(";").forEach(function(e,t,c){var _=e.trim().split("=");a&&a.forEach(function(e,t,c){_[0]===e&&(s[_[0]]=_[1])}),r&&r.forEach(function(e,t,c){0===_[0].indexOf(e)&&(s[_[0]]=_[1])})}),s}function apbct_get_cookie(e){var t=apbct_cookie__get(e,e);return"object"==typeof t&&void 0!==t[e]?t[e]:null}function animate_comment(e,t){ct_close_animate?.3===e?jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(1,t)}):jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(.3,t)}):ct_close_animate=!0}function ct_clear_users(){var e=0,t=0;jQuery("#ct_allow_date_range").is(":checked")&&(e=jQuery("#ct_date_range_from").val(),t=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_users",security:ct_ajax_nonce,from:e,till:t};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(e){ct_show_users_info(),ct_send_users()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_users(),ct_show_users_info()}function ct_send_users(){if(!0!==ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var _=apbct_get_cookie("ct_check_users__amount"),e={action:"ajax_check_users",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked,amount:_};ct_accurate_check&&(e.accurate_check=!0),ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(e=jQuery.parseJSON(e),parseInt(e.error))if(ct_working=!1,confirm(e.error_message+". Do you want to proceed?"))ct_send_users();else{var t="users.php?page=ct_check_users";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(ct_new_check=!1,1==parseInt(e.end)||1==ct_pause){1==parseInt(e.end)&&(document.cookie="ct_paused_users_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide();t="users.php?page=ct_check_users&ct_worked=1";0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t}else if(0==parseInt(e.end)){ct_users_checked+=e.checked,ct_users_spam+=e.spam,ct_users_bad+=e.bad,ct_unchecked=ct_users_total-ct_users_checked-ct_users_bad;var c=(c=String(ctUsersCheck.ct_status_string)).printf(ct_users_checked,ct_users_spam,ct_users_bad);0<parseInt(ct_users_spam)&&(c+=ctUsersCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),ct_send_users()}},error:function(e,t,c){20<_&&(_-=20,document.cookie="ct_check_users__amount="+_+"; path=/"),jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check users"),setTimeout(ct_send_users(),3e3)},timeout:25e3})}}function ct_show_users_info(){if(ct_working){if(1==ct_cooling_down_flag)return jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)"),void jQuery("#ct_cooling_notice").show();if(jQuery("#ct_cooling_notice").hide(),!ct_users_total){var e={action:"ajax_info_users",security:ct_ajax_nonce};ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){e=jQuery.parseJSON(e),jQuery("#ct_checking_status").html(e.message),ct_users_spam=e.spam,ct_users_checked=e.checked,ct_users_bad=e.bad},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Show users"),setTimeout(ct_show_users_info(),3e3)},timeout:15e3})}}}function ct_toggle_depended(e,t){t=t||null;var c=jQuery(e.data("depended"));e.data("state")||t?(e.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(e.data("state",!0),c.removeProp("disabled"))}function ct_start_check(e){e=e||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""===ct_date_from||""===ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,e?(ct_show_users_info(),ct_send_users()):ct_clear_users())}function ct_delete_all_users(_){var t={action:"ajax_delete_all_users",security:ct_ajax_nonce};jQuery("."+_.target.id).addClass("disabled"),jQuery(".spinner").css("visibility","visible"),jQuery.ajax({type:"POST",url:ajaxurl,data:t,success:function(e){0<e?(jQuery("#cleantalk_users_left").html(e),ct_delete_all_users(_,t)):(jQuery("."+_.target.id).removeClass("disabled"),jQuery(".spinner").css("visibility","hidden"),location.href="users.php?page=ct_check_users_total")},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("All users deleteion"),setTimeout(ct_delete_all_users(_),3e3)},timeout:25e3})}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))}),jQuery.datepicker.setDefaults(jQuery.datepicker.regional.en);var a=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(e){var t="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,e,c.settings);a.not(this).datepicker("option",t,_)}});function t(t){var e={action:"ajax_insert_users",security:ct_ajax_nonce};(t=t||null)&&(e.delete=!0),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){t?alert("Deleted "+e+" users"):alert("Inserted "+e+" users")}})}jQuery("#ct_check_spam_button").click(function(){ct_start_check(!(document.cookie="ct_paused_users_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){ct_start_check(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var e={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_users_check="+JSON.stringify(e)+"; path=/"}),jQuery(".cleantalk_delete_from_list_button").click(function(){ct_id=jQuery(this).attr("data-id");var e={action:"ajax_ct_approve_user",security:ct_ajax_nonce,id:ct_id};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){jQuery("#comment-"+ct_id).fadeOut("slow",function(){jQuery("#comment-"+ct_id).remove()})}});e={action:"ct_feedback_user",security:ct_ajax_nonce,user_id:ct_id,status:"approve"};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){},error:function(e,t,c){},timeout:5e3})}),jQuery(".ct_get_csv_file").click(function(_){var e={action:"ajax_ct_get_csv_file",security:ct_ajax_nonce,filename:ctUsersCheck.ct_csv_filename};jQuery("."+_.target.id).addClass("disabled"),jQuery(".spinner").css("visibility","visible"),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){if(0===parseInt(e))alert(ctUsersCheck.ct_bad_csv);else{var t=URL.createObjectURL(new Blob([e])),c=document.createElement("a");c.href=t,c.download=ctUsersCheck.ct_csv_filename+".csv",document.body.appendChild(c),c.click()}jQuery("."+_.target.id).removeClass("disabled"),jQuery(".spinner").css("visibility","hidden")}})}),jQuery(".ct_insert_users").click(function(e){t()}),jQuery(".ct_insert_users__delete").click(function(e){t(!0)}),jQuery(".ct_delete_all_users").click(function(e){if(!confirm(ctUsersCheck.ct_confirm_deletion_all))return!1;ct_delete_all_users(e)})});
2
- //# sourceMappingURL=cleantalk-users-checkspam.min.js.map
1
+ String.prototype.printf=function(){var e=this;for(var t in arguments)var c=e.substring(0,e.indexOf("%s",0)),_=e.substring(e.indexOf("%s",0)+2,e.length),e=c+arguments[t]+_;return e};var ct_working=!(document.cookie="ct_check_users__amount=100; path=/"),ct_new_check=!0,ct_cooling_down_flag=!1,ct_close_animate=!0,ct_accurate_check=!1,ct_pause=!1,ct_prev_accurate=ctUsersCheck.ct_prev_accurate,ct_prev_from=ctUsersCheck.ct_prev_from,ct_prev_till=ctUsersCheck.ct_prev_till,ct_cool_down_time=9e4,ct_requests_counter=0,ct_max_requests=60,ct_ajax_nonce=ctUsersCheck.ct_ajax_nonce,ct_users_total=0,ct_users_checked=0,ct_users_spam=0,ct_users_bad=0,ct_unchecked="unset",ct_date_from=0,ct_date_till=0;function apbct_cookie__get(a,r){var s={};return"string"==typeof(a=a||null)&&(a=a.split()),"none"===(r=r||["apbct_","ct_"])&&(r=null),"string"==typeof r&&(r=r.split()),document.cookie.split(";").forEach(function(e,t,c){var _=e.trim().split("=");a&&a.forEach(function(e,t,c){_[0]===e&&(s[_[0]]=_[1])}),r&&r.forEach(function(e,t,c){0===_[0].indexOf(e)&&(s[_[0]]=_[1])})}),s}function apbct_get_cookie(e){var t=apbct_cookie__get(e,e);return"object"==typeof t&&void 0!==t[e]?t[e]:null}function animate_comment(e,t){ct_close_animate?.3===e?jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(1,t)}):jQuery("#comment-"+t).fadeTo(200,e,function(){animate_comment(.3,t)}):ct_close_animate=!0}function ct_clear_users(){var e=0,t=0;jQuery("#ct_allow_date_range").is(":checked")&&(e=jQuery("#ct_date_range_from").val(),t=jQuery("#ct_date_range_till").val());var c={action:"ajax_clear_users",security:ct_ajax_nonce,from:e,till:t};jQuery.ajax({type:"POST",url:ajaxurl,data:c,success:function(e){ct_show_users_info(),ct_send_users()}})}function ct_cooling_down_toggle(){ct_cooling_down_flag=!1,ct_send_users(),ct_show_users_info()}function ct_send_users(){if(!0!==ct_cooling_down_flag){if(ct_max_requests<=ct_requests_counter)return setTimeout(ct_cooling_down_toggle,ct_cool_down_time),void(ct_cooling_down_flag=!(ct_requests_counter=0));ct_requests_counter++;var _=apbct_get_cookie("ct_check_users__amount"),e={action:"ajax_check_users",security:ct_ajax_nonce,new_check:ct_new_check,unchecked:ct_unchecked,amount:_};ct_accurate_check&&(e.accurate_check=!0),ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){var t,c;e=jQuery.parseJSON(e),parseInt(e.error)?(ct_working=!1,confirm(e.error_message+". Do you want to proceed?")?ct_send_users():(t="users.php?page=ct_check_users",0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t)):(ct_new_check=!1,1==parseInt(e.end)||1==ct_pause?(1==parseInt(e.end)&&(document.cookie="ct_paused_users_check=0; path=/"),ct_working=!1,jQuery("#ct_working_message").hide(),t="users.php?page=ct_check_users&ct_worked=1",0!=ct_date_from&&0!=ct_date_till&&(t+="&from="+ct_date_from+"&till="+ct_date_till),location.href=t):0==parseInt(e.end)&&(ct_users_checked=parseInt(ct_users_checked)+parseInt(e.checked),ct_users_spam=parseInt(ct_users_spam)+parseInt(e.spam),ct_users_bad=parseInt(ct_users_bad)+parseInt(e.bad),ct_unchecked=ct_users_total-ct_users_checked-ct_users_bad,c=(c=String(ctUsersCheck.ct_status_string)).printf(ct_users_checked,ct_users_spam,ct_users_bad),0<parseInt(ct_users_spam)&&(c+=ctUsersCheck.ct_status_string_warning),jQuery("#ct_checking_status").html(c),jQuery("#ct_error_message").hide(),ct_send_users()))},error:function(e,t,c){20<_&&(_-=20,document.cookie="ct_check_users__amount="+_+"; path=/"),jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Check users"),setTimeout(ct_send_users(),3e3)},timeout:25e3})}}function ct_show_users_info(){if(ct_working){if(!0===ct_cooling_down_flag)return void jQuery("#ct_cooling_notice").html("Waiting for API to cool down. (About a minute)").show();var e;jQuery("#ct_cooling_notice").hide(),ct_users_total||(e={action:"ajax_info_users",security:ct_ajax_nonce},ct_date_from&&ct_date_till&&(e.from=ct_date_from,e.till=ct_date_till),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){e=jQuery.parseJSON(e),jQuery("#ct_checking_status").html(e.message),ct_users_spam=e.spam,ct_users_checked=e.checked,ct_users_bad=e.bad},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("Show users"),setTimeout(ct_show_users_info(),3e3)},timeout:15e3}))}}function ct_toggle_depended(e,t){t=t||null;var c=jQuery(e.data("depended"));e.data("state")||t?(e.data("state",!1),c.prop("disabled",!0),c.removeProp("checked"),c.data("depended")&&ct_toggle_depended(c,!0)):(e.data("state",!0),c.removeProp("disabled"))}function ct_start_check(e){e=e||null,jQuery("#ct_allow_date_range").is(":checked")&&(ct_date_from=jQuery("#ct_date_range_from").val(),ct_date_till=jQuery("#ct_date_range_till").val(),""===ct_date_from||""===ct_date_till)?alert("Please, specify a date range."):(jQuery("#ct_accurate_check").is(":checked")&&(ct_accurate_check=!0),jQuery(".ct_to_hide").hide(),jQuery("#ct_working_message").show(),jQuery("#ct_preloader").show(),jQuery("#ct_pause").show(),ct_working=!0,e?(ct_show_users_info(),ct_send_users()):ct_clear_users())}function ct_delete_all_users(_){var t={action:"ajax_delete_all_users",security:ct_ajax_nonce};jQuery("."+_.target.id).addClass("disabled"),jQuery(".spinner").css("visibility","visible"),jQuery.ajax({type:"POST",url:ajaxurl,data:t,success:function(e){0<e?(jQuery("#cleantalk_users_left").html(e),ct_delete_all_users(_,t)):(jQuery("."+_.target.id).removeClass("disabled"),jQuery(".spinner").css("visibility","hidden"),location.href="users.php?page=ct_check_users_total")},error:function(e,t,c){jQuery("#ct_error_message").show(),jQuery("#cleantalk_ajax_error").html(t),jQuery("#cleantalk_js_func").html("All users deleteion"),setTimeout(ct_delete_all_users(_),3e3)},timeout:25e3})}jQuery(document).ready(function(){jQuery("#ct_allow_date_range").data({depended:".ct_date",state:!1}),ct_prev_accurate&&jQuery("#ct_accurate_check").prop("checked",!0),ct_prev_from&&(jQuery("#ct_allow_date_range").prop("checked",!0).data("state",!0),jQuery("#ct_date_range_from").removeProp("disabled").val(ct_prev_from),jQuery("#ct_date_range_till").removeProp("disabled").val(ct_prev_till)),jQuery("#ct_allow_date_range, #ct_accurate_check").on("change",function(){ct_toggle_depended(jQuery(this))}),jQuery.datepicker.setDefaults(jQuery.datepicker.regional.en);var a=jQuery("#ct_date_range_from, #ct_date_range_till").datepicker({dateFormat:"M d yy",maxDate:"+0D",changeMonth:!0,changeYear:!0,showAnim:"slideDown",onSelect:function(e){var t="ct_date_range_from"==this.id?"minDate":"maxDate",c=jQuery(this).data("datepicker"),_=jQuery.datepicker.parseDate(c.settings.dateFormat||jQuery.datepicker._defaults.dateFormat,e,c.settings);a.not(this).datepicker("option",t,_)}});function t(t){var e={action:"ajax_insert_users",security:ct_ajax_nonce};(t=t||null)&&(e.delete=!0),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){t?alert("Deleted "+e+" users"):alert("Inserted "+e+" users")}})}jQuery("#ct_check_spam_button").click(function(){ct_start_check(!(document.cookie="ct_paused_users_check=0; path=/"))}),jQuery("#ct_proceed_check_button").click(function(){ct_start_check(!0)}),jQuery("#ct_pause").on("click",function(){ct_pause=!0;var e={accurate:ct_accurate_check,from:ct_date_from,till:ct_date_till};document.cookie="ct_paused_users_check="+JSON.stringify(e)+"; path=/"}),jQuery(".cleantalk_delete_from_list_button").click(function(){ct_id=jQuery(this).attr("data-id");var e={action:"ajax_ct_approve_user",security:ct_ajax_nonce,id:ct_id};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){jQuery("#comment-"+ct_id).fadeOut("slow",function(){jQuery("#comment-"+ct_id).remove()})}});e={action:"ct_feedback_user",security:ct_ajax_nonce,user_id:ct_id,status:"approve"};jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){},error:function(e,t,c){},timeout:5e3})}),jQuery(".ct_get_csv_file").click(function(_){var e={action:"ajax_ct_get_csv_file",security:ct_ajax_nonce,filename:ctUsersCheck.ct_csv_filename};jQuery("."+_.target.id).addClass("disabled"),jQuery(".spinner").css("visibility","visible"),jQuery.ajax({type:"POST",url:ajaxurl,data:e,success:function(e){var t,c;0===parseInt(e)?alert(ctUsersCheck.ct_bad_csv):(t=URL.createObjectURL(new Blob([e])),(c=document.createElement("a")).href=t,c.download=ctUsersCheck.ct_csv_filename+".csv",document.body.appendChild(c),c.click()),jQuery("."+_.target.id).removeClass("disabled"),jQuery(".spinner").css("visibility","hidden")}})}),jQuery(".ct_insert_users").click(function(e){t()}),jQuery(".ct_insert_users__delete").click(function(e){t(!0)}),jQuery(".ct_delete_all_users").click(function(e){return!!confirm(ctUsersCheck.ct_confirm_deletion_all)&&void ct_delete_all_users(e)})});
2
+ //# sourceMappingURL=cleantalk-users-checkspam.min.js.map
js/cleantalk-users-checkspam.min.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["cleantalk-users-checkspam.js"],"names":["String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_working","document","cookie","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctUsersCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_users_total","ct_users_checked","ct_users_spam","ct_users_bad","ct_unchecked","ct_date_from","ct_date_till","apbct_cookie__get","names","prefixes","split","forEach","item","i","arr","curr","trim","name","all","prefix","apbct_get_cookie","animate_comment","to","id","jQuery","fadeTo","ct_clear_users","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_users_info","ct_send_users","ct_cooling_down_toggle","setTimeout","check_amount","new_check","unchecked","amount","parseJSON","parseInt","error","confirm","error_message","new_href","location","href","end","hide","checked","spam","bad","status_string","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","ct_toggle_depended","obj","secondary","depended","prop","removeProp","ct_start_check","continue_check","alert","ct_delete_all_users","e","target","addClass","css","removeClass","ready","state","on","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_insert_users","delete_accounts","click","ct_check","accurate","JSON","stringify","ct_id","attr","fadeOut","remove","user_id","status","filename","ct_csv_filename","ct_bad_csv","URL","createObjectURL","Blob","dummy","createElement","download","body","appendChild","ct_confirm_deletion_all"],"mappings":"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","file":"cleantalk-users-checkspam.min.js","sourcesContent":["// Printf for JS\nString.prototype.printf = function(){\n var formatted = this;\n for( var arg in arguments ) {\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\n }\n return formatted;\n};\n\n// Set deafult amount to check by request.\ndocument.cookie = \"ct_check_users__amount=\" + 100 + \"; path=/\";\n\n// Flags\nvar ct_working = false,\n\tct_new_check = true,\n\tct_cooling_down_flag = false,\n\tct_close_animate = true,\n\tct_accurate_check = false,\n\tct_pause = false,\n\tct_prev_accurate = ctUsersCheck.ct_prev_accurate,\n\tct_prev_from = ctUsersCheck.ct_prev_from,\t\n\tct_prev_till = ctUsersCheck.ct_prev_till;\n// Settings\nvar ct_cool_down_time = 90000,\n\tct_requests_counter = 0,\n\tct_max_requests = 60;\n// Variables\nvar ct_ajax_nonce = ctUsersCheck.ct_ajax_nonce,\n\tct_users_total = 0,\n\tct_users_checked = 0,\n\tct_users_spam = 0,\n\tct_users_bad = 0,\n\tct_unchecked = 'unset',\n\tct_date_from = 0,\n\tct_date_till = 0;\n\n/* Function: Reuturns cookie with prefix */\nfunction apbct_cookie__get(names, prefixes){\n\tvar cookie = {};\n\tnames = names || null;\n\tif(typeof names == 'string') names = names.split();\n\tprefixes = prefixes || ['apbct_', 'ct_'];\n\tif(prefixes === 'none') prefixes = null;\n\tif(typeof prefixes == 'string') prefixes = prefixes.split();\n\tdocument.cookie.split(';').forEach(function(item, i, arr){\n\t\tvar curr = item.trim().split('=');\n\t\t// Detect by full cookie name\n\t\tif(names){\n\t\t\tnames.forEach(function(name, i, all){\n\t\t\t\tif(curr[0] === name)\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\n\t\t\t});\n\t\t}\n\t\t// Detect by name prefix\n\t\tif(prefixes){\n\t\t\tprefixes.forEach(function(prefix, i, all){\n\t\t\t\tif(curr[0].indexOf(prefix) === 0)\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\n\t\t\t});\n\t\t}\n\t});\n\treturn cookie;\n}\n\nfunction apbct_get_cookie( name ){\n\tvar cookie = apbct_cookie__get( name, name );\n\tif(typeof cookie === 'object' && typeof cookie[name] != 'undefined'){\n\t\treturn cookie[name];\n\t}else\n\t\treturn null;\n}\n\nfunction animate_comment(to,id){\n\tif(ct_close_animate){\n\t\tif(to === 0.3){\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\n\t\t\t\tanimate_comment(1,id)\n\t\t\t});\n\t\t}else{\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\n\t\t\t\tanimate_comment(0.3,id)\n\t\t\t});\n\t\t}\n\t}else{\n\t\tct_close_animate=true;\n\t}\n}\n\nfunction ct_clear_users(){\n\n\tvar from = 0, till = 0;\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\n\t\tfrom = jQuery('#ct_date_range_from').val();\n\t\ttill = jQuery('#ct_date_range_till').val();\n\t}\n\tvar data = {\n\t\t'action' : 'ajax_clear_users',\n\t\t'security' : ct_ajax_nonce,\n\t\t'from' : from,\n\t\t'till' : till\n\t};\n\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(msg){\n\t\t\tct_show_users_info();\n\t\t\tct_send_users();\n\t\t}\n\t});\n\n}\n\n//Continues the check after cooldown time\n//Called by ct_send_users();\nfunction ct_cooling_down_toggle(){\n\tct_cooling_down_flag = false;\n\tct_send_users();\n\tct_show_users_info();\n}\n\nfunction ct_send_users(){\n\t\n\tif(ct_cooling_down_flag === true)\n\t\treturn;\n\t\n\tif(ct_requests_counter >= ct_max_requests){\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\n\t\tct_requests_counter = 0;\n\t\tct_cooling_down_flag = true;\n\t\treturn;\n\t}else{\n\t\tct_requests_counter++;\n\t}\n\n\tvar check_amount = apbct_get_cookie('ct_check_users__amount');\n\n\tvar data = {\n\t\taction: 'ajax_check_users',\n\t\tsecurity: ct_ajax_nonce,\n\t\tnew_check: ct_new_check,\n\t\tunchecked: ct_unchecked,\n\t\tamount: check_amount\n\t};\n\t\n\tif(ct_accurate_check)\n\t\tdata['accurate_check'] = true;\n\t\n\tif(ct_date_from && ct_date_till){\n\t\tdata['from'] = ct_date_from;\n\t\tdata['till'] = ct_date_till;\n\t}\n\t\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function(msg){\n\t\t\t\n\t\t\tmsg = jQuery.parseJSON(msg);\n\t\t\t\n\t\t\tif(parseInt(msg.error)){\n\t\t\t\tct_working=false;\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users';\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\n\t\t\t\t\tlocation.href = new_href;\n\t\t\t\t}else\n\t\t\t\t\tct_send_users();\n\t\t\t}else{\n\t\t\t\tct_new_check = false;\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause == true){\n\t\t\t\t\tif(parseInt(msg.end) == 1)\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\n\t\t\t\t\tct_working=false;\n\t\t\t\t\tjQuery('#ct_working_message').hide();\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users&ct_worked=1';\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\n\t\t\t\t\tlocation.href = new_href;\n\t\t\t\t}else if(parseInt(msg.end) == 0){\n\t\t\t\t\tct_users_checked += msg.checked;\n\t\t\t\t\tct_users_spam += msg.spam;\n\t\t\t\t\tct_users_bad += msg.bad;\n\t\t\t\t\tct_unchecked = ct_users_total - ct_users_checked - ct_users_bad;\n\t\t\t\t\tvar status_string = String(ctUsersCheck.ct_status_string);\n\t\t\t\t\tvar status_string = status_string.printf(ct_users_checked, ct_users_spam, ct_users_bad);\n\t\t\t\t\tif(parseInt(ct_users_spam) > 0)\n\t\t\t\t\t\tstatus_string += ctUsersCheck.ct_status_string_warning;\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\n\t\t\t\t\tjQuery('#ct_error_message').hide();\n\t\t\t\t\tct_send_users();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n error: function(jqXHR, textStatus, errorThrown) {\n\t\t\tif(check_amount > 20){\n\t\t\t\tcheck_amount -= 20;\n\t\t\t\tdocument.cookie = \"ct_check_users__amount=\" + check_amount + \"; path=/\";\n\t\t\t}\n\t\t\tjQuery('#ct_error_message').show();\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\n\t\t\tjQuery('#cleantalk_js_func').html('Check users');\n\t\t\tsetTimeout(ct_send_users(), 3000);\n },\n timeout: 25000\n\t});\n}\nfunction ct_show_users_info(){\n\t\n\tif( ct_working ){\n\t\t\n\t\tif(ct_cooling_down_flag == true){\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)');\n\t\t\tjQuery('#ct_cooling_notice').show();\n\t\t\treturn;\t\t\t\n\t\t}else{\n\t\t\tjQuery('#ct_cooling_notice').hide();\n\t\t}\n\t\t\n\t\tif( ! ct_users_total ){\n\t\t\t\n\t\t\tvar data = {\n\t\t\t\t'action': 'ajax_info_users',\n\t\t\t\t'security': ct_ajax_nonce\n\t\t\t};\n\t\t\t\n\t\t\tif( ct_date_from && ct_date_till ){\n\t\t\t\tdata['from'] = ct_date_from;\n\t\t\t\tdata['till'] = ct_date_till;\n\t\t\t}\n\t\t\t\n\t\t\tjQuery.ajax({\n\t\t\t\ttype: \"POST\",\n\t\t\t\turl: ajaxurl,\n\t\t\t\tdata: data,\n\t\t\t\tsuccess: function(msg){\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\n\t\t\t\t\tct_users_spam = msg.spam;\n\t\t\t\t\tct_users_checked = msg.checked;\n\t\t\t\t\tct_users_bad = msg.bad;\n\t\t\t\t},\n\t\t\t\terror: function (jqXHR, textStatus, errorThrown){\n\t\t\t\t\tjQuery('#ct_error_message').show();\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Show users');\n\t\t\t\t\tsetTimeout(ct_show_users_info(), 3000);\n\t\t\t\t},\n\t\t\t\ttimeout: 15000\n\t\t\t});\n\t\t}\n\t}\n}\n// Function to toggle dependences\nfunction ct_toggle_depended(obj, secondary){\n\n secondary = secondary || null;\n\n\tvar depended = jQuery(obj.data('depended')),\n\t\tstate = obj.data('state');\n\t\t\n\tif(!state && !secondary){\n\t\tobj.data('state', true);\n\t\tdepended.removeProp('disabled');\n\t}else{\n\t\tobj.data('state', false);\n\t\tdepended.prop('disabled', true);\n\t\tdepended.removeProp('checked');\n\t\tif(depended.data('depended'))\n\t\t\tct_toggle_depended(depended, true);\n\t}\n}\n\n// Main function of checking\nfunction ct_start_check( continue_check ){\n\n\tcontinue_check = continue_check || null;\n\n\tif(jQuery('#ct_allow_date_range').is(':checked')){\n\n\t\tct_date_from = jQuery('#ct_date_range_from').val();\n\t\tct_date_till = jQuery('#ct_date_range_till').val();\n\n\t\tif(!(ct_date_from !== '' && ct_date_till !== '')){\n\t\t\talert('Please, specify a date range.');\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif(jQuery('#ct_accurate_check').is(':checked')){\n\t\tct_accurate_check = true;\n\t}\n\n\tjQuery('.ct_to_hide').hide();\n\tjQuery('#ct_working_message').show();\n\tjQuery('#ct_preloader').show();\n\tjQuery('#ct_pause').show();\n\n\tct_working = true;\n\n\tif( continue_check ){\n\t\tct_show_users_info();\n\t\tct_send_users();\n\t} else {\n\t\tct_clear_users();\n\t}\n\n}\n\nfunction ct_delete_all_users( e ){\n\n\tvar data = {\n\t\t'action': 'ajax_delete_all_users',\n\t\t'security': ct_ajax_nonce\n\t};\n\n\tjQuery('.' + e.target.id).addClass('disabled');\n\tjQuery('.spinner').css('visibility', 'visible');\n\tjQuery.ajax({\n\t\ttype: \"POST\",\n\t\turl: ajaxurl,\n\t\tdata: data,\n\t\tsuccess: function( msg ){\n\t\t\tif( msg > 0 ){\n\t\t\t\tjQuery('#cleantalk_users_left').html(msg);\n\t\t\t\tct_delete_all_users( e, data );\n\t\t\t}else{\n\t\t\t\tjQuery('.' + e.target.id).removeClass('disabled');\n\t\t\t\tjQuery('.spinner').css('visibility', 'hidden');\n\t\t\t\tlocation.href='users.php?page=ct_check_users_total';\n\t\t\t}\n\t\t},\n\t\terror: function(jqXHR, textStatus, errorThrown) {\n\t\t\tjQuery('#ct_error_message').show();\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\n\t\t\tjQuery('#cleantalk_js_func').html('All users deleteion');\n\t\t\tsetTimeout(ct_delete_all_users( e ), 3000);\n\t\t},\n\t\ttimeout: 25000\n\t});\n}\n\njQuery(document).ready(function(){\n\n\t// Setting dependences\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\n\t\n\t// Prev check parameters\n\tif(ct_prev_accurate){\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\n\t}\n\tif(ct_prev_from){\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\n\t}\n\t\n\t// Toggle dependences\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\n\t\tct_toggle_depended(jQuery(this));\n\t});\n\n\tjQuery.datepicker.setDefaults(jQuery.datepicker.regional['en']);\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\n\t\t{\n\t\t\tdateFormat: 'M d yy',\n\t\t\tmaxDate:\"+0D\",\n\t\t\tchangeMonth:true,\n\t\t\tchangeYear:true,\n\t\t\tshowAnim: 'slideDown',\n\t\t\tonSelect: function(selectedDate){\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\n\t\t\t\tdate = jQuery.datepicker.parseDate(\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\n\t\t\t\t\tselectedDate, instance.settings);\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\n\t\t\t}\n\t\t}\n\t);\n\t\n\t// Check users\n\tjQuery(\"#ct_check_spam_button\").click(function(){\n\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\n\t\tct_start_check(false);\n\t});\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\n\t\tct_start_check(true);\n\t});\n\t\n\t// Pause the check\n\tjQuery('#ct_pause').on('click', function(){\n\t\tct_pause = true;\n\t\tvar ct_check = {\n\t\t\t'accurate': ct_accurate_check,\n\t\t\t'from' : ct_date_from,\n\t\t\t'till' : ct_date_till\n\t\t};\n\t\tdocument.cookie = 'ct_paused_users_check=' + JSON.stringify(ct_check) + '; path=/';\n\t});\n\t\t\n\t//Approve button\n\tjQuery(\".cleantalk_delete_from_list_button\").click(function(){\n\t\tct_id = jQuery(this).attr(\"data-id\");\n\t\t\n\t\t// Approving\n\t\tvar data = {\n\t\t\t'action': 'ajax_ct_approve_user',\n\t\t\t'security': ct_ajax_nonce,\n\t\t\t'id': ct_id\n\t\t};\n\t\tjQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: ajaxurl,\n\t\t\tdata: data,\n\t\t\tsuccess: function(msg){\n\t\t\t\tjQuery(\"#comment-\"+ct_id).fadeOut('slow', function(){\n\t\t\t\t\tjQuery(\"#comment-\"+ct_id).remove();\n\t\t\t\t});\n\t\t\t},\n\t\t});\n\t\t\n\t\t// Positive feedback\n\t\tvar data = {\n\t\t\t'action': 'ct_feedback_user',\n\t\t\t'security': ct_ajax_nonce,\n\t\t\t'user_id': ct_id,\n\t\t\t'status': 'approve'\n\t\t};\n\t\tjQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: ajaxurl,\n\t\t\tdata: data,\n\t\t\tsuccess: function(msg){\n\t\t\t\tif(msg == 1){\n\t\t\t\t\t// Success\n\t\t\t\t}\n\t\t\t\tif(msg == 0){\n\t\t\t\t\t// Error occurred\n\t\t\t\t}\n\t\t\t\tif(msg == 'no_hash'){\n\t\t\t\t\t// No hash\n\t\t\t\t}\n\t\t\t},\n\t\t\terror: function(jqXHR, textStatus, errorThrown) {\n\t\t\t\t\n\t\t\t},\n\t\t\ttimeout: 5000\n\t\t});\n\t\t\n\t});\n\t\n\t// Request to Download CSV file.\n\tjQuery(\".ct_get_csv_file\").click(function( e ){\n\t\tvar data = {\n\t\t\t'action': 'ajax_ct_get_csv_file',\n\t\t\t'security': ct_ajax_nonce,\n\t\t\t'filename': ctUsersCheck.ct_csv_filename\n\t\t};\n\t\tjQuery('.' + e.target.id).addClass('disabled');\n\t\tjQuery('.spinner').css('visibility', 'visible');\n\t\tjQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: ajaxurl,\n\t\t\tdata: data,\n\t\t\tsuccess: function(msg){\n\t\t\t\tif( parseInt(msg) === 0 ) {\n\t\t\t\t\talert(ctUsersCheck.ct_bad_csv);\n\t\t\t\t} else {\n\t\t\t\t\tvar url = URL.createObjectURL(new Blob([msg]));\n\n\t\t\t\t\tvar dummy = document.createElement('a');\n\t\t\t\t\tdummy.href = url;\n\t\t\t\t\tdummy.download = ctUsersCheck.ct_csv_filename + '.csv';\n\n\t\t\t\t\tdocument.body.appendChild(dummy);\n\t\t\t\t\tdummy.click();\n\t\t\t\t}\n\t\t\t\tjQuery('.' + e.target.id).removeClass('disabled');\n\t\t\t\tjQuery('.spinner').css('visibility', 'hidden');\n\t\t\t}\n\t\t});\n\t});\n\n\t// Delete inserted users\n\tjQuery(\".ct_insert_users\").click(function( e ){\n\t\tct_insert_users();\n\t});\n\n\t// Insert users\n\tjQuery(\".ct_insert_users__delete\").click(function( e ){\n\t\tct_insert_users( true );\n\t});\n\n\t// Delete all spam users\n\tjQuery(\".ct_delete_all_users\").click(function( e ){\n\n\t\tif ( ! confirm( ctUsersCheck.ct_confirm_deletion_all ) )\n\t\t\treturn false;\n\n\t\tct_delete_all_users( e );\n\n\t});\n\n\tfunction ct_insert_users(delete_accounts){\n\n\t\tdelete_accounts = delete_accounts || null;\n\n\t\tvar data = {\n\t\t\t'action': 'ajax_insert_users',\n\t\t\t'security': ct_ajax_nonce\n\t\t};\n\n\t\tif(delete_accounts)\n\t\t\tdata['delete'] = true;\n\n\t\tjQuery.ajax({\n\t\t\ttype: \"POST\",\n\t\t\turl: ajaxurl,\n\t\t\tdata: data,\n\t\t\tsuccess: function(msg){\n\t\t\t\tif(delete_accounts)\n\t\t\t\t\talert('Deleted ' + msg + ' users');\n\t\t\t\telse\n\t\t\t\t\talert('Inserted ' + msg + ' users');\n\t\t\t}\n\t\t});\n\t}\n\n});"]}
1
+ {"version":3,"file":"cleantalk-users-checkspam.min.js","sources":["cleantalk-users-checkspam.js"],"sourcesContent":["// Printf for JS\r\nString.prototype.printf = function(){\r\n var formatted = this;\r\n for( var arg in arguments ) {\r\n\t\tvar before_formatted = formatted.substring(0, formatted.indexOf(\"%s\", 0));\r\n\t\tvar after_formatted = formatted.substring(formatted.indexOf(\"%s\", 0)+2, formatted.length);\r\n\t\tformatted = before_formatted + arguments[arg] + after_formatted;\r\n }\r\n return formatted;\r\n};\r\n\r\n// Set deafult amount to check by request.\r\ndocument.cookie = \"ct_check_users__amount=\" + 100 + \"; path=/\";\r\n\r\n// Flags\r\nvar ct_working = false,\r\n\tct_new_check = true,\r\n\tct_cooling_down_flag = false,\r\n\tct_close_animate = true,\r\n\tct_accurate_check = false,\r\n\tct_pause = false,\r\n\tct_prev_accurate = ctUsersCheck.ct_prev_accurate,\r\n\tct_prev_from = ctUsersCheck.ct_prev_from,\t\r\n\tct_prev_till = ctUsersCheck.ct_prev_till;\r\n// Settings\r\nvar ct_cool_down_time = 90000,\r\n\tct_requests_counter = 0,\r\n\tct_max_requests = 60;\r\n// Variables\r\nvar ct_ajax_nonce = ctUsersCheck.ct_ajax_nonce,\r\n\tct_users_total = 0,\r\n\tct_users_checked = 0,\r\n\tct_users_spam = 0,\r\n\tct_users_bad = 0,\r\n\tct_unchecked = 'unset',\r\n\tct_date_from = 0,\r\n\tct_date_till = 0;\r\n\r\n/* Function: Reuturns cookie with prefix */\r\nfunction apbct_cookie__get(names, prefixes){\r\n\tvar cookie = {};\r\n\tnames = names || null;\r\n\tif(typeof names == 'string') names = names.split();\r\n\tprefixes = prefixes || ['apbct_', 'ct_'];\r\n\tif(prefixes === 'none') prefixes = null;\r\n\tif(typeof prefixes == 'string') prefixes = prefixes.split();\r\n\tdocument.cookie.split(';').forEach(function(item, i, arr){\r\n\t\tvar curr = item.trim().split('=');\r\n\t\t// Detect by full cookie name\r\n\t\tif(names){\r\n\t\t\tnames.forEach(function(name, i, all){\r\n\t\t\t\tif(curr[0] === name)\r\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\r\n\t\t\t});\r\n\t\t}\r\n\t\t// Detect by name prefix\r\n\t\tif(prefixes){\r\n\t\t\tprefixes.forEach(function(prefix, i, all){\r\n\t\t\t\tif(curr[0].indexOf(prefix) === 0)\r\n\t\t\t\t\tcookie[curr[0]] = (curr[1]);\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\treturn cookie;\r\n}\r\n\r\nfunction apbct_get_cookie( name ){\r\n\tvar cookie = apbct_cookie__get( name, name );\r\n\tif(typeof cookie === 'object' && typeof cookie[name] != 'undefined'){\r\n\t\treturn cookie[name];\r\n\t}else\r\n\t\treturn null;\r\n}\r\n\r\nfunction animate_comment(to,id){\r\n\tif(ct_close_animate){\r\n\t\tif(to === 0.3){\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(1,id)\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tjQuery('#comment-'+id).fadeTo(200,to,function(){\r\n\t\t\t\tanimate_comment(0.3,id)\r\n\t\t\t});\r\n\t\t}\r\n\t}else{\r\n\t\tct_close_animate=true;\r\n\t}\r\n}\r\n\r\nfunction ct_clear_users(){\r\n\r\n\tvar from = 0, till = 0;\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')) {\r\n\t\tfrom = jQuery('#ct_date_range_from').val();\r\n\t\ttill = jQuery('#ct_date_range_till').val();\r\n\t}\r\n\tvar data = {\r\n\t\t'action' : 'ajax_clear_users',\r\n\t\t'security' : ct_ajax_nonce,\r\n\t\t'from' : from,\r\n\t\t'till' : till\r\n\t};\r\n\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\tct_show_users_info();\r\n\t\t\tct_send_users();\r\n\t\t}\r\n\t});\r\n\r\n}\r\n\r\n//Continues the check after cooldown time\r\n//Called by ct_send_users();\r\nfunction ct_cooling_down_toggle(){\r\n\tct_cooling_down_flag = false;\r\n\tct_send_users();\r\n\tct_show_users_info();\r\n}\r\n\r\nfunction ct_send_users(){\r\n\t\r\n\tif(ct_cooling_down_flag === true)\r\n\t\treturn;\r\n\t\r\n\tif(ct_requests_counter >= ct_max_requests){\r\n\t\tsetTimeout(ct_cooling_down_toggle, ct_cool_down_time);\r\n\t\tct_requests_counter = 0;\r\n\t\tct_cooling_down_flag = true;\r\n\t\treturn;\r\n\t}else{\r\n\t\tct_requests_counter++;\r\n\t}\r\n\r\n\tvar check_amount = apbct_get_cookie('ct_check_users__amount');\r\n\r\n\tvar data = {\r\n\t\taction: 'ajax_check_users',\r\n\t\tsecurity: ct_ajax_nonce,\r\n\t\tnew_check: ct_new_check,\r\n\t\tunchecked: ct_unchecked,\r\n\t\tamount: check_amount\r\n\t};\r\n\t\r\n\tif(ct_accurate_check)\r\n\t\tdata['accurate_check'] = true;\r\n\t\r\n\tif(ct_date_from && ct_date_till){\r\n\t\tdata['from'] = ct_date_from;\r\n\t\tdata['till'] = ct_date_till;\r\n\t}\r\n\t\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function(msg){\r\n\t\t\t\r\n\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\r\n\t\t\tif(parseInt(msg.error)){\r\n\t\t\t\tct_working=false;\r\n\t\t\t\tif(!confirm(msg.error_message+\". Do you want to proceed?\")){\r\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else\r\n\t\t\t\t\tct_send_users();\r\n\t\t\t}else{\r\n\t\t\t\tct_new_check = false;\r\n\t\t\t\tif(parseInt(msg.end) == 1 || ct_pause == true){\r\n\t\t\t\t\tif(parseInt(msg.end) == 1)\r\n\t\t\t\t\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\r\n\t\t\t\t\tct_working=false;\r\n\t\t\t\t\tjQuery('#ct_working_message').hide();\r\n\t\t\t\t\tvar new_href = 'users.php?page=ct_check_users&ct_worked=1';\r\n\t\t\t\t\tif(ct_date_from != 0 && ct_date_till != 0)\r\n\t\t\t\t\t\tnew_href+='&from='+ct_date_from+'&till='+ct_date_till;\r\n\t\t\t\t\tlocation.href = new_href;\r\n\t\t\t\t}else if(parseInt(msg.end) == 0){\r\n\t\t\t\t\tct_users_checked = parseInt( ct_users_checked ) + parseInt( msg.checked );\r\n\t\t\t\t\tct_users_spam = parseInt( ct_users_spam ) + parseInt (msg.spam );\r\n\t\t\t\t\tct_users_bad = parseInt( ct_users_bad ) + parseInt( msg.bad );\r\n\t\t\t\t\tct_unchecked = ct_users_total - ct_users_checked - ct_users_bad;\r\n\t\t\t\t\tvar status_string = String(ctUsersCheck.ct_status_string);\r\n\t\t\t\t\tvar status_string = status_string.printf(ct_users_checked, ct_users_spam, ct_users_bad);\r\n\t\t\t\t\tif(parseInt(ct_users_spam) > 0)\r\n\t\t\t\t\t\tstatus_string += ctUsersCheck.ct_status_string_warning;\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(status_string);\r\n\t\t\t\t\tjQuery('#ct_error_message').hide();\r\n\t\t\t\t\tct_send_users();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n error: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tif(check_amount > 20){\r\n\t\t\t\tcheck_amount -= 20;\r\n\t\t\t\tdocument.cookie = \"ct_check_users__amount=\" + check_amount + \"; path=/\";\r\n\t\t\t}\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('Check users');\r\n\t\t\tsetTimeout(ct_send_users(), 3000);\r\n },\r\n timeout: 25000\r\n\t});\r\n}\r\nfunction ct_show_users_info(){\r\n\t\r\n\tif( ct_working ){\r\n\t\t\r\n\t\tif(ct_cooling_down_flag === true){\r\n\t\t\tjQuery('#ct_cooling_notice').html('Waiting for API to cool down. (About a minute)').show();\r\n\t\t\treturn;\t\t\t\r\n\t\t}else{\r\n\t\t\tjQuery('#ct_cooling_notice').hide();\r\n\t\t}\r\n\t\t\r\n\t\tif( ! ct_users_total ){\r\n\t\t\t\r\n\t\t\tvar data = {\r\n\t\t\t\t'action': 'ajax_info_users',\r\n\t\t\t\t'security': ct_ajax_nonce\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tif( ct_date_from && ct_date_till ){\r\n\t\t\t\tdata['from'] = ct_date_from;\r\n\t\t\t\tdata['till'] = ct_date_till;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tjQuery.ajax({\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\turl: ajaxurl,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function(msg){\r\n\t\t\t\t\tmsg = jQuery.parseJSON(msg);\r\n\t\t\t\t\tjQuery('#ct_checking_status').html(msg.message);\r\n\t\t\t\t\tct_users_spam = msg.spam;\r\n\t\t\t\t\tct_users_checked = msg.checked;\r\n\t\t\t\t\tct_users_bad = msg.bad;\r\n\t\t\t\t},\r\n\t\t\t\terror: function (jqXHR, textStatus, errorThrown){\r\n\t\t\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\t\t\tjQuery('#cleantalk_js_func').html('Show users');\r\n\t\t\t\t\tsetTimeout(ct_show_users_info(), 3000);\r\n\t\t\t\t},\r\n\t\t\t\ttimeout: 15000\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n// Function to toggle dependences\r\nfunction ct_toggle_depended(obj, secondary){\r\n\r\n secondary = secondary || null;\r\n\r\n\tvar depended = jQuery(obj.data('depended')),\r\n\t\tstate = obj.data('state');\r\n\t\t\r\n\tif(!state && !secondary){\r\n\t\tobj.data('state', true);\r\n\t\tdepended.removeProp('disabled');\r\n\t}else{\r\n\t\tobj.data('state', false);\r\n\t\tdepended.prop('disabled', true);\r\n\t\tdepended.removeProp('checked');\r\n\t\tif(depended.data('depended'))\r\n\t\t\tct_toggle_depended(depended, true);\r\n\t}\r\n}\r\n\r\n// Main function of checking\r\nfunction ct_start_check( continue_check ){\r\n\r\n\tcontinue_check = continue_check || null;\r\n\r\n\tif(jQuery('#ct_allow_date_range').is(':checked')){\r\n\r\n\t\tct_date_from = jQuery('#ct_date_range_from').val();\r\n\t\tct_date_till = jQuery('#ct_date_range_till').val();\r\n\r\n\t\tif(!(ct_date_from !== '' && ct_date_till !== '')){\r\n\t\t\talert('Please, specify a date range.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tif(jQuery('#ct_accurate_check').is(':checked')){\r\n\t\tct_accurate_check = true;\r\n\t}\r\n\r\n\tjQuery('.ct_to_hide').hide();\r\n\tjQuery('#ct_working_message').show();\r\n\tjQuery('#ct_preloader').show();\r\n\tjQuery('#ct_pause').show();\r\n\r\n\tct_working = true;\r\n\r\n\tif( continue_check ){\r\n\t\tct_show_users_info();\r\n\t\tct_send_users();\r\n\t} else {\r\n\t\tct_clear_users();\r\n\t}\r\n\r\n}\r\n\r\nfunction ct_delete_all_users( e ){\r\n\r\n\tvar data = {\r\n\t\t'action': 'ajax_delete_all_users',\r\n\t\t'security': ct_ajax_nonce\r\n\t};\r\n\r\n\tjQuery('.' + e.target.id).addClass('disabled');\r\n\tjQuery('.spinner').css('visibility', 'visible');\r\n\tjQuery.ajax({\r\n\t\ttype: \"POST\",\r\n\t\turl: ajaxurl,\r\n\t\tdata: data,\r\n\t\tsuccess: function( msg ){\r\n\t\t\tif( msg > 0 ){\r\n\t\t\t\tjQuery('#cleantalk_users_left').html(msg);\r\n\t\t\t\tct_delete_all_users( e, data );\r\n\t\t\t}else{\r\n\t\t\t\tjQuery('.' + e.target.id).removeClass('disabled');\r\n\t\t\t\tjQuery('.spinner').css('visibility', 'hidden');\r\n\t\t\t\tlocation.href='users.php?page=ct_check_users_total';\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\tjQuery('#ct_error_message').show();\r\n\t\t\tjQuery('#cleantalk_ajax_error').html(textStatus);\r\n\t\t\tjQuery('#cleantalk_js_func').html('All users deleteion');\r\n\t\t\tsetTimeout(ct_delete_all_users( e ), 3000);\r\n\t\t},\r\n\t\ttimeout: 25000\r\n\t});\r\n}\r\n\r\njQuery(document).ready(function(){\r\n\r\n\t// Setting dependences\r\n\t// jQuery('#ct_accurate_check') .data({'depended': '#ct_allow_date_range', 'state': false});\r\n\tjQuery('#ct_allow_date_range').data({'depended': '.ct_date', 'state': false});\r\n\t\r\n\t// Prev check parameters\r\n\tif(ct_prev_accurate){\r\n\t\tjQuery(\"#ct_accurate_check\").prop('checked', true);\r\n\t}\r\n\tif(ct_prev_from){\r\n\t\tjQuery(\"#ct_allow_date_range\").prop('checked', true).data('state', true);\r\n\t\tjQuery(\"#ct_date_range_from\").removeProp('disabled').val(ct_prev_from);\r\n\t\tjQuery(\"#ct_date_range_till\").removeProp('disabled').val(ct_prev_till);\r\n\t}\r\n\t\r\n\t// Toggle dependences\r\n\tjQuery(\"#ct_allow_date_range, #ct_accurate_check\").on('change', function(){\r\n\t\tct_toggle_depended(jQuery(this));\r\n\t});\r\n\r\n\tjQuery.datepicker.setDefaults(jQuery.datepicker.regional['en']);\r\n\tvar dates = jQuery('#ct_date_range_from, #ct_date_range_till').datepicker(\r\n\t\t{\r\n\t\t\tdateFormat: 'M d yy',\r\n\t\t\tmaxDate:\"+0D\",\r\n\t\t\tchangeMonth:true,\r\n\t\t\tchangeYear:true,\r\n\t\t\tshowAnim: 'slideDown',\r\n\t\t\tonSelect: function(selectedDate){\r\n\t\t\tvar option = this.id == \"ct_date_range_from\" ? \"minDate\" : \"maxDate\",\r\n\t\t\t\tinstance = jQuery( this ).data( \"datepicker\" ),\r\n\t\t\t\tdate = jQuery.datepicker.parseDate(\r\n\t\t\t\t\tinstance.settings.dateFormat || jQuery.datepicker._defaults.dateFormat,\r\n\t\t\t\t\tselectedDate, instance.settings);\r\n\t\t\t\tdates.not(this).datepicker(\"option\", option, date);\r\n\t\t\t}\r\n\t\t}\r\n\t);\r\n\t\r\n\t// Check users\r\n\tjQuery(\"#ct_check_spam_button\").click(function(){\r\n\t\tdocument.cookie = 'ct_paused_users_check=0; path=/';\r\n\t\tct_start_check(false);\r\n\t});\r\n\tjQuery(\"#ct_proceed_check_button\").click(function(){\r\n\t\tct_start_check(true);\r\n\t});\r\n\t\r\n\t// Pause the check\r\n\tjQuery('#ct_pause').on('click', function(){\r\n\t\tct_pause = true;\r\n\t\tvar ct_check = {\r\n\t\t\t'accurate': ct_accurate_check,\r\n\t\t\t'from' : ct_date_from,\r\n\t\t\t'till' : ct_date_till\r\n\t\t};\r\n\t\tdocument.cookie = 'ct_paused_users_check=' + JSON.stringify(ct_check) + '; path=/';\r\n\t});\r\n\t\t\r\n\t//Approve button\r\n\tjQuery(\".cleantalk_delete_from_list_button\").click(function(){\r\n\t\tct_id = jQuery(this).attr(\"data-id\");\r\n\t\t\r\n\t\t// Approving\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_approve_user',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'id': ct_id\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tjQuery(\"#comment-\"+ct_id).fadeOut('slow', function(){\r\n\t\t\t\t\tjQuery(\"#comment-\"+ct_id).remove();\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t\t\r\n\t\t// Positive feedback\r\n\t\tvar data = {\r\n\t\t\t'action': 'ct_feedback_user',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'user_id': ct_id,\r\n\t\t\t'status': 'approve'\r\n\t\t};\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif(msg == 1){\r\n\t\t\t\t\t// Success\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 0){\r\n\t\t\t\t\t// Error occurred\r\n\t\t\t\t}\r\n\t\t\t\tif(msg == 'no_hash'){\r\n\t\t\t\t\t// No hash\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function(jqXHR, textStatus, errorThrown) {\r\n\t\t\t\t\r\n\t\t\t},\r\n\t\t\ttimeout: 5000\r\n\t\t});\r\n\t\t\r\n\t});\r\n\t\r\n\t// Request to Download CSV file.\r\n\tjQuery(\".ct_get_csv_file\").click(function( e ){\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_ct_get_csv_file',\r\n\t\t\t'security': ct_ajax_nonce,\r\n\t\t\t'filename': ctUsersCheck.ct_csv_filename\r\n\t\t};\r\n\t\tjQuery('.' + e.target.id).addClass('disabled');\r\n\t\tjQuery('.spinner').css('visibility', 'visible');\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif( parseInt(msg) === 0 ) {\r\n\t\t\t\t\talert(ctUsersCheck.ct_bad_csv);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar url = URL.createObjectURL(new Blob([msg]));\r\n\r\n\t\t\t\t\tvar dummy = document.createElement('a');\r\n\t\t\t\t\tdummy.href = url;\r\n\t\t\t\t\tdummy.download = ctUsersCheck.ct_csv_filename + '.csv';\r\n\r\n\t\t\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\t\t\tdummy.click();\r\n\t\t\t\t}\r\n\t\t\t\tjQuery('.' + e.target.id).removeClass('disabled');\r\n\t\t\t\tjQuery('.spinner').css('visibility', 'hidden');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t// Delete inserted users\r\n\tjQuery(\".ct_insert_users\").click(function( e ){\r\n\t\tct_insert_users();\r\n\t});\r\n\r\n\t// Insert users\r\n\tjQuery(\".ct_insert_users__delete\").click(function( e ){\r\n\t\tct_insert_users( true );\r\n\t});\r\n\r\n\t// Delete all spam users\r\n\tjQuery(\".ct_delete_all_users\").click(function( e ){\r\n\r\n\t\tif ( ! confirm( ctUsersCheck.ct_confirm_deletion_all ) )\r\n\t\t\treturn false;\r\n\r\n\t\tct_delete_all_users( e );\r\n\r\n\t});\r\n\r\n\tfunction ct_insert_users(delete_accounts){\r\n\r\n\t\tdelete_accounts = delete_accounts || null;\r\n\r\n\t\tvar data = {\r\n\t\t\t'action': 'ajax_insert_users',\r\n\t\t\t'security': ct_ajax_nonce\r\n\t\t};\r\n\r\n\t\tif(delete_accounts)\r\n\t\t\tdata['delete'] = true;\r\n\r\n\t\tjQuery.ajax({\r\n\t\t\ttype: \"POST\",\r\n\t\t\turl: ajaxurl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function(msg){\r\n\t\t\t\tif(delete_accounts)\r\n\t\t\t\t\talert('Deleted ' + msg + ' users');\r\n\t\t\t\telse\r\n\t\t\t\t\talert('Inserted ' + msg + ' users');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n});"],"names":["String","prototype","printf","formatted","this","arg","arguments","before_formatted","substring","indexOf","after_formatted","length","ct_working","document","cookie","ct_new_check","ct_cooling_down_flag","ct_close_animate","ct_accurate_check","ct_pause","ct_prev_accurate","ctUsersCheck","ct_prev_from","ct_prev_till","ct_cool_down_time","ct_requests_counter","ct_max_requests","ct_ajax_nonce","ct_users_total","ct_users_checked","ct_users_spam","ct_users_bad","ct_unchecked","ct_date_from","ct_date_till","apbct_cookie__get","names","prefixes","split","forEach","item","i","arr","curr","trim","name","all","prefix","apbct_get_cookie","animate_comment","to","id","jQuery","fadeTo","ct_clear_users","from","till","is","val","data","action","security","ajax","type","url","ajaxurl","success","msg","ct_show_users_info","ct_send_users","ct_cooling_down_toggle","setTimeout","check_amount","new_check","unchecked","amount","new_href","status_string","parseJSON","parseInt","error","confirm","error_message","location","href","end","hide","checked","spam","bad","ct_status_string","ct_status_string_warning","html","jqXHR","textStatus","errorThrown","show","timeout","message","ct_toggle_depended","obj","secondary","depended","prop","removeProp","ct_start_check","continue_check","alert","ct_delete_all_users","e","target","addClass","css","removeClass","ready","state","on","datepicker","setDefaults","regional","dates","dateFormat","maxDate","changeMonth","changeYear","showAnim","onSelect","selectedDate","option","instance","date","parseDate","settings","_defaults","not","ct_insert_users","delete_accounts","click","ct_check","accurate","JSON","stringify","ct_id","attr","fadeOut","remove","user_id","status","filename","ct_csv_filename","dummy","ct_bad_csv","URL","createObjectURL","Blob","createElement","download","body","appendChild","ct_confirm_deletion_all"],"mappings":"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"}
lib/Cleantalk.php CHANGED
@@ -1,540 +1,540 @@
1
- <?php
2
-
3
- /**
4
- * Cleantalk base class
5
- *
6
- * @version 2.2
7
- * @package Cleantalk
8
- * @subpackage Base
9
- * @author Cleantalk team (welcome@cleantalk.org)
10
- * @copyright (C) 2014 CleanTalk team (http://cleantalk.org)
11
- * @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
12
- * @see https://github.com/CleanTalk/php-antispam
13
- *
14
- */
15
- class Cleantalk {
16
-
17
- /*
18
- * Use Wordpress built-in API
19
- */
20
- public $use_bultin_api = false;
21
-
22
- /**
23
- * Maximum data size in bytes
24
- * @var int
25
- */
26
- private $dataMaxSise = 32768;
27
-
28
- /**
29
- * Data compression rate
30
- * @var int
31
- */
32
- private $compressRate = 6;
33
-
34
- /**
35
- * Server connection timeout in seconds
36
- * @var int
37
- */
38
- private $server_timeout = 15;
39
-
40
- /**
41
- * Cleantalk server url
42
- * @var string
43
- */
44
- public $server_url = null;
45
-
46
- /**
47
- * Last work url
48
- * @var string
49
- */
50
- public $work_url = null;
51
-
52
- /**
53
- * WOrk url ttl
54
- * @var int
55
- */
56
- public $server_ttl = null;
57
-
58
- /**
59
- * Time wotk_url changer
60
- * @var int
61
- */
62
- public $server_changed = null;
63
-
64
- /**
65
- * Flag is change server url
66
- * @var bool
67
- */
68
- public $server_change = false;
69
-
70
- /**
71
- * Codepage of the data
72
- * @var bool
73
- */
74
- public $data_codepage = null;
75
-
76
- /**
77
- * API version to use
78
- * @var string
79
- */
80
- public $api_version = '/api2.0';
81
-
82
- /**
83
- * Use https connection to servers
84
- * @var bool
85
- */
86
- public $ssl_on = false;
87
-
88
- /**
89
- * Path to SSL certificate
90
- * @var string
91
- */
92
- public $ssl_path = '';
93
-
94
- /**
95
- * Minimal server response in miliseconds to catch the server
96
- *
97
- */
98
- public $min_server_timeout = 50;
99
-
100
- /**
101
- * Maximal server response in miliseconds to catch the server
102
- *
103
- */
104
- public $max_server_timeout = 1500;
105
-
106
- /**
107
- * Function checks whether it is possible to publish the message
108
- *
109
- * @param CleantalkRequest $request
110
- *
111
- * @return bool|CleantalkResponse
112
- */
113
- public function isAllowMessage(CleantalkRequest $request) {
114
- $msg = $this->createMsg('check_message', $request);
115
- return $this->httpRequest($msg);
116
- }
117
-
118
- /**
119
- * Function checks whether it is possible to publish the message
120
- *
121
- * @param CleantalkRequest $request
122
- *
123
- * @return bool|CleantalkResponse
124
- */
125
- public function isAllowUser(CleantalkRequest $request) {
126
- $msg = $this->createMsg('check_newuser', $request);
127
- return $this->httpRequest($msg);
128
- }
129
-
130
- /**
131
- * Function sends the results of manual moderation
132
- *
133
- * @param CleantalkRequest $request
134
- *
135
- * @return bool|CleantalkResponse
136
- */
137
- public function sendFeedback(CleantalkRequest $request) {
138
- $msg = $this->createMsg('send_feedback', $request);
139
- return $this->httpRequest($msg);
140
- }
141
-
142
- /**
143
- * Create msg for cleantalk server
144
- * @param string $method
145
- * @param CleantalkRequest $request
146
- * @return CleantalkRequest
147
- */
148
- private function createMsg($method, CleantalkRequest $request) {
149
-
150
- switch ($method) {
151
- case 'check_message':
152
- // Convert strings to UTF8
153
- $request->message = CleantalkHelper::toUTF8($request->message, $this->data_codepage);
154
- $request->example = CleantalkHelper::toUTF8($request->example, $this->data_codepage);
155
- $request->sender_email = CleantalkHelper::toUTF8($request->sender_email, $this->data_codepage);
156
- $request->sender_nickname = CleantalkHelper::toUTF8($request->sender_nickname, $this->data_codepage);
157
- $request->message = $this->compressData($request->message);
158
- $request->example = $this->compressData($request->example);
159
- break;
160
-
161
- case 'check_newuser':
162
- // Convert strings to UTF8
163
- $request->sender_email = CleantalkHelper::toUTF8($request->sender_email, $this->data_codepage);
164
- $request->sender_nickname = CleantalkHelper::toUTF8($request->sender_nickname, $this->data_codepage);
165
- break;
166
-
167
- case 'send_feedback':
168
- if (is_array($request->feedback)) {
169
- $request->feedback = implode(';', $request->feedback);
170
- }
171
- break;
172
- }
173
-
174
- // Removing non UTF8 characters from request, because non UTF8 or malformed characters break json_encode().
175
- foreach ($request as $param => $value) {
176
- if(is_array($request->$param) || is_string($request->$param))
177
- $request->$param = CleantalkHelper::removeNonUTF8($value);
178
- }
179
-
180
- $request->method_name = $method;
181
- $request->message = is_array($request->message) ? json_encode($request->message) : $request->message;
182
-
183
- // Wiping cleantalk's headers but, not for send_feedback
184
- if($request->method_name != 'send_feedback'){
185
-
186
- $ct_tmp = apache_request_headers();
187
-
188
- if(isset($ct_tmp['Cookie']))
189
- $cookie_name = 'Cookie';
190
- elseif(isset($ct_tmp['cookie']))
191
- $cookie_name = 'cookie';
192
- else
193
- $cookie_name = 'COOKIE';
194
-
195
- $ct_tmp[$cookie_name] = preg_replace(array(
196
- '/\s?ct_checkjs=[a-z0-9]*[^;]*;?/',
197
- '/\s?ct_timezone=.{0,1}\d{1,2}[^;]*;?/',
198
- '/\s?ct_pointer_data=.*5D[^;]*;?/',
199
- '/\s?apbct_timestamp=\d*[^;]*;?/',
200
- '/\s?apbct_site_landing_ts=\d*[^;]*;?/',
201
- '/\s?apbct_cookies_test=%7B.*%7D[^;]*;?/',
202
- '/\s?apbct_prev_referer=http.*?[^;]*;?/',
203
- '/\s?ct_cookies_test=.*?[^;]*;?/',
204
- '/\s?ct_ps_timestamp=.*?[^;]*;?/',
205
- '/\s?ct_fkp_timestamp=\d*?[^;]*;?/',
206
- '/\s?ct_sfw_pass_key=\d*?[^;]*;?/',
207
- '/\s?apbct_page_hits=\d*?[^;]*;?/',
208
- '/\s?apbct_visible_fields_count=\d*?[^;]*;?/',
209
- '/\s?apbct_visible_fields=%7B.*%7D[^;]*;?/',
210
- ), '', $ct_tmp[$cookie_name]);
211
- $request->all_headers = json_encode($ct_tmp);
212
- }
213
-
214
- return $request;
215
- }
216
-
217
- /**
218
- * Compress data and encode to base64
219
- * @param type string
220
- * @return string
221
- */
222
- private function compressData($data = null){
223
-
224
- if (strlen($data) > $this->dataMaxSise && function_exists('gzencode') && function_exists('base64_encode')){
225
-
226
- $localData = gzencode($data, $this->compressRate, FORCE_GZIP);
227
-
228
- if ($localData === false)
229
- return $data;
230
-
231
- $localData = base64_encode($localData);
232
-
233
- if ($localData === false)
234
- return $data;
235
-
236
- return $localData;
237
- }
238
-
239
- return $data;
240
- }
241
-
242
- /**
243
- * httpRequest
244
- * @param $msg
245
- * @return boolean|\CleantalkResponse
246
- */
247
- private function httpRequest($msg) {
248
-
249
- // Using current server without changing it
250
- $result = !empty($this->work_url) && ($this->server_changed + $this->server_ttl > time())
251
- ? $this->sendRequest($msg, $this->work_url, $this->server_timeout)
252
- : false;
253
-
254
- // Changing server
255
- if ($result === false || (is_object($result) && $result->errno != 0)) {
256
-
257
- // Split server url to parts
258
- preg_match("/^(https?:\/\/)([^\/:]+)(.*)/i", $this->server_url, $matches);
259
-
260
- $url_protocol = isset($matches[1]) ? $matches[1] : '';
261
- $url_host = isset($matches[2]) ? $matches[2] : '';
262
- $url_suffix = isset($matches[3]) ? $matches[3] : '';
263
-
264
- $servers = $this->get_servers_ip($url_host);
265
-
266
- // Loop until find work server
267
- foreach ($servers as $server) {
268
-
269
- $dns = CleantalkHelper::ip__resolve__cleantalks($server['ip']);
270
- if(!$dns)
271
- continue;
272
-
273
- $this->work_url = $url_protocol.$dns.$url_suffix;
274
- $this->server_ttl = $server['ttl'];
275
-
276
- $result = $this->sendRequest($msg, $this->work_url, $this->server_timeout);
277
-
278
- if ($result !== false && $result->errno === 0) {
279
- $this->server_change = true;
280
- break;
281
- }
282
- }
283
- }
284
-
285
- $response = new CleantalkResponse(null, $result);
286
-
287
- if (!empty($this->data_codepage) && $this->data_codepage !== 'UTF-8') {
288
- if (!empty($response->comment))
289
- $response->comment = $this->stringFromUTF8($response->comment, $this->data_codepage);
290
- if (!empty($response->errstr))
291
- $response->errstr = $this->stringFromUTF8($response->errstr, $this->data_codepage);
292
- if (!empty($response->sms_error_text))
293
- $response->sms_error_text = $this->stringFromUTF8($response->sms_error_text, $this->data_codepage);
294
- }
295
-
296
- return $response;
297
- }
298
-
299
- /**
300
- * Function DNS request
301
- * @param $host
302
- * @return array
303
- */
304
- public function get_servers_ip($host)
305
- {
306
- if (!isset($host))
307
- return null;
308
-
309
- $servers = array();
310
-
311
- // Get DNS records about URL
312
- if (function_exists('dns_get_record')) {
313
- $records = dns_get_record($host, DNS_A);
314
- if ($records !== FALSE) {
315
- foreach ($records as $server) {
316
- $servers[] = $server;
317
- }
318
- }
319
- }
320
-
321
- // Another try if first failed
322
- if (count($servers) == 0 && function_exists('gethostbynamel')) {
323
- $records = gethostbynamel($host);
324
- if ($records !== FALSE) {
325
- foreach ($records as $server) {
326
- $servers[] = array(
327
- "ip" => $server,
328
- "host" => $host,
329
- "ttl" => $this->server_ttl
330
- );
331
- }
332
- }
333
- }
334
-
335
- // If couldn't get records
336
- if (count($servers) == 0){
337
-
338
- $servers[] = array(
339
- "ip" => null,
340
- "host" => $host,
341
- "ttl" => $this->server_ttl
342
- );
343
-
344
- // If records recieved
345
- } else {
346
-
347
- $tmp = null;
348
- $fast_server_found = false;
349
-
350
- foreach ($servers as $server) {
351
-
352
- if ($fast_server_found) {
353
- $ping = $this->max_server_timeout;
354
- } else {
355
- $ping = $this->httpPing($server['ip']);
356
- $ping = $ping * 1000;
357
- }
358
-
359
- $tmp[$ping] = $server;
360
-
361
- $fast_server_found = $ping < $this->min_server_timeout ? true : false;
362
-
363
- }
364
-
365
- if (count($tmp)){
366
- ksort($tmp);
367
- $response = $tmp;
368
- }
369
-
370
- }
371
-
372
- return empty($response) ? null : $response;
373
- }
374
-
375
- /**
376
- * Function to check response time
377
- * param string
378
- * @return int
379
- */
380
- function httpPing($host){
381
-
382
- // Skip localhost ping cause it raise error at fsockopen.
383
- // And return minimun value
384
- if ($host == 'localhost')
385
- return 0.001;
386
-
387
- $starttime = microtime(true);
388
- $file = @fsockopen ($host, 80, $errno, $errstr, $this->max_server_timeout/1000);
389
- $stoptime = microtime(true);
390
-
391
- if (!$file) {
392
- $status = $this->max_server_timeout/1000; // Site is down
393
- } else {
394
- fclose($file);
395
- $status = ($stoptime - $starttime);
396
- $status = round($status, 4);
397
- }
398
-
399
- return $status;
400
- }
401
-
402
- /**
403
- * Send JSON request to servers
404
- * @param $msg
405
- * @return boolean|\CleantalkResponse
406
- */
407
- private function sendRequest($data = null, $url, $server_timeout = 3)
408
- {
409
- $original_args = func_get_args();
410
- // Convert to array
411
- $data = (array)json_decode(json_encode($data), true);
412
-
413
- //Cleaning from 'null' values
414
- $tmp_data = array();
415
- foreach($data as $key => $value){
416
- if($value !== null)
417
- $tmp_data[$key] = $value;
418
- }
419
- $data = $tmp_data;
420
- unset($key, $value, $tmp_data);
421
-
422
- // Convert to JSON
423
- $data = json_encode($data);
424
-
425
- if (isset($this->api_version)) {
426
- $url = $url . $this->api_version;
427
- }
428
-
429
- $result = false;
430
- $curl_error = null;
431
-
432
- // Switching to secure connection
433
- if ($this->ssl_on && !preg_match("/^https:/", $url)){
434
- $url = preg_replace("/^(http)/i", "$1s", $url);
435
- }
436
-
437
- if($this->use_bultin_api){
438
-
439
- $args = array(
440
- 'body' => $data,
441
- 'timeout' => $server_timeout,
442
- 'user-agent' => APBCT_AGENT.' '.get_bloginfo( 'url' ),
443
- );
444
-
445
- $result = wp_remote_post($url, $args);
446
-
447
- if( is_wp_error( $result ) ) {
448
- $errors = $result->get_error_message();
449
- $result = false;
450
- }else{
451
- $result = wp_remote_retrieve_body($result);
452
- }
453
-
454
- }else{
455
-
456
- if(function_exists('curl_init')) {
457
-
458
- $ch = curl_init();
459
-
460
- curl_setopt($ch, CURLOPT_URL, $url);
461
- curl_setopt($ch, CURLOPT_TIMEOUT, $server_timeout);
462
- curl_setopt($ch, CURLOPT_POST, 1);
463
- curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
464
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // receive server response ...
465
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); // resolve 'Expect: 100-continue' issue
466
- curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // see http://stackoverflow.com/a/23322368
467
-
468
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disabling CA cert verivication and
469
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Disabling common name verification
470
-
471
- if ($this->ssl_on && $this->ssl_path != '') {
472
- curl_setopt($ch, CURLOPT_CAINFO, $this->ssl_path);
473
- }
474
-
475
- $result = curl_exec($ch);
476
- if (!$result) {
477
- $curl_error = curl_error($ch);
478
- // Use SSL next time, if error occurs.
479
- if(!$this->ssl_on){
480
- $this->ssl_on = true;
481
- return $this->sendRequest($original_args[0], $original_args[1], $server_timeout);
482
- }
483
- }
484
-
485
- curl_close($ch);
486
- }
487
- }
488
-
489
- if (!$result) {
490
- $allow_url_fopen = ini_get('allow_url_fopen');
491
- if (function_exists('file_get_contents') && isset($allow_url_fopen) && $allow_url_fopen == '1') {
492
- $opts = array('http' =>
493
- array(
494
- 'method' => 'POST',
495
- 'header' => "Content-Type: text/html\r\n",
496
- 'content' => $data,
497
- 'timeout' => $server_timeout
498
- )
499
- );
500
-
501
- $context = stream_context_create($opts);
502
- $result = @file_get_contents($url, false, $context);
503
- }
504
- }
505
-
506
- if (!$result) {
507
- $response = null;
508
- $response['errno'] = 2;
509
- if (!CleantalkHelper::is_json($result)) {
510
- $response['errstr'] = 'Wrong server response format: ' . substr( $result, 100 );
511
- }
512
- else {
513
- $response['errstr'] = $curl_error
514
- ? sprintf( "CURL error: '%s'", $curl_error )
515
- : 'No CURL support compiled in';
516
- $response['errstr'] .= ' or disabled allow_url_fopen in php.ini.';
517
- }
518
- $response = json_decode( json_encode( $response ) );
519
-
520
- return $response;
521
- }
522
-
523
- $errstr = null;
524
- $response = json_decode($result);
525
- if ($result !== false && is_object($response)) {
526
- $response->errno = 0;
527
- $response->errstr = $errstr;
528
- } else {
529
- $errstr = 'Unknown response from ' . $url . '.' . ' ' . $result;
530
-
531
- $response = null;
532
- $response['errno'] = 1;
533
- $response['errstr'] = $errstr;
534
- $response = json_decode(json_encode($response));
535
- }
536
-
537
-
538
- return $response;
539
- }
540
- }
1
+ <?php
2
+
3
+ /**
4
+ * Cleantalk base class
5
+ *
6
+ * @version 2.2
7
+ * @package Cleantalk
8
+ * @subpackage Base
9
+ * @author Cleantalk team (welcome@cleantalk.org)
10
+ * @copyright (C) 2014 CleanTalk team (http://cleantalk.org)
11
+ * @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
12
+ * @see https://github.com/CleanTalk/php-antispam
13
+ *
14
+ */
15
+ class Cleantalk {
16
+
17
+ /*
18
+ * Use Wordpress built-in API
19
+ */
20
+ public $use_bultin_api = false;
21
+
22
+ /**
23
+ * Maximum data size in bytes
24
+ * @var int
25
+ */
26
+ private $dataMaxSise = 32768;
27
+
28
+ /**
29
+ * Data compression rate
30
+ * @var int
31
+ */
32
+ private $compressRate = 6;
33
+
34
+ /**
35
+ * Server connection timeout in seconds
36
+ * @var int
37
+ */
38
+ private $server_timeout = 15;
39
+
40
+ /**
41
+ * Cleantalk server url
42
+ * @var string
43
+ */
44
+ public $server_url = null;
45
+
46
+ /**
47
+ * Last work url
48
+ * @var string
49
+ */
50
+ public $work_url = null;
51
+
52
+ /**
53
+ * WOrk url ttl
54
+ * @var int
55
+ */
56
+ public $server_ttl = null;
57
+
58
+ /**
59
+ * Time wotk_url changer
60
+ * @var int
61
+ */
62
+ public $server_changed = null;
63
+
64
+ /**
65
+ * Flag is change server url
66
+ * @var bool
67
+ */
68
+ public $server_change = false;
69
+
70
+ /**
71
+ * Codepage of the data
72
+ * @var bool
73
+ */
74
+ public $data_codepage = null;
75
+
76
+ /**
77
+ * API version to use
78
+ * @var string
79
+ */
80
+ public $api_version = '/api2.0';
81
+
82
+ /**
83
+ * Use https connection to servers
84
+ * @var bool
85
+ */
86
+ public $ssl_on = false;
87
+
88
+ /**
89
+ * Path to SSL certificate
90
+ * @var string
91
+ */
92
+ public $ssl_path = '';
93
+
94
+ /**
95
+ * Minimal server response in miliseconds to catch the server
96
+ *
97
+ */
98
+ public $min_server_timeout = 50;
99
+
100
+ /**
101
+ * Maximal server response in miliseconds to catch the server
102
+ *
103
+ */
104
+ public $max_server_timeout = 1500;
105
+
106
+ /**
107
+ * Function checks whether it is possible to publish the message
108
+ *
109
+ * @param CleantalkRequest $request
110
+ *
111
+ * @return bool|CleantalkResponse
112
+ */
113
+ public function isAllowMessage(CleantalkRequest $request) {
114
+ $msg = $this->createMsg('check_message', $request);
115
+ return $this->httpRequest($msg);
116
+ }
117
+
118
+ /**
119
+ * Function checks whether it is possible to publish the message
120
+ *
121
+ * @param CleantalkRequest $request
122
+ *
123
+ * @return bool|CleantalkResponse
124
+ */
125
+ public function isAllowUser(CleantalkRequest $request) {
126
+ $msg = $this->createMsg('check_newuser', $request);
127
+ return $this->httpRequest($msg);
128
+ }
129
+
130
+ /**
131
+ * Function sends the results of manual moderation
132
+ *
133
+ * @param CleantalkRequest $request
134
+ *
135
+ * @return bool|CleantalkResponse
136
+ */
137
+ public function sendFeedback(CleantalkRequest $request) {
138
+ $msg = $this->createMsg('send_feedback', $request);
139
+ return $this->httpRequest($msg);
140
+ }
141
+
142
+ /**
143
+ * Create msg for cleantalk server
144
+ * @param string $method
145
+ * @param CleantalkRequest $request
146
+ * @return CleantalkRequest
147
+ */
148
+ private function createMsg($method, CleantalkRequest $request) {
149
+
150
+ switch ($method) {
151
+ case 'check_message':
152
+ // Convert strings to UTF8
153
+ $request->message = CleantalkHelper::toUTF8($request->message, $this->data_codepage);
154
+ $request->example = CleantalkHelper::toUTF8($request->example, $this->data_codepage);
155
+ $request->sender_email = CleantalkHelper::toUTF8($request->sender_email, $this->data_codepage);
156
+ $request->sender_nickname = CleantalkHelper::toUTF8($request->sender_nickname, $this->data_codepage);
157
+ $request->message = $this->compressData($request->message);
158
+ $request->example = $this->compressData($request->example);
159
+ break;
160
+
161
+ case 'check_newuser':
162
+ // Convert strings to UTF8
163
+ $request->sender_email = CleantalkHelper::toUTF8($request->sender_email, $this->data_codepage);
164
+ $request->sender_nickname = CleantalkHelper::toUTF8($request->sender_nickname, $this->data_codepage);
165
+ break;
166
+
167
+ case 'send_feedback':
168
+ if (is_array($request->feedback)) {
169
+ $request->feedback = implode(';', $request->feedback);
170
+ }
171
+ break;
172
+ }
173
+
174
+ // Removing non UTF8 characters from request, because non UTF8 or malformed characters break json_encode().
175
+ foreach ($request as $param => $value) {
176
+ if(is_array($request->$param) || is_string($request->$param))
177
+ $request->$param = CleantalkHelper::removeNonUTF8($value);
178
+ }
179
+
180
+ $request->method_name = $method;
181
+ $request->message = is_array($request->message) ? json_encode($request->message) : $request->message;
182
+
183
+ // Wiping cleantalk's headers but, not for send_feedback
184
+ if($request->method_name != 'send_feedback'){
185
+
186
+ $ct_tmp = apache_request_headers();
187
+
188
+ if(isset($ct_tmp['Cookie']))
189
+ $cookie_name = 'Cookie';
190
+ elseif(isset($ct_tmp['cookie']))
191
+ $cookie_name = 'cookie';
192
+ else
193
+ $cookie_name = 'COOKIE';
194
+
195
+ $ct_tmp[$cookie_name] = preg_replace(array(
196
+ '/\s?ct_checkjs=[a-z0-9]*[^;]*;?/',
197
+ '/\s?ct_timezone=.{0,1}\d{1,2}[^;]*;?/',
198
+ '/\s?ct_pointer_data=.*5D[^;]*;?/',
199
+ '/\s?apbct_timestamp=\d*[^;]*;?/',
200
+ '/\s?apbct_site_landing_ts=\d*[^;]*;?/',
201
+ '/\s?apbct_cookies_test=%7B.*%7D[^;]*;?/',
202
+ '/\s?apbct_prev_referer=http.*?[^;]*;?/',
203
+ '/\s?ct_cookies_test=.*?[^;]*;?/',
204
+ '/\s?ct_ps_timestamp=.*?[^;]*;?/',
205
+ '/\s?ct_fkp_timestamp=\d*?[^;]*;?/',
206
+ '/\s?ct_sfw_pass_key=\d*?[^;]*;?/',
207
+ '/\s?apbct_page_hits=\d*?[^;]*;?/',
208
+ '/\s?apbct_visible_fields_count=\d*?[^;]*;?/',
209
+ '/\s?apbct_visible_fields=%7B.*%7D[^;]*;?/',
210
+ ), '', $ct_tmp[$cookie_name]);
211
+ $request->all_headers = json_encode($ct_tmp);
212
+ }
213
+
214
+ return $request;
215
+ }
216
+
217
+ /**
218
+ * Compress data and encode to base64
219
+ * @param type string
220
+ * @return string
221
+ */
222
+ private function compressData($data = null){
223
+
224
+ if (strlen($data) > $this->dataMaxSise && function_exists('\gzencode') && function_exists('base64_encode')){
225
+
226
+ $localData = \gzencode($data, $this->compressRate, FORCE_GZIP);
227
+
228
+ if ($localData === false)
229
+ return $data;
230
+
231
+ $localData = base64_encode($localData);
232
+
233
+ if ($localData === false)
234
+ return $data;
235
+
236
+ return $localData;
237
+ }
238
+
239
+ return $data;
240
+ }
241
+
242
+ /**
243
+ * httpRequest
244
+ * @param $msg
245
+ * @return boolean|\CleantalkResponse
246
+ */
247
+ private function httpRequest($msg) {
248
+
249
+ // Using current server without changing it
250
+ $result = !empty($this->work_url) && ($this->server_changed + $this->server_ttl > time())
251
+ ? $this->sendRequest($msg, $this->work_url, $this->server_timeout)
252
+ : false;
253
+
254
+ // Changing server
255
+ if ($result === false || (is_object($result) && $result->errno != 0)) {
256
+
257
+ // Split server url to parts
258
+ preg_match("/^(https?:\/\/)([^\/:]+)(.*)/i", $this->server_url, $matches);
259
+
260
+ $url_protocol = isset($matches[1]) ? $matches[1] : '';
261
+ $url_host = isset($matches[2]) ? $matches[2] : '';
262
+ $url_suffix = isset($matches[3]) ? $matches[3] : '';
263
+
264
+ $servers = $this->get_servers_ip($url_host);
265
+
266
+ // Loop until find work server
267
+ foreach ($servers as $server) {
268
+
269
+ $dns = CleantalkHelper::ip__resolve__cleantalks($server['ip']);
270
+ if(!$dns)
271
+ continue;
272
+
273
+ $this->work_url = $url_protocol.$dns.$url_suffix;
274
+ $this->server_ttl = $server['ttl'];
275
+
276
+ $result = $this->sendRequest($msg, $this->work_url, $this->server_timeout);
277
+
278
+ if ($result !== false && $result->errno === 0) {
279
+ $this->server_change = true;
280
+ break;
281
+ }
282
+ }
283
+ }
284
+
285
+ $response = new CleantalkResponse(null, $result);
286
+
287
+ if (!empty($this->data_codepage) && $this->data_codepage !== 'UTF-8') {
288
+ if (!empty($response->comment))
289
+ $response->comment = $this->stringFromUTF8($response->comment, $this->data_codepage);
290
+ if (!empty($response->errstr))
291
+ $response->errstr = $this->stringFromUTF8($response->errstr, $this->data_codepage);
292
+ if (!empty($response->sms_error_text))
293
+ $response->sms_error_text = $this->stringFromUTF8($response->sms_error_text, $this->data_codepage);
294
+ }
295
+
296
+ return $response;
297
+ }
298
+
299
+ /**
300
+ * Function DNS request
301
+ * @param $host
302
+ * @return array
303
+ */
304
+ public function get_servers_ip($host)
305
+ {
306
+ if (!isset($host))
307
+ return null;
308
+
309
+ $servers = array();
310
+
311
+ // Get DNS records about URL
312
+ if (function_exists('dns_get_record')) {
313
+ $records = dns_get_record($host, DNS_A);
314
+ if ($records !== FALSE) {
315
+ foreach ($records as $server) {
316
+ $servers[] = $server;
317
+ }
318
+ }
319
+ }
320
+
321
+ // Another try if first failed
322
+ if (count($servers) == 0 && function_exists('gethostbynamel')) {
323
+ $records = gethostbynamel($host);
324
+ if ($records !== FALSE) {
325
+ foreach ($records as $server) {
326
+ $servers[] = array(
327
+ "ip" => $server,
328
+ "host" => $host,
329
+ "ttl" => $this->server_ttl
330
+ );
331
+ }
332
+ }
333
+ }
334
+
335
+ // If couldn't get records
336
+ if (count($servers) == 0){
337
+
338
+ $servers[] = array(
339
+ "ip" => null,
340
+ "host" => $host,
341
+ "ttl" => $this->server_ttl
342
+ );
343
+
344
+ // If records recieved
345
+ } else {
346
+
347
+ $tmp = null;
348
+ $fast_server_found = false;
349
+
350
+ foreach ($servers as $server) {
351
+
352
+ if ($fast_server_found) {
353
+ $ping = $this->max_server_timeout;
354
+ } else {
355
+ $ping = $this->httpPing($server['ip']);
356
+ $ping = $ping * 1000;
357
+ }
358
+
359
+ $tmp[$ping] = $server;
360
+
361
+ $fast_server_found = $ping < $this->min_server_timeout ? true : false;
362
+
363
+ }
364
+
365
+ if (count($tmp)){
366
+ ksort($tmp);
367
+ $response = $tmp;
368
+ }
369
+
370
+ }
371
+
372
+ return empty($response) ? null : $response;
373
+ }
374
+
375
+ /**
376
+ * Function to check response time
377
+ * param string
378
+ * @return int
379
+ */
380
+ function httpPing($host){
381
+
382
+ // Skip localhost ping cause it raise error at fsockopen.
383
+ // And return minimun value
384
+ if ($host == 'localhost')
385
+ return 0.001;
386
+
387
+ $starttime = microtime(true);
388
+ $file = @fsockopen ($host, 80, $errno, $errstr, $this->max_server_timeout/1000);
389
+ $stoptime = microtime(true);
390
+
391
+ if (!$file) {
392
+ $status = $this->max_server_timeout/1000; // Site is down
393
+ } else {
394
+ fclose($file);
395
+ $status = ($stoptime - $starttime);
396
+ $status = round($status, 4);
397
+ }
398
+
399
+ return $status;
400
+ }
401
+
402
+ /**
403
+ * Send JSON request to servers
404
+ * @param $msg
405
+ * @return boolean|\CleantalkResponse
406
+ */
407
+ private function sendRequest($data = null, $url, $server_timeout = 3)
408
+ {
409
+ $original_args = func_get_args();
410
+ // Convert to array
411
+ $data = (array)json_decode(json_encode($data), true);
412
+
413
+ //Cleaning from 'null' values
414
+ $tmp_data = array();
415
+ foreach($data as $key => $value){
416
+ if($value !== null)
417
+ $tmp_data[$key] = $value;
418
+ }
419
+ $data = $tmp_data;
420
+ unset($key, $value, $tmp_data);
421
+
422
+ // Convert to JSON
423
+ $data = json_encode($data);
424
+
425
+ if (isset($this->api_version)) {
426
+ $url = $url . $this->api_version;
427
+ }
428
+
429
+ $result = false;
430
+ $curl_error = null;
431
+
432
+ // Switching to secure connection
433
+ if ($this->ssl_on && !preg_match("/^https:/", $url)){
434
+ $url = preg_replace("/^(http)/i", "$1s", $url);
435
+ }
436
+
437
+ if($this->use_bultin_api){
438
+
439
+ $args = array(
440
+ 'body' => $data,
441
+ 'timeout' => $server_timeout,
442
+ 'user-agent' => APBCT_AGENT.' '.get_bloginfo( 'url' ),
443
+ );
444
+
445
+ $result = wp_remote_post($url, $args);
446
+
447
+ if( is_wp_error( $result ) ) {
448
+ $errors = $result->get_error_message();
449
+ $result = false;
450
+ }else{
451
+ $result = wp_remote_retrieve_body($result);
452
+ }
453
+
454
+ }else{
455
+
456
+ if(function_exists('curl_init')) {
457
+
458
+ $ch = curl_init();
459
+
460
+ curl_setopt($ch, CURLOPT_URL, $url);
461
+ curl_setopt($ch, CURLOPT_TIMEOUT, $server_timeout);
462
+ curl_setopt($ch, CURLOPT_POST, 1);
463
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
464
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // receive server response ...
465
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); // resolve 'Expect: 100-continue' issue
466
+ curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // see http://stackoverflow.com/a/23322368
467
+
468
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disabling CA cert verivication and
469
+ curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // Disabling common name verification
470
+
471
+ if ($this->ssl_on && $this->ssl_path != '') {
472
+ curl_setopt($ch, CURLOPT_CAINFO, $this->ssl_path);
473
+ }
474
+
475
+ $result = curl_exec($ch);
476
+ if (!$result) {
477
+ $curl_error = curl_error($ch);
478
+ // Use SSL next time, if error occurs.
479
+ if(!$this->ssl_on){
480
+ $this->ssl_on = true;
481
+ return $this->sendRequest($original_args[0], $original_args[1], $server_timeout);
482
+ }
483
+ }
484
+
485
+ curl_close($ch);
486
+ }
487
+ }
488
+
489
+ if (!$result) {
490
+ $allow_url_fopen = ini_get('allow_url_fopen');
491
+ if (function_exists('file_get_contents') && isset($allow_url_fopen) && $allow_url_fopen == '1') {
492
+ $opts = array('http' =>
493
+ array(
494
+ 'method' => 'POST',
495
+ 'header' => "Content-Type: text/html\r\n",
496
+ 'content' => $data,
497
+ 'timeout' => $server_timeout
498
+ )
499
+ );
500
+
501
+ $context = stream_context_create($opts);
502
+ $result = @file_get_contents($url, false, $context);
503
+ }
504
+ }
505
+
506
+ if (!$result) {
507
+ $response = null;
508
+ $response['errno'] = 2;
509
+ if (!CleantalkHelper::is_json($result)) {
510
+ $response['errstr'] = 'Wrong server response format: ' . substr( $result, 100 );
511
+ }
512
+ else {
513
+ $response['errstr'] = $curl_error
514
+ ? sprintf( "CURL error: '%s'", $curl_error )
515
+ : 'No CURL support compiled in';
516
+ $response['errstr'] .= ' or disabled allow_url_fopen in php.ini.';
517
+ }
518
+ $response = json_decode( json_encode( $response ) );
519
+
520
+ return $response;
521
+ }
522
+
523
+ $errstr = null;
524
+ $response = json_decode($result);
525
+ if ($result !== false && is_object($response)) {
526
+ $response->errno = 0;
527
+ $response->errstr = $errstr;
528
+ } else {
529
+ $errstr = 'Unknown response from ' . $url . '.' . ' ' . $result;
530
+
531
+ $response = null;
532
+ $response['errno'] = 1;
533
+ $response['errstr'] = $errstr;
534
+ $response = json_decode(json_encode($response));
535
+ }
536
+
537
+
538
+ return $response;
539
+ }
540
+ }
lib/Cleantalk/Antispam/SFW.php CHANGED
@@ -122,24 +122,40 @@ class SFW
122
  $needles = array_unique( $needles );
123
 
124
  $query = "SELECT
125
- COUNT(network) AS cnt, network, mask
126
- FROM ".$this->data_table."
127
- WHERE network IN (". implode( ',', $needles ) .");";
 
 
128
  $this->db->set_query($query)->fetch();
129
 
130
- if($this->db->result['cnt']){
131
- $this->pass = false;
132
- $this->blocked_ips[$origin] = array(
133
- 'ip' => $current_ip,
134
- 'network' => long2ip($this->db->result['network']),
135
- 'mask' => Helper::ip__mask__long_to_number($this->db->result['mask']),
136
- );
137
- $this->all_ips[$origin] = array(
138
- 'ip' => $current_ip,
139
- 'network' => long2ip($this->db->result['network']),
140
- 'mask' => Helper::ip__mask__long_to_number($this->db->result['mask']),
141
- 'status' => -1,
142
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  }else{
144
  $this->passed_ips[$origin] = array(
145
  'ip' => $current_ip,
@@ -259,16 +275,16 @@ class SFW
259
 
260
  if (preg_match('/multifiles/', $result['file_url'])) {
261
 
262
- $gf = gzopen($result['file_url'], 'rb');
263
 
264
  if ($gf) {
265
 
266
  $file_urls = array();
267
 
268
- while(!gzeof($gf))
269
- $file_urls[] = trim(gzgets($gf, 1024));
270
 
271
- gzclose($gf);
272
 
273
  return Helper::http__request(
274
  get_option('siteurl'),
@@ -304,19 +320,19 @@ class SFW
304
 
305
  if(Helper::http__request($file_url, array(), 'get_code') === 200){ // Check if it's there
306
 
307
- $gf = gzopen($file_url, 'rb');
308
 
309
  if($gf){
310
 
311
- if(!gzeof($gf)){
312
 
313
- for($count_result = 0; !gzeof($gf); ){
314
 
315
  $query = "INSERT INTO ".$this->data_table." VALUES %s";
316
 
317
- for($i=0, $values = array(); APBCT_WRITE_LIMIT !== $i && !gzeof($gf); $i++, $count_result++){
318
 
319
- $entry = trim(gzgets($gf, 1024));
320
 
321
  if(empty($entry)) continue;
322
 
@@ -325,10 +341,11 @@ class SFW
325
  // Cast result to int
326
  $ip = preg_replace('/[^\d]*/', '', $entry[0]);
327
  $mask = preg_replace('/[^\d]*/', '', $entry[1]);
 
328
 
329
  if(!$ip || !$mask) continue;
330
 
331
- $values[] = '('. $ip .','. $mask .')';
332
 
333
  }
334
 
@@ -339,7 +356,7 @@ class SFW
339
 
340
  }
341
 
342
- gzclose($gf);
343
  return $count_result;
344
 
345
  }else
122
  $needles = array_unique( $needles );
123
 
124
  $query = "SELECT
125
+ network, mask, status
126
+ FROM " . $this->data_table . "
127
+ WHERE network IN (". implode( ',', $needles ) .")
128
+ AND network = " . $current_ip_v4 . " & mask
129
+ ORDER BY status DESC LIMIT 1;";
130
  $this->db->set_query($query)->fetch();
131
 
132
+ if( ! empty( $this->db->result ) ){
133
+
134
+ if ( 1 == $this->db->result['status'] ) {
135
+ // It is the White Listed network - will be passed.
136
+ $this->passed_ips[$origin] = array(
137
+ 'ip' => $current_ip,
138
+ );
139
+ $this->all_ips[$origin] = array(
140
+ 'ip' => $current_ip,
141
+ 'status' => 1,
142
+ );
143
+ break;
144
+ } else {
145
+ $this->pass = false;
146
+ $this->blocked_ips[$origin] = array(
147
+ 'ip' => $current_ip,
148
+ 'network' => long2ip($this->db->result['network']),
149
+ 'mask' => Helper::ip__mask__long_to_number($this->db->result['mask']),
150
+ );
151
+ $this->all_ips[$origin] = array(
152
+ 'ip' => $current_ip,
153
+ 'network' => long2ip($this->db->result['network']),
154
+ 'mask' => Helper::ip__mask__long_to_number($this->db->result['mask']),
155
+ 'status' => -1,
156
+ );
157
+ }
158
+
159
  }else{
160
  $this->passed_ips[$origin] = array(
161
  'ip' => $current_ip,
275
 
276
  if (preg_match('/multifiles/', $result['file_url'])) {
277
 
278
+ $gf = \gzopen($result['file_url'], 'rb');
279
 
280
  if ($gf) {
281
 
282
  $file_urls = array();
283
 
284
+ while( ! \gzeof($gf) )
285
+ $file_urls[] = trim( \gzgets($gf, 1024) );
286
 
287
+ \gzclose($gf);
288
 
289
  return Helper::http__request(
290
  get_option('siteurl'),
320
 
321
  if(Helper::http__request($file_url, array(), 'get_code') === 200){ // Check if it's there
322
 
323
+ $gf = \gzopen($file_url, 'rb');
324
 
325
  if($gf){
326
 
327
+ if( ! \gzeof($gf) ){
328
 
329
+ for( $count_result = 0; ! \gzeof($gf); ){
330
 
331
  $query = "INSERT INTO ".$this->data_table." VALUES %s";
332
 
333
+ for($i=0, $values = array(); APBCT_WRITE_LIMIT !== $i && ! \gzeof($gf); $i++, $count_result++){
334
 
335
+ $entry = trim( \gzgets($gf, 1024) );
336
 
337
  if(empty($entry)) continue;
338
 
341
  // Cast result to int
342
  $ip = preg_replace('/[^\d]*/', '', $entry[0]);
343
  $mask = preg_replace('/[^\d]*/', '', $entry[1]);
344
+ $private = isset($entry[2]) ? $entry[2] : 0;
345
 
346
  if(!$ip || !$mask) continue;
347
 
348
+ $values[] = '('. $ip .','. $mask .','. $private .')';
349
 
350
  }
351
 
356
 
357
  }
358
 
359
+ \gzclose($gf);
360
  return $count_result;
361
 
362
  }else
lib/CleantalkSFW.php CHANGED
@@ -112,9 +112,9 @@ class CleantalkSFW extends Cleantalk\Antispam\SFW
112
  $debug = '<h1>IP and Networks</h1>'
113
  . var_export($this->all_ips, true)
114
  .'<h1>Blocked IPs</h1>'
115
- . var_export($this->passed_ips, true)
116
- .'<h1>Passed IPs</h1>'
117
  . var_export($this->blocked_ips, true)
 
 
118
  . '<h1>Headers</h1>'
119
  . var_export(apache_request_headers(), true)
120
  . '<h1>REMOTE_ADDR</h1>'
112
  $debug = '<h1>IP and Networks</h1>'
113
  . var_export($this->all_ips, true)
114
  .'<h1>Blocked IPs</h1>'
 
 
115
  . var_export($this->blocked_ips, true)
116
+ .'<h1>Passed IPs</h1>'
117
+ . var_export($this->passed_ips, true)
118
  . '<h1>Headers</h1>'
119
  . var_export(apache_request_headers(), true)
120
  . '<h1>REMOTE_ADDR</h1>'
readme.txt CHANGED
@@ -4,14 +4,14 @@ Tags: spam, antispam, woocommerce, comments, firewall
4
  Requires at least: 3.0
5
  Tested up to: 5.4
6
  Requires PHP: 5.4
7
- Stable tag: 5.137.1
8
  License: GPLv2
9
 
10
  Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
11
 
12
  == Description ==
13
 
14
- **Supports: Contact Form 7, Contact Form by WPForms, Ninja Forms, Gravity Forms, MailChimp, Formidable forms, WooCommerce, JetPack comments and contact form, BuddyPress, bbPress, S2Member, MailPoet, wpDiscuz, any WordPress registrations & contact forms and themes. Just setup and forget the spam!**
15
 
16
  No CAPTCHA, no questions, no animal counting, no puzzles, no math and no spam bots. Universal AntiSpam plugin.
17
 
@@ -574,6 +574,21 @@ If your website has forms that send data to external sources, you can enable opt
574
 
575
  == Changelog ==
576
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
577
  = 5.137.1 April 29 2020 =
578
  * Fix: Call to undefined function wp_get_current_user().
579
  * Fix: "Capture buffer" setting, YOAST sitemap.
@@ -1600,7 +1615,7 @@ If your website has forms that send data to external sources, you can enable opt
1600
  = 5.40.2 2016-05-11 =
1601
  * Improved account status check logic.
1602
  * Fixed issue with double anti-spam tests for FastSecure contact forms.
1603
- * Fixed issue with nulled JavaScript variables assigned from backend. This issue might me occured on standart WordPress registration form and with failed JavaScript spam test.
1604
  * Fixed issue with session_start() with PHP sessions stored in memcache.
1605
 
1606
  = 5.40.1 2016-04-28 =
@@ -3081,7 +3096,7 @@ If your website has forms that send data to external sources, you can enable opt
3081
  = 5.40.2 2016-05-11 =
3082
  * Improved account status check logic.
3083
  * Fixed issue with double anti-spam tests for FastSecure contact forms.
3084
- * Fixed issue with nulled JavaScript variables assigned from backend. This issue might me occured on standart WordPress registration form and with failed JavaScript spam test.
3085
  * Fixed issue with session_start() with PHP sessions stored in memcache.
3086
 
3087
  = 5.40.1 2016-04-28 =
4
  Requires at least: 3.0
5
  Tested up to: 5.4
6
  Requires PHP: 5.4
7
+ Stable tag: 5.138
8
  License: GPLv2
9
 
10
  Spam protection, anti-spam, firewall, premium plugin. No spam comments & users, no spam contact form & WooCommerce anti-spam.
11
 
12
  == Description ==
13
 
14
+ **Supports: Contact Form 7, Contact Form by WPForms, Ninja Forms, Gravity Forms, MailChimp, Formidable forms, WooCommerce, JetPack comments and contact form, BuddyPress, bbPress, S2Member, MailPoet, wpDiscuz, any WordPress registrations & contact forms and themes. Just set up and forget the spam!**
15
 
16
  No CAPTCHA, no questions, no animal counting, no puzzles, no math and no spam bots. Universal AntiSpam plugin.
17
 
574
 
575
  == Changelog ==
576
 
577
+ = 5.138 May 14 2020 =
578
+ * Fix: Scan users fixed.
579
+ * Fix: Notice fixed (Creating default object from empty value).
580
+ * Fix: Creating table for SFW data for child blogs on WPMS.
581
+ * Upd: SFW query optimized.
582
+ * Fix: Adding cleantalk_spamscan_logs table for each blog when updating from 5.137.2.
583
+ * New: White Lists for SFW implemented.
584
+ * Fix: correct comments checking status text.
585
+ * Fix: Users scan. Reducing memory load.
586
+ * Fix: "Capture Buffer" settings. The issue with YoastSEO.
587
+ * Fix: SFW query fixed.
588
+ * Fix: SFW die page fixed.
589
+ * Fix: Membermouse API false positives.
590
+ * Fix: gz*() functions calling from global namespace for now.
591
+
592
  = 5.137.1 April 29 2020 =
593
  * Fix: Call to undefined function wp_get_current_user().
594
  * Fix: "Capture buffer" setting, YOAST sitemap.
1615
  = 5.40.2 2016-05-11 =
1616
  * Improved account status check logic.
1617
  * Fixed issue with double anti-spam tests for FastSecure contact forms.
1618
+ * Fixed issue with nulled JavaScript variables assigned from backend. This issue might me occurred on standart WordPress registration form and with failed JavaScript spam test.
1619
  * Fixed issue with session_start() with PHP sessions stored in memcache.
1620
 
1621
  = 5.40.1 2016-04-28 =
3096
  = 5.40.2 2016-05-11 =
3097
  * Improved account status check logic.
3098
  * Fixed issue with double anti-spam tests for FastSecure contact forms.
3099
+ * Fixed issue with nulled JavaScript variables assigned from backend. This issue might me occurred on standart WordPress registration form and with failed JavaScript spam test.
3100
  * Fixed issue with session_start() with PHP sessions stored in memcache.
3101
 
3102
  = 5.40.1 2016-04-28 =