Disable Comments - Version 2.3.0

Version Description

Download this release

Release Info

Developer wpdevteam
Plugin Icon 128x128 Disable Comments
Version 2.3.0
Comparing to
See all releases

Code changes from version 2.2.4 to 2.3.0

assets/js/disable-comments-settings-scripts.js CHANGED
@@ -216,7 +216,7 @@ jQuery(document).ready(function ($) {
216
  "#delete__post__types .delete__checklist__item, #extradeletetypes"
217
  );
218
  var toggle_ct_bits = jQuery("#listofdeletecommenttypes");
219
- if (jQuery("#delete_everywhere").is(":checked")) {
220
  toggle_pt_bits
221
  .css("opacity", ".3")
222
  .find(":input")
@@ -249,7 +249,7 @@ jQuery(document).ready(function ($) {
249
  }
250
 
251
  jQuery(
252
- "#delete_everywhere, #selected_delete_types, #selected_delete_comment_types"
253
  ).on('change', function () {
254
  delete_comments_uihelper();
255
  });
216
  "#delete__post__types .delete__checklist__item, #extradeletetypes"
217
  );
218
  var toggle_ct_bits = jQuery("#listofdeletecommenttypes");
219
+ if (jQuery("#delete_everywhere, #delete_spam").is(":checked")) {
220
  toggle_pt_bits
221
  .css("opacity", ".3")
222
  .find(":input")
249
  }
250
 
251
  jQuery(
252
+ "#delete_everywhere, #delete_spam, #selected_delete_types, #selected_delete_comment_types"
253
  ).on('change', function () {
254
  delete_comments_uihelper();
255
  });
assets/js/pagination.min.js CHANGED
@@ -20,6 +20,21 @@
20
  var pluginHookMethod = 'addHook';
21
 
22
  var eventPrefix = '__pagination-';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
 
24
  // Conflict, use backup
25
  if ($.fn.pagination) {
@@ -236,15 +251,15 @@
236
  var goButton = '<input type="button" class="J-paginationjs-go-button" value="' + goButtonText + '">';
237
  var formattedString;
238
 
239
- var formatNavigator = $.isFunction(attributes.formatNavigator) ? attributes.formatNavigator(currentPage, totalPage, totalNumber) : attributes.formatNavigator;
240
- var formatGoInput = $.isFunction(attributes.formatGoInput) ? attributes.formatGoInput(goInput, currentPage, totalPage, totalNumber) : attributes.formatGoInput;
241
- var formatGoButton = $.isFunction(attributes.formatGoButton) ? attributes.formatGoButton(goButton, currentPage, totalPage, totalNumber) : attributes.formatGoButton;
242
 
243
- var autoHidePrevious = $.isFunction(attributes.autoHidePrevious) ? attributes.autoHidePrevious() : attributes.autoHidePrevious;
244
- var autoHideNext = $.isFunction(attributes.autoHideNext) ? attributes.autoHideNext() : attributes.autoHideNext;
245
 
246
- var header = $.isFunction(attributes.header) ? attributes.header(currentPage, totalPage, totalNumber) : attributes.header;
247
- var footer = $.isFunction(attributes.footer) ? attributes.footer(currentPage, totalPage, totalNumber) : attributes.footer;
248
 
249
  // Whether to display header
250
  if (header) {
@@ -385,7 +400,7 @@
385
  postData[alias.pageSize ? alias.pageSize : 'pageSize'] = pageSize;
386
  postData[alias.pageNumber ? alias.pageNumber : 'pageNumber'] = pageNumber;
387
 
388
- var ajaxParams = $.isFunction(attributes.ajax) ? attributes.ajax() : attributes.ajax;
389
  var formatAjaxParams = {
390
  type: 'get',
391
  cache: false,
@@ -468,9 +483,9 @@
468
  var self = this;
469
  var model = self.model;
470
 
471
- if ($.isFunction(customCallback)) {
472
  customCallback(data, model);
473
- } else if ($.isFunction(attributes.callback)) {
474
  attributes.callback(data, model);
475
  }
476
  },
@@ -587,7 +602,7 @@
587
 
588
  if (typeof locator === 'string') {
589
  result = locator;
590
- } else if ($.isFunction(locator)) {
591
  result = locator();
592
  } else {
593
  throwError('"locator" is incorrect. (String | Function)');
@@ -629,7 +644,7 @@
629
  callback(attributes.dataSource = self.filterDataByLocator(dataSource));
630
  } else if (Helpers.isArray(dataSource)) {
631
  callback(attributes.dataSource = dataSource);
632
- } else if ($.isFunction(dataSource)) {
633
  attributes.dataSource(function(data) {
634
  if (!Helpers.isArray(data)) {
635
  throwError('The parameter of "done" Function should be an Array.');
@@ -653,7 +668,7 @@
653
  var args = Array.prototype.slice.apply(arguments);
654
  args.shift();
655
 
656
- if (attributes[hook] && $.isFunction(attributes[hook])) {
657
  if (attributes[hook].apply(global, args) === false) {
658
  result = false;
659
  }
@@ -676,11 +691,11 @@
676
 
677
  // Go to specified page number
678
  container.on(eventPrefix + 'go', function(event, pageNumber, done) {
679
- pageNumber = parseInt($.trim(pageNumber));
680
 
681
  if (!pageNumber) return;
682
 
683
- if (!$.isNumeric(pageNumber)) {
684
  throwError('"pageNumber" is incorrect. (Number)');
685
  }
686
 
@@ -688,9 +703,9 @@
688
  });
689
 
690
  // Page number button click
691
- el.delegate('.J-paginationjs-page', 'click', function(event) {
692
  var current = $(event.currentTarget);
693
- var pageNumber = $.trim(current.attr('data-num'));
694
 
695
  if (!pageNumber || current.hasClass(attributes.disableClassName) || current.hasClass(attributes.activeClassName)) return;
696
 
@@ -706,9 +721,9 @@
706
  });
707
 
708
  // Previous button click
709
- el.delegate('.J-paginationjs-previous', 'click', function(event) {
710
  var current = $(event.currentTarget);
711
- var pageNumber = $.trim(current.attr('data-num'));
712
 
713
  if (!pageNumber || current.hasClass(attributes.disableClassName)) return;
714
 
@@ -724,9 +739,9 @@
724
  });
725
 
726
  // Next button click
727
- el.delegate('.J-paginationjs-next', 'click', function(event) {
728
  var current = $(event.currentTarget);
729
- var pageNumber = $.trim(current.attr('data-num'));
730
 
731
  if (!pageNumber || current.hasClass(attributes.disableClassName)) return;
732
 
@@ -742,7 +757,7 @@
742
  });
743
 
744
  // Go button click
745
- el.delegate('.J-paginationjs-go-button', 'click', function(event) {
746
  var pageNumber = $('.J-paginationjs-go-pagenumber', el).val();
747
 
748
  // Before Go button clicked
@@ -755,7 +770,7 @@
755
  });
756
 
757
  // go input enter
758
- el.delegate('.J-paginationjs-go-pagenumber', 'keyup', function(event) {
759
  if (event.which === 13) {
760
  var pageNumber = $(event.currentTarget).val();
761
 
@@ -828,7 +843,7 @@
828
  // Pagination has been initialized
829
  if (container.data('pagination') && container.data('pagination').initialized === true) {
830
  // Handle events
831
- if ($.isNumeric(options)) {
832
  // eg: container.pagination(5)
833
  container.trigger.call(this, eventPrefix + 'go', options, arguments[1]);
834
  return this;
@@ -1000,7 +1015,7 @@
1000
  throwError('Missing argument.');
1001
  }
1002
 
1003
- if (!$.isFunction(callback)) {
1004
  throwError('callback must be a function.');
1005
  }
1006
 
@@ -1063,23 +1078,23 @@
1063
  if (args.totalNumberLocator === undefined) {
1064
  if (args.totalNumber === undefined) {
1065
  throwError('"totalNumber" is required.');
1066
- } else if (!$.isNumeric(args.totalNumber)) {
1067
  throwError('"totalNumber" is incorrect. (Number)');
1068
  }
1069
  } else {
1070
- if (!$.isFunction(args.totalNumberLocator)) {
1071
  throwError('"totalNumberLocator" should be a Function.');
1072
  }
1073
  }
1074
  } else if (Helpers.isObject(args.dataSource)) {
1075
  if (typeof args.locator === 'undefined') {
1076
  throwError('"dataSource" is an Object, please specify "locator".');
1077
- } else if (typeof args.locator !== 'string' && !$.isFunction(args.locator)) {
1078
  throwError('' + args.locator + ' is incorrect. (String | Function)');
1079
  }
1080
  }
1081
 
1082
- if (args.formatResult !== undefined && !$.isFunction(args.formatResult)) {
1083
  throwError('"formatResult" should be a Function.');
1084
  }
1085
  }
20
  var pluginHookMethod = 'addHook';
21
 
22
  var eventPrefix = '__pagination-';
23
+ var isFunction = function(func){
24
+ return typeof func === "function";
25
+ }
26
+ var isNumeric = function( obj ) {
27
+ // As of jQuery 3.0, isNumeric is limited to
28
+ // strings and numbers (primitives or objects)
29
+ // that can be coerced to finite numbers (gh-2662)
30
+ var type = typeof obj;
31
+ return ( type === "number" || type === "string" ) &&
32
+
33
+ // parseFloat NaNs numeric-cast false positives ("")
34
+ // ...but misinterprets leading-number strings, e.g. hex literals ("0x...")
35
+ // subtraction forces infinities to NaN
36
+ !isNaN( obj - parseFloat( obj ) );
37
+ };
38
 
39
  // Conflict, use backup
40
  if ($.fn.pagination) {
251
  var goButton = '<input type="button" class="J-paginationjs-go-button" value="' + goButtonText + '">';
252
  var formattedString;
253
 
254
+ var formatNavigator = isFunction(attributes.formatNavigator) ? attributes.formatNavigator(currentPage, totalPage, totalNumber) : attributes.formatNavigator;
255
+ var formatGoInput = isFunction(attributes.formatGoInput) ? attributes.formatGoInput(goInput, currentPage, totalPage, totalNumber) : attributes.formatGoInput;
256
+ var formatGoButton = isFunction(attributes.formatGoButton) ? attributes.formatGoButton(goButton, currentPage, totalPage, totalNumber) : attributes.formatGoButton;
257
 
258
+ var autoHidePrevious = isFunction(attributes.autoHidePrevious) ? attributes.autoHidePrevious() : attributes.autoHidePrevious;
259
+ var autoHideNext = isFunction(attributes.autoHideNext) ? attributes.autoHideNext() : attributes.autoHideNext;
260
 
261
+ var header = isFunction(attributes.header) ? attributes.header(currentPage, totalPage, totalNumber) : attributes.header;
262
+ var footer = isFunction(attributes.footer) ? attributes.footer(currentPage, totalPage, totalNumber) : attributes.footer;
263
 
264
  // Whether to display header
265
  if (header) {
400
  postData[alias.pageSize ? alias.pageSize : 'pageSize'] = pageSize;
401
  postData[alias.pageNumber ? alias.pageNumber : 'pageNumber'] = pageNumber;
402
 
403
+ var ajaxParams = isFunction(attributes.ajax) ? attributes.ajax() : attributes.ajax;
404
  var formatAjaxParams = {
405
  type: 'get',
406
  cache: false,
483
  var self = this;
484
  var model = self.model;
485
 
486
+ if (isFunction(customCallback)) {
487
  customCallback(data, model);
488
+ } else if (isFunction(attributes.callback)) {
489
  attributes.callback(data, model);
490
  }
491
  },
602
 
603
  if (typeof locator === 'string') {
604
  result = locator;
605
+ } else if (isFunction(locator)) {
606
  result = locator();
607
  } else {
608
  throwError('"locator" is incorrect. (String | Function)');
644
  callback(attributes.dataSource = self.filterDataByLocator(dataSource));
645
  } else if (Helpers.isArray(dataSource)) {
646
  callback(attributes.dataSource = dataSource);
647
+ } else if (isFunction(dataSource)) {
648
  attributes.dataSource(function(data) {
649
  if (!Helpers.isArray(data)) {
650
  throwError('The parameter of "done" Function should be an Array.');
668
  var args = Array.prototype.slice.apply(arguments);
669
  args.shift();
670
 
671
+ if (attributes[hook] && isFunction(attributes[hook])) {
672
  if (attributes[hook].apply(global, args) === false) {
673
  result = false;
674
  }
691
 
692
  // Go to specified page number
693
  container.on(eventPrefix + 'go', function(event, pageNumber, done) {
694
+ pageNumber = parseInt(pageNumber);
695
 
696
  if (!pageNumber) return;
697
 
698
+ if (!isNumeric(pageNumber)) {
699
  throwError('"pageNumber" is incorrect. (Number)');
700
  }
701
 
703
  });
704
 
705
  // Page number button click
706
+ el.on('click', '.J-paginationjs-page', function(event) {
707
  var current = $(event.currentTarget);
708
+ var pageNumber = current.attr('data-num').trim();
709
 
710
  if (!pageNumber || current.hasClass(attributes.disableClassName) || current.hasClass(attributes.activeClassName)) return;
711
 
721
  });
722
 
723
  // Previous button click
724
+ el.on('click', '.J-paginationjs-previous', function(event) {
725
  var current = $(event.currentTarget);
726
+ var pageNumber = current.attr('data-num').trim();
727
 
728
  if (!pageNumber || current.hasClass(attributes.disableClassName)) return;
729
 
739
  });
740
 
741
  // Next button click
742
+ el.on('click', '.J-paginationjs-next', function(event) {
743
  var current = $(event.currentTarget);
744
+ var pageNumber = current.attr('data-num').trim();
745
 
746
  if (!pageNumber || current.hasClass(attributes.disableClassName)) return;
747
 
757
  });
758
 
759
  // Go button click
760
+ el.on('click', '.J-paginationjs-go-button', function(event) {
761
  var pageNumber = $('.J-paginationjs-go-pagenumber', el).val();
762
 
763
  // Before Go button clicked
770
  });
771
 
772
  // go input enter
773
+ el.on('keyup', '.J-paginationjs-go-pagenumber', function(event) {
774
  if (event.which === 13) {
775
  var pageNumber = $(event.currentTarget).val();
776
 
843
  // Pagination has been initialized
844
  if (container.data('pagination') && container.data('pagination').initialized === true) {
845
  // Handle events
846
+ if (isNumeric(options)) {
847
  // eg: container.pagination(5)
848
  container.trigger.call(this, eventPrefix + 'go', options, arguments[1]);
849
  return this;
1015
  throwError('Missing argument.');
1016
  }
1017
 
1018
+ if (!isFunction(callback)) {
1019
  throwError('callback must be a function.');
1020
  }
1021
 
1078
  if (args.totalNumberLocator === undefined) {
1079
  if (args.totalNumber === undefined) {
1080
  throwError('"totalNumber" is required.');
1081
+ } else if (!isNumeric(args.totalNumber)) {
1082
  throwError('"totalNumber" is incorrect. (Number)');
1083
  }
1084
  } else {
1085
+ if (!isFunction(args.totalNumberLocator)) {
1086
  throwError('"totalNumberLocator" should be a Function.');
1087
  }
1088
  }
1089
  } else if (Helpers.isObject(args.dataSource)) {
1090
  if (typeof args.locator === 'undefined') {
1091
  throwError('"dataSource" is an Object, please specify "locator".');
1092
+ } else if (typeof args.locator !== 'string' && !isFunction(args.locator)) {
1093
  throwError('' + args.locator + ' is incorrect. (String | Function)');
1094
  }
1095
  }
1096
 
1097
+ if (args.formatResult !== undefined && !isFunction(args.formatResult)) {
1098
  throwError('"formatResult" should be a Function.');
1099
  }
1100
  }
disable-comments.php CHANGED
@@ -4,7 +4,7 @@
4
  * Plugin Name: Disable Comments
5
  * Plugin URI: https://wordpress.org/plugins/disable-comments/
6
  * Description: Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. You could bulk delete comments using Tools.
7
- * Version: 2.2.4
8
  * Author: WPDeveloper
9
  * Author URI: https://wpdeveloper.net
10
  * License: GPL-3.0+
@@ -37,7 +37,7 @@ class Disable_Comments
37
 
38
  function __construct()
39
  {
40
- define('DC_VERSION', '2.2.4');
41
  define('DC_PLUGIN_SLUG', 'disable_comments_settings');
42
  define('DC_PLUGIN_ROOT_PATH', dirname(__FILE__));
43
  define('DC_PLUGIN_VIEWS_PATH', DC_PLUGIN_ROOT_PATH . '/views/');
@@ -621,6 +621,11 @@ class Disable_Comments
621
  }
622
 
623
  remove_submenu_page('options-general.php', 'options-discussion.php');
 
 
 
 
 
624
  }
625
  }
626
 
@@ -1044,8 +1049,19 @@ class Disable_Comments
1044
 
1045
  $log = __('All comments have been deleted', 'disable-comments');
1046
  }
 
 
 
 
 
 
 
 
 
 
1047
  }
1048
  }
 
1049
  return $log;
1050
  }
1051
 
4
  * Plugin Name: Disable Comments
5
  * Plugin URI: https://wordpress.org/plugins/disable-comments/
6
  * Description: Allows administrators to globally disable comments on their site. Comments can be disabled according to post type. You could bulk delete comments using Tools.
7
+ * Version: 2.3.0
8
  * Author: WPDeveloper
9
  * Author URI: https://wpdeveloper.net
10
  * License: GPL-3.0+
37
 
38
  function __construct()
39
  {
40
+ define('DC_VERSION', '2.3.0');
41
  define('DC_PLUGIN_SLUG', 'disable_comments_settings');
42
  define('DC_PLUGIN_ROOT_PATH', dirname(__FILE__));
43
  define('DC_PLUGIN_VIEWS_PATH', DC_PLUGIN_ROOT_PATH . '/views/');
621
  }
622
 
623
  remove_submenu_page('options-general.php', 'options-discussion.php');
624
+ // disabling gravatar if enabled.
625
+ $show_avatar = get_option('show_avatars', false);
626
+ if($show_avatar){
627
+ update_option('show_avatars', false);
628
+ }
629
  }
630
  }
631
 
1049
 
1050
  $log = __('All comments have been deleted', 'disable-comments');
1051
  }
1052
+ } elseif ($formArray['delete_mode'] == 'delete_spam') {
1053
+
1054
+ $wpdb->query("DELETE cmeta FROM $wpdb->commentmeta cmeta INNER JOIN $wpdb->comments comments ON cmeta.comment_id=comments.comment_ID WHERE comments.comment_approved = 'spam'");
1055
+ $wpdb->query("DELETE comments FROM $wpdb->comments comments WHERE comments.comment_approved = 'spam'");
1056
+
1057
+
1058
+ $wpdb->query("OPTIMIZE TABLE $wpdb->commentmeta");
1059
+ $wpdb->query("OPTIMIZE TABLE $wpdb->comments");
1060
+
1061
+ $log = __('All spam comments have been deleted', 'disable-comments');
1062
  }
1063
  }
1064
+ delete_transient('wc_count_comments');
1065
  return $log;
1066
  }
1067
 
languages/disable-comments.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the GPL-3.0+.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Disable Comments 2.2.4\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/disable-comments\n"
7
- "POT-Creation-Date: 2021-11-09 03:17:25+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -70,34 +70,38 @@ msgid ""
70
  "page</a> to choose which post types to disable comments on."
71
  msgstr ""
72
 
73
- #: disable-comments.php:693 views/partials/_disable.php:3
74
  msgid "Settings"
75
  msgstr ""
76
 
77
- #: disable-comments.php:694
78
  msgid "Tools"
79
  msgstr ""
80
 
81
- #: disable-comments.php:713 views/partials/_delete.php:67
82
  msgid "Delete Comments"
83
  msgstr ""
84
 
85
- #: disable-comments.php:778
86
  msgid "Default (no type)"
87
  msgstr ""
88
 
89
- #: disable-comments.php:917
90
  msgid "Saved"
91
  msgstr ""
92
 
93
- #: disable-comments.php:988 disable-comments.php:1022 disable-comments.php:1045
94
  msgid "All comments have been deleted"
95
  msgstr ""
96
 
97
- #: disable-comments.php:990 disable-comments.php:994
98
  msgid "Internal error occured. Please try again later."
99
  msgstr ""
100
 
 
 
 
 
101
  #: includes/class-plugin-usage-tracker.php:378
102
  msgid ""
103
  "We can't detect any plugin information. This is most probably because you "
@@ -218,7 +222,8 @@ msgid "Permanently delete all comments on your WordPress website"
218
  msgstr ""
219
 
220
  #: views/partials/_delete.php:23 views/partials/_delete.php:46
221
- #: views/partials/_delete.php:59 views/partials/_disable.php:41
 
222
  msgid "Warnings:"
223
  msgstr ""
224
 
@@ -259,11 +264,23 @@ msgid ""
259
  "a database backup."
260
  msgstr ""
261
 
262
- #: views/partials/_delete.php:61
 
 
 
 
 
 
 
 
 
 
 
 
263
  msgid "Total Comments:"
264
  msgstr ""
265
 
266
- #: views/partials/_delete.php:205
267
  msgid "No comments are available for deletion."
268
  msgstr ""
269
 
@@ -428,7 +445,7 @@ msgstr ""
428
  msgid "https://wpdeveloper.net"
429
  msgstr ""
430
 
431
- #: disable-comments.php:703
432
  msgctxt "settings menu title"
433
  msgid "Disable Comments"
434
  msgstr ""
2
  # This file is distributed under the GPL-3.0+.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Disable Comments 2.3.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/disable-comments\n"
7
+ "POT-Creation-Date: 2021-12-14 02:30:59+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
70
  "page</a> to choose which post types to disable comments on."
71
  msgstr ""
72
 
73
+ #: disable-comments.php:698 views/partials/_disable.php:3
74
  msgid "Settings"
75
  msgstr ""
76
 
77
+ #: disable-comments.php:699
78
  msgid "Tools"
79
  msgstr ""
80
 
81
+ #: disable-comments.php:718 views/partials/_delete.php:72
82
  msgid "Delete Comments"
83
  msgstr ""
84
 
85
+ #: disable-comments.php:783
86
  msgid "Default (no type)"
87
  msgstr ""
88
 
89
+ #: disable-comments.php:922
90
  msgid "Saved"
91
  msgstr ""
92
 
93
+ #: disable-comments.php:993 disable-comments.php:1027 disable-comments.php:1050
94
  msgid "All comments have been deleted"
95
  msgstr ""
96
 
97
+ #: disable-comments.php:995 disable-comments.php:999
98
  msgid "Internal error occured. Please try again later."
99
  msgstr ""
100
 
101
+ #: disable-comments.php:1061
102
+ msgid "All spam comments have been deleted"
103
+ msgstr ""
104
+
105
  #: includes/class-plugin-usage-tracker.php:378
106
  msgid ""
107
  "We can't detect any plugin information. This is most probably because you "
222
  msgstr ""
223
 
224
  #: views/partials/_delete.php:23 views/partials/_delete.php:46
225
+ #: views/partials/_delete.php:59 views/partials/_delete.php:64
226
+ #: views/partials/_disable.php:41
227
  msgid "Warnings:"
228
  msgstr ""
229
 
264
  "a database backup."
265
  msgstr ""
266
 
267
+ #: views/partials/_delete.php:63
268
+ msgid "Spam:"
269
+ msgstr ""
270
+
271
+ #: views/partials/_delete.php:63
272
+ msgid "Permanently delete all spam comments on your WordPress website"
273
+ msgstr ""
274
+
275
+ #: views/partials/_delete.php:64
276
+ msgid "This will permanently delete spam comments everywhere on your website."
277
+ msgstr ""
278
+
279
+ #: views/partials/_delete.php:66
280
  msgid "Total Comments:"
281
  msgstr ""
282
 
283
+ #: views/partials/_delete.php:210
284
  msgid "No comments are available for deletion."
285
  msgstr ""
286
 
445
  msgid "https://wpdeveloper.net"
446
  msgstr ""
447
 
448
+ #: disable-comments.php:708
449
  msgctxt "settings menu title"
450
  msgid "Disable Comments"
451
  msgstr ""
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: comments, delete comments, disable comments, spam comment, disable, stop s
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 5.6
8
- Stable tag: 2.2.4
9
  License: GPL-3.0-or-later
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
@@ -191,6 +191,12 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
191
  and this project adheres to [Semantic Versioning](http://semver.org/).
192
  This will be maiintained from August 19, 2020 - @asif2bd
193
 
 
 
 
 
 
 
194
  = [2.2.4] - 2021-11-09 =
195
  * Added: Ajax pagination in Subsite area (Multisite network).
196
  * Added: Ajax search in Subsite area (Multisite network).
5
  Requires at least: 5.0
6
  Tested up to: 5.8
7
  Requires PHP: 5.6
8
+ Stable tag: 2.3.0
9
  License: GPL-3.0-or-later
10
  License URI: https://www.gnu.org/licenses/gpl-3.0.html
11
 
191
  and this project adheres to [Semantic Versioning](http://semver.org/).
192
  This will be maiintained from August 19, 2020 - @asif2bd
193
 
194
+ = [2.3.0] - 2021-12-14 =
195
+ * New Feature: Delete Spam Comments.
196
+ * Updated deprecated jQuery library.
197
+ * Improvement: Disable Gravatar request.
198
+ * Few minor bug fixes and improvement.
199
+
200
  = [2.2.4] - 2021-11-09 =
201
  * Added: Ajax pagination in Subsite area (Multisite network).
202
  * Added: Ajax search in Subsite area (Multisite network).
views/partials/_delete.php CHANGED
@@ -58,6 +58,11 @@
58
  </ul>
59
  <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments'); ?></span> <?php _e('Deleting comments by comment type will remove existing comment entries of the selected comment type(s) in the database and cannot be reverted without a database backup.', 'disable-comments'); ?></p>
60
  </div>
 
 
 
 
 
61
  <h4 class="total-comments"><?php _e('Total Comments:', 'disable-comments'); ?> <?php echo $this->get_all_comments_number(); ?></h4>
62
  </div>
63
  <?php if(is_network_admin()):?>
58
  </ul>
59
  <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments'); ?></span> <?php _e('Deleting comments by comment type will remove existing comment entries of the selected comment type(s) in the database and cannot be reverted without a database backup.', 'disable-comments'); ?></p>
60
  </div>
61
+ <div class="disable_option dc-text__block mb30 mt30">
62
+ <input type="radio" id="delete_spam" name="delete_mode" value="delete_spam" />
63
+ <label for="delete_spam"><?php _e('Spam:', 'disable-comments'); ?> <span><?php _e('Permanently delete all spam comments on your WordPress website', 'disable-comments'); ?></span></label>
64
+ <p class="disable__option__description"><span class="danger"><?php _e('Warnings:', 'disable-comments'); ?></span> <?php _e('This will permanently delete spam comments everywhere on your website.', 'disable-comments'); ?></p>
65
+ </div>
66
  <h4 class="total-comments"><?php _e('Total Comments:', 'disable-comments'); ?> <?php echo $this->get_all_comments_number(); ?></h4>
67
  </div>
68
  <?php if(is_network_admin()):?>