Comments – wpDiscuz - Version 4.1.2

Version Description

Download this release

Release Info

Developer AdvancedCoding
Plugin Icon 128x128 Comments – wpDiscuz
Version 4.1.2
Comparing to
See all releases

Code changes from version 4.1.1 to 4.1.2

assets/css/{options-css.min.css → options.css} RENAMED
@@ -2,6 +2,7 @@
2
  .wpdiscuz-share-buttons {display: inline-block; width: 18px; height: 18px;}
3
  .wc-form input.wc_share_button {display: none;}
4
  .wc-form input[type="text"].regular-text{ width:160px; }
 
5
  .wc-form .wpdiscuz-option-title {vertical-align: middle;}
6
  .wc-form .wc-hidden {display: none;}
7
  .wc-form .resp-tabs-container.integrationsChild {margin-bottom: 5px;}
2
  .wpdiscuz-share-buttons {display: inline-block; width: 18px; height: 18px;}
3
  .wc-form input.wc_share_button {display: none;}
4
  .wc-form input[type="text"].regular-text{ width:160px; }
5
+ .wc-form select{min-width: 140px;}
6
  .wc-form .wpdiscuz-option-title {vertical-align: middle;}
7
  .wc-form .wc-hidden {display: none;}
8
  .wc-form .resp-tabs-container.integrationsChild {margin-bottom: 5px;}
assets/css/wpdiscuz-rtl.css CHANGED
@@ -12,6 +12,9 @@
12
  #wpcomm .wc-comment-author{float:right;text-align:right; padding:6px 15px 2px 0px;}
13
  #wpcomm .wc-comment-date{text-align:right;}
14
  #wpcomm .wc-comment-date i{ padding-left:5px; }
 
 
 
15
 
16
  #wpcomm .wc-comment-footer{padding:5px 10px 10px 10px; text-align:right}
17
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{border-left:none; margin-right:1px;}
12
  #wpcomm .wc-comment-author{float:right;text-align:right; padding:6px 15px 2px 0px;}
13
  #wpcomm .wc-comment-date{text-align:right;}
14
  #wpcomm .wc-comment-date i{ padding-left:5px; }
15
+ #wpcomm .wpdiscuz-children {padding-right:5px; }
16
+ #wpcomm .wc-toggle i.fa-chevron-down{padding-right:5px;}
17
+ #wpcomm .wc-toggle i.fa-chevron-up{padding-right:5px;}
18
 
19
  #wpcomm .wc-comment-footer{padding:5px 10px 10px 10px; text-align:right}
20
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{border-left:none; margin-right:1px;}
assets/css/wpdiscuz.css CHANGED
@@ -1,4 +1,3 @@
1
-
2
  #wpcomm *{box-sizing:border-box}
3
  #wpcomm span{display:inline}
4
  #wpcomm .clearfix{clear:both;}
@@ -44,7 +43,10 @@
44
  #wpcomm .wc-comment-label{color:#fff; width:100%; padding:0px 0px 2px 0px;font-size:12px;margin:8px auto;text-align:center;display:table;line-height:16px}
45
  #wpcomm .wc-comment-label span{ display:inline-block; padding:2px 0px 1px 0px; font-size:12px;}
46
  #wpcomm .wc-comment-date{font-size:12px;color:#999;text-align:left;white-space:nowrap;line-height:23px}
47
- #wpcomm .wc-comment-date i{ padding-right:5px; }
 
 
 
48
 
49
  #wpcomm .wc-comment-footer{font-size:12px;font-weight:normal;color:#999;border-bottom: 1px solid #ddd; padding:5px 10px 10px 10px; margin-top:7px; margin-bottom:15px;min-height:28px; text-align:left}
50
  #wpcomm .wc-reply .wc-comment-footer{padding-bottom:10px;}
@@ -374,10 +376,8 @@
374
  #wpcomm .wc-comment-footer .wc-footer-right{ float:none; display:block; padding:5px 5px 2px 5px; text-align:left;}
375
  #wpcomm .wc-comment-footer .wc-footer-right .wc-comment-date{ margin-left:0px;}
376
  #wpcomm .wc-comment-footer .wc-footer-left span{ margin-bottom:7px; }
377
- .wpdiscuz-post-rating-wrap.wpd-custom-field > [class ^= wpdiscuz-post-rating-wrap-custom_field]{
378
- flex-basis: 50%;
379
- margin-bottom: 10px;
380
- }
381
  }
382
  @media screen and (max-width:420px){
383
  #wpcomm .wpdiscuz-sort-buttons,#wpcomm .wpdiscuz-sort-button{font-size:11px!important}
 
1
  #wpcomm *{box-sizing:border-box}
2
  #wpcomm span{display:inline}
3
  #wpcomm .clearfix{clear:both;}
43
  #wpcomm .wc-comment-label{color:#fff; width:100%; padding:0px 0px 2px 0px;font-size:12px;margin:8px auto;text-align:center;display:table;line-height:16px}
44
  #wpcomm .wc-comment-label span{ display:inline-block; padding:2px 0px 1px 0px; font-size:12px;}
45
  #wpcomm .wc-comment-date{font-size:12px;color:#999;text-align:left;white-space:nowrap;line-height:23px}
46
+ #wpcomm .wc-comment-date i{padding-right:5px; }
47
+ #wpcomm .wpdiscuz-children {display:inline-block; padding-left:5px; }
48
+ #wpcomm .wc-toggle i.fa-chevron-down{display:inline-block; padding-left:5px;}
49
+ #wpcomm .wc-toggle i.fa-chevron-up{display:inline-block; padding-left:5px;}
50
 
51
  #wpcomm .wc-comment-footer{font-size:12px;font-weight:normal;color:#999;border-bottom: 1px solid #ddd; padding:5px 10px 10px 10px; margin-top:7px; margin-bottom:15px;min-height:28px; text-align:left}
52
  #wpcomm .wc-reply .wc-comment-footer{padding-bottom:10px;}
376
  #wpcomm .wc-comment-footer .wc-footer-right{ float:none; display:block; padding:5px 5px 2px 5px; text-align:left;}
377
  #wpcomm .wc-comment-footer .wc-footer-right .wc-comment-date{ margin-left:0px;}
378
  #wpcomm .wc-comment-footer .wc-footer-left span{ margin-bottom:7px; }
379
+ .wpdiscuz-post-rating-wrap.wpd-custom-field > [class ^= wpdiscuz-post-rating-wrap-custom_field]{flex-basis: 50%;margin-bottom: 10px;}
380
+ #wpcomm .wc-toggle .wpdiscuz-children-button-text, #wpcomm .wc-toggle .wcsep{ display:none;}
 
 
381
  }
382
  @media screen and (max-width:420px){
383
  #wpcomm .wpdiscuz-sort-buttons,#wpcomm .wpdiscuz-sort-button{font-size:11px!important}
assets/css/wpdiscuz.min.css DELETED
File without changes
assets/js/wpdiscuz-options.min.js DELETED
@@ -1,2 +0,0 @@
1
-
2
- jQuery(document).ready(function(a){if(location.href.indexOf("wpdiscuz_options_page")>=0){a(".wpdiscuz-color-picker").colorPicker();if(!a("ul.wpdiscuz-addons-options").html().trim()){a("#wpdiscuz-addons-options").remove()}}if(a("#show_sorting_buttons").attr("checked")){a("#row_mostVotedByDefault").removeClass("wc-hidden")}else{a("#row_mostVotedByDefault").addClass("wc-hidden")}a("#show_sorting_buttons").change(function(){if(a(this).is(":checked")){a("#row_mostVotedByDefault").removeClass("wc-hidden")}else{a("#row_mostVotedByDefault").addClass("wc-hidden")}})});
 
 
assets/js/wpdiscuz.js CHANGED
@@ -27,8 +27,8 @@ jQuery(document).ready(function ($) {
27
  var wpdGoogleRecaptchaValid = true;
28
  var wpdiscuzReplyButton = '';
29
  var wpdiscuzCookiehash = wpdiscuzAjaxObj.wpdiscuz_options.cookiehash;
 
30
  loginButtonsClone();
31
- displayShowHideReplies();
32
 
33
  if (!wpdiscuzAjaxObj.wpdiscuz_options.wordpressIsPaginate) {
34
  var wpdiscuzLastVisitKey = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitKey;
@@ -108,14 +108,28 @@ jQuery(document).ready(function ($) {
108
 
109
  $(document).delegate('.wc-toggle', 'click', function () {
110
  var uniqueID = getUniqueID($(this), 0);
111
- var toggleSpan = $(this);
112
- $('#wc-comm-' + uniqueID + '> .wc-reply').slideToggle(700, function () {
113
- if ($(this).is(':hidden')) {
114
- toggleSpan.html('<i class="fa fa-chevron-down" aria-hidden="true" title="' + wpdiscuzAjaxObj.wpdiscuz_options.wc_show_replies_text + '"></i>');
115
- } else {
116
- toggleSpan.html('<i class="fa fa-chevron-up" aria-hidden="true" title="' + wpdiscuzAjaxObj.wpdiscuz_options.wc_hide_replies_text + '"></i>');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  }
118
- });
119
  });
120
 
121
  $(document).delegate('.wc-new-loaded-comment', 'mouseenter', function () {
@@ -307,7 +321,6 @@ jQuery(document).ready(function ($) {
307
  addCookie(wcForm, obj);
308
  wcForm.get(0).reset();
309
  setCookieInForm();
310
- displayShowHideReplies();
311
  var currTArea = $('.wc_comment', wcForm);
312
  currTArea.css('height', '72px');
313
  setTextareaCharCount(currTArea, commentTextMaxLength);
@@ -590,7 +603,6 @@ jQuery(document).ready(function ($) {
590
  $('.wpdiscuz_single').remove();
591
  isRun = false;
592
  loadLastCommentId = obj.loadLastCommentId;
593
- displayShowHideReplies();
594
  } catch (e) {
595
  console.log(e);
596
  }
@@ -714,7 +726,6 @@ jQuery(document).ready(function ($) {
714
  } catch (e) {
715
  console.log(e);
716
  }
717
- displayShowHideReplies();
718
  $('.wpdiscuz-loading-bar').hide();
719
  });
720
  }
@@ -814,7 +825,6 @@ jQuery(document).ready(function ($) {
814
  commentObject = message[i];
815
  addCommentToTree(commentObject.comment_parent, commentObject.comment_html);
816
  }
817
- displayShowHideReplies();
818
  }
819
  }
820
 
@@ -998,31 +1008,13 @@ jQuery(document).ready(function ($) {
998
 
999
  function displayShowHideReplies() {
1000
  $('#wcThreadWrapper .wc-comment').each(function (i) {
1001
- if ($('> .wc-reply', this).length) {
1002
- $('> .wc-comment-right .wc-comment-footer .wc-toggle', this).removeClass('wpdiscuz-hidden');
 
1003
  }
1004
  });
1005
  }
1006
 
1007
- /**
1008
- * @param {type} action the action key
1009
- * @param {type} data the request properties
1010
- * @returns {jqXHR}
1011
- */
1012
- function getAjaxObj(data) {
1013
- if (data.action !== 'liveUpdate') {
1014
- $('.wpdiscuz-loading-bar').show();
1015
- }
1016
- data.append('postId', wpdiscuzPostId);
1017
- return $.ajax({
1018
- type: 'POST',
1019
- url: wpdiscuzAjaxObj.url,
1020
- data: data,
1021
- contentType: false,
1022
- processData: false,
1023
- });
1024
- }
1025
-
1026
  function wpdiscuzReset() {
1027
  $('.wpdiscuz_reset').val("");
1028
  }
@@ -1132,4 +1124,45 @@ jQuery(document).ready(function ($) {
1132
  }
1133
  $(this).toggleClass('wpdiscuz-spoiler-closed');
1134
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1135
  });
27
  var wpdGoogleRecaptchaValid = true;
28
  var wpdiscuzReplyButton = '';
29
  var wpdiscuzCookiehash = wpdiscuzAjaxObj.wpdiscuz_options.cookiehash;
30
+ var isLoadOnlyParentComments = wpdiscuzAjaxObj.wpdiscuz_options.isLoadOnlyParentComments;
31
  loginButtonsClone();
 
32
 
33
  if (!wpdiscuzAjaxObj.wpdiscuz_options.wordpressIsPaginate) {
34
  var wpdiscuzLastVisitKey = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitKey;
108
 
109
  $(document).delegate('.wc-toggle', 'click', function () {
110
  var uniqueID = getUniqueID($(this), 0);
111
+ var toggle = $(this);
112
+ var icon = $('.fa', toggle);
113
+ if (icon.hasClass('wpdiscuz-show-replies') && isLoadOnlyParentComments) {
114
+ wpdiscuzShowReplies(uniqueID);
115
+ } else {
116
+ $('#wc-comm-' + uniqueID + '> .wc-reply').slideToggle(700, function () {
117
+ if ($(this).is(':hidden')) {
118
+ icon.removeClass('fa-chevron-up');
119
+ icon.addClass('fa-chevron-down');
120
+ icon.attr('title', wpdiscuzAjaxObj.wpdiscuz_options.wc_show_replies_text);
121
+ } else {
122
+ icon.removeClass('fa-chevron-down');
123
+ icon.addClass('fa-chevron-up');
124
+ icon.attr('title', wpdiscuzAjaxObj.wpdiscuz_options.wc_hide_replies_text);
125
+ }
126
+ });
127
+ $('.wpdiscuz-children', toggle).toggleClass('wpdiscuz-hidden');
128
+ if ($('.wpdiscuz-children-count', toggle).length) {
129
+ var replies = $('#wc-comm-' + uniqueID + ' .wc-reply');
130
+ $('.wpdiscuz-children-count', toggle).html(replies.length);
131
  }
132
+ }
133
  });
134
 
135
  $(document).delegate('.wc-new-loaded-comment', 'mouseenter', function () {
321
  addCookie(wcForm, obj);
322
  wcForm.get(0).reset();
323
  setCookieInForm();
 
324
  var currTArea = $('.wc_comment', wcForm);
325
  currTArea.css('height', '72px');
326
  setTextareaCharCount(currTArea, commentTextMaxLength);
603
  $('.wpdiscuz_single').remove();
604
  isRun = false;
605
  loadLastCommentId = obj.loadLastCommentId;
 
606
  } catch (e) {
607
  console.log(e);
608
  }
726
  } catch (e) {
727
  console.log(e);
728
  }
 
729
  $('.wpdiscuz-loading-bar').hide();
730
  });
731
  }
825
  commentObject = message[i];
826
  addCommentToTree(commentObject.comment_parent, commentObject.comment_html);
827
  }
 
828
  }
829
  }
830
 
1008
 
1009
  function displayShowHideReplies() {
1010
  $('#wcThreadWrapper .wc-comment').each(function (i) {
1011
+ if ($('> .wc-reply', this).length || $(this).hasClass('wpdiscuz-root-comment')) {
1012
+ var toggle = $('> .wc-comment-right .wc-comment-footer .wc-toggle', this);
1013
+ toggle.removeClass('wpdiscuz-hidden');
1014
  }
1015
  });
1016
  }
1017
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1018
  function wpdiscuzReset() {
1019
  $('.wpdiscuz_reset').val("");
1020
  }
1124
  }
1125
  $(this).toggleClass('wpdiscuz-spoiler-closed');
1126
  });
1127
+
1128
+ function wpdiscuzShowReplies(uniqueId) {
1129
+ var commentId = getCommentID(uniqueId);
1130
+ var data = new FormData();
1131
+ data.append('action', 'wpdiscuzShowReplies');
1132
+ data.append('commentId', commentId);
1133
+ var ajax = getAjaxObj(data);
1134
+ ajax.done(function (response) {
1135
+ try {
1136
+ var resp = $.parseJSON(response);
1137
+ if (resp.code == 1) {
1138
+ $('#wc-comm-' + uniqueId).replaceWith(resp.data);
1139
+ $('#wc-comm-' + uniqueId + ' .wc-toggle .fa').removeClass('fa-chevron-down').addClass('fa-chevron-up').removeClass('wpdiscuz-show-replies');
1140
+ } else {
1141
+ console.log('Unknown error occured');
1142
+ }
1143
+ } catch (e) {
1144
+ console.log(e);
1145
+ }
1146
+ $('.wpdiscuz-loading-bar').hide();
1147
+ });
1148
+ }
1149
+
1150
+ /**
1151
+ * @param {type} action the action key
1152
+ * @param {type} data the request properties
1153
+ * @returns {jqXHR}
1154
+ */
1155
+ function getAjaxObj(data) {
1156
+ if (data.action !== 'liveUpdate') {
1157
+ $('.wpdiscuz-loading-bar').show();
1158
+ }
1159
+ data.append('postId', wpdiscuzPostId);
1160
+ return $.ajax({
1161
+ type: 'POST',
1162
+ url: wpdiscuzAjaxObj.url,
1163
+ data: data,
1164
+ contentType: false,
1165
+ processData: false,
1166
+ });
1167
+ }
1168
  });
class.WpdiscuzCore.php CHANGED
@@ -3,7 +3,7 @@
3
  /*
4
  * Plugin Name: wpDiscuz
5
  * Description: Better comment system. Wordpress post comments and discussion plugin. Allows your visitors discuss, vote for comments and share.
6
- * Version: 4.1.1
7
  * Author: gVectors Team (A. Chakhoyan, G. Zakaryan, H. Martirosyan)
8
  * Author URI: https://gvectors.com/
9
  * Plugin URI: http://wpdiscuz.com/
@@ -31,18 +31,19 @@ include_once 'forms/wpDiscuzForm.php';
31
 
32
  class WpdiscuzCore implements WpDiscuzConstants {
33
 
34
- public $helper;
35
  public $dbManager;
 
 
 
36
  public $optionsSerialized;
37
  public $wpdiscuzOptionsJs;
38
- public $optimizationHelper;
39
  private $css;
40
  private $options;
41
- private $emailHelper;
42
  private $wpdiscuzWalker;
43
  public $commentsArgs;
44
  private $version;
45
  public $wpdiscuzForm;
 
46
  public $subscriptionData;
47
  public $isWpdiscuzLoaded;
48
  public static $CURRENT_BLOG_ID;
@@ -58,6 +59,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
58
  $this->optimizationHelper = new WpdiscuzOptimizationHelper($this->optionsSerialized, $this->dbManager, $this->emailHelper, $this->wpdiscuzForm);
59
  $this->css = new WpdiscuzCss($this->optionsSerialized, $this->helper);
60
  $this->wpdiscuzWalker = new WpdiscuzWalker($this->helper, $this->optimizationHelper, $this->dbManager, $this->optionsSerialized);
 
 
 
 
61
  self::$CURRENT_BLOG_ID = get_current_blog_id();
62
  register_activation_hook(__FILE__, array(&$this, 'pluginActivation'));
63
  register_deactivation_hook(__FILE__, array(&$this->wpdiscuzForm, 'removeAllFiles'));
@@ -65,7 +70,6 @@ class WpdiscuzCore implements WpDiscuzConstants {
65
  add_action('delete_blog', array(&$this, 'deleteBlog'));
66
  add_action('wp_head', array(&$this, 'initCurrentPostType'));
67
  add_action('wp_head', array(&$this->css, 'initCustomCss'));
68
- // add_action('get_header', array(&$this, 'setCookies'));
69
 
70
  add_action('init', array(&$this, 'wpdiscuzTextDomain'));
71
  add_action('admin_init', array(&$this, 'pluginNewVersion'), 1);
@@ -175,13 +179,13 @@ class WpdiscuzCore implements WpDiscuzConstants {
175
  }
176
 
177
  public function updateAutomatically() {
178
- $current_user = WpdiscuzHelper::getCurrentUser();
179
  $messageArray = array('code' => 0);
180
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
181
  $loadLastCommentId = isset($_POST['loadLastCommentId']) ? intval($_POST['loadLastCommentId']) : 0;
182
  $visibleCommentIds = isset($_POST['visibleCommentIds']) ? $_POST['visibleCommentIds'] : '';
183
  $sentEmail = isset($_POST['email']) ? trim($_POST['email']) : '';
184
- $email = $current_user && $current_user->ID ? $current_user->user_email : $sentEmail;
185
  if ($visibleCommentIds && $postId && $loadLastCommentId) {
186
  $cArgs = $this->getDefaultCommentsArgs($postId);
187
  $lastCommentId = $this->dbManager->getLastCommentId($cArgs);
@@ -191,10 +195,13 @@ class WpdiscuzCore implements WpDiscuzConstants {
191
  $messageArray['loadLastCommentId'] = $lastCommentId;
192
  $commentListArgs = $this->getCommentListArgs($postId);
193
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
194
- $commentListArgs['current_user'] = $current_user;
 
195
  $newCommentIds = $this->dbManager->getNewCommentIds($cArgs, $loadLastCommentId, $email);
 
196
  if ($this->optionsSerialized->commentListUpdateType == 1) {
197
  $messageArray['message'] = array();
 
198
  foreach ($newCommentIds as $newCommentId) {
199
  if (!in_array($newCommentId, $visibleCommentIds)) {
200
  $comment = get_comment($newCommentId);
@@ -234,7 +241,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
234
  }
235
  asort($messageArray['message']['author_replies']);
236
  }
237
- $messageArray['wc_all_comments_count_new'] = $this->dbManager->getCommentsCount($postId);
238
  }
239
  }
240
  wp_die(json_encode($messageArray));
@@ -246,13 +253,14 @@ class WpdiscuzCore implements WpDiscuzConstants {
246
  $newCommentIds = isset($_POST['newCommentIds']) ? trim($_POST['newCommentIds']) : '';
247
 
248
  if ($postId && $newCommentIds) {
249
- $current_user = WpdiscuzHelper::getCurrentUser();
250
  $messageArray['code'] = 1;
251
  $newCommentIds = explode(',', trim($newCommentIds, ','));
252
  $postId = trim(intval($postId));
253
  $commentListArgs = $this->getCommentListArgs($postId);
254
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
255
- $commentListArgs['current_user'] = $current_user;
 
256
  $messageArray['message'] = array();
257
  foreach ($newCommentIds as $newCommentId) {
258
  $comment = get_comment($newCommentId);
@@ -371,11 +379,12 @@ class WpdiscuzCore implements WpDiscuzConstants {
371
  $messageArray['is_main'] = $comment_parent ? 0 : 1;
372
  $messageArray['held_moderate'] = $held_moderate;
373
  $messageArray['is_in_same_container'] = $isInSameContainer;
374
- $messageArray['wc_all_comments_count_new'] = $this->dbManager->getCommentsCount($postId);
375
  $commentListArgs = $this->getCommentListArgs($postId);
376
  $commentListArgs['current_user'] = $currentUser;
377
  $commentListArgs['addComment'] = $commentDepth;
378
  $commentListArgs['comment_author_email'] = $email;
 
379
  $messageArray['message'] = wp_list_comments($commentListArgs, array($newComment));
380
  } else {
381
  $messageArray['code'] = 'wc_invalid_field';
@@ -403,7 +412,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
403
  $messageArray['code'] = 1;
404
  $messageArray['message'] = $form->renderEditFrontCommentForm($comment);
405
  } else {
406
- $current_user = WpdiscuzHelper::getCurrentUser();
407
  $isInRange = $this->helper->isContentInRange($comment->comment_content);
408
  $isEditable = $this->optionsSerialized->commentEditableTime == 'unlimit' ? true && $isInRange : $this->helper->isCommentEditable($comment) && $isInRange;
409
  if ($isEditable && $this->helper->canUserEditComment($comment, $currentUser)) {
@@ -485,24 +494,25 @@ class WpdiscuzCore implements WpDiscuzConstants {
485
  }
486
 
487
  public function getSingleComment() {
488
- $current_user = WpdiscuzHelper::getCurrentUser();
489
  $messageArray = array('code' => 0);
490
  $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
491
  $comment = get_comment($commentId);
492
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
493
  if ($commentId && $postId && $comment && $comment->comment_post_ID == $postId) {
494
  $parentComment = $this->optimizationHelper->getCommentRoot($commentId);
495
- $tree = array();
496
  $tree = $this->optimizationHelper->getTreeByParentId($parentComment->comment_ID, $tree);
497
- $this->commentsArgs = $this->getDefaultCommentsArgs();
498
- $this->commentsArgs['comment__in'] = array_merge(array($parentComment->comment_ID), $tree);
499
- $comments = get_comments($this->commentsArgs);
 
500
  $commentListArgs = $this->getCommentListArgs($postId);
501
  $commentListArgs['isSingle'] = true;
502
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
503
- $commentListArgs['current_user'] = $current_user;
504
  $messageArray['message'] = wp_list_comments($commentListArgs, $comments);
505
- $this->commentsArgs['caller'] = '';
 
506
  }
507
  wp_die(json_encode($messageArray));
508
  }
@@ -684,7 +694,8 @@ class WpdiscuzCore implements WpDiscuzConstants {
684
  $commentListArgs = $this->getCommentListArgs($this->commentsArgs['post_id']);
685
  $commentList = $this->_getWPComments($commentListArgs, $commentData);
686
  $commentListArgs['current_user'] = $currentUser;
687
- $commentListArgs[self::COOKIE_LAST_VISIT] = isset($this->commentsArgs[self::COOKIE_LAST_VISIT]) ? $this->commentsArgs[self::COOKIE_LAST_VISIT] : '';
 
688
  $wcWpComments = $islazyLoadOnPageLoad ? '' : wp_list_comments($commentListArgs, $commentList);
689
  $commentData['comment_list'] = $wcWpComments;
690
  $this->commentsArgs['caller'] = '';
@@ -693,6 +704,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
693
 
694
  private function _getWPComments(&$commentListArgs, &$commentData) {
695
  $commentList = array();
 
696
  if (!$this->optionsSerialized->wordpressIsPaginate) {
697
  $islazyLoadOnPageLoad = isset($this->commentsArgs['first_load']) && $this->commentsArgs['first_load'] && $this->optionsSerialized->commentListLoadType == 2 && !$this->optionsSerialized->lazyLoadOnPageLoad;
698
  $this->commentsArgs['comment__in'] = $this->dbManager->getCommentList($this->commentsArgs);
@@ -706,6 +718,8 @@ class WpdiscuzCore implements WpDiscuzConstants {
706
  if ($this->commentsArgs['is_threaded']) {
707
  if ($this->commentsArgs['comment__in']) {
708
  $parentComments = get_comments($this->commentsArgs);
 
 
709
  foreach ($parentComments as $parentComment) {
710
  $commentList[] = $parentComment;
711
  $childComments = $parentComment->get_children(array(
@@ -713,8 +727,35 @@ class WpdiscuzCore implements WpDiscuzConstants {
713
  'status' => $this->commentsArgs['status'],
714
  'orderby' => $this->commentsArgs['orderby']
715
  ));
716
- foreach ($childComments as $childComment) {
717
- $commentList[] = $childComment;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
718
  }
719
  }
720
  }
@@ -776,7 +817,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
776
  'orderby' => 'comment_date_gmt',
777
  'order' => $this->optionsSerialized->wordpressCommentOrder,
778
  'date_order' => $this->optionsSerialized->wordpressCommentOrder,
779
- 'limit' => $this->optionsSerialized->wordpressCommentPerPage,
780
  'is_threaded' => $this->optionsSerialized->wordpressThreadComments,
781
  'status' => 'approve',
782
  'comment__in' => '',
@@ -840,7 +881,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
840
  wp_enqueue_style('wpdiscuz-easy-responsive-tabs-css');
841
  wp_register_script('wpdiscuz-easy-responsive-tabs-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/easy-responsive-tabs/js/easy-responsive-tabs.js'), array('jquery'), '1.0.1', true);
842
  wp_enqueue_script('wpdiscuz-easy-responsive-tabs-js');
843
- wp_register_style('wpdiscuz-options-css', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/options-css.min.css'));
844
  wp_enqueue_style('wpdiscuz-options-css');
845
  wp_register_script('wpdiscuz-options-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz-options.js'), array('jquery'));
846
  wp_enqueue_script('wpdiscuz-options-js');
@@ -1016,6 +1057,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
1016
  public function initCurrentPostType() {
1017
  global $post;
1018
  if ($this->isWpdiscuzLoaded) {
 
1019
  add_filter('comments_template', array(&$this, 'addCommentForm'), 10);
1020
  }
1021
  }
@@ -1076,6 +1118,37 @@ class WpdiscuzCore implements WpDiscuzConstants {
1076
  $this->optionsSerialized->phrases['wc_blog_role_guest'] = isset($this->optionsSerialized->phrases['wc_blog_role_guest']) ? $this->optionsSerialized->phrases['wc_blog_role_guest'] : __('Guest', 'wpdiscuz');
1077
  }
1078
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1079
  }
1080
 
1081
  $wpdiscuz = new WpdiscuzCore();
3
  /*
4
  * Plugin Name: wpDiscuz
5
  * Description: Better comment system. Wordpress post comments and discussion plugin. Allows your visitors discuss, vote for comments and share.
6
+ * Version: 4.1.2
7
  * Author: gVectors Team (A. Chakhoyan, G. Zakaryan, H. Martirosyan)
8
  * Author URI: https://gvectors.com/
9
  * Plugin URI: http://wpdiscuz.com/
31
 
32
  class WpdiscuzCore implements WpDiscuzConstants {
33
 
 
34
  public $dbManager;
35
+ public $helper;
36
+ private $emailHelper;
37
+ public $optimizationHelper;
38
  public $optionsSerialized;
39
  public $wpdiscuzOptionsJs;
 
40
  private $css;
41
  private $options;
 
42
  private $wpdiscuzWalker;
43
  public $commentsArgs;
44
  private $version;
45
  public $wpdiscuzForm;
46
+ public $form;
47
  public $subscriptionData;
48
  public $isWpdiscuzLoaded;
49
  public static $CURRENT_BLOG_ID;
59
  $this->optimizationHelper = new WpdiscuzOptimizationHelper($this->optionsSerialized, $this->dbManager, $this->emailHelper, $this->wpdiscuzForm);
60
  $this->css = new WpdiscuzCss($this->optionsSerialized, $this->helper);
61
  $this->wpdiscuzWalker = new WpdiscuzWalker($this->helper, $this->optimizationHelper, $this->dbManager, $this->optionsSerialized);
62
+ if ($this->optionsSerialized->isLoadOnlyParentComments) {
63
+ add_action('wp_ajax_wpdiscuzShowReplies', array(&$this, 'showReplies'));
64
+ add_action('wp_ajax_nopriv_wpdiscuzShowReplies', array(&$this, 'showReplies'));
65
+ }
66
  self::$CURRENT_BLOG_ID = get_current_blog_id();
67
  register_activation_hook(__FILE__, array(&$this, 'pluginActivation'));
68
  register_deactivation_hook(__FILE__, array(&$this->wpdiscuzForm, 'removeAllFiles'));
70
  add_action('delete_blog', array(&$this, 'deleteBlog'));
71
  add_action('wp_head', array(&$this, 'initCurrentPostType'));
72
  add_action('wp_head', array(&$this->css, 'initCustomCss'));
 
73
 
74
  add_action('init', array(&$this, 'wpdiscuzTextDomain'));
75
  add_action('admin_init', array(&$this, 'pluginNewVersion'), 1);
179
  }
180
 
181
  public function updateAutomatically() {
182
+ $currentUser = WpdiscuzHelper::getCurrentUser();
183
  $messageArray = array('code' => 0);
184
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
185
  $loadLastCommentId = isset($_POST['loadLastCommentId']) ? intval($_POST['loadLastCommentId']) : 0;
186
  $visibleCommentIds = isset($_POST['visibleCommentIds']) ? $_POST['visibleCommentIds'] : '';
187
  $sentEmail = isset($_POST['email']) ? trim($_POST['email']) : '';
188
+ $email = $currentUser && $currentUser->ID ? $currentUser->user_email : $sentEmail;
189
  if ($visibleCommentIds && $postId && $loadLastCommentId) {
190
  $cArgs = $this->getDefaultCommentsArgs($postId);
191
  $lastCommentId = $this->dbManager->getLastCommentId($cArgs);
195
  $messageArray['loadLastCommentId'] = $lastCommentId;
196
  $commentListArgs = $this->getCommentListArgs($postId);
197
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
198
+ $commentListArgs['current_user'] = $currentUser;
199
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
200
  $newCommentIds = $this->dbManager->getNewCommentIds($cArgs, $loadLastCommentId, $email);
201
+ $newCommentIds = apply_filters('wpdiscuz_live_update_new_comment_ids', $newCommentIds, $postId, $currentUser);
202
  if ($this->optionsSerialized->commentListUpdateType == 1) {
203
  $messageArray['message'] = array();
204
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
205
  foreach ($newCommentIds as $newCommentId) {
206
  if (!in_array($newCommentId, $visibleCommentIds)) {
207
  $comment = get_comment($newCommentId);
241
  }
242
  asort($messageArray['message']['author_replies']);
243
  }
244
+ $messageArray['wc_all_comments_count_new'] = get_comments_number($postId);
245
  }
246
  }
247
  wp_die(json_encode($messageArray));
253
  $newCommentIds = isset($_POST['newCommentIds']) ? trim($_POST['newCommentIds']) : '';
254
 
255
  if ($postId && $newCommentIds) {
256
+ $currentUser = WpdiscuzHelper::getCurrentUser();
257
  $messageArray['code'] = 1;
258
  $newCommentIds = explode(',', trim($newCommentIds, ','));
259
  $postId = trim(intval($postId));
260
  $commentListArgs = $this->getCommentListArgs($postId);
261
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
262
+ $commentListArgs['current_user'] = $currentUser;
263
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
264
  $messageArray['message'] = array();
265
  foreach ($newCommentIds as $newCommentId) {
266
  $comment = get_comment($newCommentId);
379
  $messageArray['is_main'] = $comment_parent ? 0 : 1;
380
  $messageArray['held_moderate'] = $held_moderate;
381
  $messageArray['is_in_same_container'] = $isInSameContainer;
382
+ $messageArray['wc_all_comments_count_new'] = get_comments_number($postId);
383
  $commentListArgs = $this->getCommentListArgs($postId);
384
  $commentListArgs['current_user'] = $currentUser;
385
  $commentListArgs['addComment'] = $commentDepth;
386
  $commentListArgs['comment_author_email'] = $email;
387
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
388
  $messageArray['message'] = wp_list_comments($commentListArgs, array($newComment));
389
  } else {
390
  $messageArray['code'] = 'wc_invalid_field';
412
  $messageArray['code'] = 1;
413
  $messageArray['message'] = $form->renderEditFrontCommentForm($comment);
414
  } else {
415
+ $currentUser = WpdiscuzHelper::getCurrentUser();
416
  $isInRange = $this->helper->isContentInRange($comment->comment_content);
417
  $isEditable = $this->optionsSerialized->commentEditableTime == 'unlimit' ? true && $isInRange : $this->helper->isCommentEditable($comment) && $isInRange;
418
  if ($isEditable && $this->helper->canUserEditComment($comment, $currentUser)) {
494
  }
495
 
496
  public function getSingleComment() {
497
+ $currentUser = WpdiscuzHelper::getCurrentUser();
498
  $messageArray = array('code' => 0);
499
  $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
500
  $comment = get_comment($commentId);
501
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
502
  if ($commentId && $postId && $comment && $comment->comment_post_ID == $postId) {
503
  $parentComment = $this->optimizationHelper->getCommentRoot($commentId);
 
504
  $tree = $this->optimizationHelper->getTreeByParentId($parentComment->comment_ID, $tree);
505
+ // $this->commentsArgs = $this->getDefaultCommentsArgs($postId);
506
+ // $this->commentsArgs['comment__in'] = array_merge(array($parentComment->comment_ID), $tree);
507
+ $commentIn = array_merge(array($parentComment->comment_ID), $tree);
508
+ $comments = get_comments(array('post_id' => $postId, 'comment__in' => $commentIn));
509
  $commentListArgs = $this->getCommentListArgs($postId);
510
  $commentListArgs['isSingle'] = true;
511
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
512
+ $commentListArgs['current_user'] = $currentUser;
513
  $messageArray['message'] = wp_list_comments($commentListArgs, $comments);
514
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
515
+ // $this->commentsArgs['caller'] = '';
516
  }
517
  wp_die(json_encode($messageArray));
518
  }
694
  $commentListArgs = $this->getCommentListArgs($this->commentsArgs['post_id']);
695
  $commentList = $this->_getWPComments($commentListArgs, $commentData);
696
  $commentListArgs['current_user'] = $currentUser;
697
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
698
+ $commentListArgs[self::COOKIE_LAST_VISIT] = isset($this->commentsArgs[self::COOKIE_LAST_VISIT]) ? $this->commentsArgs[self::COOKIE_LAST_VISIT] : '';
699
  $wcWpComments = $islazyLoadOnPageLoad ? '' : wp_list_comments($commentListArgs, $commentList);
700
  $commentData['comment_list'] = $wcWpComments;
701
  $this->commentsArgs['caller'] = '';
704
 
705
  private function _getWPComments(&$commentListArgs, &$commentData) {
706
  $commentList = array();
707
+ $childrenOf = array();
708
  if (!$this->optionsSerialized->wordpressIsPaginate) {
709
  $islazyLoadOnPageLoad = isset($this->commentsArgs['first_load']) && $this->commentsArgs['first_load'] && $this->optionsSerialized->commentListLoadType == 2 && !$this->optionsSerialized->lazyLoadOnPageLoad;
710
  $this->commentsArgs['comment__in'] = $this->dbManager->getCommentList($this->commentsArgs);
718
  if ($this->commentsArgs['is_threaded']) {
719
  if ($this->commentsArgs['comment__in']) {
720
  $parentComments = get_comments($this->commentsArgs);
721
+ $firstParentId = $this->commentsArgs['comment__in'][0];
722
+ $firstParent = null;
723
  foreach ($parentComments as $parentComment) {
724
  $commentList[] = $parentComment;
725
  $childComments = $parentComment->get_children(array(
727
  'status' => $this->commentsArgs['status'],
728
  'orderby' => $this->commentsArgs['orderby']
729
  ));
730
+ $childrenOf[$parentComment->comment_ID] = $childComments;
731
+ $countChildren = count($childComments);
732
+ $commentListArgs['wpdiscuz_root_comment_' . $parentComment->comment_ID] = $countChildren ? ' wpdiscuz-root-comment ' : '';
733
+ if ($countChildren) {
734
+ if ($this->optionsSerialized->isLoadOnlyParentComments) {
735
+ $commentListArgs['wpdiscuz_child_count_' . $parentComment->comment_ID] = $countChildren;
736
+ if ($this->commentsArgs['orderby'] != 'by_vote') {
737
+ if (!$firstParent) {
738
+ if ($this->commentsArgs['order'] == 'desc') {
739
+ $firstParent = $childrenOf && isset($childrenOf[$firstParentId]) && $childrenOf[$firstParentId] ? $childrenOf[$firstParentId][count($childrenOf[$firstParentId]) - 1] : null;
740
+ $firstParentId = $firstParent ? $firstParent->comment_ID + 1 : 0;
741
+ } else {
742
+ $firstParent = $parentComments[$firstParentId];
743
+ $firstParentId = $firstParent ? $firstParent->comment_ID - 1 : 0;
744
+ }
745
+ }
746
+ $showRepliesLink = $this->helper->loadMoreLink($firstParentId, $parentComment->comment_post_ID) . '&showReplies=' . $parentComment->comment_ID;
747
+ $commentListArgs['showRepliesLink_' . $parentComment->comment_ID] = $showRepliesLink;
748
+ if (isset($_GET['showReplies']) && ($repliesOf = intval($_GET['showReplies'])) && $repliesOf == $parentComment->comment_ID) {
749
+ foreach ($childComments as $childComment) {
750
+ $commentList[] = $childComment;
751
+ }
752
+ }
753
+ }
754
+ } else {
755
+ foreach ($childComments as $childComment) {
756
+ $commentList[] = $childComment;
757
+ }
758
+ }
759
  }
760
  }
761
  }
817
  'orderby' => 'comment_date_gmt',
818
  'order' => $this->optionsSerialized->wordpressCommentOrder,
819
  'date_order' => $this->optionsSerialized->wordpressCommentOrder,
820
+ 'limit' => $this->optionsSerialized->commentListLoadType == 3 ? 0 : $this->optionsSerialized->wordpressCommentPerPage,
821
  'is_threaded' => $this->optionsSerialized->wordpressThreadComments,
822
  'status' => 'approve',
823
  'comment__in' => '',
881
  wp_enqueue_style('wpdiscuz-easy-responsive-tabs-css');
882
  wp_register_script('wpdiscuz-easy-responsive-tabs-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/easy-responsive-tabs/js/easy-responsive-tabs.js'), array('jquery'), '1.0.1', true);
883
  wp_enqueue_script('wpdiscuz-easy-responsive-tabs-js');
884
+ wp_register_style('wpdiscuz-options-css', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/options.css'));
885
  wp_enqueue_style('wpdiscuz-options-css');
886
  wp_register_script('wpdiscuz-options-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz-options.js'), array('jquery'));
887
  wp_enqueue_script('wpdiscuz-options-js');
1057
  public function initCurrentPostType() {
1058
  global $post;
1059
  if ($this->isWpdiscuzLoaded) {
1060
+ $this->form = $this->wpdiscuzForm->getForm($post->ID);
1061
  add_filter('comments_template', array(&$this, 'addCommentForm'), 10);
1062
  }
1063
  }
1118
  $this->optionsSerialized->phrases['wc_blog_role_guest'] = isset($this->optionsSerialized->phrases['wc_blog_role_guest']) ? $this->optionsSerialized->phrases['wc_blog_role_guest'] : __('Guest', 'wpdiscuz');
1119
  }
1120
 
1121
+ public function showReplies() {
1122
+ $response = array('code' => 0, 'data' => '');
1123
+ $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
1124
+ $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
1125
+ if ($postId) {
1126
+ $commentListArgs = $this->getCommentListArgs($postId);
1127
+ $commentListArgs['current_user'] = WpdiscuzHelper::getCurrentUser();
1128
+ $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment : true;
1129
+ $cArgs = $this->getDefaultCommentsArgs($postId);
1130
+ $cArgs['parent'] = $commentId;
1131
+ $cArgs['limit'] = 0;
1132
+ $comment = get_comment($commentId);
1133
+ $children = $comment->get_children(array(
1134
+ 'format' => 'flat',
1135
+ 'status' => $cArgs['status'],
1136
+ 'orderby' => $cArgs['orderby'],
1137
+ 'hierarchical' => 'threaded',
1138
+ ));
1139
+ $countChildren = count($children);
1140
+ $commentListArgs['wpdiscuz_root_comment_' . $comment->comment_ID] = $countChildren;
1141
+ $commentListArgs['wpdiscuz_child_count_' . $comment->comment_ID] = $countChildren;
1142
+ $commentListArgs['wpdiscuz_hide_child_count_' . $comment->comment_ID] = 'wpdiscuz-hidden';
1143
+ $comments = array_merge(array($comment), $children);
1144
+ if ($comments) {
1145
+ $response['code'] = 1;
1146
+ $response['data'] = wp_list_comments($commentListArgs, $comments);
1147
+ }
1148
+ }
1149
+ wp_die(json_encode($response));
1150
+ }
1151
+
1152
  }
1153
 
1154
  $wpdiscuz = new WpdiscuzCore();
forms/wpDiscuzForm.php CHANGED
@@ -27,7 +27,7 @@ class wpDiscuzForm implements wpdFormConst {
27
  add_action('admin_enqueue_scripts', array(&$this, 'customFormAdminScripts'), 245);
28
  add_action('manage_wpdiscuz_form_posts_custom_column', array(&$this, 'displayContentTypesOnList'), 10, 2);
29
  add_filter('manage_wpdiscuz_form_posts_columns', array(&$this, 'addContentTypeColumn'));
30
- add_action('edit_form_after_title', array(&$this, 'renderFormeGeneralSettings'));
31
  add_action('wp_ajax_wpdiscuzCustomFields', array(&$this, 'wpdiscuzFieldsDialogContent'));
32
  add_action('wp_ajax_adminFieldForm', array(&$this, 'adminFieldForm'));
33
  add_action('transition_comment_status', array(&$this, 'changeCommentStatus'), 10, 3);
@@ -192,7 +192,7 @@ class wpDiscuzForm implements wpdFormConst {
192
  }
193
  }
194
 
195
- public function renderFormeGeneralSettings($post) {
196
  global $current_screen;
197
  if ($current_screen->id == self::WPDISCUZ_FORMS_CONTENT_TYPE) {
198
  $this->form->setFormID($post->ID);
@@ -381,6 +381,7 @@ class wpDiscuzForm implements wpdFormConst {
381
  private function getDefaultFormGeneralOptions($version, $lang, $wpdGeneralOptions, $phrases, &$postTypes) {
382
  $generalOptions = array(
383
  'lang' => $lang,
 
384
  'guest_can_comment' => get_option('comment_registration') ? 0 : 1,
385
  'show_subscription_bar' => 1,
386
  'header_text' => __('Leave a Reply', 'wpdiscuz'),
27
  add_action('admin_enqueue_scripts', array(&$this, 'customFormAdminScripts'), 245);
28
  add_action('manage_wpdiscuz_form_posts_custom_column', array(&$this, 'displayContentTypesOnList'), 10, 2);
29
  add_filter('manage_wpdiscuz_form_posts_columns', array(&$this, 'addContentTypeColumn'));
30
+ add_action('edit_form_after_title', array(&$this, 'renderFormGeneralSettings'));
31
  add_action('wp_ajax_wpdiscuzCustomFields', array(&$this, 'wpdiscuzFieldsDialogContent'));
32
  add_action('wp_ajax_adminFieldForm', array(&$this, 'adminFieldForm'));
33
  add_action('transition_comment_status', array(&$this, 'changeCommentStatus'), 10, 3);
192
  }
193
  }
194
 
195
+ public function renderFormGeneralSettings($post) {
196
  global $current_screen;
197
  if ($current_screen->id == self::WPDISCUZ_FORMS_CONTENT_TYPE) {
198
  $this->form->setFormID($post->ID);
381
  private function getDefaultFormGeneralOptions($version, $lang, $wpdGeneralOptions, $phrases, &$postTypes) {
382
  $generalOptions = array(
383
  'lang' => $lang,
384
+ 'roles_cannot_comment' => array(),
385
  'guest_can_comment' => get_option('comment_registration') ? 0 : 1,
386
  'show_subscription_bar' => 1,
387
  'header_text' => __('Leave a Reply', 'wpdiscuz'),
forms/wpdFormAttr/Form.php CHANGED
@@ -20,6 +20,7 @@ class Form {
20
  private $fieldsBeforeSave = array();
21
  private $ratings;
22
  private $ratingsExists = false;
 
23
 
24
  public function __construct($options, $formID = 0) {
25
  $this->defaultsFieldsNames = array(
@@ -336,6 +337,7 @@ class Form {
336
  private function validateGeneralOptions($options) {
337
  $validData = array(
338
  'lang' => get_locale(),
 
339
  'guest_can_comment' => 1,
340
  'show_subscription_bar' => 1,
341
  'header_text' => '',
@@ -343,6 +345,10 @@ class Form {
343
  'postid' => '',
344
  'postidsArray' => array()
345
  );
 
 
 
 
346
  if (isset($options['guest_can_comment'])) {
347
  $validData['guest_can_comment'] = intval($options['guest_can_comment']);
348
  }
@@ -473,7 +479,7 @@ class Form {
473
  <div class="wc-secondary-forms-social-content"></div>
474
  <?php } ?>
475
  <?php
476
- if ($this->isUserCanComment($currentUser->ID, $message)) {
477
  ?>
478
  <form class="wc_comm_form <?php echo!$isMain ? 'wc-secondary-form-wrapper' : 'wc_main_comm_form'; ?>" method="post" enctype="multipart/form-data">
479
  <div class="wc-field-comment">
@@ -495,8 +501,8 @@ class Form {
495
  <?php } ?>
496
  <?php if (defined('WPDISCUZ_BOTTOM_TOOLBAR')): ?>
497
  <div class="wpdiscuz-textarea-foot">
498
- <?php do_action('wpdiscuz_button', $uniqueId, $currentUser); ?>
499
- <div class="wpdiscuz-button-actions"><?php do_action('wpdiscuz_button_actions', $uniqueId, $currentUser); ?></div>
500
  </div>
501
  <?php endif; ?>
502
  </div>
@@ -595,6 +601,27 @@ class Form {
595
  <input required="" type="text" name="<?php echo wpdFormConst::WPDISCUZ_META_FORMS_GENERAL_OPTIONS; ?>[lang]" value="<?php echo $lang; ?>" >
596
  </td>
597
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
598
  <tr>
599
  <th>
600
  <?php _e('Allow guests to comment', 'wpdiscuz'); ?>
@@ -693,13 +720,20 @@ class Form {
693
  <?php
694
  }
695
 
696
- private function isUserCanComment($isUserLoggedIn, &$message) {
697
  global $post;
698
  $user_can_comment = TRUE;
699
- if (!$this->generalOptions['guest_can_comment']) {
700
- if (!$isUserLoggedIn) {
701
- $user_can_comment = FALSE;
 
 
 
 
 
702
  }
 
 
703
  }
704
  if (class_exists('WooCommerce') && get_post_type($post->ID) == 'product') {
705
  if (get_option('woocommerce_review_rating_verification_required') === 'no' || wc_customer_bought_product('', get_current_user_id(), $post->ID)) {
@@ -709,6 +743,7 @@ class Form {
709
  $message = '<p class="woocommerce-verification-required">' . __('Only logged in customers who have purchased this product may leave a review.', 'woocommerce') . '</p>';
710
  }
711
  }
 
712
  return $user_can_comment;
713
  }
714
 
20
  private $fieldsBeforeSave = array();
21
  private $ratings;
22
  private $ratingsExists = false;
23
+ public $isUserCanComment = true;
24
 
25
  public function __construct($options, $formID = 0) {
26
  $this->defaultsFieldsNames = array(
337
  private function validateGeneralOptions($options) {
338
  $validData = array(
339
  'lang' => get_locale(),
340
+ 'roles_cannot_comment' => array(),
341
  'guest_can_comment' => 1,
342
  'show_subscription_bar' => 1,
343
  'header_text' => '',
345
  'postid' => '',
346
  'postidsArray' => array()
347
  );
348
+ if (isset($options['roles_cannot_comment'])) {
349
+ $validData['roles_cannot_comment'] = array_map('trim', $options['roles_cannot_comment']);
350
+ }
351
+
352
  if (isset($options['guest_can_comment'])) {
353
  $validData['guest_can_comment'] = intval($options['guest_can_comment']);
354
  }
479
  <div class="wc-secondary-forms-social-content"></div>
480
  <?php } ?>
481
  <?php
482
+ if ($this->isUserCanComment($currentUser, $message)) {
483
  ?>
484
  <form class="wc_comm_form <?php echo!$isMain ? 'wc-secondary-form-wrapper' : 'wc_main_comm_form'; ?>" method="post" enctype="multipart/form-data">
485
  <div class="wc-field-comment">
501
  <?php } ?>
502
  <?php if (defined('WPDISCUZ_BOTTOM_TOOLBAR')): ?>
503
  <div class="wpdiscuz-textarea-foot">
504
+ <?php do_action('wpdiscuz_button', $uniqueId, $currentUser,$this); ?>
505
+ <div class="wpdiscuz-button-actions"><?php do_action('wpdiscuz_button_actions', $uniqueId, $currentUser,$this); ?></div>
506
  </div>
507
  <?php endif; ?>
508
  </div>
601
  <input required="" type="text" name="<?php echo wpdFormConst::WPDISCUZ_META_FORMS_GENERAL_OPTIONS; ?>[lang]" value="<?php echo $lang; ?>" >
602
  </td>
603
  </tr>
604
+ <tr>
605
+ <th>
606
+ <?php _e('Disable commenting for roles', 'wpdiscuz'); ?>
607
+ </th>
608
+ <td>
609
+ <?php
610
+ $blogRoles = get_editable_roles();
611
+ $rolesCannotComment = isset($this->generalOptions['roles_cannot_comment']) ? $this->generalOptions['roles_cannot_comment'] : array();
612
+ foreach ($blogRoles as $role => $info) {
613
+ if ($role != 'administrator') {
614
+ ?>
615
+ <div style="float:left; display:inline-block; padding:3px 5px 3px 7px; min-width:25%;">
616
+ <input type="checkbox" <?php checked(in_array($role, $rolesCannotComment) == true); ?> value="<?php echo $role; ?>" name="<?php echo wpdFormConst::WPDISCUZ_META_FORMS_GENERAL_OPTIONS; ?>[roles_cannot_comment][]" id="wpd-<?php echo $role; ?>" style="margin:0px; vertical-align: middle;" />
617
+ <label for="wpd-<?php echo $role; ?>" style="white-space:nowrap; font-size:13px;"><?php echo $info['name']; ?></label>
618
+ </div>
619
+ <?php
620
+ }
621
+ }
622
+ ?>
623
+ </td>
624
+ </tr>
625
  <tr>
626
  <th>
627
  <?php _e('Allow guests to comment', 'wpdiscuz'); ?>
720
  <?php
721
  }
722
 
723
+ private function isUserCanComment($currentUser, &$message) {
724
  global $post;
725
  $user_can_comment = TRUE;
726
+ if ($currentUser && $currentUser->roles && is_array($currentUser->roles)) {
727
+ $this->generalOptions['roles_cannot_comment'] = isset($this->generalOptions['roles_cannot_comment']) ? $this->generalOptions['roles_cannot_comment'] : array();
728
+ foreach ($currentUser->roles as $role) {
729
+ if (in_array($role, $this->generalOptions['roles_cannot_comment'])) {
730
+ $user_can_comment = false;
731
+ $message = $this->wpdOptions->phrases['wc_roles_cannot_comment_message'];
732
+ break;
733
+ }
734
  }
735
+ } else {
736
+ $user_can_comment = $this->generalOptions['guest_can_comment'];
737
  }
738
  if (class_exists('WooCommerce') && get_post_type($post->ID) == 'product') {
739
  if (get_option('woocommerce_review_rating_verification_required') === 'no' || wc_customer_bought_product('', get_current_user_id(), $post->ID)) {
743
  $message = '<p class="woocommerce-verification-required">' . __('Only logged in customers who have purchased this product may leave a review.', 'woocommerce') . '</p>';
744
  }
745
  }
746
+ $this->isUserCanComment = $user_can_comment;
747
  return $user_can_comment;
748
  }
749
 
languages/wpdiscuz.pot CHANGED
@@ -3,8 +3,8 @@ msgid ""
3
  msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: wpDiscuz\n"
6
- "POT-Creation-Date: 2017-11-15 17:13+0400\n"
7
- "PO-Revision-Date: 2017-11-15 17:13+0400\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
10
  "MIME-Version: 1.0\n"
@@ -20,7 +20,7 @@ msgstr ""
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
- #: class.WpdiscuzCore.php:807 class.WpdiscuzCore.php:1008
24
  #: options/options-layouts/settings-social.php:40
25
  #: options/options-layouts/settings-social.php:42
26
  #: options/options-layouts/settings-social.php:44
@@ -28,41 +28,41 @@ msgstr ""
28
  msgid "Settings"
29
  msgstr ""
30
 
31
- #: class.WpdiscuzCore.php:809 class.WpdiscuzCore.php:1010
32
  msgid "Phrases"
33
  msgstr ""
34
 
35
- #: class.WpdiscuzCore.php:811
36
  msgid "Tools"
37
  msgstr ""
38
 
39
- #: class.WpdiscuzCore.php:812 options/html-options.php:22
40
  #: options/html-options.php:62 options/options-layouts/settings-addons.php:7
41
  msgid "Addons"
42
  msgstr ""
43
 
44
- #: class.WpdiscuzCore.php:823
45
  msgid "Do you really want to reset all options?"
46
  msgstr ""
47
 
48
- #: class.WpdiscuzCore.php:824
49
  msgid "Do you really want to remove voting data?"
50
  msgstr ""
51
 
52
- #: class.WpdiscuzCore.php:1064 options/phrases-layouts/phrases-comment.php:56
53
  msgid "Admin"
54
  msgstr ""
55
 
56
- #: class.WpdiscuzCore.php:1066 class.WpdiscuzCore.php:1075
57
  #: options/phrases-layouts/phrases-comment.php:58
58
  msgid "Author"
59
  msgstr ""
60
 
61
- #: class.WpdiscuzCore.php:1070 options/phrases-layouts/phrases-comment.php:64
62
  msgid "Member"
63
  msgstr ""
64
 
65
- #: class.WpdiscuzCore.php:1076 options/phrases-layouts/phrases-comment.php:62
66
  msgid "Guest"
67
  msgstr ""
68
 
@@ -114,7 +114,7 @@ msgstr ""
114
  msgid "Post IDs"
115
  msgstr ""
116
 
117
- #: forms/wpDiscuzForm.php:166 forms/wpdFormAttr/Form.php:591
118
  msgid "Language"
119
  msgstr ""
120
 
@@ -144,7 +144,7 @@ msgid "Add Field"
144
  msgstr ""
145
 
146
  #: forms/wpDiscuzForm.php:217 forms/wpdFormAttr/Field/Field.php:61
147
- #: options/class.WpdiscuzOptionsSerialized.php:638
148
  #: options/phrases-layouts/phrases-comment.php:19
149
  msgid "Edit"
150
  msgstr ""
@@ -161,7 +161,7 @@ msgstr ""
161
  msgid "Permission Denied !!!"
162
  msgstr ""
163
 
164
- #: forms/wpDiscuzForm.php:251 forms/wpdFormAttr/Form.php:561
165
  #: forms/wpdFormAttr/html/admin-form-fields-list.php:18
166
  #: options/options-layouts/settings-customfields.php:7
167
  msgid "Custom Fields"
@@ -175,12 +175,12 @@ msgstr ""
175
  msgid "Default Form"
176
  msgstr ""
177
 
178
- #: forms/wpDiscuzForm.php:386 forms/wpDiscuzForm.php:394
179
- #: forms/wpdFormAttr/Form.php:626
180
  msgid "Leave a Reply"
181
  msgstr ""
182
 
183
- #: forms/wpDiscuzForm.php:409 forms/wpdFormAttr/Field/CheckboxField.php:12
184
  #: forms/wpdFormAttr/Field/ColorField.php:12
185
  #: forms/wpdFormAttr/Field/DateField.php:12
186
  #: forms/wpdFormAttr/Field/DefaultField/Captcha.php:25
@@ -195,41 +195,41 @@ msgstr ""
195
  #: forms/wpdFormAttr/Field/SelectField.php:12
196
  #: forms/wpdFormAttr/Field/TextAreaField.php:13
197
  #: forms/wpdFormAttr/Field/TextField.php:12
198
- #: forms/wpdFormAttr/Field/UrlField.php:12 forms/wpdFormAttr/Form.php:727
199
  msgid "Name"
200
  msgstr ""
201
 
202
- #: forms/wpDiscuzForm.php:411 forms/wpdFormAttr/Field/DefaultField/Email.php:64
203
- #: forms/wpdFormAttr/Form.php:734
204
- #: options/class.WpdiscuzOptionsSerialized.php:625 options/html-phrases.php:25
205
  msgid "Email"
206
  msgstr ""
207
 
208
- #: forms/wpDiscuzForm.php:413
209
  msgid "WebSite URL"
210
  msgstr ""
211
 
212
- #: forms/wpDiscuzForm.php:416
213
  #: forms/wpdFormAttr/Field/DefaultField/Submit.php:77
214
- #: forms/wpdFormAttr/Form.php:757
215
  msgid "Post Comment"
216
  msgstr ""
217
 
218
- #: forms/wpDiscuzForm.php:425
219
  msgid "Clone Form"
220
  msgstr ""
221
 
222
- #: forms/wpDiscuzForm.php:437
223
  msgid "Clone"
224
  msgstr ""
225
 
226
- #: forms/wpDiscuzForm.php:475
227
  msgid ""
228
  "Comment Form is not detected, please navigate to form manager page to create "
229
  "it. "
230
  msgstr ""
231
 
232
- #: forms/wpDiscuzForm.php:476
233
  msgid "Add Comment Form"
234
  msgstr ""
235
 
@@ -422,7 +422,7 @@ msgid "Show for logged in users"
422
  msgstr ""
423
 
424
  #: forms/wpdFormAttr/Field/DefaultField/Captcha.php:107
425
- #: forms/wpdFormAttr/Form.php:750
426
  msgid "Code"
427
  msgstr ""
428
 
@@ -455,7 +455,7 @@ msgid "Enable"
455
  msgstr ""
456
 
457
  #: forms/wpdFormAttr/Field/DefaultField/Website.php:83
458
- #: forms/wpdFormAttr/Form.php:741
459
  msgid "Website"
460
  msgstr ""
461
 
@@ -492,55 +492,59 @@ msgstr ""
492
  msgid "New value new line"
493
  msgstr ""
494
 
495
- #: forms/wpdFormAttr/Form.php:600
 
 
 
 
496
  msgid "Allow guests to comment"
497
  msgstr ""
498
 
499
- #: forms/wpdFormAttr/Form.php:604 forms/wpdFormAttr/Form.php:615
500
  msgid "Yes"
501
  msgstr ""
502
 
503
- #: forms/wpdFormAttr/Form.php:606 forms/wpdFormAttr/Form.php:617
504
  msgid "No"
505
  msgstr ""
506
 
507
- #: forms/wpdFormAttr/Form.php:611
508
  msgid "Enable subscription bar"
509
  msgstr ""
510
 
511
- #: forms/wpdFormAttr/Form.php:622
512
  msgid "Comment form header text"
513
  msgstr ""
514
 
515
- #: forms/wpdFormAttr/Form.php:631
516
  msgid "Display comment form for post types"
517
  msgstr ""
518
 
519
- #: forms/wpdFormAttr/Form.php:638
520
  msgid ""
521
  "The red marked post types are already attached to other comment form. If you "
522
  "set this form too, the old forms will not be used for them."
523
  msgstr ""
524
 
525
- #: forms/wpdFormAttr/Form.php:660
526
  msgid "Display comment form for post IDs"
527
  msgstr ""
528
 
529
- #: forms/wpdFormAttr/Form.php:661
530
  msgid ""
531
  "You can use this form for certain posts/pages specified by comma separated "
532
  "IDs."
533
  msgstr ""
534
 
535
- #: forms/wpdFormAttr/Form.php:672
536
  msgid "Comment Text Field"
537
  msgstr ""
538
 
539
- #: forms/wpdFormAttr/Form.php:687
540
  msgid "ADD ROW"
541
  msgstr ""
542
 
543
- #: forms/wpdFormAttr/Form.php:709
544
  msgid ""
545
  "Only logged in customers who have purchased this product may leave a review."
546
  msgstr ""
@@ -549,114 +553,114 @@ msgstr ""
549
  msgid "Comment Form Fields"
550
  msgstr ""
551
 
552
- #: options/class.WpdiscuzOptions.php:24 options/class.WpdiscuzOptions.php:103
553
- #: options/class.WpdiscuzOptions.php:221
554
  msgid "Hacker?"
555
  msgstr ""
556
 
557
- #: options/class.WpdiscuzOptions.php:94
558
  msgid "Settings updated"
559
  msgstr ""
560
 
561
- #: options/class.WpdiscuzOptions.php:210
562
  msgid "Phrases updated"
563
  msgstr ""
564
 
565
- #: options/class.WpdiscuzOptions.php:256
566
  msgid ""
567
  "Brings an ocean of emotions to your comments. It comes with an awesome smile "
568
  "package."
569
  msgstr ""
570
 
571
- #: options/class.WpdiscuzOptions.php:257
572
  msgid ""
573
  "Extended information about comment author with Profile, Activity, Votes and "
574
  "Subscriptions Tabs on pop-up window."
575
  msgstr ""
576
 
577
- #: options/class.WpdiscuzOptions.php:259
578
  msgid ""
579
  "Total control over comment subscriptions. Full list, monitor, manage, "
580
  "filter, unsubscribe, confirm..."
581
  msgstr ""
582
 
583
- #: options/class.WpdiscuzOptions.php:260
584
  msgid ""
585
  "A full-fledged tool-kit for advertising in comment section of your website. "
586
  "Separate banner and ad managment."
587
  msgstr ""
588
 
589
- #: options/class.WpdiscuzOptions.php:261
590
  msgid ""
591
  "Allows to mention comments and users in comment text using #comment-id and "
592
  "@username tags."
593
  msgstr ""
594
 
595
- #: options/class.WpdiscuzOptions.php:262
596
  msgid ""
597
  "See comment likers and voters of each comment. Adds user reputation and "
598
  "badges based on received likes."
599
  msgstr ""
600
 
601
- #: options/class.WpdiscuzOptions.php:263
602
  msgid ""
603
  "Comment reporting tools. Auto-moderates comments based on number of flags "
604
  "and dislikes."
605
  msgstr ""
606
 
607
- #: options/class.WpdiscuzOptions.php:264
608
  msgid ""
609
  "Adds a smart and intuitive AJAX \"Translate\" button with 60 language "
610
  "options. Uses free translation API."
611
  msgstr ""
612
 
613
- #: options/class.WpdiscuzOptions.php:265
614
  msgid ""
615
  "AJAX powered front-end comment search. It starts searching while you type "
616
  "search words. "
617
  msgstr ""
618
 
619
- #: options/class.WpdiscuzOptions.php:266
620
  msgid ""
621
  "Most voted comments, Active comment threads, Most commented posts, Active "
622
  "comment authors"
623
  msgstr ""
624
 
625
- #: options/class.WpdiscuzOptions.php:267
626
  msgid ""
627
  "All in one powerful yet simple admin toolkit to moderate comments on front-"
628
  "end."
629
  msgstr ""
630
 
631
- #: options/class.WpdiscuzOptions.php:268
632
  msgid ""
633
  "Extended comment attachment system. Allows to upload images, videos, audios "
634
  "and other file types."
635
  msgstr ""
636
 
637
- #: options/class.WpdiscuzOptions.php:269
638
  msgid ""
639
  "Adds No CAPTCHA on all comment forms. Stops spam and bot comments with "
640
  "Google reCAPTCHA"
641
  msgstr ""
642
 
643
- #: options/class.WpdiscuzOptions.php:270
644
  msgid ""
645
  "Integrates myCRED Badges and Ranks. Converts wpDiscuz comment votes/likes to "
646
  "myCRED points. "
647
  msgstr ""
648
 
649
- #: options/class.WpdiscuzOptions.php:271
650
  msgid ""
651
  "Allows censoring comment words. Filters comments and replaces those phrases "
652
  "with custom words."
653
  msgstr ""
654
 
655
- #: options/class.WpdiscuzOptions.php:277
656
  msgid "Custom Comment Forms"
657
  msgstr ""
658
 
659
- #: options/class.WpdiscuzOptions.php:278
660
  msgid ""
661
  "You can create custom comment forms with wpDiscuz. wpDiscuz 4 comes with "
662
  "custom comment forms and fields. You can create custom comment forms for "
@@ -664,63 +668,63 @@ msgid ""
664
  "eaxample: text, dropdown, rating, checkboxes, etc..."
665
  msgstr ""
666
 
667
- #: options/class.WpdiscuzOptions.php:281
668
  msgid "Emoticons"
669
  msgstr ""
670
 
671
- #: options/class.WpdiscuzOptions.php:282
672
  msgid ""
673
  "You can add more emotions to your comments using wpDiscuz Emoticons addon."
674
  msgstr ""
675
 
676
- #: options/class.WpdiscuzOptions.php:285
677
  msgid "Ads Manager"
678
  msgstr ""
679
 
680
- #: options/class.WpdiscuzOptions.php:286
681
  msgid ""
682
  "Increase your income using ad banners. Comment area is the most active "
683
  "sections for advertising. wpDiscuz Ads Manager addon is designed to help you "
684
  "add banners and control ads in this section."
685
  msgstr ""
686
 
687
- #: options/class.WpdiscuzOptions.php:289
688
  msgid "User and Comment Mentioning"
689
  msgstr ""
690
 
691
- #: options/class.WpdiscuzOptions.php:290
692
  msgid ""
693
  "Using wpDiscuz User &amp; Comment Mentioning addon you can allow commenters "
694
  "mention comments and users in comment text using #comment-id and @username "
695
  "tags."
696
  msgstr ""
697
 
698
- #: options/class.WpdiscuzOptions.php:293
699
  msgid "Advanced Likers"
700
  msgstr ""
701
 
702
- #: options/class.WpdiscuzOptions.php:294
703
  msgid ""
704
  "wpDiscuz Advanced Likers addon displays likers and voters of each comment. "
705
  "Adds user reputation and badges based on received likes."
706
  msgstr ""
707
 
708
- #: options/class.WpdiscuzOptions.php:297
709
  msgid "Report and Flagging"
710
  msgstr ""
711
 
712
- #: options/class.WpdiscuzOptions.php:298
713
  msgid ""
714
  "Let your commenters help you to determine and remove spam comments. wpDiscuz "
715
  "Report and Flagging addon comes with comment reporting tools. Automaticaly "
716
  "auto-moderates comments based on number of flags and dislikes."
717
  msgstr ""
718
 
719
- #: options/class.WpdiscuzOptions.php:301
720
  msgid "Comment Translate"
721
  msgstr ""
722
 
723
- #: options/class.WpdiscuzOptions.php:302
724
  msgid ""
725
  "In most cases the big part of your visitors are not a native speakers of "
726
  "your language. Make your comments comprehensible for all visitors using "
@@ -729,11 +733,11 @@ msgid ""
729
  "translation API."
730
  msgstr ""
731
 
732
- #: options/class.WpdiscuzOptions.php:305
733
  msgid "Comment Search"
734
  msgstr ""
735
 
736
- #: options/class.WpdiscuzOptions.php:306
737
  msgid ""
738
  "You can let website visitor search in comments. It's always more attractive "
739
  "to find a comment about something that interest you. Using wpDiscuz Comment "
@@ -741,258 +745,258 @@ msgid ""
741
  "above comment list."
742
  msgstr ""
743
 
744
- #: options/class.WpdiscuzOptions.php:309
745
  msgid "wpDiscuz Widgets"
746
  msgstr ""
747
 
748
- #: options/class.WpdiscuzOptions.php:310
749
  msgid ""
750
  "More Comment Widgets! Most voted comments, Active comment threads, Most "
751
  "commented posts, Active comment authors widgets are available in wpDiscuz "
752
  "Widgets Addon"
753
  msgstr ""
754
 
755
- #: options/class.WpdiscuzOptions.php:313
756
  msgid "Front-end Moderation"
757
  msgstr ""
758
 
759
- #: options/class.WpdiscuzOptions.php:314
760
  msgid ""
761
  "You can moderate comments on front-end using all in one powerful yet simple "
762
  "wpDiscuz Frontend Moderation addon."
763
  msgstr ""
764
 
765
- #: options/class.WpdiscuzOptions.php:317
766
  msgid "Media Uploader"
767
  msgstr ""
768
 
769
- #: options/class.WpdiscuzOptions.php:318
770
  msgid ""
771
  "You can let website visitors attach images and files to comments and embed "
772
  "video/audio content using wpDiscuz Media Uploader addon."
773
  msgstr ""
774
 
775
- #: options/class.WpdiscuzOptions.php:321
776
  msgid "Google ReCaptcha"
777
  msgstr ""
778
 
779
- #: options/class.WpdiscuzOptions.php:322
780
  msgid ""
781
  "Advanced spam protection with wpDiscuz Google reCAPTCHA addon. This addon "
782
  "adds No-CAPTCHA reCAPTCHA on all comment forms. Stops spam and bot comments."
783
  msgstr ""
784
 
785
- #: options/class.WpdiscuzOptions.php:336
786
  msgid "New Addons are available for wpDiscuz Comments Plugin"
787
  msgstr ""
788
 
789
- #: options/class.WpdiscuzOptions.php:343 options/class.WpdiscuzOptions.php:349
790
  msgid "Go to wpDiscuz Addons subMenu"
791
  msgstr ""
792
 
793
- #: options/class.WpdiscuzOptions.php:380
794
  msgid "Do you know?"
795
  msgstr ""
796
 
797
- #: options/class.WpdiscuzOptions.php:392
798
  msgid "More info"
799
  msgstr ""
800
 
801
- #: options/class.WpdiscuzOptionsSerialized.php:619
802
  msgid "Be the First to Comment!"
803
  msgstr ""
804
 
805
- #: options/class.WpdiscuzOptionsSerialized.php:620 options/html-phrases.php:23
806
  #: options/phrases-layouts/phrases-general.php:15
807
  msgid "Comment"
808
  msgstr ""
809
 
810
- #: options/class.WpdiscuzOptionsSerialized.php:621
811
  msgid "Comments"
812
  msgstr ""
813
 
814
- #: options/class.WpdiscuzOptionsSerialized.php:622
815
  msgid "on"
816
  msgstr ""
817
 
818
- #: options/class.WpdiscuzOptionsSerialized.php:623
819
  msgid "Start the discussion"
820
  msgstr ""
821
 
822
- #: options/class.WpdiscuzOptionsSerialized.php:624
823
  msgid "Join the discussion"
824
  msgstr ""
825
 
826
- #: options/class.WpdiscuzOptionsSerialized.php:626
827
  #: options/phrases-layouts/phrases-form.php:23
828
  #: options/phrases-layouts/phrases-form.php:24
829
  msgid "Notify of"
830
  msgstr ""
831
 
832
- #: options/class.WpdiscuzOptionsSerialized.php:627
833
  #: options/phrases-layouts/phrases-form.php:28
834
  msgid "new follow-up comments"
835
  msgstr ""
836
 
837
- #: options/class.WpdiscuzOptionsSerialized.php:628
838
  msgid "new replies to my comments"
839
  msgstr ""
840
 
841
- #: options/class.WpdiscuzOptionsSerialized.php:629
842
  #: options/phrases-layouts/phrases-form.php:36
843
  msgid "Notify of new replies to this comment"
844
  msgstr ""
845
 
846
- #: options/class.WpdiscuzOptionsSerialized.php:630
847
  #: options/phrases-layouts/phrases-form.php:39
848
  #: options/phrases-layouts/phrases-form.php:40
849
  msgid "Sort by"
850
  msgstr ""
851
 
852
- #: options/class.WpdiscuzOptionsSerialized.php:631
853
  #: options/phrases-layouts/phrases-form.php:43
854
  #: options/phrases-layouts/phrases-form.php:44
855
  msgid "newest"
856
  msgstr ""
857
 
858
- #: options/class.WpdiscuzOptionsSerialized.php:632
859
  #: options/phrases-layouts/phrases-form.php:47
860
  #: options/phrases-layouts/phrases-form.php:48
861
  msgid "oldest"
862
  msgstr ""
863
 
864
- #: options/class.WpdiscuzOptionsSerialized.php:633
865
  #: options/phrases-layouts/phrases-form.php:51
866
  #: options/phrases-layouts/phrases-form.php:52
867
  msgid "most voted"
868
  msgstr ""
869
 
870
- #: options/class.WpdiscuzOptionsSerialized.php:634
871
  msgid "Load More Comments"
872
  msgstr ""
873
 
874
- #: options/class.WpdiscuzOptionsSerialized.php:635
875
  #: options/phrases-layouts/phrases-general.php:31
876
  msgid "Load Rest of Comments"
877
  msgstr ""
878
 
879
- #: options/class.WpdiscuzOptionsSerialized.php:636
880
  #: options/phrases-layouts/phrases-comment.php:11
881
  msgid "Reply"
882
  msgstr ""
883
 
884
- #: options/class.WpdiscuzOptionsSerialized.php:637
885
  #: options/phrases-layouts/phrases-comment.php:15
886
  msgid "Share"
887
  msgstr ""
888
 
889
- #: options/class.WpdiscuzOptionsSerialized.php:639
890
  #: options/phrases-layouts/phrases-comment.php:23
891
  msgid "Share On Facebook"
892
  msgstr ""
893
 
894
- #: options/class.WpdiscuzOptionsSerialized.php:640
895
  #: options/phrases-layouts/phrases-comment.php:27
896
  msgid "Share On Twitter"
897
  msgstr ""
898
 
899
- #: options/class.WpdiscuzOptionsSerialized.php:641
900
  #: options/phrases-layouts/phrases-comment.php:31
901
  msgid "Share On Google"
902
  msgstr ""
903
 
904
- #: options/class.WpdiscuzOptionsSerialized.php:642
905
  #: options/phrases-layouts/phrases-comment.php:35
906
  msgid "Share On VKontakte"
907
  msgstr ""
908
 
909
- #: options/class.WpdiscuzOptionsSerialized.php:643
910
  #: options/phrases-layouts/phrases-comment.php:39
911
  msgid "Share On Odnoklassniki"
912
  msgstr ""
913
 
914
- #: options/class.WpdiscuzOptionsSerialized.php:644
915
  #: options/phrases-layouts/phrases-comment.php:43
916
  msgid "Hide Replies"
917
  msgstr ""
918
 
919
- #: options/class.WpdiscuzOptionsSerialized.php:645
920
  #: options/phrases-layouts/phrases-comment.php:47
921
  msgid "Show Replies"
922
  msgstr ""
923
 
924
- #: options/class.WpdiscuzOptionsSerialized.php:646
925
  #: options/phrases-layouts/phrases-general.php:36
926
  msgid "New Comment"
927
  msgstr ""
928
 
929
- #: options/class.WpdiscuzOptionsSerialized.php:647
930
  msgid "New comment on the discussion section you've been interested in"
931
  msgstr ""
932
 
933
- #: options/class.WpdiscuzOptionsSerialized.php:648
934
  #: options/phrases-layouts/phrases-email.php:20
935
  #: options/phrases-layouts/phrases-general.php:44
936
  #: utils/class.WpdiscuzEmailHelper.php:162
937
  msgid "New Reply"
938
  msgstr ""
939
 
940
- #: options/class.WpdiscuzOptionsSerialized.php:649
941
  #: utils/class.WpdiscuzEmailHelper.php:163
942
  msgid "New reply on the discussion section you've been interested in"
943
  msgstr ""
944
 
945
- #: options/class.WpdiscuzOptionsSerialized.php:650
946
  msgid "You're subscribed for new replies on this comment"
947
  msgstr ""
948
 
949
- #: options/class.WpdiscuzOptionsSerialized.php:651
950
  msgid "You're subscribed for new replies on all your comments"
951
  msgstr ""
952
 
953
- #: options/class.WpdiscuzOptionsSerialized.php:652
954
  msgid "You're subscribed for new follow-up comments on this post"
955
  msgstr ""
956
 
957
- #: options/class.WpdiscuzOptionsSerialized.php:653
958
  #: options/phrases-layouts/phrases-email.php:27
959
  msgid "Unsubscribe"
960
  msgstr ""
961
 
962
- #: options/class.WpdiscuzOptionsSerialized.php:654
963
  #: options/phrases-layouts/phrases-email.php:32
964
  msgid "Cancel subscription"
965
  msgstr ""
966
 
967
- #: options/class.WpdiscuzOptionsSerialized.php:655
968
  #: options/phrases-layouts/phrases-notification.php:19
969
  msgid "You've successfully unsubscribed."
970
  msgstr ""
971
 
972
- #: options/class.WpdiscuzOptionsSerialized.php:656
973
  #: options/phrases-layouts/phrases-notification.php:15
974
  msgid "You've successfully subscribed."
975
  msgstr ""
976
 
977
- #: options/class.WpdiscuzOptionsSerialized.php:657
978
  #: options/phrases-layouts/phrases-email.php:35
979
  #: options/phrases-layouts/phrases-email.php:36
980
  msgid "Confirm your subscription"
981
  msgstr ""
982
 
983
- #: options/class.WpdiscuzOptionsSerialized.php:658
984
  #: options/phrases-layouts/phrases-email.php:39
985
  #: options/phrases-layouts/phrases-email.php:40
986
  msgid "You've successfully confirmed your subscription."
987
  msgstr ""
988
 
989
- #: options/class.WpdiscuzOptionsSerialized.php:659
990
  #: options/phrases-layouts/phrases-email.php:44
991
  #: utils/class.WpdiscuzEmailHelper.php:55
992
  msgid "Subscribe Confirmation"
993
  msgstr ""
994
 
995
- #: options/class.WpdiscuzOptionsSerialized.php:660
996
  #: options/phrases-layouts/phrases-email.php:48
997
  #: utils/class.WpdiscuzEmailHelper.php:56
998
  msgid ""
@@ -1003,243 +1007,248 @@ msgid ""
1003
  "you again."
1004
  msgstr ""
1005
 
1006
- #: options/class.WpdiscuzOptionsSerialized.php:661
1007
  msgid "please fill out this field to comment"
1008
  msgstr ""
1009
 
1010
- #: options/class.WpdiscuzOptionsSerialized.php:662
1011
  msgid "email address is invalid"
1012
  msgstr ""
1013
 
1014
- #: options/class.WpdiscuzOptionsSerialized.php:663
1015
  msgid "url is invalid"
1016
  msgstr ""
1017
 
1018
- #: options/class.WpdiscuzOptionsSerialized.php:664
1019
  msgid "year"
1020
  msgstr ""
1021
 
1022
- #: options/class.WpdiscuzOptionsSerialized.php:665
1023
  msgid "years"
1024
  msgstr ""
1025
 
1026
- #: options/class.WpdiscuzOptionsSerialized.php:666
1027
  msgid "month"
1028
  msgstr ""
1029
 
1030
- #: options/class.WpdiscuzOptionsSerialized.php:667
1031
  msgid "months"
1032
  msgstr ""
1033
 
1034
- #: options/class.WpdiscuzOptionsSerialized.php:668
1035
  msgid "day"
1036
  msgstr ""
1037
 
1038
- #: options/class.WpdiscuzOptionsSerialized.php:669
1039
  msgid "days"
1040
  msgstr ""
1041
 
1042
- #: options/class.WpdiscuzOptionsSerialized.php:670
1043
  msgid "hour"
1044
  msgstr ""
1045
 
1046
- #: options/class.WpdiscuzOptionsSerialized.php:671
1047
  msgid "hours"
1048
  msgstr ""
1049
 
1050
- #: options/class.WpdiscuzOptionsSerialized.php:672
1051
  msgid "minute"
1052
  msgstr ""
1053
 
1054
- #: options/class.WpdiscuzOptionsSerialized.php:673
1055
  msgid "minutes"
1056
  msgstr ""
1057
 
1058
- #: options/class.WpdiscuzOptionsSerialized.php:674
1059
  msgid "second"
1060
  msgstr ""
1061
 
1062
- #: options/class.WpdiscuzOptionsSerialized.php:675
1063
  msgid "seconds"
1064
  msgstr ""
1065
 
1066
- #: options/class.WpdiscuzOptionsSerialized.php:676
1067
  msgid "right now"
1068
  msgstr ""
1069
 
1070
- #: options/class.WpdiscuzOptionsSerialized.php:677
1071
  msgid "ago"
1072
  msgstr ""
1073
 
1074
- #: options/class.WpdiscuzOptionsSerialized.php:678
1075
  #: options/phrases-layouts/phrases-notification.php:41
1076
  msgid "You must be"
1077
  msgstr ""
1078
 
1079
- #: options/class.WpdiscuzOptionsSerialized.php:679
1080
  msgid "You are logged in as"
1081
  msgstr ""
1082
 
1083
- #: options/class.WpdiscuzOptionsSerialized.php:680
1084
  #: options/phrases-layouts/phrases-notification.php:49
1085
  msgid "Log out"
1086
  msgstr ""
1087
 
1088
- #: options/class.WpdiscuzOptionsSerialized.php:681
1089
  msgid "logged in"
1090
  msgstr ""
1091
 
1092
- #: options/class.WpdiscuzOptionsSerialized.php:682
1093
  msgid "to post a comment."
1094
  msgstr ""
1095
 
1096
- #: options/class.WpdiscuzOptionsSerialized.php:683
1097
  #: options/phrases-layouts/phrases-comment.php:75
1098
  msgid "Vote Up"
1099
  msgstr ""
1100
 
1101
- #: options/class.WpdiscuzOptionsSerialized.php:684
1102
  #: options/phrases-layouts/phrases-comment.php:79
1103
  msgid "Vote Down"
1104
  msgstr ""
1105
 
1106
- #: options/class.WpdiscuzOptionsSerialized.php:685
1107
  #: options/phrases-layouts/phrases-notification.php:61
1108
  msgid "Vote Counted"
1109
  msgstr ""
1110
 
1111
- #: options/class.WpdiscuzOptionsSerialized.php:686
1112
  msgid "You've already voted for this comment"
1113
  msgstr ""
1114
 
1115
- #: options/class.WpdiscuzOptionsSerialized.php:687
1116
  #: options/phrases-layouts/phrases-notification.php:69
1117
  msgid "Voting Error"
1118
  msgstr ""
1119
 
1120
- #: options/class.WpdiscuzOptionsSerialized.php:688
1121
  msgid "You Must Be Logged In To Vote"
1122
  msgstr ""
1123
 
1124
- #: options/class.WpdiscuzOptionsSerialized.php:689
1125
  msgid "You cannot vote for your comment"
1126
  msgstr ""
1127
 
1128
- #: options/class.WpdiscuzOptionsSerialized.php:690
1129
  msgid "You are not allowed to vote for this comment"
1130
  msgstr ""
1131
 
1132
- #: options/class.WpdiscuzOptionsSerialized.php:691
1133
  #: options/phrases-layouts/phrases-notification.php:85
1134
  msgid "Invalid Captcha Code"
1135
  msgstr ""
1136
 
1137
- #: options/class.WpdiscuzOptionsSerialized.php:692
1138
  #: options/phrases-layouts/phrases-notification.php:89
1139
  msgid "Some of field value is invalid"
1140
  msgstr ""
1141
 
1142
- #: options/class.WpdiscuzOptionsSerialized.php:693
1143
  msgid "new comment"
1144
  msgstr ""
1145
 
1146
- #: options/class.WpdiscuzOptionsSerialized.php:694
1147
  msgid "new comments"
1148
  msgstr ""
1149
 
1150
- #: options/class.WpdiscuzOptionsSerialized.php:695
1151
  msgid "Comment awaiting moderation"
1152
  msgstr ""
1153
 
1154
- #: options/class.WpdiscuzOptionsSerialized.php:696
1155
  msgid "new reply on your comment"
1156
  msgstr ""
1157
 
1158
- #: options/class.WpdiscuzOptionsSerialized.php:697
1159
  msgid "new replies on your comments"
1160
  msgstr ""
1161
 
1162
- #: options/class.WpdiscuzOptionsSerialized.php:698
1163
  #: options/phrases-layouts/phrases-general.php:52
1164
  msgid "New"
1165
  msgstr ""
1166
 
1167
- #: options/class.WpdiscuzOptionsSerialized.php:699
1168
  #: options/phrases-layouts/phrases-notification.php:107
1169
  msgid "Sorry, the comment was not updated"
1170
  msgstr ""
1171
 
1172
- #: options/class.WpdiscuzOptionsSerialized.php:700
1173
  #: options/phrases-layouts/phrases-notification.php:111
1174
  msgid "Sorry, this comment no longer possible to edit"
1175
  msgstr ""
1176
 
1177
- #: options/class.WpdiscuzOptionsSerialized.php:701
1178
  msgid "You've not made any changes"
1179
  msgstr ""
1180
 
1181
- #: options/class.WpdiscuzOptionsSerialized.php:702
1182
  #: options/phrases-layouts/phrases-comment.php:84
1183
  msgid "Save"
1184
  msgstr ""
1185
 
1186
- #: options/class.WpdiscuzOptionsSerialized.php:703
1187
  #: options/phrases-layouts/phrases-comment.php:88
1188
  msgid "Cancel"
1189
  msgstr ""
1190
 
1191
- #: options/class.WpdiscuzOptionsSerialized.php:704
1192
  msgid "Input is too short"
1193
  msgstr ""
1194
 
1195
- #: options/class.WpdiscuzOptionsSerialized.php:705
1196
  msgid "Input is too long"
1197
  msgstr ""
1198
 
1199
- #: options/class.WpdiscuzOptionsSerialized.php:706
1200
  #: options/phrases-layouts/phrases-comment.php:92
1201
  msgid "Read more &raquo;"
1202
  msgstr ""
1203
 
1204
- #: options/class.WpdiscuzOptionsSerialized.php:707
1205
  #: options/phrases-layouts/phrases-comment.php:96
1206
  msgid "Anonymous"
1207
  msgstr ""
1208
 
1209
- #: options/class.WpdiscuzOptionsSerialized.php:708
1210
  #: options/phrases-layouts/phrases-notification.php:118
1211
  #: options/phrases-layouts/phrases-notification.php:119
1212
  msgid "Please fill out required fields"
1213
  msgstr ""
1214
 
1215
- #: options/class.WpdiscuzOptionsSerialized.php:709
1216
  #: options/phrases-layouts/phrases-form.php:67
1217
  #: options/phrases-layouts/phrases-form.php:68
1218
  msgid "Connect with"
1219
  msgstr ""
1220
 
1221
- #: options/class.WpdiscuzOptionsSerialized.php:710
 
1222
  msgid "You're subscribed to"
1223
  msgstr ""
1224
 
1225
- #: options/class.WpdiscuzOptionsSerialized.php:711
1226
  msgid "Participate in this discussion via email"
1227
  msgstr ""
1228
 
1229
- #: options/class.WpdiscuzOptionsSerialized.php:712
1230
  #: options/phrases-layouts/phrases-form.php:72
1231
  msgid "&rsaquo;"
1232
  msgstr ""
1233
 
1234
- #: options/class.WpdiscuzOptionsSerialized.php:713
1235
  #: options/phrases-layouts/phrases-email.php:52
1236
  msgid "Comment was approved"
1237
  msgstr ""
1238
 
1239
- #: options/class.WpdiscuzOptionsSerialized.php:714
1240
  msgid "Hi, <br/> Your comment was approved."
1241
  msgstr ""
1242
 
 
 
 
 
1243
  #: options/html-addons.php:11
1244
  msgid "wpDiscuz Addons"
1245
  msgstr ""
@@ -1519,55 +1528,72 @@ msgid "Allow guests to vote on comments"
1519
  msgstr ""
1520
 
1521
  #: options/options-layouts/settings-general.php:125
1522
- msgid "Comments loading/pagination type"
1523
  msgstr ""
1524
 
1525
  #: options/options-layouts/settings-general.php:127
1526
  msgid ""
 
 
 
 
 
 
 
 
 
 
 
 
1527
  "You can manage the number of comments for [Load more] option in Settings > "
1528
  "Discussion page, using \"Break comments into pages with [X] top level "
1529
  "comments per page\" option. To show the default Wordpress comment pagination "
1530
  "you should enable the checkbox on bigining of the same option."
1531
  msgstr ""
1532
 
1533
- #: options/options-layouts/settings-general.php:133
1534
- #: options/options-layouts/settings-general.php:135
1535
  msgid "[Load more] Button"
1536
  msgstr ""
1537
 
1538
- #: options/options-layouts/settings-general.php:137
1539
- #: options/options-layouts/settings-general.php:139
1540
  msgid "[Load rest of all comments] Button"
1541
  msgstr ""
1542
 
1543
- #: options/options-layouts/settings-general.php:141
1544
- #: options/options-layouts/settings-general.php:143
 
 
 
 
 
1545
  msgid "Lazy load comments on scrolling"
1546
  msgstr ""
1547
 
1548
- #: options/options-layouts/settings-general.php:149
1549
  msgid "Enable first comments loading before scroll position is on comment box"
1550
  msgstr ""
1551
 
1552
- #: options/options-layouts/settings-general.php:154
1553
  msgid "Use WordPress Date/Time format"
1554
  msgstr ""
1555
 
1556
- #: options/options-layouts/settings-general.php:155
1557
  msgid ""
1558
  "wpDiscuz shows Human Readable date format. If you check this option it'll "
1559
  "show the date/time format set in WordPress General Settings."
1560
  msgstr ""
1561
 
1562
- #: options/options-layouts/settings-general.php:161
1563
  msgid "Current Wordpress date/time format"
1564
  msgstr ""
1565
 
1566
- #: options/options-layouts/settings-general.php:167
1567
  msgid "Use Plugin .PO/.MO files"
1568
  msgstr ""
1569
 
1570
- #: options/options-layouts/settings-general.php:168
1571
  msgid ""
1572
  "wpDiscuz phrase system allows you to translate all front-end phrases. "
1573
  "However if you have a multi-language website it'll not allow you to add more "
@@ -1577,13 +1603,13 @@ msgid ""
1577
  "translate all phrases based on language files according to current language."
1578
  msgstr ""
1579
 
1580
- #: options/options-layouts/settings-general.php:175
1581
  msgid ""
1582
  "Help wpDiscuz to grow allowing people to recognize which comment plugin you "
1583
  "use"
1584
  msgstr ""
1585
 
1586
- #: options/options-layouts/settings-general.php:177
1587
  msgid ""
1588
  "Please check this option on to help wpDiscuz get more popularity as your "
1589
  "thank to the hard work we do for you totally free. This option adds a very "
@@ -1591,7 +1617,7 @@ msgid ""
1591
  "visitors recognize the name of comment solution you use."
1592
  msgstr ""
1593
 
1594
- #: options/options-layouts/settings-general.php:182
1595
  msgid "Thank you!"
1596
  msgstr ""
1597
 
@@ -2238,10 +2264,6 @@ msgstr ""
2238
  msgid "Notification Phrases"
2239
  msgstr ""
2240
 
2241
- #: options/phrases-layouts/phrases-notification.php:11
2242
- msgid "You\\'re subscribed to"
2243
- msgstr ""
2244
-
2245
  #: options/phrases-layouts/phrases-notification.php:24
2246
  msgid "Postmatic subscription label"
2247
  msgstr ""
@@ -2314,6 +2336,14 @@ msgstr ""
2314
  msgid "TYou've not made any changes"
2315
  msgstr ""
2316
 
 
 
 
 
 
 
 
 
2317
  #: options/tools-layouts/options-export.php:10
2318
  msgid ""
2319
  "You can transfer the saved options data between different installs by "
@@ -2332,6 +2362,10 @@ msgid ""
2332
  "wpDiscuz versions."
2333
  msgstr ""
2334
 
 
 
 
 
2335
  #: templates/comment/comment-form.php:71
2336
  msgid "Unable to send an email"
2337
  msgstr ""
3
  msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: wpDiscuz\n"
6
+ "POT-Creation-Date: 2017-12-05 20:22+0400\n"
7
+ "PO-Revision-Date: 2017-12-05 20:22+0400\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
10
  "MIME-Version: 1.0\n"
20
  "X-Poedit-SearchPath-0: .\n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
 
23
+ #: class.WpdiscuzCore.php:848 class.WpdiscuzCore.php:1049
24
  #: options/options-layouts/settings-social.php:40
25
  #: options/options-layouts/settings-social.php:42
26
  #: options/options-layouts/settings-social.php:44
28
  msgid "Settings"
29
  msgstr ""
30
 
31
+ #: class.WpdiscuzCore.php:850 class.WpdiscuzCore.php:1051
32
  msgid "Phrases"
33
  msgstr ""
34
 
35
+ #: class.WpdiscuzCore.php:852
36
  msgid "Tools"
37
  msgstr ""
38
 
39
+ #: class.WpdiscuzCore.php:853 options/html-options.php:22
40
  #: options/html-options.php:62 options/options-layouts/settings-addons.php:7
41
  msgid "Addons"
42
  msgstr ""
43
 
44
+ #: class.WpdiscuzCore.php:864
45
  msgid "Do you really want to reset all options?"
46
  msgstr ""
47
 
48
+ #: class.WpdiscuzCore.php:865
49
  msgid "Do you really want to remove voting data?"
50
  msgstr ""
51
 
52
+ #: class.WpdiscuzCore.php:1106 options/phrases-layouts/phrases-comment.php:56
53
  msgid "Admin"
54
  msgstr ""
55
 
56
+ #: class.WpdiscuzCore.php:1108 class.WpdiscuzCore.php:1117
57
  #: options/phrases-layouts/phrases-comment.php:58
58
  msgid "Author"
59
  msgstr ""
60
 
61
+ #: class.WpdiscuzCore.php:1112 options/phrases-layouts/phrases-comment.php:64
62
  msgid "Member"
63
  msgstr ""
64
 
65
+ #: class.WpdiscuzCore.php:1118 options/phrases-layouts/phrases-comment.php:62
66
  msgid "Guest"
67
  msgstr ""
68
 
114
  msgid "Post IDs"
115
  msgstr ""
116
 
117
+ #: forms/wpDiscuzForm.php:166 forms/wpdFormAttr/Form.php:597
118
  msgid "Language"
119
  msgstr ""
120
 
144
  msgstr ""
145
 
146
  #: forms/wpDiscuzForm.php:217 forms/wpdFormAttr/Field/Field.php:61
147
+ #: options/class.WpdiscuzOptionsSerialized.php:647
148
  #: options/phrases-layouts/phrases-comment.php:19
149
  msgid "Edit"
150
  msgstr ""
161
  msgid "Permission Denied !!!"
162
  msgstr ""
163
 
164
+ #: forms/wpDiscuzForm.php:251 forms/wpdFormAttr/Form.php:567
165
  #: forms/wpdFormAttr/html/admin-form-fields-list.php:18
166
  #: options/options-layouts/settings-customfields.php:7
167
  msgid "Custom Fields"
175
  msgid "Default Form"
176
  msgstr ""
177
 
178
+ #: forms/wpDiscuzForm.php:387 forms/wpDiscuzForm.php:395
179
+ #: forms/wpdFormAttr/Form.php:653
180
  msgid "Leave a Reply"
181
  msgstr ""
182
 
183
+ #: forms/wpDiscuzForm.php:410 forms/wpdFormAttr/Field/CheckboxField.php:12
184
  #: forms/wpdFormAttr/Field/ColorField.php:12
185
  #: forms/wpdFormAttr/Field/DateField.php:12
186
  #: forms/wpdFormAttr/Field/DefaultField/Captcha.php:25
195
  #: forms/wpdFormAttr/Field/SelectField.php:12
196
  #: forms/wpdFormAttr/Field/TextAreaField.php:13
197
  #: forms/wpdFormAttr/Field/TextField.php:12
198
+ #: forms/wpdFormAttr/Field/UrlField.php:12 forms/wpdFormAttr/Form.php:762
199
  msgid "Name"
200
  msgstr ""
201
 
202
+ #: forms/wpDiscuzForm.php:412 forms/wpdFormAttr/Field/DefaultField/Email.php:64
203
+ #: forms/wpdFormAttr/Form.php:769
204
+ #: options/class.WpdiscuzOptionsSerialized.php:634 options/html-phrases.php:25
205
  msgid "Email"
206
  msgstr ""
207
 
208
+ #: forms/wpDiscuzForm.php:414
209
  msgid "WebSite URL"
210
  msgstr ""
211
 
212
+ #: forms/wpDiscuzForm.php:417
213
  #: forms/wpdFormAttr/Field/DefaultField/Submit.php:77
214
+ #: forms/wpdFormAttr/Form.php:792
215
  msgid "Post Comment"
216
  msgstr ""
217
 
218
+ #: forms/wpDiscuzForm.php:426
219
  msgid "Clone Form"
220
  msgstr ""
221
 
222
+ #: forms/wpDiscuzForm.php:438
223
  msgid "Clone"
224
  msgstr ""
225
 
226
+ #: forms/wpDiscuzForm.php:476
227
  msgid ""
228
  "Comment Form is not detected, please navigate to form manager page to create "
229
  "it. "
230
  msgstr ""
231
 
232
+ #: forms/wpDiscuzForm.php:477
233
  msgid "Add Comment Form"
234
  msgstr ""
235
 
422
  msgstr ""
423
 
424
  #: forms/wpdFormAttr/Field/DefaultField/Captcha.php:107
425
+ #: forms/wpdFormAttr/Form.php:785
426
  msgid "Code"
427
  msgstr ""
428
 
455
  msgstr ""
456
 
457
  #: forms/wpdFormAttr/Field/DefaultField/Website.php:83
458
+ #: forms/wpdFormAttr/Form.php:776
459
  msgid "Website"
460
  msgstr ""
461
 
492
  msgid "New value new line"
493
  msgstr ""
494
 
495
+ #: forms/wpdFormAttr/Form.php:606
496
+ msgid "Disable commenting for roles"
497
+ msgstr ""
498
+
499
+ #: forms/wpdFormAttr/Form.php:627
500
  msgid "Allow guests to comment"
501
  msgstr ""
502
 
503
+ #: forms/wpdFormAttr/Form.php:631 forms/wpdFormAttr/Form.php:642
504
  msgid "Yes"
505
  msgstr ""
506
 
507
+ #: forms/wpdFormAttr/Form.php:633 forms/wpdFormAttr/Form.php:644
508
  msgid "No"
509
  msgstr ""
510
 
511
+ #: forms/wpdFormAttr/Form.php:638
512
  msgid "Enable subscription bar"
513
  msgstr ""
514
 
515
+ #: forms/wpdFormAttr/Form.php:649
516
  msgid "Comment form header text"
517
  msgstr ""
518
 
519
+ #: forms/wpdFormAttr/Form.php:658
520
  msgid "Display comment form for post types"
521
  msgstr ""
522
 
523
+ #: forms/wpdFormAttr/Form.php:665
524
  msgid ""
525
  "The red marked post types are already attached to other comment form. If you "
526
  "set this form too, the old forms will not be used for them."
527
  msgstr ""
528
 
529
+ #: forms/wpdFormAttr/Form.php:687
530
  msgid "Display comment form for post IDs"
531
  msgstr ""
532
 
533
+ #: forms/wpdFormAttr/Form.php:688
534
  msgid ""
535
  "You can use this form for certain posts/pages specified by comma separated "
536
  "IDs."
537
  msgstr ""
538
 
539
+ #: forms/wpdFormAttr/Form.php:699
540
  msgid "Comment Text Field"
541
  msgstr ""
542
 
543
+ #: forms/wpdFormAttr/Form.php:714
544
  msgid "ADD ROW"
545
  msgstr ""
546
 
547
+ #: forms/wpdFormAttr/Form.php:743
548
  msgid ""
549
  "Only logged in customers who have purchased this product may leave a review."
550
  msgstr ""
553
  msgid "Comment Form Fields"
554
  msgstr ""
555
 
556
+ #: options/class.WpdiscuzOptions.php:24 options/class.WpdiscuzOptions.php:104
557
+ #: options/class.WpdiscuzOptions.php:223
558
  msgid "Hacker?"
559
  msgstr ""
560
 
561
+ #: options/class.WpdiscuzOptions.php:95
562
  msgid "Settings updated"
563
  msgstr ""
564
 
565
+ #: options/class.WpdiscuzOptions.php:212
566
  msgid "Phrases updated"
567
  msgstr ""
568
 
569
+ #: options/class.WpdiscuzOptions.php:258
570
  msgid ""
571
  "Brings an ocean of emotions to your comments. It comes with an awesome smile "
572
  "package."
573
  msgstr ""
574
 
575
+ #: options/class.WpdiscuzOptions.php:259
576
  msgid ""
577
  "Extended information about comment author with Profile, Activity, Votes and "
578
  "Subscriptions Tabs on pop-up window."
579
  msgstr ""
580
 
581
+ #: options/class.WpdiscuzOptions.php:261
582
  msgid ""
583
  "Total control over comment subscriptions. Full list, monitor, manage, "
584
  "filter, unsubscribe, confirm..."
585
  msgstr ""
586
 
587
+ #: options/class.WpdiscuzOptions.php:262
588
  msgid ""
589
  "A full-fledged tool-kit for advertising in comment section of your website. "
590
  "Separate banner and ad managment."
591
  msgstr ""
592
 
593
+ #: options/class.WpdiscuzOptions.php:263
594
  msgid ""
595
  "Allows to mention comments and users in comment text using #comment-id and "
596
  "@username tags."
597
  msgstr ""
598
 
599
+ #: options/class.WpdiscuzOptions.php:264
600
  msgid ""
601
  "See comment likers and voters of each comment. Adds user reputation and "
602
  "badges based on received likes."
603
  msgstr ""
604
 
605
+ #: options/class.WpdiscuzOptions.php:265
606
  msgid ""
607
  "Comment reporting tools. Auto-moderates comments based on number of flags "
608
  "and dislikes."
609
  msgstr ""
610
 
611
+ #: options/class.WpdiscuzOptions.php:266
612
  msgid ""
613
  "Adds a smart and intuitive AJAX \"Translate\" button with 60 language "
614
  "options. Uses free translation API."
615
  msgstr ""
616
 
617
+ #: options/class.WpdiscuzOptions.php:267
618
  msgid ""
619
  "AJAX powered front-end comment search. It starts searching while you type "
620
  "search words. "
621
  msgstr ""
622
 
623
+ #: options/class.WpdiscuzOptions.php:268
624
  msgid ""
625
  "Most voted comments, Active comment threads, Most commented posts, Active "
626
  "comment authors"
627
  msgstr ""
628
 
629
+ #: options/class.WpdiscuzOptions.php:269
630
  msgid ""
631
  "All in one powerful yet simple admin toolkit to moderate comments on front-"
632
  "end."
633
  msgstr ""
634
 
635
+ #: options/class.WpdiscuzOptions.php:270
636
  msgid ""
637
  "Extended comment attachment system. Allows to upload images, videos, audios "
638
  "and other file types."
639
  msgstr ""
640
 
641
+ #: options/class.WpdiscuzOptions.php:271
642
  msgid ""
643
  "Adds No CAPTCHA on all comment forms. Stops spam and bot comments with "
644
  "Google reCAPTCHA"
645
  msgstr ""
646
 
647
+ #: options/class.WpdiscuzOptions.php:272
648
  msgid ""
649
  "Integrates myCRED Badges and Ranks. Converts wpDiscuz comment votes/likes to "
650
  "myCRED points. "
651
  msgstr ""
652
 
653
+ #: options/class.WpdiscuzOptions.php:273
654
  msgid ""
655
  "Allows censoring comment words. Filters comments and replaces those phrases "
656
  "with custom words."
657
  msgstr ""
658
 
659
+ #: options/class.WpdiscuzOptions.php:279
660
  msgid "Custom Comment Forms"
661
  msgstr ""
662
 
663
+ #: options/class.WpdiscuzOptions.php:280
664
  msgid ""
665
  "You can create custom comment forms with wpDiscuz. wpDiscuz 4 comes with "
666
  "custom comment forms and fields. You can create custom comment forms for "
668
  "eaxample: text, dropdown, rating, checkboxes, etc..."
669
  msgstr ""
670
 
671
+ #: options/class.WpdiscuzOptions.php:283
672
  msgid "Emoticons"
673
  msgstr ""
674
 
675
+ #: options/class.WpdiscuzOptions.php:284
676
  msgid ""
677
  "You can add more emotions to your comments using wpDiscuz Emoticons addon."
678
  msgstr ""
679
 
680
+ #: options/class.WpdiscuzOptions.php:287
681
  msgid "Ads Manager"
682
  msgstr ""
683
 
684
+ #: options/class.WpdiscuzOptions.php:288
685
  msgid ""
686
  "Increase your income using ad banners. Comment area is the most active "
687
  "sections for advertising. wpDiscuz Ads Manager addon is designed to help you "
688
  "add banners and control ads in this section."
689
  msgstr ""
690
 
691
+ #: options/class.WpdiscuzOptions.php:291
692
  msgid "User and Comment Mentioning"
693
  msgstr ""
694
 
695
+ #: options/class.WpdiscuzOptions.php:292
696
  msgid ""
697
  "Using wpDiscuz User &amp; Comment Mentioning addon you can allow commenters "
698
  "mention comments and users in comment text using #comment-id and @username "
699
  "tags."
700
  msgstr ""
701
 
702
+ #: options/class.WpdiscuzOptions.php:295
703
  msgid "Advanced Likers"
704
  msgstr ""
705
 
706
+ #: options/class.WpdiscuzOptions.php:296
707
  msgid ""
708
  "wpDiscuz Advanced Likers addon displays likers and voters of each comment. "
709
  "Adds user reputation and badges based on received likes."
710
  msgstr ""
711
 
712
+ #: options/class.WpdiscuzOptions.php:299
713
  msgid "Report and Flagging"
714
  msgstr ""
715
 
716
+ #: options/class.WpdiscuzOptions.php:300
717
  msgid ""
718
  "Let your commenters help you to determine and remove spam comments. wpDiscuz "
719
  "Report and Flagging addon comes with comment reporting tools. Automaticaly "
720
  "auto-moderates comments based on number of flags and dislikes."
721
  msgstr ""
722
 
723
+ #: options/class.WpdiscuzOptions.php:303
724
  msgid "Comment Translate"
725
  msgstr ""
726
 
727
+ #: options/class.WpdiscuzOptions.php:304
728
  msgid ""
729
  "In most cases the big part of your visitors are not a native speakers of "
730
  "your language. Make your comments comprehensible for all visitors using "
733
  "translation API."
734
  msgstr ""
735
 
736
+ #: options/class.WpdiscuzOptions.php:307
737
  msgid "Comment Search"
738
  msgstr ""
739
 
740
+ #: options/class.WpdiscuzOptions.php:308
741
  msgid ""
742
  "You can let website visitor search in comments. It's always more attractive "
743
  "to find a comment about something that interest you. Using wpDiscuz Comment "
745
  "above comment list."
746
  msgstr ""
747
 
748
+ #: options/class.WpdiscuzOptions.php:311
749
  msgid "wpDiscuz Widgets"
750
  msgstr ""
751
 
752
+ #: options/class.WpdiscuzOptions.php:312
753
  msgid ""
754
  "More Comment Widgets! Most voted comments, Active comment threads, Most "
755
  "commented posts, Active comment authors widgets are available in wpDiscuz "
756
  "Widgets Addon"
757
  msgstr ""
758
 
759
+ #: options/class.WpdiscuzOptions.php:315
760
  msgid "Front-end Moderation"
761
  msgstr ""
762
 
763
+ #: options/class.WpdiscuzOptions.php:316
764
  msgid ""
765
  "You can moderate comments on front-end using all in one powerful yet simple "
766
  "wpDiscuz Frontend Moderation addon."
767
  msgstr ""
768
 
769
+ #: options/class.WpdiscuzOptions.php:319
770
  msgid "Media Uploader"
771
  msgstr ""
772
 
773
+ #: options/class.WpdiscuzOptions.php:320
774
  msgid ""
775
  "You can let website visitors attach images and files to comments and embed "
776
  "video/audio content using wpDiscuz Media Uploader addon."
777
  msgstr ""
778
 
779
+ #: options/class.WpdiscuzOptions.php:323
780
  msgid "Google ReCaptcha"
781
  msgstr ""
782
 
783
+ #: options/class.WpdiscuzOptions.php:324
784
  msgid ""
785
  "Advanced spam protection with wpDiscuz Google reCAPTCHA addon. This addon "
786
  "adds No-CAPTCHA reCAPTCHA on all comment forms. Stops spam and bot comments."
787
  msgstr ""
788
 
789
+ #: options/class.WpdiscuzOptions.php:338
790
  msgid "New Addons are available for wpDiscuz Comments Plugin"
791
  msgstr ""
792
 
793
+ #: options/class.WpdiscuzOptions.php:345 options/class.WpdiscuzOptions.php:351
794
  msgid "Go to wpDiscuz Addons subMenu"
795
  msgstr ""
796
 
797
+ #: options/class.WpdiscuzOptions.php:382
798
  msgid "Do you know?"
799
  msgstr ""
800
 
801
+ #: options/class.WpdiscuzOptions.php:394
802
  msgid "More info"
803
  msgstr ""
804
 
805
+ #: options/class.WpdiscuzOptionsSerialized.php:628
806
  msgid "Be the First to Comment!"
807
  msgstr ""
808
 
809
+ #: options/class.WpdiscuzOptionsSerialized.php:629 options/html-phrases.php:23
810
  #: options/phrases-layouts/phrases-general.php:15
811
  msgid "Comment"
812
  msgstr ""
813
 
814
+ #: options/class.WpdiscuzOptionsSerialized.php:630
815
  msgid "Comments"
816
  msgstr ""
817
 
818
+ #: options/class.WpdiscuzOptionsSerialized.php:631
819
  msgid "on"
820
  msgstr ""
821
 
822
+ #: options/class.WpdiscuzOptionsSerialized.php:632
823
  msgid "Start the discussion"
824
  msgstr ""
825
 
826
+ #: options/class.WpdiscuzOptionsSerialized.php:633
827
  msgid "Join the discussion"
828
  msgstr ""
829
 
830
+ #: options/class.WpdiscuzOptionsSerialized.php:635
831
  #: options/phrases-layouts/phrases-form.php:23
832
  #: options/phrases-layouts/phrases-form.php:24
833
  msgid "Notify of"
834
  msgstr ""
835
 
836
+ #: options/class.WpdiscuzOptionsSerialized.php:636
837
  #: options/phrases-layouts/phrases-form.php:28
838
  msgid "new follow-up comments"
839
  msgstr ""
840
 
841
+ #: options/class.WpdiscuzOptionsSerialized.php:637
842
  msgid "new replies to my comments"
843
  msgstr ""
844
 
845
+ #: options/class.WpdiscuzOptionsSerialized.php:638
846
  #: options/phrases-layouts/phrases-form.php:36
847
  msgid "Notify of new replies to this comment"
848
  msgstr ""
849
 
850
+ #: options/class.WpdiscuzOptionsSerialized.php:639
851
  #: options/phrases-layouts/phrases-form.php:39
852
  #: options/phrases-layouts/phrases-form.php:40
853
  msgid "Sort by"
854
  msgstr ""
855
 
856
+ #: options/class.WpdiscuzOptionsSerialized.php:640
857
  #: options/phrases-layouts/phrases-form.php:43
858
  #: options/phrases-layouts/phrases-form.php:44
859
  msgid "newest"
860
  msgstr ""
861
 
862
+ #: options/class.WpdiscuzOptionsSerialized.php:641
863
  #: options/phrases-layouts/phrases-form.php:47
864
  #: options/phrases-layouts/phrases-form.php:48
865
  msgid "oldest"
866
  msgstr ""
867
 
868
+ #: options/class.WpdiscuzOptionsSerialized.php:642
869
  #: options/phrases-layouts/phrases-form.php:51
870
  #: options/phrases-layouts/phrases-form.php:52
871
  msgid "most voted"
872
  msgstr ""
873
 
874
+ #: options/class.WpdiscuzOptionsSerialized.php:643
875
  msgid "Load More Comments"
876
  msgstr ""
877
 
878
+ #: options/class.WpdiscuzOptionsSerialized.php:644
879
  #: options/phrases-layouts/phrases-general.php:31
880
  msgid "Load Rest of Comments"
881
  msgstr ""
882
 
883
+ #: options/class.WpdiscuzOptionsSerialized.php:645
884
  #: options/phrases-layouts/phrases-comment.php:11
885
  msgid "Reply"
886
  msgstr ""
887
 
888
+ #: options/class.WpdiscuzOptionsSerialized.php:646
889
  #: options/phrases-layouts/phrases-comment.php:15
890
  msgid "Share"
891
  msgstr ""
892
 
893
+ #: options/class.WpdiscuzOptionsSerialized.php:648
894
  #: options/phrases-layouts/phrases-comment.php:23
895
  msgid "Share On Facebook"
896
  msgstr ""
897
 
898
+ #: options/class.WpdiscuzOptionsSerialized.php:649
899
  #: options/phrases-layouts/phrases-comment.php:27
900
  msgid "Share On Twitter"
901
  msgstr ""
902
 
903
+ #: options/class.WpdiscuzOptionsSerialized.php:650
904
  #: options/phrases-layouts/phrases-comment.php:31
905
  msgid "Share On Google"
906
  msgstr ""
907
 
908
+ #: options/class.WpdiscuzOptionsSerialized.php:651
909
  #: options/phrases-layouts/phrases-comment.php:35
910
  msgid "Share On VKontakte"
911
  msgstr ""
912
 
913
+ #: options/class.WpdiscuzOptionsSerialized.php:652
914
  #: options/phrases-layouts/phrases-comment.php:39
915
  msgid "Share On Odnoklassniki"
916
  msgstr ""
917
 
918
+ #: options/class.WpdiscuzOptionsSerialized.php:653
919
  #: options/phrases-layouts/phrases-comment.php:43
920
  msgid "Hide Replies"
921
  msgstr ""
922
 
923
+ #: options/class.WpdiscuzOptionsSerialized.php:654
924
  #: options/phrases-layouts/phrases-comment.php:47
925
  msgid "Show Replies"
926
  msgstr ""
927
 
928
+ #: options/class.WpdiscuzOptionsSerialized.php:655
929
  #: options/phrases-layouts/phrases-general.php:36
930
  msgid "New Comment"
931
  msgstr ""
932
 
933
+ #: options/class.WpdiscuzOptionsSerialized.php:656
934
  msgid "New comment on the discussion section you've been interested in"
935
  msgstr ""
936
 
937
+ #: options/class.WpdiscuzOptionsSerialized.php:657
938
  #: options/phrases-layouts/phrases-email.php:20
939
  #: options/phrases-layouts/phrases-general.php:44
940
  #: utils/class.WpdiscuzEmailHelper.php:162
941
  msgid "New Reply"
942
  msgstr ""
943
 
944
+ #: options/class.WpdiscuzOptionsSerialized.php:658
945
  #: utils/class.WpdiscuzEmailHelper.php:163
946
  msgid "New reply on the discussion section you've been interested in"
947
  msgstr ""
948
 
949
+ #: options/class.WpdiscuzOptionsSerialized.php:659
950
  msgid "You're subscribed for new replies on this comment"
951
  msgstr ""
952
 
953
+ #: options/class.WpdiscuzOptionsSerialized.php:660
954
  msgid "You're subscribed for new replies on all your comments"
955
  msgstr ""
956
 
957
+ #: options/class.WpdiscuzOptionsSerialized.php:661
958
  msgid "You're subscribed for new follow-up comments on this post"
959
  msgstr ""
960
 
961
+ #: options/class.WpdiscuzOptionsSerialized.php:662
962
  #: options/phrases-layouts/phrases-email.php:27
963
  msgid "Unsubscribe"
964
  msgstr ""
965
 
966
+ #: options/class.WpdiscuzOptionsSerialized.php:663
967
  #: options/phrases-layouts/phrases-email.php:32
968
  msgid "Cancel subscription"
969
  msgstr ""
970
 
971
+ #: options/class.WpdiscuzOptionsSerialized.php:664
972
  #: options/phrases-layouts/phrases-notification.php:19
973
  msgid "You've successfully unsubscribed."
974
  msgstr ""
975
 
976
+ #: options/class.WpdiscuzOptionsSerialized.php:665
977
  #: options/phrases-layouts/phrases-notification.php:15
978
  msgid "You've successfully subscribed."
979
  msgstr ""
980
 
981
+ #: options/class.WpdiscuzOptionsSerialized.php:666
982
  #: options/phrases-layouts/phrases-email.php:35
983
  #: options/phrases-layouts/phrases-email.php:36
984
  msgid "Confirm your subscription"
985
  msgstr ""
986
 
987
+ #: options/class.WpdiscuzOptionsSerialized.php:667
988
  #: options/phrases-layouts/phrases-email.php:39
989
  #: options/phrases-layouts/phrases-email.php:40
990
  msgid "You've successfully confirmed your subscription."
991
  msgstr ""
992
 
993
+ #: options/class.WpdiscuzOptionsSerialized.php:668
994
  #: options/phrases-layouts/phrases-email.php:44
995
  #: utils/class.WpdiscuzEmailHelper.php:55
996
  msgid "Subscribe Confirmation"
997
  msgstr ""
998
 
999
+ #: options/class.WpdiscuzOptionsSerialized.php:669
1000
  #: options/phrases-layouts/phrases-email.php:48
1001
  #: utils/class.WpdiscuzEmailHelper.php:56
1002
  msgid ""
1007
  "you again."
1008
  msgstr ""
1009
 
1010
+ #: options/class.WpdiscuzOptionsSerialized.php:670
1011
  msgid "please fill out this field to comment"
1012
  msgstr ""
1013
 
1014
+ #: options/class.WpdiscuzOptionsSerialized.php:671
1015
  msgid "email address is invalid"
1016
  msgstr ""
1017
 
1018
+ #: options/class.WpdiscuzOptionsSerialized.php:672
1019
  msgid "url is invalid"
1020
  msgstr ""
1021
 
1022
+ #: options/class.WpdiscuzOptionsSerialized.php:673
1023
  msgid "year"
1024
  msgstr ""
1025
 
1026
+ #: options/class.WpdiscuzOptionsSerialized.php:674
1027
  msgid "years"
1028
  msgstr ""
1029
 
1030
+ #: options/class.WpdiscuzOptionsSerialized.php:675
1031
  msgid "month"
1032
  msgstr ""
1033
 
1034
+ #: options/class.WpdiscuzOptionsSerialized.php:676
1035
  msgid "months"
1036
  msgstr ""
1037
 
1038
+ #: options/class.WpdiscuzOptionsSerialized.php:677
1039
  msgid "day"
1040
  msgstr ""
1041
 
1042
+ #: options/class.WpdiscuzOptionsSerialized.php:678
1043
  msgid "days"
1044
  msgstr ""
1045
 
1046
+ #: options/class.WpdiscuzOptionsSerialized.php:679
1047
  msgid "hour"
1048
  msgstr ""
1049
 
1050
+ #: options/class.WpdiscuzOptionsSerialized.php:680
1051
  msgid "hours"
1052
  msgstr ""
1053
 
1054
+ #: options/class.WpdiscuzOptionsSerialized.php:681
1055
  msgid "minute"
1056
  msgstr ""
1057
 
1058
+ #: options/class.WpdiscuzOptionsSerialized.php:682
1059
  msgid "minutes"
1060
  msgstr ""
1061
 
1062
+ #: options/class.WpdiscuzOptionsSerialized.php:683
1063
  msgid "second"
1064
  msgstr ""
1065
 
1066
+ #: options/class.WpdiscuzOptionsSerialized.php:684
1067
  msgid "seconds"
1068
  msgstr ""
1069
 
1070
+ #: options/class.WpdiscuzOptionsSerialized.php:685
1071
  msgid "right now"
1072
  msgstr ""
1073
 
1074
+ #: options/class.WpdiscuzOptionsSerialized.php:686
1075
  msgid "ago"
1076
  msgstr ""
1077
 
1078
+ #: options/class.WpdiscuzOptionsSerialized.php:687
1079
  #: options/phrases-layouts/phrases-notification.php:41
1080
  msgid "You must be"
1081
  msgstr ""
1082
 
1083
+ #: options/class.WpdiscuzOptionsSerialized.php:688
1084
  msgid "You are logged in as"
1085
  msgstr ""
1086
 
1087
+ #: options/class.WpdiscuzOptionsSerialized.php:689
1088
  #: options/phrases-layouts/phrases-notification.php:49
1089
  msgid "Log out"
1090
  msgstr ""
1091
 
1092
+ #: options/class.WpdiscuzOptionsSerialized.php:690
1093
  msgid "logged in"
1094
  msgstr ""
1095
 
1096
+ #: options/class.WpdiscuzOptionsSerialized.php:691
1097
  msgid "to post a comment."
1098
  msgstr ""
1099
 
1100
+ #: options/class.WpdiscuzOptionsSerialized.php:692
1101
  #: options/phrases-layouts/phrases-comment.php:75
1102
  msgid "Vote Up"
1103
  msgstr ""
1104
 
1105
+ #: options/class.WpdiscuzOptionsSerialized.php:693
1106
  #: options/phrases-layouts/phrases-comment.php:79
1107
  msgid "Vote Down"
1108
  msgstr ""
1109
 
1110
+ #: options/class.WpdiscuzOptionsSerialized.php:694
1111
  #: options/phrases-layouts/phrases-notification.php:61
1112
  msgid "Vote Counted"
1113
  msgstr ""
1114
 
1115
+ #: options/class.WpdiscuzOptionsSerialized.php:695
1116
  msgid "You've already voted for this comment"
1117
  msgstr ""
1118
 
1119
+ #: options/class.WpdiscuzOptionsSerialized.php:696
1120
  #: options/phrases-layouts/phrases-notification.php:69
1121
  msgid "Voting Error"
1122
  msgstr ""
1123
 
1124
+ #: options/class.WpdiscuzOptionsSerialized.php:697
1125
  msgid "You Must Be Logged In To Vote"
1126
  msgstr ""
1127
 
1128
+ #: options/class.WpdiscuzOptionsSerialized.php:698
1129
  msgid "You cannot vote for your comment"
1130
  msgstr ""
1131
 
1132
+ #: options/class.WpdiscuzOptionsSerialized.php:699
1133
  msgid "You are not allowed to vote for this comment"
1134
  msgstr ""
1135
 
1136
+ #: options/class.WpdiscuzOptionsSerialized.php:700
1137
  #: options/phrases-layouts/phrases-notification.php:85
1138
  msgid "Invalid Captcha Code"
1139
  msgstr ""
1140
 
1141
+ #: options/class.WpdiscuzOptionsSerialized.php:701
1142
  #: options/phrases-layouts/phrases-notification.php:89
1143
  msgid "Some of field value is invalid"
1144
  msgstr ""
1145
 
1146
+ #: options/class.WpdiscuzOptionsSerialized.php:702
1147
  msgid "new comment"
1148
  msgstr ""
1149
 
1150
+ #: options/class.WpdiscuzOptionsSerialized.php:703
1151
  msgid "new comments"
1152
  msgstr ""
1153
 
1154
+ #: options/class.WpdiscuzOptionsSerialized.php:704
1155
  msgid "Comment awaiting moderation"
1156
  msgstr ""
1157
 
1158
+ #: options/class.WpdiscuzOptionsSerialized.php:705
1159
  msgid "new reply on your comment"
1160
  msgstr ""
1161
 
1162
+ #: options/class.WpdiscuzOptionsSerialized.php:706
1163
  msgid "new replies on your comments"
1164
  msgstr ""
1165
 
1166
+ #: options/class.WpdiscuzOptionsSerialized.php:707
1167
  #: options/phrases-layouts/phrases-general.php:52
1168
  msgid "New"
1169
  msgstr ""
1170
 
1171
+ #: options/class.WpdiscuzOptionsSerialized.php:708
1172
  #: options/phrases-layouts/phrases-notification.php:107
1173
  msgid "Sorry, the comment was not updated"
1174
  msgstr ""
1175
 
1176
+ #: options/class.WpdiscuzOptionsSerialized.php:709
1177
  #: options/phrases-layouts/phrases-notification.php:111
1178
  msgid "Sorry, this comment no longer possible to edit"
1179
  msgstr ""
1180
 
1181
+ #: options/class.WpdiscuzOptionsSerialized.php:710
1182
  msgid "You've not made any changes"
1183
  msgstr ""
1184
 
1185
+ #: options/class.WpdiscuzOptionsSerialized.php:711
1186
  #: options/phrases-layouts/phrases-comment.php:84
1187
  msgid "Save"
1188
  msgstr ""
1189
 
1190
+ #: options/class.WpdiscuzOptionsSerialized.php:712
1191
  #: options/phrases-layouts/phrases-comment.php:88
1192
  msgid "Cancel"
1193
  msgstr ""
1194
 
1195
+ #: options/class.WpdiscuzOptionsSerialized.php:713
1196
  msgid "Input is too short"
1197
  msgstr ""
1198
 
1199
+ #: options/class.WpdiscuzOptionsSerialized.php:714
1200
  msgid "Input is too long"
1201
  msgstr ""
1202
 
1203
+ #: options/class.WpdiscuzOptionsSerialized.php:715
1204
  #: options/phrases-layouts/phrases-comment.php:92
1205
  msgid "Read more &raquo;"
1206
  msgstr ""
1207
 
1208
+ #: options/class.WpdiscuzOptionsSerialized.php:716
1209
  #: options/phrases-layouts/phrases-comment.php:96
1210
  msgid "Anonymous"
1211
  msgstr ""
1212
 
1213
+ #: options/class.WpdiscuzOptionsSerialized.php:717
1214
  #: options/phrases-layouts/phrases-notification.php:118
1215
  #: options/phrases-layouts/phrases-notification.php:119
1216
  msgid "Please fill out required fields"
1217
  msgstr ""
1218
 
1219
+ #: options/class.WpdiscuzOptionsSerialized.php:718
1220
  #: options/phrases-layouts/phrases-form.php:67
1221
  #: options/phrases-layouts/phrases-form.php:68
1222
  msgid "Connect with"
1223
  msgstr ""
1224
 
1225
+ #: options/class.WpdiscuzOptionsSerialized.php:719
1226
+ #: options/phrases-layouts/phrases-notification.php:11
1227
  msgid "You're subscribed to"
1228
  msgstr ""
1229
 
1230
+ #: options/class.WpdiscuzOptionsSerialized.php:720
1231
  msgid "Participate in this discussion via email"
1232
  msgstr ""
1233
 
1234
+ #: options/class.WpdiscuzOptionsSerialized.php:721
1235
  #: options/phrases-layouts/phrases-form.php:72
1236
  msgid "&rsaquo;"
1237
  msgstr ""
1238
 
1239
+ #: options/class.WpdiscuzOptionsSerialized.php:722
1240
  #: options/phrases-layouts/phrases-email.php:52
1241
  msgid "Comment was approved"
1242
  msgstr ""
1243
 
1244
+ #: options/class.WpdiscuzOptionsSerialized.php:723
1245
  msgid "Hi, <br/> Your comment was approved."
1246
  msgstr ""
1247
 
1248
+ #: options/class.WpdiscuzOptionsSerialized.php:724
1249
+ msgid "Comments are closed."
1250
+ msgstr ""
1251
+
1252
  #: options/html-addons.php:11
1253
  msgid "wpDiscuz Addons"
1254
  msgstr ""
1528
  msgstr ""
1529
 
1530
  #: options/options-layouts/settings-general.php:125
1531
+ msgid "Display only parent comments and <u>view replies &or;</u> button"
1532
  msgstr ""
1533
 
1534
  #: options/options-layouts/settings-general.php:127
1535
  msgid ""
1536
+ "If this option is enabled only parent comment will be displayed. This "
1537
+ "increases page load speed and keeps pages light. If visitor wants to read "
1538
+ "replies he/she just need to click on [view replies (12)] button located on "
1539
+ "all parent comments which have replies."
1540
+ msgstr ""
1541
+
1542
+ #: options/options-layouts/settings-general.php:134
1543
+ msgid "Comments loading/pagination type"
1544
+ msgstr ""
1545
+
1546
+ #: options/options-layouts/settings-general.php:136
1547
+ msgid ""
1548
  "You can manage the number of comments for [Load more] option in Settings > "
1549
  "Discussion page, using \"Break comments into pages with [X] top level "
1550
  "comments per page\" option. To show the default Wordpress comment pagination "
1551
  "you should enable the checkbox on bigining of the same option."
1552
  msgstr ""
1553
 
1554
+ #: options/options-layouts/settings-general.php:142
1555
+ #: options/options-layouts/settings-general.php:144
1556
  msgid "[Load more] Button"
1557
  msgstr ""
1558
 
1559
+ #: options/options-layouts/settings-general.php:146
1560
+ #: options/options-layouts/settings-general.php:148
1561
  msgid "[Load rest of all comments] Button"
1562
  msgstr ""
1563
 
1564
+ #: options/options-layouts/settings-general.php:150
1565
+ #: options/options-layouts/settings-general.php:152
1566
+ msgid "Load all comments"
1567
+ msgstr ""
1568
+
1569
+ #: options/options-layouts/settings-general.php:154
1570
+ #: options/options-layouts/settings-general.php:156
1571
  msgid "Lazy load comments on scrolling"
1572
  msgstr ""
1573
 
1574
+ #: options/options-layouts/settings-general.php:162
1575
  msgid "Enable first comments loading before scroll position is on comment box"
1576
  msgstr ""
1577
 
1578
+ #: options/options-layouts/settings-general.php:167
1579
  msgid "Use WordPress Date/Time format"
1580
  msgstr ""
1581
 
1582
+ #: options/options-layouts/settings-general.php:168
1583
  msgid ""
1584
  "wpDiscuz shows Human Readable date format. If you check this option it'll "
1585
  "show the date/time format set in WordPress General Settings."
1586
  msgstr ""
1587
 
1588
+ #: options/options-layouts/settings-general.php:174
1589
  msgid "Current Wordpress date/time format"
1590
  msgstr ""
1591
 
1592
+ #: options/options-layouts/settings-general.php:180
1593
  msgid "Use Plugin .PO/.MO files"
1594
  msgstr ""
1595
 
1596
+ #: options/options-layouts/settings-general.php:181
1597
  msgid ""
1598
  "wpDiscuz phrase system allows you to translate all front-end phrases. "
1599
  "However if you have a multi-language website it'll not allow you to add more "
1603
  "translate all phrases based on language files according to current language."
1604
  msgstr ""
1605
 
1606
+ #: options/options-layouts/settings-general.php:188
1607
  msgid ""
1608
  "Help wpDiscuz to grow allowing people to recognize which comment plugin you "
1609
  "use"
1610
  msgstr ""
1611
 
1612
+ #: options/options-layouts/settings-general.php:190
1613
  msgid ""
1614
  "Please check this option on to help wpDiscuz get more popularity as your "
1615
  "thank to the hard work we do for you totally free. This option adds a very "
1617
  "visitors recognize the name of comment solution you use."
1618
  msgstr ""
1619
 
1620
+ #: options/options-layouts/settings-general.php:195
1621
  msgid "Thank you!"
1622
  msgstr ""
1623
 
2264
  msgid "Notification Phrases"
2265
  msgstr ""
2266
 
 
 
 
 
2267
  #: options/phrases-layouts/phrases-notification.php:24
2268
  msgid "Postmatic subscription label"
2269
  msgstr ""
2336
  msgid "TYou've not made any changes"
2337
  msgstr ""
2338
 
2339
+ #: options/phrases-layouts/phrases-notification.php:122
2340
+ msgid "Message if commenting disabled by user role"
2341
+ msgstr ""
2342
+
2343
+ #: options/phrases-layouts/phrases-notification.php:123
2344
+ msgid "Comments are closed"
2345
+ msgstr ""
2346
+
2347
  #: options/tools-layouts/options-export.php:10
2348
  msgid ""
2349
  "You can transfer the saved options data between different installs by "
2362
  "wpDiscuz versions."
2363
  msgstr ""
2364
 
2365
+ #: templates/comment/class.WpdiscuzWalker.php:324
2366
+ msgid "view replies"
2367
+ msgstr ""
2368
+
2369
  #: templates/comment/comment-form.php:71
2370
  msgid "Unable to send an email"
2371
  msgstr ""
manager/class.WpdiscuzDBManager.php CHANGED
@@ -219,33 +219,24 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
219
  return $this->db->get_col($sql);
220
  }
221
 
222
- /**
223
- * @param type $postId the current post id
224
- * @return type int, all comments count for current post
225
- */
226
- public function getCommentsCount($postId) {
227
- $sqlCommentsCount = $this->db->prepare("SELECT count(*) FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d AND `comment_approved` = '1';", $postId);
228
- return $this->db->get_var($sqlCommentsCount);
229
- }
230
-
231
  /**
232
  * get current post parent comments by wordpress settings
233
  */
234
  public function getPostParentComments($args) {
235
  $commentParent = $args['is_threaded'] ? 'AND `comment_parent` = 0' : '';
236
- $status = $this->getCommentsStatus($args['status']);
237
  $limit = "";
238
  if (!$this->isMySQL57) {
239
  $limit = " LIMIT " . ($args['limit'] + 1);
240
  }
241
  if ($args['limit'] == 0) {
242
  $allParentCounts = count($this->getAllParentCommentCount($args['post_id'], $args['is_threaded']));
243
- $sqlComments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d AND $status $commentParent ORDER BY `comment_date_gmt` {$args['order']} LIMIT %d OFFSET %d", $args['post_id'], $allParentCounts, $args['offset']);
244
  } else if ($args['last_parent_id']) {
245
  $operator = ($args['order'] == 'asc') ? '>' : '<';
246
- $sqlComments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d AND $status $commentParent AND `comment_ID` $operator %d ORDER BY `comment_date_gmt` {$args['order']}, comment_ID {$args['order']} $limit", $args['post_id'], $args['last_parent_id']);
247
  } else {
248
- $sqlComments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d AND $status $commentParent ORDER BY `comment_date_gmt` {$args['order']}, comment_ID {$args['order']} $limit", $args['post_id']);
249
  }
250
  $data = $this->db->get_col($sqlComments);
251
  if (isset($args['limit']) && $args['limit'] != 0) {
@@ -282,12 +273,12 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
282
  */
283
  public function getPostVotedCommentIds($args) {
284
  $commentParent = $args['is_threaded'] ? 'AND `c`.`comment_parent` = 0' : '';
285
- $status = $this->getCommentsStatus($args['status'], '`c`.');
286
  if ($args['limit']) {
287
- $sqlPostVotedCommentIds = $this->db->prepare("SELECT `c`.`comment_ID` FROM `" . $this->dbprefix . "comments` AS `c` LEFT JOIN `" . $this->dbprefix . "commentmeta` AS `cm` ON `c`.`comment_ID` = `cm`.`comment_id` AND `cm`.`meta_key` = '" . self::META_KEY_VOTES . "' WHERE `c`.`comment_post_ID` = %d AND $status $commentParent ORDER BY (`cm`.`meta_value`+0) desc, `c`.`comment_date_gmt` {$args['date_order']} LIMIT %d OFFSET %d", $args['post_id'], $args['limit'] + 1, $args['offset']);
288
  } else {
289
  $allParentCounts = count($this->getAllParentCommentCount($args['post_id'], $args['is_threaded']));
290
- $sqlPostVotedCommentIds = $this->db->prepare("SELECT `c`.`comment_ID` FROM `" . $this->dbprefix . "comments` AS `c` LEFT JOIN `" . $this->dbprefix . "commentmeta` AS `cm` ON `c`.`comment_ID` = `cm`.`comment_id` AND `cm`.`meta_key` = '" . self::META_KEY_VOTES . "' WHERE `c`.`comment_post_ID` = %d AND $status $commentParent ORDER BY (`cm`.`meta_value`+0) desc, `c`.`comment_date_gmt` {$args['date_order']} LIMIT %d OFFSET %d", $args['post_id'], $allParentCounts, $args['offset']);
291
  }
292
  $data = $this->db->get_col($sqlPostVotedCommentIds);
293
  if (isset($args['limit']) && $args['limit'] != 0 && count($data) > $args['limit']) {
@@ -297,22 +288,6 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
297
  return $data;
298
  }
299
 
300
- /**
301
- * @return type array of comment ids
302
- */
303
- public function getVotedCommentIds() {
304
- $sqlVotedCommentIds = "SELECT `c`.`comment_ID` FROM `" . $this->dbprefix . "comments` AS `c` INNER JOIN `" . $this->dbprefix . "commentmeta` AS `cm` ON `c`.`comment_ID` = `cm`.`comment_id` WHERE `cm`.`meta_key` = '" . self::META_KEY_VOTES . "' AND `c`.`comment_approved` = '1' AND `c`.`comment_parent` = 0;";
305
- return $this->db->get_col($sqlVotedCommentIds);
306
- }
307
-
308
- /**
309
- * get all comments - currently unused
310
- */
311
- public function getAllComments($limit, $offset) {
312
- $sql_comments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` LIMIT %d OFFSET %d", $limit, $offset);
313
- return $this->db->get_col($sql_comments);
314
- }
315
-
316
  public function getAllParentCommentCount($postId = 0, $isThreaded = 1) {
317
  $commentParent = $isThreaded ? '`comment_parent` = 0' : '1';
318
  if ($postId) {
@@ -331,52 +306,6 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
331
  return $this->db->get_col($sql_comments);
332
  }
333
 
334
- /**
335
- * checks if curret comment already is in meta
336
- * return comment id if true false otherwise
337
- */
338
- public function isCommentInMeta($commentId) {
339
- $query = $this->db->prepare("SELECT `comment_id` FROM `" . $this->dbprefix . "commentmeta` WHERE `meta_key` LIKE %s AND `comment_id` = %d;", self::META_KEY_CHILDREN, $commentId);
340
- return $this->db->query($query);
341
- }
342
-
343
- /**
344
- * get meta rows containing comment id
345
- */
346
- public function getRowsContainingCommentId($commentId, $parentId = 0) {
347
- if ($parentId) {
348
- $query = $this->db->prepare("SELECT `comment_id`, `meta_value` FROM `" . $this->dbprefix . "commentmeta` WHERE `meta_value` REGEXP '(,|^)%d,' AND `comment_id` = %d;", $commentId, $parentId);
349
- } else {
350
- $query = $this->db->prepare("SELECT `comment_id`, `meta_value` FROM `" . $this->dbprefix . "commentmeta` WHERE `meta_value` REGEXP '(,|^)%d,';", $commentId);
351
- }
352
- $rows = $this->db->get_results($query, ARRAY_A);
353
- return $rows;
354
- }
355
-
356
- /**
357
- * get count by parent comment id
358
- */
359
- public function getCommentsCountByParentId($comment_id) {
360
- $sql_comments = $this->db->prepare("SELECT COUNT(`comment_ID`) FROM `" . $this->dbprefix . "comments` WHERE `comment_approved` = '1' AND `comment_parent` = %d", $comment_id);
361
- return $this->db->get_var($sql_comments);
362
- }
363
-
364
- public function getCommentMeta($commentId, $metaKey) {
365
- $sql_meta = $this->db->prepare("SELECT `comment_id`,`meta_value` FROM `" . $this->dbprefix . "commentmeta` WHERE `comment_id` = %d AND `meta_key` = %s", $commentId, $metaKey);
366
- return $this->db->get_row($sql_meta);
367
- }
368
-
369
- public function addTrees($trees) {
370
- $sql = "INSERT INTO `" . $this->dbprefix . "commentmeta`VALUES";
371
- foreach ($trees as $tKey => $tVal) {
372
- $tree = implode(',', $tVal);
373
- $tree .= $tree ? ',' : '';
374
- $sql .= "(NULL, $tKey, '" . self::META_KEY_CHILDREN . "', '" . $tree . "'),";
375
- }
376
- $sql = trim($sql, ',');
377
- $this->db->query($sql);
378
- }
379
-
380
  public function addEmailNotification($subsriptionId, $postId, $email, $subscriptionType, $confirm = 0) {
381
  if ($subscriptionType != self::SUBSCRIPTION_COMMENT) {
382
  $this->deleteCommentNotifications($subsriptionId, $email);
@@ -494,36 +423,29 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
494
  return $postsAuthors;
495
  }
496
 
497
- public function getOptimizedCommentIds($postId) {
498
- $sql = $this->db->prepare("SELECT `cm`.`comment_id` FROM `" . $this->dbprefix . "commentmeta` AS `cm` INNER JOIN `" . $this->dbprefix . "comments` AS `c` ON `c`.`comment_ID` = `cm`.`comment_id` WHERE `c`.`comment_post_ID` = %d AND `c`.`comment_approved` = '1' AND `cm`.`meta_key` = '" . self::META_KEY_CHILDREN . "' AND `cm`.`meta_value` != '';", $postId);
499
- return $this->db->get_col($sql);
500
- }
501
-
502
- public function getIdsInMeta($commentIds) {
503
- if (!$commentIds) {
504
- return array();
505
- }
506
- $this->db->query("SET SESSION group_concat_max_len = 1000000;");
507
- $sql = "SELECT GROUP_CONCAT(TRIM(BOTH ',' FROM `meta_value`)) FROM `" . $this->dbprefix . "commentmeta` WHERE `meta_key` = '" . self::META_KEY_CHILDREN . "' AND comment_id IN ($commentIds)";
508
- return $this->db->get_col($sql);
509
- }
510
-
511
  public function removeVotes() {
512
  $sqlTruncate = "TRUNCATE `" . $this->dbprefix . "wc_users_voted`;";
513
  $sqlDelete = "DELETE FROM `" . $this->dbprefix . "commentmeta` WHERE `meta_key` = '" . self::META_KEY_VOTES . "';";
514
  return $this->db->query($sqlTruncate) && $this->db->query($sqlDelete);
515
  }
516
 
517
- private function getCommentsStatus($status, $alias = '') {
518
- $s = '';
 
519
  if ($status == 'all') {
520
- $s = "($alias`comment_approved` = '0' OR $alias`comment_approved` = '1')";
521
  } else if ($status == 'hold') {
522
- $s = "($alias`comment_approved` = '0')";
523
  } else {
524
- $s = "$alias`comment_approved` = '1'";
 
 
 
 
 
 
525
  }
526
- return $s;
527
  }
528
 
529
  public function getVotes($commentId) {
219
  return $this->db->get_col($sql);
220
  }
221
 
 
 
 
 
 
 
 
 
 
222
  /**
223
  * get current post parent comments by wordpress settings
224
  */
225
  public function getPostParentComments($args) {
226
  $commentParent = $args['is_threaded'] ? 'AND `comment_parent` = 0' : '';
227
+ $condition = $this->getParentCommentsClauses($args);
228
  $limit = "";
229
  if (!$this->isMySQL57) {
230
  $limit = " LIMIT " . ($args['limit'] + 1);
231
  }
232
  if ($args['limit'] == 0) {
233
  $allParentCounts = count($this->getAllParentCommentCount($args['post_id'], $args['is_threaded']));
234
+ $sqlComments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d $condition $commentParent ORDER BY `comment_date_gmt` {$args['order']} LIMIT %d OFFSET %d", $args['post_id'], $allParentCounts, $args['offset']);
235
  } else if ($args['last_parent_id']) {
236
  $operator = ($args['order'] == 'asc') ? '>' : '<';
237
+ $sqlComments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d $condition $commentParent AND `comment_ID` $operator %d ORDER BY `comment_date_gmt` {$args['order']}, comment_ID {$args['order']} $limit", $args['post_id'], $args['last_parent_id']);
238
  } else {
239
+ $sqlComments = $this->db->prepare("SELECT `comment_ID` FROM `" . $this->dbprefix . "comments` WHERE `comment_post_ID` = %d $condition $commentParent ORDER BY `comment_date_gmt` {$args['order']}, comment_ID {$args['order']} $limit", $args['post_id']);
240
  }
241
  $data = $this->db->get_col($sqlComments);
242
  if (isset($args['limit']) && $args['limit'] != 0) {
273
  */
274
  public function getPostVotedCommentIds($args) {
275
  $commentParent = $args['is_threaded'] ? 'AND `c`.`comment_parent` = 0' : '';
276
+ $condition = $this->getParentCommentsClauses($args, '`c`.');
277
  if ($args['limit']) {
278
+ $sqlPostVotedCommentIds = $this->db->prepare("SELECT `c`.`comment_ID` FROM `" . $this->dbprefix . "comments` AS `c` LEFT JOIN `" . $this->dbprefix . "commentmeta` AS `cm` ON `c`.`comment_ID` = `cm`.`comment_id` AND `cm`.`meta_key` = '" . self::META_KEY_VOTES . "' WHERE `c`.`comment_post_ID` = %d $condition $commentParent ORDER BY (`cm`.`meta_value`+0) desc, `c`.`comment_date_gmt` {$args['date_order']} LIMIT %d OFFSET %d", $args['post_id'], $args['limit'] + 1, $args['offset']);
279
  } else {
280
  $allParentCounts = count($this->getAllParentCommentCount($args['post_id'], $args['is_threaded']));
281
+ $sqlPostVotedCommentIds = $this->db->prepare("SELECT `c`.`comment_ID` FROM `" . $this->dbprefix . "comments` AS `c` LEFT JOIN `" . $this->dbprefix . "commentmeta` AS `cm` ON `c`.`comment_ID` = `cm`.`comment_id` AND `cm`.`meta_key` = '" . self::META_KEY_VOTES . "' WHERE `c`.`comment_post_ID` = %d $condition $commentParent ORDER BY (`cm`.`meta_value`+0) desc, `c`.`comment_date_gmt` {$args['date_order']} LIMIT %d OFFSET %d", $args['post_id'], $allParentCounts, $args['offset']);
282
  }
283
  $data = $this->db->get_col($sqlPostVotedCommentIds);
284
  if (isset($args['limit']) && $args['limit'] != 0 && count($data) > $args['limit']) {
288
  return $data;
289
  }
290
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
  public function getAllParentCommentCount($postId = 0, $isThreaded = 1) {
292
  $commentParent = $isThreaded ? '`comment_parent` = 0' : '1';
293
  if ($postId) {
306
  return $this->db->get_col($sql_comments);
307
  }
308
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
309
  public function addEmailNotification($subsriptionId, $postId, $email, $subscriptionType, $confirm = 0) {
310
  if ($subscriptionType != self::SUBSCRIPTION_COMMENT) {
311
  $this->deleteCommentNotifications($subsriptionId, $email);
423
  return $postsAuthors;
424
  }
425
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
426
  public function removeVotes() {
427
  $sqlTruncate = "TRUNCATE `" . $this->dbprefix . "wc_users_voted`;";
428
  $sqlDelete = "DELETE FROM `" . $this->dbprefix . "commentmeta` WHERE `meta_key` = '" . self::META_KEY_VOTES . "';";
429
  return $this->db->query($sqlTruncate) && $this->db->query($sqlDelete);
430
  }
431
 
432
+ private function getParentCommentsClauses($args, $alias = '') {
433
+ $s = ' AND ';
434
+ $status = $args['status'];
435
  if ($status == 'all') {
436
+ $s .= "($alias`comment_approved` = '0' OR $alias`comment_approved` = '1')";
437
  } else if ($status == 'hold') {
438
+ $s .= "($alias`comment_approved` = '0')";
439
  } else {
440
+ $condition = ' ';
441
+ if (isset($args['include_unapproved']) && is_int($args['include_unapproved'][0])) {
442
+ $condition .= " OR ($alias`comment_approved` = '0' AND $alias`user_id` = {$args['include_unapproved'][0] })";
443
+ } elseif (isset($args['include_unapproved']) && $args['include_unapproved'][0]) {
444
+ $condition .= " OR ($alias`comment_approved` = '0' AND $alias`comment_author_email` = '{$args['include_unapproved'][0]}')";
445
+ }
446
+ $s .= "($alias`comment_approved` = '1' $condition )";
447
  }
448
+ return apply_filters('wpdiscuz_parent_comments_clauses',$s);
449
  }
450
 
451
  public function getVotes($commentId) {
options/class.WpdiscuzOptions.php CHANGED
@@ -36,6 +36,7 @@ class WpdiscuzOptions {
36
  $this->optionsSerialized->commentEditableTime = isset($_POST['wc_comment_editable_time']) ? $_POST['wc_comment_editable_time'] : 900;
37
  $this->optionsSerialized->redirectPage = isset($_POST['wpdiscuz_redirect_page']) ? $_POST['wpdiscuz_redirect_page'] : 0;
38
  $this->optionsSerialized->isGuestCanVote = isset($_POST['wc_is_guest_can_vote']) ? $_POST['wc_is_guest_can_vote'] : 0;
 
39
  $this->optionsSerialized->commentListLoadType = isset($_POST['commentListLoadType']) ? $_POST['commentListLoadType'] : 0;
40
  $this->optionsSerialized->lazyLoadOnPageLoad = isset($_POST['lazyLoadOnPageLoad']) ? $_POST['lazyLoadOnPageLoad'] : 0;
41
  $this->optionsSerialized->votingButtonsShowHide = isset($_POST['wc_voting_buttons_show_hide']) ? $_POST['wc_voting_buttons_show_hide'] : 0;
@@ -200,6 +201,7 @@ class WpdiscuzOptions {
200
  $this->optionsSerialized->phrases['wc_form_subscription_submit'] = $_POST['wc_form_subscription_submit'];
201
  $this->optionsSerialized->phrases['wc_comment_approved_email_subject'] = $_POST['wc_comment_approved_email_subject'];
202
  $this->optionsSerialized->phrases['wc_comment_approved_email_message'] = $_POST['wc_comment_approved_email_message'];
 
203
  if (class_exists('Prompt_Comment_Form_Handling') && $this->optionsSerialized->usePostmaticForCommentNotification) {
204
  $this->optionsSerialized->phrases['wc_postmatic_subscription_label'] = $_POST['wc_postmatic_subscription_label'];
205
  }
@@ -255,7 +257,7 @@ class WpdiscuzOptions {
255
  $this->addons = array(
256
  'emoticons' => array('version' => '1.1.1', 'requires' => '4.0.0', 'class' => 'wpDiscuzSmile', 'title' => 'Emoticons', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'emoticons' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Brings an ocean of emotions to your comments. It comes with an awesome smile package.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-emoticons/'),
257
  'author-info' => array('version' => '1.0.0', 'requires' => '4.0.6', 'class' => 'WpdiscuzCommentAuthorInfo', 'title' => 'Comment Author Info', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'author-info' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Extended information about comment author with Profile, Activity, Votes and Subscriptions Tabs on pop-up window.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-comment-author-info/'),
258
- // 'online-users' => array('version' => '1.0.0', 'requires' => '4.1.0', 'class' => 'WpdiscuzOnlineUsers', 'title' => 'Online Users', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'online-users' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Real-time online user checking, pop-up notification of new online users and online/offline badges.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-online-users/'),
259
  'subscriptions' => array('version' => '1.0.0', 'requires' => '4.0.4', 'class' => 'wpdSubscribeManager', 'title' => 'Subscription Manager', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'subscriptions' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Total control over comment subscriptions. Full list, monitor, manage, filter, unsubscribe, confirm...', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-subscribe-manager/'),
260
  'ads-manager' => array('version' => '1.0.0', 'requires' => '4.0.0', 'class' => 'WpdiscuzAdsManager', 'title' => 'Ads Manager', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'ads-manager' . WPDISCUZ_DS . 'header.png'), 'desc' => __('A full-fledged tool-kit for advertising in comment section of your website. Separate banner and ad managment.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-ads-manager/'),
261
  'user-mention' => array('version' => '1.0.0', 'requires' => '4.0.0', 'class' => 'Wpdiscuz_UCM', 'title' => 'User &amp; Comment Mentioning', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'user-mention' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Allows to mention comments and users in comment text using #comment-id and @username tags.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-user-comment-mentioning/'),
36
  $this->optionsSerialized->commentEditableTime = isset($_POST['wc_comment_editable_time']) ? $_POST['wc_comment_editable_time'] : 900;
37
  $this->optionsSerialized->redirectPage = isset($_POST['wpdiscuz_redirect_page']) ? $_POST['wpdiscuz_redirect_page'] : 0;
38
  $this->optionsSerialized->isGuestCanVote = isset($_POST['wc_is_guest_can_vote']) ? $_POST['wc_is_guest_can_vote'] : 0;
39
+ $this->optionsSerialized->isLoadOnlyParentComments = isset($_POST['isLoadOnlyParentComments']) ? $_POST['isLoadOnlyParentComments'] : 0;
40
  $this->optionsSerialized->commentListLoadType = isset($_POST['commentListLoadType']) ? $_POST['commentListLoadType'] : 0;
41
  $this->optionsSerialized->lazyLoadOnPageLoad = isset($_POST['lazyLoadOnPageLoad']) ? $_POST['lazyLoadOnPageLoad'] : 0;
42
  $this->optionsSerialized->votingButtonsShowHide = isset($_POST['wc_voting_buttons_show_hide']) ? $_POST['wc_voting_buttons_show_hide'] : 0;
201
  $this->optionsSerialized->phrases['wc_form_subscription_submit'] = $_POST['wc_form_subscription_submit'];
202
  $this->optionsSerialized->phrases['wc_comment_approved_email_subject'] = $_POST['wc_comment_approved_email_subject'];
203
  $this->optionsSerialized->phrases['wc_comment_approved_email_message'] = $_POST['wc_comment_approved_email_message'];
204
+ $this->optionsSerialized->phrases['wc_roles_cannot_comment_message'] = $_POST['wc_roles_cannot_comment_message'];
205
  if (class_exists('Prompt_Comment_Form_Handling') && $this->optionsSerialized->usePostmaticForCommentNotification) {
206
  $this->optionsSerialized->phrases['wc_postmatic_subscription_label'] = $_POST['wc_postmatic_subscription_label'];
207
  }
257
  $this->addons = array(
258
  'emoticons' => array('version' => '1.1.1', 'requires' => '4.0.0', 'class' => 'wpDiscuzSmile', 'title' => 'Emoticons', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'emoticons' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Brings an ocean of emotions to your comments. It comes with an awesome smile package.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-emoticons/'),
259
  'author-info' => array('version' => '1.0.0', 'requires' => '4.0.6', 'class' => 'WpdiscuzCommentAuthorInfo', 'title' => 'Comment Author Info', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'author-info' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Extended information about comment author with Profile, Activity, Votes and Subscriptions Tabs on pop-up window.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-comment-author-info/'),
260
+ 'online-users' => array('version' => '1.0.0', 'requires' => '4.1.0', 'class' => 'WpdiscuzOnlineUsers', 'title' => 'Online Users', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'online-users' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Real-time online user checking, pop-up notification of new online users and online/offline badges.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-online-users/'),
261
  'subscriptions' => array('version' => '1.0.0', 'requires' => '4.0.4', 'class' => 'wpdSubscribeManager', 'title' => 'Subscription Manager', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'subscriptions' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Total control over comment subscriptions. Full list, monitor, manage, filter, unsubscribe, confirm...', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-subscribe-manager/'),
262
  'ads-manager' => array('version' => '1.0.0', 'requires' => '4.0.0', 'class' => 'WpdiscuzAdsManager', 'title' => 'Ads Manager', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'ads-manager' . WPDISCUZ_DS . 'header.png'), 'desc' => __('A full-fledged tool-kit for advertising in comment section of your website. Separate banner and ad managment.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-ads-manager/'),
263
  'user-mention' => array('version' => '1.0.0', 'requires' => '4.0.0', 'class' => 'Wpdiscuz_UCM', 'title' => 'User &amp; Comment Mentioning', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'user-mention' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Allows to mention comments and users in comment text using #comment-id and @username tags.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-user-comment-mentioning/'),
options/class.WpdiscuzOptionsSerialized.php CHANGED
@@ -66,14 +66,22 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
66
  */
67
  public $isGuestCanVote;
68
 
 
 
 
 
 
 
 
 
69
  /**
70
  * Type - Radio Button
71
- * Available Values - 0 Default (Load More) / 1 Load Rest Of Comments / 2 Lazy Load comments on scrolling
72
  * Description - Comment list load type
73
  * Default Value - Disabled
74
  */
75
  public $commentListLoadType;
76
-
77
  /**
78
  * Type - Checkbox
79
  * Available Values - Checked/Unchecked
@@ -292,7 +300,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
292
  * Default Value - after
293
  */
294
  public $displayRatingOnPost;
295
-
296
  /**
297
  * Type - Checkbox
298
  * Available Values - Checked/Unchecked
@@ -555,6 +563,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
555
  $this->commentEditableTime = isset($options['wc_comment_editable_time']) ? $options['wc_comment_editable_time'] : 900;
556
  $this->redirectPage = isset($options['wpdiscuz_redirect_page']) ? $options['wpdiscuz_redirect_page'] : 0;
557
  $this->isGuestCanVote = isset($options['wc_is_guest_can_vote']) ? $options['wc_is_guest_can_vote'] : 0;
 
558
  $this->commentListLoadType = isset($options['commentListLoadType']) ? $options['commentListLoadType'] : 0;
559
  $this->lazyLoadOnPageLoad = isset($options['lazyLoadOnPageLoad']) ? $options['lazyLoadOnPageLoad'] : 0;
560
  $this->votingButtonsShowHide = isset($options['wc_voting_buttons_show_hide']) ? $options['wc_voting_buttons_show_hide'] : 0;
@@ -712,6 +721,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
712
  'wc_form_subscription_submit' => __('&rsaquo;', 'wpdiscuz'),
713
  'wc_comment_approved_email_subject' => __('Comment was approved', 'wpdiscuz'),
714
  'wc_comment_approved_email_message' => __('Hi, <br/> Your comment was approved.', 'wpdiscuz'),
 
715
  );
716
  }
717
 
@@ -725,6 +735,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
725
  'wc_comment_editable_time' => $this->commentEditableTime,
726
  'wpdiscuz_redirect_page' => $this->redirectPage,
727
  'wc_is_guest_can_vote' => $this->isGuestCanVote,
 
728
  'commentListLoadType' => $this->commentListLoadType,
729
  'lazyLoadOnPageLoad' => $this->lazyLoadOnPageLoad,
730
  'wc_voting_buttons_show_hide' => $this->votingButtonsShowHide,
@@ -797,6 +808,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
797
  'wpdiscuz_redirect_page' => '0',
798
  'wc_is_guest_can_vote' => '1',
799
  'commentsLoadType' => '0',
 
800
  'commentListLoadType' => '0',
801
  'lazyLoadOnPageLoad' => '0',
802
  'wc_voting_buttons_show_hide' => '0',
@@ -925,6 +937,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
925
  $js_options['isGoodbyeCaptchaActive'] = (boolean) $this->isGoodbyeCaptchaActive;
926
  $js_options['facebookAppID'] = $this->facebookAppID;
927
  $js_options['cookiehash'] = COOKIEHASH;
 
928
 
929
  return $js_options;
930
  }
66
  */
67
  public $isGuestCanVote;
68
 
69
+ /**
70
+ * Type - Checkbox
71
+ * Available Values - Checked/Unchecked
72
+ * Description - Load only parent comments
73
+ * Default Value - Checked
74
+ */
75
+ public $isLoadOnlyParentComments;
76
+
77
  /**
78
  * Type - Radio Button
79
+ * Available Values - 0 Default (Load More) / 1 Load Rest Of Comments / 2 Lazy Load comments on scrolling / 3 Load all comments
80
  * Description - Comment list load type
81
  * Default Value - Disabled
82
  */
83
  public $commentListLoadType;
84
+
85
  /**
86
  * Type - Checkbox
87
  * Available Values - Checked/Unchecked
300
  * Default Value - after
301
  */
302
  public $displayRatingOnPost;
303
+
304
  /**
305
  * Type - Checkbox
306
  * Available Values - Checked/Unchecked
563
  $this->commentEditableTime = isset($options['wc_comment_editable_time']) ? $options['wc_comment_editable_time'] : 900;
564
  $this->redirectPage = isset($options['wpdiscuz_redirect_page']) ? $options['wpdiscuz_redirect_page'] : 0;
565
  $this->isGuestCanVote = isset($options['wc_is_guest_can_vote']) ? $options['wc_is_guest_can_vote'] : 0;
566
+ $this->isLoadOnlyParentComments = isset($options['isLoadOnlyParentComments']) ? $options['isLoadOnlyParentComments'] : 0;
567
  $this->commentListLoadType = isset($options['commentListLoadType']) ? $options['commentListLoadType'] : 0;
568
  $this->lazyLoadOnPageLoad = isset($options['lazyLoadOnPageLoad']) ? $options['lazyLoadOnPageLoad'] : 0;
569
  $this->votingButtonsShowHide = isset($options['wc_voting_buttons_show_hide']) ? $options['wc_voting_buttons_show_hide'] : 0;
721
  'wc_form_subscription_submit' => __('&rsaquo;', 'wpdiscuz'),
722
  'wc_comment_approved_email_subject' => __('Comment was approved', 'wpdiscuz'),
723
  'wc_comment_approved_email_message' => __('Hi, <br/> Your comment was approved.', 'wpdiscuz'),
724
+ 'wc_roles_cannot_comment_message' => __('Comments are closed.', 'wpdiscuz'),
725
  );
726
  }
727
 
735
  'wc_comment_editable_time' => $this->commentEditableTime,
736
  'wpdiscuz_redirect_page' => $this->redirectPage,
737
  'wc_is_guest_can_vote' => $this->isGuestCanVote,
738
+ 'isLoadOnlyParentComments' => $this->isLoadOnlyParentComments,
739
  'commentListLoadType' => $this->commentListLoadType,
740
  'lazyLoadOnPageLoad' => $this->lazyLoadOnPageLoad,
741
  'wc_voting_buttons_show_hide' => $this->votingButtonsShowHide,
808
  'wpdiscuz_redirect_page' => '0',
809
  'wc_is_guest_can_vote' => '1',
810
  'commentsLoadType' => '0',
811
+ 'isLoadOnlyParentComments' => '0',
812
  'commentListLoadType' => '0',
813
  'lazyLoadOnPageLoad' => '0',
814
  'wc_voting_buttons_show_hide' => '0',
937
  $js_options['isGoodbyeCaptchaActive'] = (boolean) $this->isGoodbyeCaptchaActive;
938
  $js_options['facebookAppID'] = $this->facebookAppID;
939
  $js_options['cookiehash'] = COOKIEHASH;
940
+ $js_options['isLoadOnlyParentComments'] = $this->isLoadOnlyParentComments;
941
 
942
  return $js_options;
943
  }
options/options-layouts/settings-general.php CHANGED
@@ -120,6 +120,15 @@ if (!defined('ABSPATH')) {
120
  <th scope="row"><label for="wc_is_guest_can_vote"><?php _e('Allow guests to vote on comments', 'wpdiscuz'); ?></label></th>
121
  <td><input type="checkbox" <?php checked($this->optionsSerialized->isGuestCanVote == 1) ?> value="1" name="wc_is_guest_can_vote" id="wc_is_guest_can_vote" /></td>
122
  </tr>
 
 
 
 
 
 
 
 
 
123
  <tr valign="top">
124
  <th scope="row">
125
  <?php _e('Comments loading/pagination type', 'wpdiscuz'); ?>
@@ -137,11 +146,15 @@ if (!defined('ABSPATH')) {
137
  <label title="<?php _e('[Load rest of all comments] Button', 'wpdiscuz') ?>">
138
  <input type="radio" value="1" <?php checked('1' == $commentListLoadType); ?> name="commentListLoadType" id="commentListLoadRest" class="commentListLoadType" />
139
  <span><?php _e('[Load rest of all comments] Button', 'wpdiscuz') ?></span>
140
- </label><br>
 
 
 
 
141
  <label title="<?php _e('Lazy load comments on scrolling', 'wpdiscuz') ?>">
142
  <input type="radio" value="2" <?php checked('2' == $commentListLoadType); ?> name="commentListLoadType" id="commentListLoadLazy" class="commentListLoadType commentListLoadLazy" />
143
  <span><?php _e('Lazy load comments on scrolling', 'wpdiscuz') ?></span>
144
- </label> &nbsp;<br/>
145
  </fieldset>
146
  </td>
147
  </tr>
120
  <th scope="row"><label for="wc_is_guest_can_vote"><?php _e('Allow guests to vote on comments', 'wpdiscuz'); ?></label></th>
121
  <td><input type="checkbox" <?php checked($this->optionsSerialized->isGuestCanVote == 1) ?> value="1" name="wc_is_guest_can_vote" id="wc_is_guest_can_vote" /></td>
122
  </tr>
123
+ <tr valign="top">
124
+ <th scope="row">
125
+ <label for="isLoadOnlyParentComments"><?php _e('Display only parent comments and <u>view replies &or;</u> button', 'wpdiscuz'); ?></label>
126
+ <p style="font-size:13px; color:#999999; width:80%; padding-left:0px; margin-left:0px;">
127
+ <?php _e('If this option is enabled only parent comment will be displayed. This increases page load speed and keeps pages light. If visitor wants to read replies he/she just need to click on [view replies (12)] button located on all parent comments which have replies.', 'wpdiscuz'); ?>
128
+ </p>
129
+ </th>
130
+ <td><input type="checkbox" <?php checked($this->optionsSerialized->isLoadOnlyParentComments == 1) ?> value="1" name="isLoadOnlyParentComments" id="isLoadOnlyParentComments" /></td>
131
+ </tr>
132
  <tr valign="top">
133
  <th scope="row">
134
  <?php _e('Comments loading/pagination type', 'wpdiscuz'); ?>
146
  <label title="<?php _e('[Load rest of all comments] Button', 'wpdiscuz') ?>">
147
  <input type="radio" value="1" <?php checked('1' == $commentListLoadType); ?> name="commentListLoadType" id="commentListLoadRest" class="commentListLoadType" />
148
  <span><?php _e('[Load rest of all comments] Button', 'wpdiscuz') ?></span>
149
+ </label><br>
150
+ <label title="<?php _e('Load all comments', 'wpdiscuz') ?>">
151
+ <input type="radio" value="3" <?php checked('3' == $commentListLoadType); ?> name="commentListLoadType" id="commentListLoadAll" class="commentListLoadType" />
152
+ <span><?php _e('Load all comments', 'wpdiscuz') ?></span>
153
+ </label> &nbsp;<br/>
154
  <label title="<?php _e('Lazy load comments on scrolling', 'wpdiscuz') ?>">
155
  <input type="radio" value="2" <?php checked('2' == $commentListLoadType); ?> name="commentListLoadType" id="commentListLoadLazy" class="commentListLoadType commentListLoadLazy" />
156
  <span><?php _e('Lazy load comments on scrolling', 'wpdiscuz') ?></span>
157
+ </label> &nbsp;<br/>
158
  </fieldset>
159
  </td>
160
  </tr>
options/phrases-layouts/phrases-notification.php CHANGED
@@ -8,7 +8,7 @@ if (!defined('ABSPATH')) {
8
  <table class="wp-list-table widefat plugins" style="margin-top:10px; border:none;">
9
  <tbody>
10
  <tr valign="top">
11
- <th scope="row"><label for="wc_subscribed_to"><?php _e("You\'re subscribed to", 'wpdiscuz'); ?></label></th>
12
  <td colspan="3"><input type="text" value="<?php echo $this->optionsSerialized->phrases['wc_subscribed_to']; ?>" name="wc_subscribed_to" id="wc_subscribed_to" /></td>
13
  </tr>
14
  <tr valign="top">
@@ -118,6 +118,10 @@ if (!defined('ABSPATH')) {
118
  <th scope="row"><label for="wc_msg_required_fields"><?php _e('Please fill out required fields', 'wpdiscuz'); ?></label></th>
119
  <td colspan="3"><input type="text" value="<?php echo isset($this->optionsSerialized->phrases['wc_msg_required_fields']) ? $this->optionsSerialized->phrases['wc_msg_required_fields'] : __('Please fill out required fields', 'wpdisucz'); ?>" name="wc_msg_required_fields" id="wc_msg_required_fields" /></td>
120
  </tr>
 
 
 
 
121
  </tbody>
122
  </table>
123
  </div>
8
  <table class="wp-list-table widefat plugins" style="margin-top:10px; border:none;">
9
  <tbody>
10
  <tr valign="top">
11
+ <th scope="row"><label for="wc_subscribed_to"><?php _e('You\'re subscribed to', 'wpdiscuz'); ?></label></th>
12
  <td colspan="3"><input type="text" value="<?php echo $this->optionsSerialized->phrases['wc_subscribed_to']; ?>" name="wc_subscribed_to" id="wc_subscribed_to" /></td>
13
  </tr>
14
  <tr valign="top">
118
  <th scope="row"><label for="wc_msg_required_fields"><?php _e('Please fill out required fields', 'wpdiscuz'); ?></label></th>
119
  <td colspan="3"><input type="text" value="<?php echo isset($this->optionsSerialized->phrases['wc_msg_required_fields']) ? $this->optionsSerialized->phrases['wc_msg_required_fields'] : __('Please fill out required fields', 'wpdisucz'); ?>" name="wc_msg_required_fields" id="wc_msg_required_fields" /></td>
120
  </tr>
121
+ <tr valign="top">
122
+ <th scope="row"><label for="wc_msg_required_fields"><?php _e('Message if commenting disabled by user role', 'wpdiscuz'); ?></label></th>
123
+ <td colspan="3"><input type="text" value="<?php echo isset($this->optionsSerialized->phrases['wc_roles_cannot_comment_message']) ? $this->optionsSerialized->phrases['wc_roles_cannot_comment_message'] : __('Comments are closed', 'wpdisucz'); ?>" name="wc_roles_cannot_comment_message" id="wc_roles_cannot_comment_message" /></td>
124
+ </tr>
125
  </tbody>
126
  </table>
127
  </div>
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: gVectors Team
3
  Tags: comment, comments, ajax comments, custom comment form, custom comment field
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
- Stable tag: 4.1.1
7
  Requires PHP: 5.4 and higher
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -35,9 +35,8 @@ Integration with AntiSpam plugins
35
 
36
  = Comments - wpDiscuz "Coming soon" Features: =
37
 
38
- * | New Option : Commenting can be disabled depending user roles
39
- * | New Option : "Load all comments" on page load
40
- * | New Option : Load only parent(root) comments
41
 
42
  = Comments - wpDiscuz Features: =
43
 
@@ -76,6 +75,9 @@ Integration with AntiSpam plugins
76
  * | Option to overwrite comment template and style
77
  * | Highlighting new comments since last visit with different background
78
  * | Notification to comment author when comment was approved
 
 
 
79
 
80
 
81
  = Add-ons =
@@ -95,6 +97,7 @@ Integration with AntiSpam plugins
95
  * | [wpDiscuz - User & Comment Mentioning](https://gvectors.com/product/wpdiscuz-user-comment-mentioning/)
96
  * | [wpDiscuz - Advanced Likers](https://gvectors.com/product/wpdiscuz-advanced-likers/)
97
  * | [wpDiscuz - Comments Censure](https://gvectors.com/product/comments-censure-pro/)
 
98
 
99
 
100
  This comment system is also available for WooCommerce, Plugin name is WooDiscuz – WooCommerce Comments:
@@ -169,9 +172,12 @@ Nothing will be lost! **Comments - wpDiscuz** will show all old comments.
169
 
170
  == Changelog ==
171
 
172
- = Comments - wpDiscuz v4.1.1 =
173
 
174
- * Added : Option to enable first comments loading before scroll position is on comment box
 
 
 
175
 
176
  IMPORTANT:
177
 
@@ -180,6 +186,10 @@ IMPORTANT:
180
  - If you use CDN and found some issue please purge it.
181
  - If your server PHP version is lower than 5.4, [please change it to hogher](https://wordpress.org/support/topic/wpdiscuz-4-requires-php-5-4-and-higher/)
182
 
 
 
 
 
183
  = Comments - wpDiscuz v4.1.0 =
184
 
185
  * Speed: v4.1 comes with new acelerated engine, it's twice faster than older versions
3
  Tags: comment, comments, ajax comments, custom comment form, custom comment field
4
  Requires at least: 4.4
5
  Tested up to: 4.9
6
+ Stable tag: 4.1.2
7
  Requires PHP: 5.4 and higher
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
35
 
36
  = Comments - wpDiscuz "Coming soon" Features: =
37
 
38
+ * | New Feature : Caching gravatar images
39
+ * | New Feature : Sticky comments
 
40
 
41
  = Comments - wpDiscuz Features: =
42
 
75
  * | Option to overwrite comment template and style
76
  * | Highlighting new comments since last visit with different background
77
  * | Notification to comment author when comment was approved
78
+ * | Display only parent comments with view replies (x) button
79
+ * | Control commenters by roles (allow/restrict access to website comment area)
80
+ * | Option to load all comments on first page load
81
 
82
 
83
  = Add-ons =
97
  * | [wpDiscuz - User & Comment Mentioning](https://gvectors.com/product/wpdiscuz-user-comment-mentioning/)
98
  * | [wpDiscuz - Advanced Likers](https://gvectors.com/product/wpdiscuz-advanced-likers/)
99
  * | [wpDiscuz - Comments Censure](https://gvectors.com/product/comments-censure-pro/)
100
+ * | [wpDiscuz - Online Users](https://gvectors.com/product/wpdiscuz-online-users/)
101
 
102
 
103
  This comment system is also available for WooCommerce, Plugin name is WooDiscuz – WooCommerce Comments:
172
 
173
  == Changelog ==
174
 
175
+ = Comments - wpDiscuz v4.1.2 =
176
 
177
+ * Added : Display only parent comments with view replies (x) button. This increases page loading speed and keeps pages light. If visitor wants to read replies he/she just clicks on [view replies (x) ] button located on each parent comment.
178
+ * Added : Now you can control commenters by roles. You can allow/restrict access to website comment area to certain user roles.
179
+ * Added : New option "Load all comments" on first page load
180
+ * Fixed Bug : Incorrect phrases
181
 
182
  IMPORTANT:
183
 
186
  - If you use CDN and found some issue please purge it.
187
  - If your server PHP version is lower than 5.4, [please change it to hogher](https://wordpress.org/support/topic/wpdiscuz-4-requires-php-5-4-and-higher/)
188
 
189
+ = Comments - wpDiscuz v4.1.1 =
190
+
191
+ * Added : Option to enable first comments loading before scroll position is on comment box
192
+
193
  = Comments - wpDiscuz v4.1.0 =
194
 
195
  * Speed: v4.1 comes with new acelerated engine, it's twice faster than older versions
templates/comment/class.WpdiscuzWalker.php CHANGED
@@ -76,7 +76,7 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
76
 
77
  $commentTime = strtotime($comment->comment_date);
78
  if ($lastVisitForPost && $commentTime > $lastVisitForPost && $storedCookieEmail != $comment->comment_author_email) {
79
- $commentWrapperClass = ' wc-new-loaded-comment ';
80
  }
81
  }
82
 
@@ -133,9 +133,9 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
133
  $replyText = $this->optionsSerialized->phrases['wc_reply_text'];
134
  $shareText = $this->optionsSerialized->phrases['wc_share_text'];
135
  if (isset($rootComment) && $rootComment->comment_approved != 1) {
136
- $commentWrapperClass .= 'wc-comment';
137
  } else {
138
- $commentWrapperClass .= ($comment->comment_parent && $this->optionsSerialized->wordpressThreadComments) ? 'wc-comment wc-reply' : 'wc-comment';
139
  }
140
 
141
  $authorName = apply_filters('wpdiscuz_comment_author', $authorName, $comment);
@@ -174,6 +174,9 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
174
  $voteDown = $this->optionsSerialized->phrases['wc_vote_down'];
175
  }
176
 
 
 
 
177
  $commentContentClass = '';
178
  // begin printing comment template
179
  $output .= '<div id="wc-comm-' . $uniqueId . '" class="' . $commentWrapperClass . ' ' . $authorClass . ' wc_comment_level-' . $depth . '">';
@@ -269,7 +272,7 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
269
  }
270
  }
271
 
272
- if (comments_open($comment->comment_post_ID) && $this->optionsSerialized->wordpressThreadComments) {
273
  if (!$this->optionsSerialized->guestCanComment) {
274
  if (!$this->optionsSerialized->replyButtonMembersShowHide && $currentUser->ID) {
275
  $output .= '<span class="wc-reply-button wc-cta-button" title="' . $replyText . '">' . '<i class="fa fa-reply" aria-hidden="true"></i> ' . $replyText . '</span>';
@@ -308,8 +311,28 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
308
  $output .= '<div class="wc-footer-right">';
309
 
310
  $output .= '<div class="wc-comment-date"><i class="fa fa-clock-o" aria-hidden="true"></i>' . $posted_date . '</div>';
 
311
  if ($depth < $this->optionsSerialized->wordpressThreadCommentsDepth && $this->optionsSerialized->wordpressThreadComments) {
312
- $output .= '<div class="wc-toggle wpdiscuz-hidden"><i class="fa fa-chevron-up" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_hide_replies_text'] . '"></i></div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
313
  }
314
  $output .= '</div>';
315
  $output .= '<div class="wpdiscuz_clear"></div>';
@@ -318,10 +341,11 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
318
  $output .= '</div>';
319
  $output .= '<div class="wpdiscuz-comment-message"></div>';
320
  $output .= '<div id="wpdiscuz_form_anchor-' . $uniqueId . '" style="clear:both"></div>';
 
321
  }
322
 
323
  public function end_el(&$output, $comment, $depth = 0, $args = array()) {
324
- $output = apply_filters('wpdiscuz_comment_end', $output, $comment, $depth, $args);
325
  $output .= '</div>';
326
  return $output;
327
  }
76
 
77
  $commentTime = strtotime($comment->comment_date);
78
  if ($lastVisitForPost && $commentTime > $lastVisitForPost && $storedCookieEmail != $comment->comment_author_email) {
79
+ $commentWrapperClass .= ' wc-new-loaded-comment ';
80
  }
81
  }
82
 
133
  $replyText = $this->optionsSerialized->phrases['wc_reply_text'];
134
  $shareText = $this->optionsSerialized->phrases['wc_share_text'];
135
  if (isset($rootComment) && $rootComment->comment_approved != 1) {
136
+ $commentWrapperClass .= ' wc-comment ';
137
  } else {
138
+ $commentWrapperClass .= ($comment->comment_parent && $this->optionsSerialized->wordpressThreadComments) ? ' wc-comment wc-reply ' : ' wc-comment ';
139
  }
140
 
141
  $authorName = apply_filters('wpdiscuz_comment_author', $authorName, $comment);
174
  $voteDown = $this->optionsSerialized->phrases['wc_vote_down'];
175
  }
176
 
177
+ $hasChildren = isset($args['wpdiscuz_root_comment_' . $comment->comment_ID]) ? $args['wpdiscuz_root_comment_' . $comment->comment_ID] : '';
178
+ $commentWrapperClass .= $hasChildren;
179
+
180
  $commentContentClass = '';
181
  // begin printing comment template
182
  $output .= '<div id="wc-comm-' . $uniqueId . '" class="' . $commentWrapperClass . ' ' . $authorClass . ' wc_comment_level-' . $depth . '">';
272
  }
273
  }
274
 
275
+ if (comments_open($comment->comment_post_ID) && $this->optionsSerialized->wordpressThreadComments && (isset($args['can_user_comment'])) && $args['can_user_comment']) {
276
  if (!$this->optionsSerialized->guestCanComment) {
277
  if (!$this->optionsSerialized->replyButtonMembersShowHide && $currentUser->ID) {
278
  $output .= '<span class="wc-reply-button wc-cta-button" title="' . $replyText . '">' . '<i class="fa fa-reply" aria-hidden="true"></i> ' . $replyText . '</span>';
311
  $output .= '<div class="wc-footer-right">';
312
 
313
  $output .= '<div class="wc-comment-date"><i class="fa fa-clock-o" aria-hidden="true"></i>' . $posted_date . '</div>';
314
+
315
  if ($depth < $this->optionsSerialized->wordpressThreadCommentsDepth && $this->optionsSerialized->wordpressThreadComments) {
316
+ $chevron = '';
317
+ $output .= '<div class="wc-toggle">';
318
+ if ($hasChildren) {
319
+ $childCount = isset($args['wpdiscuz_child_count_' . $comment->comment_ID]) ? $args['wpdiscuz_child_count_' . $comment->comment_ID] : 0;
320
+ $hideChildCountClass = isset($args['wpdiscuz_hide_child_count_' . $comment->comment_ID]) ? $args['wpdiscuz_hide_child_count_' . $comment->comment_ID] : '';
321
+ if ($childCount) {
322
+ $showRepliesLink = isset($args['showRepliesLink_' . $comment->comment_ID]) ? $args['showRepliesLink_' . $comment->comment_ID] : '';
323
+ $chevron = '<a href="' . $showRepliesLink . '" style="color:#999;" title="' . $this->optionsSerialized->phrases['wc_show_replies_text'] . '">';
324
+ $chevron .= '<span class="wcsep">|</span> <span class="wpdiscuz-children ' . $hideChildCountClass . '"><span class="wpdiscuz-children-button-text">' . __('view replies', 'wpdiscuz') . '</span> (<span class="wpdiscuz-children-count">' . $childCount . '</span>)</span> ';
325
+ $chevron .= '<i class="fa fa-chevron-down wpdiscuz-show-replies"></i>';
326
+ $chevron .= '</a>';
327
+ } else {
328
+ $chevron = '<i class="fa fa-chevron-up" title="' . $this->optionsSerialized->phrases['wc_hide_replies_text'] . '"></i>';
329
+ }
330
+ } else {
331
+ $commentChildren = $comment->get_children();
332
+ $chevron = $commentChildren ? '<i class="fa fa-chevron-up" title="' . $this->optionsSerialized->phrases['wc_hide_replies_text'] . '"></i>' : '';
333
+ }
334
+ $output .= $chevron;
335
+ $output .= '</div>';
336
  }
337
  $output .= '</div>';
338
  $output .= '<div class="wpdiscuz_clear"></div>';
341
  $output .= '</div>';
342
  $output .= '<div class="wpdiscuz-comment-message"></div>';
343
  $output .= '<div id="wpdiscuz_form_anchor-' . $uniqueId . '" style="clear:both"></div>';
344
+ $output = apply_filters('wpdiscuz_comment_end', $output, $comment, $depth, $args);
345
  }
346
 
347
  public function end_el(&$output, $comment, $depth = 0, $args = array()) {
348
+ $output = apply_filters('wpdiscuz_thread_end', $output, $comment, $depth, $args);
349
  $output .= '</div>';
350
  return $output;
351
  }
templates/comment/comment-form.php CHANGED
@@ -143,7 +143,7 @@ if (!post_password_required($post->ID)) {
143
  <?php
144
  $isPostmaticActive = !class_exists('Prompt_Comment_Form_Handling') || (class_exists('Prompt_Comment_Form_Handling') && !$wpdiscuz->optionsSerialized->usePostmaticForCommentNotification);
145
  if ($form->isShowSubscriptionBar() && $isPostmaticActive) {
146
- $wpdiscuz->userSubscriptionData = $wpdiscuz->dbManager->hasSubscription($post->ID, $currentUser->user_email);
147
  $subscriptionType = null;
148
  if ($wpdiscuz->subscriptionData) {
149
  $isConfirmed = $wpdiscuz->subscriptionData['confirm'];
143
  <?php
144
  $isPostmaticActive = !class_exists('Prompt_Comment_Form_Handling') || (class_exists('Prompt_Comment_Form_Handling') && !$wpdiscuz->optionsSerialized->usePostmaticForCommentNotification);
145
  if ($form->isShowSubscriptionBar() && $isPostmaticActive) {
146
+ $wpdiscuz->subscriptionData = $wpdiscuz->dbManager->hasSubscription($post->ID, $currentUser->user_email);
147
  $subscriptionType = null;
148
  if ($wpdiscuz->subscriptionData) {
149
  $isConfirmed = $wpdiscuz->subscriptionData['confirm'];