Comments – wpDiscuz - Version 5.3.0

Version Description

Download this release

Release Info

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

Code changes from version 5.2.2 to 5.3.0

Files changed (53) hide show
  1. assets/css/wpdiscuz-ratings.css +1 -1
  2. assets/css/wpdiscuz-rtl.css +8 -25
  3. assets/css/wpdiscuz.css +9 -26
  4. assets/js/wpdiscuz.js +92 -125
  5. class.WpdiscuzCore.php +154 -153
  6. forms/wpDiscuzForm.php +8 -8
  7. forms/wpdFormAttr/Field/AgreementCheckbox.php +6 -6
  8. forms/wpdFormAttr/Field/CheckboxField.php +6 -9
  9. forms/wpdFormAttr/Field/ColorField.php +4 -7
  10. forms/wpdFormAttr/Field/CookiesConsent.php +1 -1
  11. forms/wpdFormAttr/Field/DateField.php +6 -8
  12. forms/wpdFormAttr/Field/DefaultField/Captcha.php +2 -2
  13. forms/wpdFormAttr/Field/DefaultField/Email.php +2 -2
  14. forms/wpdFormAttr/Field/DefaultField/Name.php +2 -2
  15. forms/wpdFormAttr/Field/DefaultField/Website.php +16 -13
  16. forms/wpdFormAttr/Field/Field.php +16 -9
  17. forms/wpdFormAttr/Field/NumberField.php +2 -5
  18. forms/wpdFormAttr/Field/RadioField.php +5 -8
  19. forms/wpdFormAttr/Field/RatingField.php +4 -7
  20. forms/wpdFormAttr/Field/SelectField.php +2 -5
  21. forms/wpdFormAttr/Field/TextAreaField.php +2 -5
  22. forms/wpdFormAttr/Field/TextField.php +12 -14
  23. forms/wpdFormAttr/Field/UrlField.php +2 -5
  24. forms/wpdFormAttr/Form.php +26 -14
  25. forms/wpdFormAttr/Login/SocialLogin.php +3 -4
  26. forms/wpdFormAttr/Login/twitter/TwitterOAuthException.php +1 -1
  27. forms/wpdFormAttr/Tools/PersonalDataExporter.php +1 -1
  28. forms/wpdFormAttr/html/admin-form-fields-list.php +1 -1
  29. includes/class.WpdiscuzCss.php +1 -4
  30. includes/class.WpdiscuzDBManager.php +10 -10
  31. includes/interface.WpDiscuzConstants.php +1 -1
  32. languages/wpdiscuz.pot +317 -305
  33. options/class.WpdiscuzOptions.php +82 -76
  34. options/class.WpdiscuzOptionsSerialized.php +10 -0
  35. options/html-options.php +10 -10
  36. options/html-phrases.php +10 -10
  37. options/html-tools.php +4 -4
  38. options/options-layouts/settings-form.php +200 -200
  39. options/options-layouts/settings-general.php +37 -27
  40. options/options-layouts/settings-list.php +9 -0
  41. options/phrases-layouts/phrases-comment.php +1 -1
  42. readme.txt +30 -10
  43. templates/comment/class.WpdiscuzWalker.php +203 -276
  44. templates/comment/comment-form.php +2 -9
  45. utils/class.WpdiscuzHelper.php +386 -375
  46. utils/class.WpdiscuzHelperEmail.php +14 -10
  47. utils/class.WpdiscuzHelperOptimization.php +7 -5
  48. utils/layouts/activity/activity-page.php +1 -1
  49. utils/layouts/activity/content.php +1 -1
  50. utils/layouts/follows/content.php +1 -1
  51. utils/layouts/follows/follows-page.php +1 -1
  52. utils/layouts/subscriptions/content.php +1 -1
  53. utils/layouts/subscriptions/subscriptions-page.php +1 -1
assets/css/wpdiscuz-ratings.css CHANGED
@@ -46,6 +46,6 @@
46
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > label:hover ~ input:checked ~ label,
47
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked + label:hover ~ label,
48
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover ~ label,
49
- .wpd-custom-field .wcf-activ-star,
50
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label{ color:#FFD700;}
51
  .wpd-custom-field .wcf-pasiv-star, #wpcomm .wpdiscuz-item .wpdiscuz-rating > label {color: #DDDDDD;}
46
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > label:hover ~ input:checked ~ label,
47
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked + label:hover ~ label,
48
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover ~ label,
49
+ .wpd-custom-field .wcf-active-star,
50
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label{ color:#FFD700;}
51
  .wpd-custom-field .wcf-pasiv-star, #wpcomm .wpdiscuz-item .wpdiscuz-rating > label {color: #DDDDDD;}
assets/css/wpdiscuz-rtl.css CHANGED
@@ -1,8 +1,6 @@
1
  /* wpDiscuz Main CSS stylesheet */
2
- #comments{} #respond{} .comments-area{}
3
  wpdtip{display: inline-block; position: inherit; width: auto;}
4
 
5
-
6
  /* WRAPPER & GENERAL RULES */
7
  #wpcomm{max-width:950px; padding:1px 0 10px 0; border-top:#ddd solid 1px; margin:7px auto 15px auto;}
8
  #wpcomm *{box-sizing:border-box}
@@ -10,7 +8,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
10
  #wpcomm .clearfix{clear:both; }
11
  #wpcomm .wpd-sticky{display: none; }
12
  #wpcomm .wpd-closed{display: none; }
13
- #wpcomm .wpd-private{display: none; }
14
  #wpcomm i{margin: 0px;}
15
  #wpcomm span {display:inline}
16
  #wpcomm .wc-must-login{margin:0; font-size:14px; line-height:16px; padding:10px; text-align:center}
@@ -25,7 +22,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
25
  .wpdiscuz_clear_right{clear:left}
26
  .wpdiscuz_clear_left{clear:right}
27
 
28
-
29
  /* SORTING & SUBSCRIPTION BAR */
30
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons{padding-top: 3px; display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; justify-content: flex-end; -ms-align-items: center; align-items: center; }
31
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons .wpdiscuz-sort-button{font-size: 13px; }
@@ -54,15 +50,13 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
54
  #wpcomm .wc-comment .wc-comment-right{margin-right:90px; padding:0px; display:block; margin-bottom: 10px; }
55
  #wpcomm .wc-reply .wc-comment-left{width:50px; float:right; text-align:center; line-height:16px}
56
  #wpcomm .wc-reply .wc-comment-right{margin-right:65px; padding:0px; display:block; }
 
57
  #wpcomm .wc-comment .wc-comment-left .wpd-xborder{ display: none; position: absolute; height: 20px; border-left:1px solid #ddd; width: 100%; top:29px; left: -17px; }
58
  #wpcomm .wc-reply .wc-comment-left .wpd-xborder{display: none; }
59
  #wpcomm .wc-reply.wc_comment_level-2{ margin-right:99px}
60
 
61
  /* header */
62
  #wpcomm .wc-comment-header{margin-bottom: 10px; height: 40px; padding-top: 5px;}
63
- #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header,
64
- #wpcomm .wc-closed-comment.wc-comment .wc-comment-header,
65
- #wpcomm .wc-private-comment.wc-comment .wc-comment-header{}
66
  #wpcomm .wc-reply .wc-comment-header{margin-bottom:7px; height:34px; padding-top: 5px;}
67
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-left .wpd-xborder,
68
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
@@ -71,14 +65,13 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
71
  #wpcomm .wc-sticky-comment.wc-comment .wc-reply .wc-comment-header .wpd-sticky,
72
  #wpcomm .wc-closed-comment.wc-comment .wc-reply .wc-comment-header .wpd-closed{display: none; }
73
  #wpcomm .wc-private-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
 
74
  #wpcomm .wc-private-comment.wc-comment .wc-comment-header .wpd-private{display:inline-block; font-size: 14px; padding: 4px 8px 3px 8px; margin: 1px 4px; line-height: 16px; }
75
- #wpcomm .wc-private-comment.wc-comment .wc-reply .wc-comment-header .wpd-private{display: none; }
76
  #wpcomm .wc-comment-link{font-size:12px; float:left; text-align:left; line-height:20px; padding:0 10px 0 0; margin: 7px 5px 5px 5px; }
77
  #wpcomm .wc-reply .wc-comment-link{margin:5px; }
78
  #wpcomm .wc-comment-link .wpf-cta{ cursor:pointer; font-size:14px; padding:4px 2px 3px 2px; min-width:24px; text-align:center; display:inline-block; margin:1px; line-height:16px; }
79
  #wpcomm .wc-reply .wc-comment-link .wpf-cta {font-size: 13px; padding: 3px 3px 3px 3px; line-height: 15px; }
80
 
81
-
82
  /* HEADER */
83
  #wc-comment-header{max-width:950px; padding:20px 5px 10px 5px; display:block; float:none; clear:both; font-size:22px; font-weight: normal; margin:0 auto;}
84
  #wc-comment-header .wpdiscuz-comment-count{display:inline-block; text-align: left;margin-left: 10px; vertical-align: bottom;}
@@ -118,8 +111,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
118
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users{display: inline-block;}
119
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users i.fa-ellipsis-h{padding-right: 5px; color: #777777;}
120
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users.wpd-tooltip-right wpdtip:after{top: 93%;}
121
- #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right div:hover.wpdiscuz-users.wpd-tooltip-right wpdtip{}
122
-
123
 
124
  /* Social Login */
125
  #wpcomm .wpdiscuz-social-login{padding: 2px 3px 0px 3px; line-height: 20px; vertical-align: baseline;}
@@ -183,13 +174,11 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
183
  #wpcomm .wc-comment-footer .wc-vote-link{display:inline-block; text-align:center; font-size:13px; height:auto; padding:2px 4px; line-height:17px; cursor:pointer; font-weight: 300; }
184
  #wpcomm .wc-comment-footer .wc-vote-result{display:inline-block; text-align:center; font-size:15px; height:auto; padding:2px 3px; line-height:17px; }
185
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{padding:2px 4px 2px 4px; border-radius:0%; border-left:none; margin-right:1px; }
186
- #wpcomm .wc-comment-footer .wc-vote-result.wc-positive{color:#00bc74; border-left:none; text-align:center; margin-right:2px; }
187
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-dislike{padding:2px 4px 2px 4px; border-radius:0%;margin-left:1px; }
188
- #wpcomm .wc-comment-footer .wc-vote-result.wc-negative{color:#ff5959; border-right:none; text-align:center; margin-left:2px; }
189
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{ border-left: 1px solid #CCCCCC; margin-left: 4px; padding-left: 8px;}
190
  #wpcomm .wc-comment-footer .wc-vote-link.wc-down i.fa-thumbs-down{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1);}
191
- #wpcomm .wc-comment-footer .wc-vote-link.wc-up.wc-separate{ color:#00bc74;}
192
- #wpcomm .wc-comment-footer .wc-vote-link.wc-down.wc-separate{ color:#ff5959;}
193
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
194
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-down{font-size: 16px;}
195
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
@@ -200,8 +189,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
200
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-frown{font-size: 16px;}
201
  #wpcomm .wc-footer-left .wc-cta-button,
202
  #wpcomm .wc-footer-left .wc-cta-button-x{ font-size:12px; cursor:pointer; text-transform:none; height:auto; padding: 3px 8px 3px 8px; line-height:18px; display:inline-block; margin-left:0px; }
203
- #wpcomm .wc-footer-left .wc-cta-button-x,
204
- #wpcomm .wc-footer-left .wc-cta-button i{ display: none; }
205
  #wpcomm .wc-footer-left .wc-reply-button{ margin-left:10px; margin-right:10px; }
206
  #wpcomm .wc-footer-left .wc-reply-button i{display: inline-block; font-size: 13px; padding-left: 2px;}
207
  #wpcomm .wc-reply .wc-footer-left .wc-reply-button i{display: none;}
@@ -297,8 +285,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
297
  #wpcomm .wpd_label__check i.wpdicon{font-size: 15px; line-height: 21px; padding: 4px 5px; width: 34px; margin: 0px; }
298
  #wpcomm .wpd_label__check i.wpdicon-on{display: none; color: #00b38f; border: 1px solid #b5e5db; background-color: #F6FFFD; }
299
  #wpcomm .wpd_label__check i.wpdicon-off{display: inline-block; color: #aaaaaa; border: 1px solid #dddddd; background-color: #F9F9F9; }
300
- #wpcomm .wpd_label__check i.wpdicon:hover{}
301
- #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check {}
302
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-on{display: inline-block; }
303
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-off{display:none; }
304
  #wpcomm .wpd_label__check i.wpdicon-off.fa-unlock-alt, #wpcomm .wpd_label__check i.wpdicon-on.fa-lock{ font-size: 15px; }
@@ -361,8 +347,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
361
  #wpcomm .wpd-form-col-left .wpd-field-group.wpd-field-single .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-field-group.wpd-field-single .wpd-field-group-title{ font-size:inherit; text-align:left; line-height:inherit; height:25px; }
362
  #wpcomm .wpdiscuz-item.wpd-field-radio, #wpcomm .wpdiscuz-item.wpd-field-checkbox{ border-bottom:1px dotted #ccc; padding-bottom:12px; }
363
  #wpcomm .wpd-form-col-left div:last-of-type, #wpcomm .wpd-form-col-right div:last-of-type{ border-bottom:none; }
364
- #wpcomm .wpd-form-row .wpdiscuz-item.wpd-field-radio .wpd-field-desc,
365
- #wpcomm .wpd-form-row .wpdiscuz-item.wpd-field-checkbox .wpd-field-desc{ }
366
  #wpcomm .wpd-field-radio .wpd-item, #wpcomm .wpd-field-checkbox .wpd-item{ display:inline-block; padding:1px; margin:1px 0px; min-width:60px; }
367
  #wpcomm .wpd-field-radio .wpd-field, #wpcomm .wpd-field-checkbox .wpd-field { width:auto; height:25px; display:inline-block; float:right; padding:0px; line-height:20px; vertical-align:baseline; margin:0px 0px 0px 6px; }
368
  #wpcomm .wpd-field-radio .wpd-field-label, #wpcomm .wpd-field-checkbox .wpd-field-label{ width:auto; height:22px; display:inline; float:none; padding:0px; line-height:20px; font-size:12px; margin:0px; vertical-align:middle; }
@@ -392,7 +376,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
392
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > label { float: left; }
393
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc{ left:0px; top:0px; position:relative; font-size:14px; margin-right:5px; padding: 0 7px; }
394
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc i.fa{ font-size:17px; }
395
- #wpcomm .wpd-form-col-full .wpd-field-group .wpd-field-group-title{ display:inline-block; vertical-align:baseline; padding:0px 0px 2px 0px; margin-top:-2px; }
396
  #wpcomm .wpd-form-col-full .wpdiscuz-item .wpdiscuz-rating{ padding:0px 0px 0px 6px; vertical-align:middle; line-height: 14px; }
397
  #wpcomm .wpd-form-col-full .wpd-item-wrap{ display:inline-block; float:right; padding-left:7px; vertical-align:baseline; padding:0px 1px 1px 1px; }
398
  .wpdiscuz-stars-label{ line-height:20px; padding:10px 3px 2px 0px; font-size:14px; }
@@ -520,7 +504,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
520
  .wc_comment_not_updated,.wc_comment_not_edited,.msgNotAllowedFiles,msgMaxFileCount,.msgMaxFileSize,.msgPostMaxSize,
521
  .wc_follow_email_confirm_fail,.wc_follow_login_to_follow,.wc_follow_impossible,.wc_follow_not_added{background-color:#fce8e8!important; font-size:14px; text-align:center; color:#ce4a66; border:#f2d3d2 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
522
  .wc_follow_success,.wc_follow_canceled,.wc_follow_email_confirm{background-color:#f0f0f0!important; font-size:14px; text-align:center; color:#00B38F; border:#eee 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
523
- .wc_held_for_moderate{background-color:#fce6bf; font-size:14px; text-align:center; color:#d3760c; border:#f9c975 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
524
  .wpdiscuz-loading-bar{position:fixed; left:0; width:70px; border:0; background:transparent; z-index:999999; display:none; }
525
  .wpdiscuz-loading-bar-auth{top:32px}
526
  .wpdiscuz-loading-bar-unauth{top:0}
@@ -661,5 +645,4 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
661
  50%{transform: translateX(50px); width: 10px; }
662
  55%{transform: translateX(42px); width: 18px; }
663
  100%{transform: translateX(0)}
664
- }
665
-
1
  /* wpDiscuz Main CSS stylesheet */
 
2
  wpdtip{display: inline-block; position: inherit; width: auto;}
3
 
 
4
  /* WRAPPER & GENERAL RULES */
5
  #wpcomm{max-width:950px; padding:1px 0 10px 0; border-top:#ddd solid 1px; margin:7px auto 15px auto;}
6
  #wpcomm *{box-sizing:border-box}
8
  #wpcomm .clearfix{clear:both; }
9
  #wpcomm .wpd-sticky{display: none; }
10
  #wpcomm .wpd-closed{display: none; }
 
11
  #wpcomm i{margin: 0px;}
12
  #wpcomm span {display:inline}
13
  #wpcomm .wc-must-login{margin:0; font-size:14px; line-height:16px; padding:10px; text-align:center}
22
  .wpdiscuz_clear_right{clear:left}
23
  .wpdiscuz_clear_left{clear:right}
24
 
 
25
  /* SORTING & SUBSCRIPTION BAR */
26
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons{padding-top: 3px; display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; justify-content: flex-end; -ms-align-items: center; align-items: center; }
27
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons .wpdiscuz-sort-button{font-size: 13px; }
50
  #wpcomm .wc-comment .wc-comment-right{margin-right:90px; padding:0px; display:block; margin-bottom: 10px; }
51
  #wpcomm .wc-reply .wc-comment-left{width:50px; float:right; text-align:center; line-height:16px}
52
  #wpcomm .wc-reply .wc-comment-right{margin-right:65px; padding:0px; display:block; }
53
+ #wpcomm .wc-comment-right.wc-hide-avatar{margin-right:0px;}
54
  #wpcomm .wc-comment .wc-comment-left .wpd-xborder{ display: none; position: absolute; height: 20px; border-left:1px solid #ddd; width: 100%; top:29px; left: -17px; }
55
  #wpcomm .wc-reply .wc-comment-left .wpd-xborder{display: none; }
56
  #wpcomm .wc-reply.wc_comment_level-2{ margin-right:99px}
57
 
58
  /* header */
59
  #wpcomm .wc-comment-header{margin-bottom: 10px; height: 40px; padding-top: 5px;}
 
 
 
60
  #wpcomm .wc-reply .wc-comment-header{margin-bottom:7px; height:34px; padding-top: 5px;}
61
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-left .wpd-xborder,
62
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
65
  #wpcomm .wc-sticky-comment.wc-comment .wc-reply .wc-comment-header .wpd-sticky,
66
  #wpcomm .wc-closed-comment.wc-comment .wc-reply .wc-comment-header .wpd-closed{display: none; }
67
  #wpcomm .wc-private-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
68
+ #wpcomm .wc-comment .wc-comment-header .wpd-private{display: none;}
69
  #wpcomm .wc-private-comment.wc-comment .wc-comment-header .wpd-private{display:inline-block; font-size: 14px; padding: 4px 8px 3px 8px; margin: 1px 4px; line-height: 16px; }
 
70
  #wpcomm .wc-comment-link{font-size:12px; float:left; text-align:left; line-height:20px; padding:0 10px 0 0; margin: 7px 5px 5px 5px; }
71
  #wpcomm .wc-reply .wc-comment-link{margin:5px; }
72
  #wpcomm .wc-comment-link .wpf-cta{ cursor:pointer; font-size:14px; padding:4px 2px 3px 2px; min-width:24px; text-align:center; display:inline-block; margin:1px; line-height:16px; }
73
  #wpcomm .wc-reply .wc-comment-link .wpf-cta {font-size: 13px; padding: 3px 3px 3px 3px; line-height: 15px; }
74
 
 
75
  /* HEADER */
76
  #wc-comment-header{max-width:950px; padding:20px 5px 10px 5px; display:block; float:none; clear:both; font-size:22px; font-weight: normal; margin:0 auto;}
77
  #wc-comment-header .wpdiscuz-comment-count{display:inline-block; text-align: left;margin-left: 10px; vertical-align: bottom;}
111
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users{display: inline-block;}
112
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users i.fa-ellipsis-h{padding-right: 5px; color: #777777;}
113
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users.wpd-tooltip-right wpdtip:after{top: 93%;}
 
 
114
 
115
  /* Social Login */
116
  #wpcomm .wpdiscuz-social-login{padding: 2px 3px 0px 3px; line-height: 20px; vertical-align: baseline;}
174
  #wpcomm .wc-comment-footer .wc-vote-link{display:inline-block; text-align:center; font-size:13px; height:auto; padding:2px 4px; line-height:17px; cursor:pointer; font-weight: 300; }
175
  #wpcomm .wc-comment-footer .wc-vote-result{display:inline-block; text-align:center; font-size:15px; height:auto; padding:2px 3px; line-height:17px; }
176
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{padding:2px 4px 2px 4px; border-radius:0%; border-left:none; margin-right:1px; }
177
+ #wpcomm .wc-comment-footer .wc-vote-result.wc-positive{border-left:none; text-align:center; margin-right:2px; }
178
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-dislike{padding:2px 4px 2px 4px; border-radius:0%;margin-left:1px; }
179
+ #wpcomm .wc-comment-footer .wc-vote-result.wc-negative{border-right:none; text-align:center; margin-left:2px; }
180
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{ border-left: 1px solid #CCCCCC; margin-left: 4px; padding-left: 8px;}
181
  #wpcomm .wc-comment-footer .wc-vote-link.wc-down i.fa-thumbs-down{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1);}
 
 
182
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
183
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-down{font-size: 16px;}
184
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
189
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-frown{font-size: 16px;}
190
  #wpcomm .wc-footer-left .wc-cta-button,
191
  #wpcomm .wc-footer-left .wc-cta-button-x{ font-size:12px; cursor:pointer; text-transform:none; height:auto; padding: 3px 8px 3px 8px; line-height:18px; display:inline-block; margin-left:0px; }
192
+ #wpcomm .wc-footer-left .wc-cta-button-x{ display: none; }
 
193
  #wpcomm .wc-footer-left .wc-reply-button{ margin-left:10px; margin-right:10px; }
194
  #wpcomm .wc-footer-left .wc-reply-button i{display: inline-block; font-size: 13px; padding-left: 2px;}
195
  #wpcomm .wc-reply .wc-footer-left .wc-reply-button i{display: none;}
285
  #wpcomm .wpd_label__check i.wpdicon{font-size: 15px; line-height: 21px; padding: 4px 5px; width: 34px; margin: 0px; }
286
  #wpcomm .wpd_label__check i.wpdicon-on{display: none; color: #00b38f; border: 1px solid #b5e5db; background-color: #F6FFFD; }
287
  #wpcomm .wpd_label__check i.wpdicon-off{display: inline-block; color: #aaaaaa; border: 1px solid #dddddd; background-color: #F9F9F9; }
 
 
288
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-on{display: inline-block; }
289
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-off{display:none; }
290
  #wpcomm .wpd_label__check i.wpdicon-off.fa-unlock-alt, #wpcomm .wpd_label__check i.wpdicon-on.fa-lock{ font-size: 15px; }
347
  #wpcomm .wpd-form-col-left .wpd-field-group.wpd-field-single .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-field-group.wpd-field-single .wpd-field-group-title{ font-size:inherit; text-align:left; line-height:inherit; height:25px; }
348
  #wpcomm .wpdiscuz-item.wpd-field-radio, #wpcomm .wpdiscuz-item.wpd-field-checkbox{ border-bottom:1px dotted #ccc; padding-bottom:12px; }
349
  #wpcomm .wpd-form-col-left div:last-of-type, #wpcomm .wpd-form-col-right div:last-of-type{ border-bottom:none; }
 
 
350
  #wpcomm .wpd-field-radio .wpd-item, #wpcomm .wpd-field-checkbox .wpd-item{ display:inline-block; padding:1px; margin:1px 0px; min-width:60px; }
351
  #wpcomm .wpd-field-radio .wpd-field, #wpcomm .wpd-field-checkbox .wpd-field { width:auto; height:25px; display:inline-block; float:right; padding:0px; line-height:20px; vertical-align:baseline; margin:0px 0px 0px 6px; }
352
  #wpcomm .wpd-field-radio .wpd-field-label, #wpcomm .wpd-field-checkbox .wpd-field-label{ width:auto; height:22px; display:inline; float:none; padding:0px; line-height:20px; font-size:12px; margin:0px; vertical-align:middle; }
376
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > label { float: left; }
377
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc{ left:0px; top:0px; position:relative; font-size:14px; margin-right:5px; padding: 0 7px; }
378
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc i.fa{ font-size:17px; }
379
+ #wpcomm .wpd-form-col-full .wpd-field-group .wpd-field-group-title{ display:inline-block; vertical-align:baseline; padding:0px 0px 2px 0px; margin-top:-2px; padding-left: 35px; }
380
  #wpcomm .wpd-form-col-full .wpdiscuz-item .wpdiscuz-rating{ padding:0px 0px 0px 6px; vertical-align:middle; line-height: 14px; }
381
  #wpcomm .wpd-form-col-full .wpd-item-wrap{ display:inline-block; float:right; padding-left:7px; vertical-align:baseline; padding:0px 1px 1px 1px; }
382
  .wpdiscuz-stars-label{ line-height:20px; padding:10px 3px 2px 0px; font-size:14px; }
504
  .wc_comment_not_updated,.wc_comment_not_edited,.msgNotAllowedFiles,msgMaxFileCount,.msgMaxFileSize,.msgPostMaxSize,
505
  .wc_follow_email_confirm_fail,.wc_follow_login_to_follow,.wc_follow_impossible,.wc_follow_not_added{background-color:#fce8e8!important; font-size:14px; text-align:center; color:#ce4a66; border:#f2d3d2 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
506
  .wc_follow_success,.wc_follow_canceled,.wc_follow_email_confirm{background-color:#f0f0f0!important; font-size:14px; text-align:center; color:#00B38F; border:#eee 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
507
+ .wc_held_for_moderate{background-color:#fff8ed; font-size:14px; text-align:center; color:#d3760c; border:none; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
508
  .wpdiscuz-loading-bar{position:fixed; left:0; width:70px; border:0; background:transparent; z-index:999999; display:none; }
509
  .wpdiscuz-loading-bar-auth{top:32px}
510
  .wpdiscuz-loading-bar-unauth{top:0}
645
  50%{transform: translateX(50px); width: 10px; }
646
  55%{transform: translateX(42px); width: 18px; }
647
  100%{transform: translateX(0)}
648
+ }
 
assets/css/wpdiscuz.css CHANGED
@@ -1,8 +1,6 @@
1
  /* wpDiscuz Main CSS stylesheet */
2
- #comments{} #respond{} .comments-area{}
3
  wpdtip{display: inline-block; position: inherit; width: auto;}
4
 
5
-
6
  /* WRAPPER & GENERAL RULES */
7
  #wpcomm{max-width:950px; padding:1px 0 10px 0; border-top:#ddd solid 1px; margin:7px auto 15px auto;}
8
  #wpcomm *{box-sizing:border-box}
@@ -10,7 +8,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
10
  #wpcomm .clearfix{clear:both; }
11
  #wpcomm .wpd-sticky{display: none; }
12
  #wpcomm .wpd-closed{display: none; }
13
- #wpcomm .wpd-private{display: none; }
14
  #wpcomm i{margin: 0px;}
15
  #wpcomm span {display:inline}
16
  #wpcomm .wc-must-login{margin:0; font-size:14px; line-height:16px; padding:10px; text-align:center}
@@ -25,7 +22,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
25
  .wpdiscuz_clear_right{clear:right}
26
  .wpdiscuz_clear_left{clear:left}
27
 
28
-
29
  /* SORTING & SUBSCRIPTION BAR */
30
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons{padding-top: 3px; display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; justify-content: flex-end; -ms-align-items: center; align-items: center; }
31
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons .wpdiscuz-sort-button{font-size: 13px; }
@@ -42,7 +38,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
42
  #wpcomm .wpdiscuz-subscribe-agreement{font-size: 12px; display: block; clear: left; padding-top: 10px; width: 92%;}
43
  #wpcomm .wpdiscuz-subscribe-agreement label{ cursor: pointer; display: inline;}
44
 
45
-
46
  /* LIVE UPDATE NOTIFICATION BUTTONS */
47
  #wpcomm .wc_new_comment_and_replies{margin:0; padding:0; width:100%; height:auto; background:transparent}
48
  #wpcomm .wc_new_comment_and_replies .wc_new_comment{float:right; display:none; padding:3px 10px; font-size:12px; margin:1px 0 1px 3px; cursor:pointer; color:#fff; line-height:15px}
@@ -55,31 +50,28 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
55
  #wpcomm .wc-comment .wc-comment-right{margin-left:90px; padding:0px; display:block; margin-bottom: 10px; }
56
  #wpcomm .wc-reply .wc-comment-left{width:50px; float:left; text-align:center; line-height:16px}
57
  #wpcomm .wc-reply .wc-comment-right{margin-left:65px; padding:0px; display:block; }
 
58
  #wpcomm .wc-comment .wc-comment-left .wpd-xborder{ display: none; position: absolute; height: 20px; border-right:1px solid #ddd; width: 100%; top:29px; right: -17px; }
59
  #wpcomm .wc-reply .wc-comment-left .wpd-xborder{display: none; }
60
  #wpcomm .wc-reply.wc_comment_level-2{ margin-left:99px}
61
 
62
  /* header */
63
  #wpcomm .wc-comment-header{margin-bottom: 10px; height: 40px; padding-top: 5px;}
64
- #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header,
65
- #wpcomm .wc-closed-comment.wc-comment .wc-comment-header,
66
- #wpcomm .wc-private-comment.wc-comment .wc-comment-header{}
67
  #wpcomm .wc-reply .wc-comment-header{margin-bottom:7px; height:34px; padding-top: 5px;}
68
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-left .wpd-xborder,
69
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
70
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header .wpd-sticky{display: inline-block;border-radius: 50%; font-size: 12px; padding: 3px 7px 2px 7px; margin: 1px 5px; line-height: 18px; height: 22px; width: 23px; }
71
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-header .wpd-closed{display: inline-block; border-radius: 50%; font-size: 11px; padding: 2px 7px 2px 7px; margin: 1px 5px; line-height: 18px; height: 22px; width: 23px; }
72
  #wpcomm .wc-sticky-comment.wc-comment .wc-reply .wc-comment-header .wpd-sticky,
73
- #wpcomm .wc-closed-comment.wc-comment .wc-reply .wc-comment-header .wpd-closed{display: none; }
74
  #wpcomm .wc-private-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
 
75
  #wpcomm .wc-private-comment.wc-comment .wc-comment-header .wpd-private{display:inline-block; font-size: 14px; padding: 4px 8px 3px 8px; margin: 1px 4px; line-height: 16px; }
76
- #wpcomm .wc-private-comment.wc-comment .wc-reply .wc-comment-header .wpd-private{display: none; }
77
  #wpcomm .wc-comment-link{font-size:12px; float:right; text-align:right; line-height:20px; padding:0 0 0 10px; margin: 7px 5px 5px 5px; }
78
  #wpcomm .wc-reply .wc-comment-link{margin:5px; }
79
  #wpcomm .wc-comment-link .wpf-cta{ cursor:pointer; font-size:14px; padding:4px 2px 3px 2px; min-width:24px; text-align:center; display:inline-block; margin:1px; line-height:16px; }
80
  #wpcomm .wc-reply .wc-comment-link .wpf-cta {font-size: 13px; padding: 3px 3px 3px 3px; line-height: 15px; }
81
 
82
-
83
  /* HEADER */
84
  #wc-comment-header{max-width:950px; padding:20px 5px 10px 5px; display:block; float:none; clear:both; font-size:22px; font-weight: normal; margin:0 auto;}
85
  #wc-comment-header .wpdiscuz-comment-count{display:inline-block; text-align: right;margin-right: 10px; vertical-align: bottom;}
@@ -119,8 +111,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
119
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users{display: inline-block;}
120
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users i.fa-ellipsis-h{padding-left: 5px; color: #777777;}
121
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users.wpd-tooltip-right wpdtip:after{top: 93%;}
122
- #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right div:hover.wpdiscuz-users.wpd-tooltip-right wpdtip{}
123
-
124
 
125
  /* Social Login */
126
  #wpcomm .wpdiscuz-social-login{padding: 2px 3px 0px 3px; line-height: 20px; vertical-align: baseline;}
@@ -184,13 +174,11 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
184
  #wpcomm .wc-comment-footer .wc-vote-link{display:inline-block; text-align:center; font-size:13px; height:auto; padding:2px 4px; line-height:17px; cursor:pointer; font-weight: 300; }
185
  #wpcomm .wc-comment-footer .wc-vote-result{display:inline-block; text-align:center; font-size:15px; height:auto; padding:2px 3px; line-height:17px; }
186
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{padding:2px 4px 2px 4px; border-radius:0%; border-right:none; margin-left:1px; }
187
- #wpcomm .wc-comment-footer .wc-vote-result.wc-positive{color:#00bc74; border-right:none; text-align:center; margin-left:2px; }
188
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-dislike{padding:2px 4px 2px 4px; border-radius:0%;margin-right:1px; }
189
- #wpcomm .wc-comment-footer .wc-vote-result.wc-negative{color:#ff5959; border-left:none; text-align:center; margin-right:2px; }
190
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{ border-right: 1px solid #CCCCCC; margin-right: 4px; padding-right: 8px;}
191
  #wpcomm .wc-comment-footer .wc-vote-link.wc-down i.fa-thumbs-down{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1);}
192
- #wpcomm .wc-comment-footer .wc-vote-link.wc-up.wc-separate{ color:#00bc74;}
193
- #wpcomm .wc-comment-footer .wc-vote-link.wc-down.wc-separate{ color:#ff5959;}
194
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
195
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-down{font-size: 16px;}
196
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
@@ -201,8 +189,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
201
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-frown{font-size: 16px;}
202
  #wpcomm .wc-footer-left .wc-cta-button,
203
  #wpcomm .wc-footer-left .wc-cta-button-x{ font-size:12px; cursor:pointer; text-transform:none; height:auto; padding: 3px 8px 3px 8px; line-height:18px; display:inline-block; margin-right:0px; }
204
- #wpcomm .wc-footer-left .wc-cta-button-x,
205
- #wpcomm .wc-footer-left .wc-cta-button i{ display: none; }
206
  #wpcomm .wc-footer-left .wc-reply-button{ margin-left:10px; margin-right:10px; }
207
  #wpcomm .wc-footer-left .wc-reply-button i{display: inline-block; font-size: 13px; padding-right: 2px;}
208
  #wpcomm .wc-reply .wc-footer-left .wc-reply-button i{display: none;}
@@ -298,8 +285,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
298
  #wpcomm .wpd_label__check i.wpdicon{font-size: 15px; line-height: 21px; padding: 4px 5px; width: 34px; margin: 0px; }
299
  #wpcomm .wpd_label__check i.wpdicon-on{display: none; color: #00b38f; border: 1px solid #b5e5db; background-color: #F6FFFD; }
300
  #wpcomm .wpd_label__check i.wpdicon-off{display: inline-block; color: #aaaaaa; border: 1px solid #dddddd; background-color: #F9F9F9; }
301
- #wpcomm .wpd_label__check i.wpdicon:hover{}
302
- #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check {}
303
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-on{display: inline-block; }
304
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-off{display:none; }
305
  #wpcomm .wpd_label__check i.wpdicon-off.fa-unlock-alt, #wpcomm .wpd_label__check i.wpdicon-on.fa-lock{ font-size: 15px; }
@@ -348,7 +333,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
348
  #wpcomm .wpd-item-wrap{ text-align:left; }
349
  #wpcomm .wpd-item{ text-align:left; }
350
  #wpcomm .wpd-form-col-left .wpd-field-group .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-field-group .wpd-field-group-title, #wpcomm .wpd-form-col-full .wpd-field-group .wpd-field-group-title{ font-size:13px; text-align:left; line-height:20px; padding: 5px 0; }
351
- #wpcomm .wpd-form-col-left .wpd-has-desc .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-has-desc .wpd-field-group-title{ padding-right:35px; }
352
  #wpcomm .wc-comment-right .wpd-top-custom-fields{ padding:5px 10px 15px 10px; }
353
  #wpcomm .wc-comment-right .wpd-bottom-custom-fields{ padding:5px 10px; margin-bottom:20px; }
354
 
@@ -362,8 +347,6 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
362
  #wpcomm .wpd-form-col-left .wpd-field-group.wpd-field-single .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-field-group.wpd-field-single .wpd-field-group-title{ font-size:inherit; text-align:right; line-height:inherit; height:25px; }
363
  #wpcomm .wpdiscuz-item.wpd-field-radio, #wpcomm .wpdiscuz-item.wpd-field-checkbox{ border-bottom:1px dotted #ccc; padding-bottom:12px; }
364
  #wpcomm .wpd-form-col-left div:last-of-type, #wpcomm .wpd-form-col-right div:last-of-type{ border-bottom:none; }
365
- #wpcomm .wpd-form-row .wpdiscuz-item.wpd-field-radio .wpd-field-desc,
366
- #wpcomm .wpd-form-row .wpdiscuz-item.wpd-field-checkbox .wpd-field-desc{ }
367
  #wpcomm .wpd-field-radio .wpd-item, #wpcomm .wpd-field-checkbox .wpd-item{ display:inline-block; padding:1px; margin:1px 0px; min-width:60px; }
368
  #wpcomm .wpd-field-radio .wpd-field, #wpcomm .wpd-field-checkbox .wpd-field { width:auto; height:25px; display:inline-block; float:left; padding:0px; line-height:20px; vertical-align:baseline; margin:0px 6px 0px 0px; }
369
  #wpcomm .wpd-field-radio .wpd-field-label, #wpcomm .wpd-field-checkbox .wpd-field-label{ width:auto; height:22px; display:inline; float:none; padding:0px; line-height:20px; font-size:12px; margin:0px; vertical-align:middle; }
@@ -393,7 +376,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
393
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > label { float: right; }
394
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc{ right:0px; top:0px; position:relative; font-size:14px; margin-left:5px; padding: 0 7px; }
395
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc i.fa{ font-size:17px; }
396
- #wpcomm .wpd-form-col-full .wpd-field-group .wpd-field-group-title{ display:inline-block; vertical-align:baseline; padding:0px 0px 2px 0px; margin-top:-2px; }
397
  #wpcomm .wpd-form-col-full .wpdiscuz-item .wpdiscuz-rating{ padding:0px 6px 0px 0px; vertical-align:middle; line-height: 14px; }
398
  #wpcomm .wpd-form-col-full .wpd-item-wrap{ display:inline-block; float:left; padding-right:7px; vertical-align:baseline; padding:0px 1px 1px 1px; }
399
  .wpdiscuz-stars-label{ line-height:20px; padding:10px 0px 2px 3px; font-size:14px; }
@@ -521,7 +504,7 @@ wpdtip{display: inline-block; position: inherit; width: auto;}
521
  .wc_comment_not_updated,.wc_comment_not_edited,.msgNotAllowedFiles,msgMaxFileCount,.msgMaxFileSize,.msgPostMaxSize,
522
  .wc_follow_email_confirm_fail,.wc_follow_login_to_follow,.wc_follow_impossible,.wc_follow_not_added{background-color:#fce8e8!important; font-size:14px; text-align:center; color:#ce4a66; border:#f2d3d2 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
523
  .wc_follow_success,.wc_follow_canceled,.wc_follow_email_confirm{background-color:#f0f0f0!important; font-size:14px; text-align:center; color:#00B38F; border:#eee 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
524
- .wc_held_for_moderate{background-color:#fce6bf; font-size:14px; text-align:center; color:#d3760c; border:#f9c975 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
525
  .wpdiscuz-loading-bar{position:fixed; right:0; width:70px; border:0; background:transparent; z-index:999999; display:none; }
526
  .wpdiscuz-loading-bar-auth{top:32px}
527
  .wpdiscuz-loading-bar-unauth{top:0}
1
  /* wpDiscuz Main CSS stylesheet */
 
2
  wpdtip{display: inline-block; position: inherit; width: auto;}
3
 
 
4
  /* WRAPPER & GENERAL RULES */
5
  #wpcomm{max-width:950px; padding:1px 0 10px 0; border-top:#ddd solid 1px; margin:7px auto 15px auto;}
6
  #wpcomm *{box-sizing:border-box}
8
  #wpcomm .clearfix{clear:both; }
9
  #wpcomm .wpd-sticky{display: none; }
10
  #wpcomm .wpd-closed{display: none; }
 
11
  #wpcomm i{margin: 0px;}
12
  #wpcomm span {display:inline}
13
  #wpcomm .wc-must-login{margin:0; font-size:14px; line-height:16px; padding:10px; text-align:center}
22
  .wpdiscuz_clear_right{clear:right}
23
  .wpdiscuz_clear_left{clear:left}
24
 
 
25
  /* SORTING & SUBSCRIPTION BAR */
26
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons{padding-top: 3px; display: -webkit-flex; display: -moz-flex; display: -ms-flex; display: -o-flex; display: flex; justify-content: flex-end; -ms-align-items: center; align-items: center; }
27
  #wpcomm .wpdiscuz-front-actions .wpdiscuz-sort-buttons .wpdiscuz-sort-button{font-size: 13px; }
38
  #wpcomm .wpdiscuz-subscribe-agreement{font-size: 12px; display: block; clear: left; padding-top: 10px; width: 92%;}
39
  #wpcomm .wpdiscuz-subscribe-agreement label{ cursor: pointer; display: inline;}
40
 
 
41
  /* LIVE UPDATE NOTIFICATION BUTTONS */
42
  #wpcomm .wc_new_comment_and_replies{margin:0; padding:0; width:100%; height:auto; background:transparent}
43
  #wpcomm .wc_new_comment_and_replies .wc_new_comment{float:right; display:none; padding:3px 10px; font-size:12px; margin:1px 0 1px 3px; cursor:pointer; color:#fff; line-height:15px}
50
  #wpcomm .wc-comment .wc-comment-right{margin-left:90px; padding:0px; display:block; margin-bottom: 10px; }
51
  #wpcomm .wc-reply .wc-comment-left{width:50px; float:left; text-align:center; line-height:16px}
52
  #wpcomm .wc-reply .wc-comment-right{margin-left:65px; padding:0px; display:block; }
53
+ #wpcomm .wc-comment-right.wc-hide-avatar{margin-left:0px;}
54
  #wpcomm .wc-comment .wc-comment-left .wpd-xborder{ display: none; position: absolute; height: 20px; border-right:1px solid #ddd; width: 100%; top:29px; right: -17px; }
55
  #wpcomm .wc-reply .wc-comment-left .wpd-xborder{display: none; }
56
  #wpcomm .wc-reply.wc_comment_level-2{ margin-left:99px}
57
 
58
  /* header */
59
  #wpcomm .wc-comment-header{margin-bottom: 10px; height: 40px; padding-top: 5px;}
 
 
 
60
  #wpcomm .wc-reply .wc-comment-header{margin-bottom:7px; height:34px; padding-top: 5px;}
61
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-left .wpd-xborder,
62
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
63
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header .wpd-sticky{display: inline-block;border-radius: 50%; font-size: 12px; padding: 3px 7px 2px 7px; margin: 1px 5px; line-height: 18px; height: 22px; width: 23px; }
64
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-header .wpd-closed{display: inline-block; border-radius: 50%; font-size: 11px; padding: 2px 7px 2px 7px; margin: 1px 5px; line-height: 18px; height: 22px; width: 23px; }
65
  #wpcomm .wc-sticky-comment.wc-comment .wc-reply .wc-comment-header .wpd-sticky,
66
+ #wpcomm .wc-closed-comment.wc-comment .wc-reply .wc-comment-header .wpd-closed{display: none;}
67
  #wpcomm .wc-private-comment.wc-comment .wc-comment-left .wpd-xborder{display: none; }
68
+ #wpcomm .wc-comment .wc-comment-header .wpd-private{display: none;}
69
  #wpcomm .wc-private-comment.wc-comment .wc-comment-header .wpd-private{display:inline-block; font-size: 14px; padding: 4px 8px 3px 8px; margin: 1px 4px; line-height: 16px; }
 
70
  #wpcomm .wc-comment-link{font-size:12px; float:right; text-align:right; line-height:20px; padding:0 0 0 10px; margin: 7px 5px 5px 5px; }
71
  #wpcomm .wc-reply .wc-comment-link{margin:5px; }
72
  #wpcomm .wc-comment-link .wpf-cta{ cursor:pointer; font-size:14px; padding:4px 2px 3px 2px; min-width:24px; text-align:center; display:inline-block; margin:1px; line-height:16px; }
73
  #wpcomm .wc-reply .wc-comment-link .wpf-cta {font-size: 13px; padding: 3px 3px 3px 3px; line-height: 15px; }
74
 
 
75
  /* HEADER */
76
  #wc-comment-header{max-width:950px; padding:20px 5px 10px 5px; display:block; float:none; clear:both; font-size:22px; font-weight: normal; margin:0 auto;}
77
  #wc-comment-header .wpdiscuz-comment-count{display:inline-block; text-align: right;margin-right: 10px; vertical-align: bottom;}
111
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users{display: inline-block;}
112
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users i.fa-ellipsis-h{padding-left: 5px; color: #777777;}
113
  #wpcomm .wpdiscuz-form-bottom-bar .wpdiscuz-fbb-right .wpdiscuz-users.wpd-tooltip-right wpdtip:after{top: 93%;}
 
 
114
 
115
  /* Social Login */
116
  #wpcomm .wpdiscuz-social-login{padding: 2px 3px 0px 3px; line-height: 20px; vertical-align: baseline;}
174
  #wpcomm .wc-comment-footer .wc-vote-link{display:inline-block; text-align:center; font-size:13px; height:auto; padding:2px 4px; line-height:17px; cursor:pointer; font-weight: 300; }
175
  #wpcomm .wc-comment-footer .wc-vote-result{display:inline-block; text-align:center; font-size:15px; height:auto; padding:2px 3px; line-height:17px; }
176
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{padding:2px 4px 2px 4px; border-radius:0%; border-right:none; margin-left:1px; }
177
+ #wpcomm .wc-comment-footer .wc-vote-result.wc-positive{border-right:none; text-align:center; margin-left:2px; }
178
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-dislike{padding:2px 4px 2px 4px; border-radius:0%;margin-right:1px; }
179
+ #wpcomm .wc-comment-footer .wc-vote-result.wc-negative{border-left:none; text-align:center; margin-right:2px; }
180
  #wpcomm .wc-comment-footer .wc-vote-result.wc-vote-result-like{ border-right: 1px solid #CCCCCC; margin-right: 4px; padding-right: 8px;}
181
  #wpcomm .wc-comment-footer .wc-vote-link.wc-down i.fa-thumbs-down{-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1);}
 
 
182
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
183
  #wpcomm .wc-comment-footer .wc-vote-link i.fa-thumbs-down{font-size: 16px;}
184
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-thumbs-up,
189
  #wpcomm .wc-reply .wc-comment-footer .wc-vote-link i.fa-frown{font-size: 16px;}
190
  #wpcomm .wc-footer-left .wc-cta-button,
191
  #wpcomm .wc-footer-left .wc-cta-button-x{ font-size:12px; cursor:pointer; text-transform:none; height:auto; padding: 3px 8px 3px 8px; line-height:18px; display:inline-block; margin-right:0px; }
192
+ #wpcomm .wc-footer-left .wc-cta-button-x{ display: none; }
 
193
  #wpcomm .wc-footer-left .wc-reply-button{ margin-left:10px; margin-right:10px; }
194
  #wpcomm .wc-footer-left .wc-reply-button i{display: inline-block; font-size: 13px; padding-right: 2px;}
195
  #wpcomm .wc-reply .wc-footer-left .wc-reply-button i{display: none;}
285
  #wpcomm .wpd_label__check i.wpdicon{font-size: 15px; line-height: 21px; padding: 4px 5px; width: 34px; margin: 0px; }
286
  #wpcomm .wpd_label__check i.wpdicon-on{display: none; color: #00b38f; border: 1px solid #b5e5db; background-color: #F6FFFD; }
287
  #wpcomm .wpd_label__check i.wpdicon-off{display: inline-block; color: #aaaaaa; border: 1px solid #dddddd; background-color: #F9F9F9; }
 
 
288
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-on{display: inline-block; }
289
  #wpcomm .wpd_label__checkbox:checked + .wpd_label__text .wpd_label__check .wpdicon-off{display:none; }
290
  #wpcomm .wpd_label__check i.wpdicon-off.fa-unlock-alt, #wpcomm .wpd_label__check i.wpdicon-on.fa-lock{ font-size: 15px; }
333
  #wpcomm .wpd-item-wrap{ text-align:left; }
334
  #wpcomm .wpd-item{ text-align:left; }
335
  #wpcomm .wpd-form-col-left .wpd-field-group .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-field-group .wpd-field-group-title, #wpcomm .wpd-form-col-full .wpd-field-group .wpd-field-group-title{ font-size:13px; text-align:left; line-height:20px; padding: 5px 0; }
336
+ #wpcomm .wpd-form-col-left .wpd-has-desc .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-has-desc .wpd-field-group-title, #wpcomm .wpd-form-col-full .wpd-has-desc .wpd-field-group-title{ padding-right:35px; }
337
  #wpcomm .wc-comment-right .wpd-top-custom-fields{ padding:5px 10px 15px 10px; }
338
  #wpcomm .wc-comment-right .wpd-bottom-custom-fields{ padding:5px 10px; margin-bottom:20px; }
339
 
347
  #wpcomm .wpd-form-col-left .wpd-field-group.wpd-field-single .wpd-field-group-title, #wpcomm .wpd-form-col-right .wpd-field-group.wpd-field-single .wpd-field-group-title{ font-size:inherit; text-align:right; line-height:inherit; height:25px; }
348
  #wpcomm .wpdiscuz-item.wpd-field-radio, #wpcomm .wpdiscuz-item.wpd-field-checkbox{ border-bottom:1px dotted #ccc; padding-bottom:12px; }
349
  #wpcomm .wpd-form-col-left div:last-of-type, #wpcomm .wpd-form-col-right div:last-of-type{ border-bottom:none; }
 
 
350
  #wpcomm .wpd-field-radio .wpd-item, #wpcomm .wpd-field-checkbox .wpd-item{ display:inline-block; padding:1px; margin:1px 0px; min-width:60px; }
351
  #wpcomm .wpd-field-radio .wpd-field, #wpcomm .wpd-field-checkbox .wpd-field { width:auto; height:25px; display:inline-block; float:left; padding:0px; line-height:20px; vertical-align:baseline; margin:0px 6px 0px 0px; }
352
  #wpcomm .wpd-field-radio .wpd-field-label, #wpcomm .wpd-field-checkbox .wpd-field-label{ width:auto; height:22px; display:inline; float:none; padding:0px; line-height:20px; font-size:12px; margin:0px; vertical-align:middle; }
376
  #wpcomm .wpdiscuz-item .wpdiscuz-rating > label { float: right; }
377
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc{ right:0px; top:0px; position:relative; font-size:14px; margin-left:5px; padding: 0 7px; }
378
  #wpcomm .wpd-form-col-full .wpdiscuz-item.wpd-field-rating.wpd-has-desc .wpd-field-desc i.fa{ font-size:17px; }
379
+ #wpcomm .wpd-form-col-full .wpd-field-group .wpd-field-group-title{ display:inline-block; vertical-align:baseline; padding:0px 0px 2px 0px; margin-top:-2px; padding-right: 35px; }
380
  #wpcomm .wpd-form-col-full .wpdiscuz-item .wpdiscuz-rating{ padding:0px 6px 0px 0px; vertical-align:middle; line-height: 14px; }
381
  #wpcomm .wpd-form-col-full .wpd-item-wrap{ display:inline-block; float:left; padding-right:7px; vertical-align:baseline; padding:0px 1px 1px 1px; }
382
  .wpdiscuz-stars-label{ line-height:20px; padding:10px 0px 2px 3px; font-size:14px; }
504
  .wc_comment_not_updated,.wc_comment_not_edited,.msgNotAllowedFiles,msgMaxFileCount,.msgMaxFileSize,.msgPostMaxSize,
505
  .wc_follow_email_confirm_fail,.wc_follow_login_to_follow,.wc_follow_impossible,.wc_follow_not_added{background-color:#fce8e8!important; font-size:14px; text-align:center; color:#ce4a66; border:#f2d3d2 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
506
  .wc_follow_success,.wc_follow_canceled,.wc_follow_email_confirm{background-color:#f0f0f0!important; font-size:14px; text-align:center; color:#00B38F; border:#eee 1px solid; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
507
+ .wc_held_for_moderate{background-color:#fff8ed; font-size:14px; text-align:center; color:#d3760c; border:none; padding:5px 10px; width:100%; box-sizing:border-box; margin:5px 0; border-radius:3px}
508
  .wpdiscuz-loading-bar{position:fixed; right:0; width:70px; border:0; background:transparent; z-index:999999; display:none; }
509
  .wpdiscuz-loading-bar-auth{top:32px}
510
  .wpdiscuz-loading-bar-unauth{top:0}
assets/js/wpdiscuz.js CHANGED
@@ -43,10 +43,15 @@ jQuery(document).ready(function ($) {
43
  loginButtonsClone();
44
 
45
  if (!wpdiscuzAjaxObj.wpdiscuz_options.wordpressIsPaginate && isCookiesEnabled) {
 
46
  var wpdiscuzLastVisitKey = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitKey;
47
- var wpdiscuzLastVisit = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitCookie;
48
- var wpdiscuzLastVisitExpires = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitExpires;
49
- Cookies.set(wpdiscuzLastVisitKey, (JSON.stringify(wpdiscuzLastVisit)), {expires: wpdiscuzLastVisitExpires, path: window.location});
 
 
 
 
50
  }
51
 
52
  $('#wc_unsubscribe_message, #wc_delete_content_message, #wc_follow_message').delay(3000).fadeOut(1500, function () {
@@ -65,7 +70,13 @@ jQuery(document).ready(function ($) {
65
  });
66
 
67
  $(document).delegate('.wc-comment-img-link', 'click', function () {
68
- $(this).parents('.wc-comment-img-link-wrap').find('span').toggleClass('wc-comment-img-link-show');
 
 
 
 
 
 
69
  });
70
 
71
  $(document).delegate('textarea.wc_comment', 'focus', function () {
@@ -306,15 +317,6 @@ jQuery(document).ready(function ($) {
306
  $('#wc-secondary-form-wrapper-' + messageKey).after(message.replace('wc-reply', 'wc-reply wc-no-left-margin'));
307
  }
308
  }
309
- if (r.held_moderate && isCookiesEnabled) {
310
- var moderateCommentTime = 30 * 24 * 60 * 60;
311
- var moderateComments = '';
312
- if (Cookies.get('wc_moderate_comments_' + wpdiscuzPostId)) {
313
- moderateComments = Cookies.get('wc_moderate_comments_' + wpdiscuzPostId);
314
- }
315
- moderateComments += r.new_comment_id + ',';
316
- Cookies.set('wc_moderate_comments_' + wpdiscuzPostId, moderateComments, {expires: moderateCommentTime, path: '/'});
317
- }
318
  notifySubscribers(r);
319
  wpdiscuzRedirect(r);
320
  if (isCookiesEnabled && wpdCookiesConsent) {
@@ -339,15 +341,7 @@ jQuery(document).ready(function ($) {
339
  }
340
  wpdiscuzAjaxObj.setCommentMessage(wcForm, messageKey, message, true);
341
  }
342
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
343
- $.each(r.callbackFunctions, function (i) {
344
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
345
- wpdiscuzAjaxObj[r.callbackFunctions[i]](messageKey, wcForm);
346
- } else {
347
- console.log(r.callbackFunctions[i] + " is not a function");
348
- }
349
- });
350
- }
351
  } catch (e) {
352
  if (response.indexOf('<') >= 0 && response.indexOf('>') >= 0) {
353
  message = e;
@@ -435,6 +429,9 @@ jQuery(document).ready(function ($) {
435
  var wcCommentTextBeforeEditing;
436
 
437
  $(document).delegate('.wc_editable_comment', 'click', function () {
 
 
 
438
  var uniqueID = getUniqueID($(this), 0);
439
  var commentID = getCommentID(uniqueID);
440
  var editButton = $(this);
@@ -505,19 +502,14 @@ jQuery(document).ready(function ($) {
505
  var message = '';
506
  if (parseInt(messageKey) >= 0) {
507
  wcCancelOrSave(uniqueID, r.message);
 
 
 
508
  } else {
509
  message = wpdiscuzAjaxObj.wpdiscuz_options[messageKey];
510
  wpdiscuzAjaxObj.setCommentMessage(saveButton, messageKey, message, false);
511
  }
512
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
513
- $.each(r.callbackFunctions, function (i) {
514
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
515
- wpdiscuzAjaxObj[r.callbackFunctions[i]](messageKey, commentID, commentContent);
516
- } else {
517
- console.log(r.callbackFunctions[i] + " is not a function");
518
- }
519
- });
520
- }
521
  } catch (e) {
522
  if (response.indexOf('<') >= 0 && response.indexOf('>') >= 0) {
523
  message = e;
@@ -589,7 +581,9 @@ jQuery(document).ready(function ($) {
589
  data.append('orderBy', wpdiscuzCommentsOrderBy);
590
  data.append('order', wpdiscuzCommentsOrder);
591
  data.append('lastParentId', getLastParentID());
592
- data.append(wpdiscuzLastVisitKey, Cookies.get(wpdiscuzLastVisitKey));
 
 
593
  wpdiscuzLoadCount++;
594
  var ajax = isNativeAjaxEnabled ? getAjaxObj(true, data) : getCustomAjaxObj(true, data);
595
  ajax.done(function (response) {
@@ -619,15 +613,7 @@ jQuery(document).ready(function ($) {
619
  $('#wpdiscuzHasMoreComments').val(1);
620
  }
621
 
622
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
623
- $.each(r.callbackFunctions, function (i) {
624
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
625
- wpdiscuzAjaxObj[r.callbackFunctions[i]]();
626
- } else {
627
- console.log(r.callbackFunctions[i] + " is not a function");
628
- }
629
- });
630
- }
631
  }
632
 
633
  //============================== LOAD MORE ============================== //
@@ -672,15 +658,7 @@ jQuery(document).ready(function ($) {
672
  message = wpdiscuzAjaxObj.wpdiscuz_options[messageKey];
673
  wpdiscuzAjaxObj.setCommentMessage(currentVoteBtn, messageKey, message, false);
674
  }
675
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
676
- $.each(r.callbackFunctions, function (i) {
677
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
678
- wpdiscuzAjaxObj[r.callbackFunctions[i]](messageKey, commentID, voteType);
679
- } else {
680
- console.log(r.callbackFunctions[i] + " is not a function");
681
- }
682
- });
683
- }
684
  } catch (e) {
685
  console.log(e);
686
  }
@@ -764,15 +742,7 @@ jQuery(document).ready(function ($) {
764
  $('.wc-thread-wrapper').prepend(r.message);
765
  }
766
 
767
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
768
- $.each(r.callbackFunctions, function (i) {
769
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
770
- wpdiscuzAjaxObj[r.callbackFunctions[i]]();
771
- } else {
772
- console.log(r.callbackFunctions[i] + " is not a function");
773
- }
774
- });
775
- }
776
 
777
  $('html, body').animate({
778
  scrollTop: $(scrollToSelector).offset().top - 32
@@ -896,6 +866,7 @@ jQuery(document).ready(function ($) {
896
  $('#comment-' + commentId + ' .wc-comment-text').html(' ' + r.message);
897
  $('#wpdiscuz-readmore-' + uniqueId).remove();
898
  }
 
899
  } catch (e) {
900
  console.log(e);
901
  }
@@ -1095,22 +1066,14 @@ jQuery(document).ready(function ($) {
1095
  var ajax = isNativeAjaxEnabled ? getAjaxObj(true, data) : getCustomAjaxObj(true, data);
1096
  ajax.done(function (response) {
1097
  try {
1098
- var obj = $.parseJSON(response);
1099
- if (obj.code == 1) {
1100
- $('#wc-comm-' + uniqueId).replaceWith(obj.data);
1101
  $('#wc-comm-' + uniqueId + ' .wc-toggle .fas').removeClass('fa-chevron-down').addClass('fa-chevron-up').removeClass('wpdiscuz-show-replies').attr('title', wpdiscuzAjaxObj.wpdiscuz_options.wc_hide_replies_text);
1102
  var toggle = $('#wc-comm-' + uniqueId + ' .wc-toggle');
1103
  $('.wpdiscuz-children-button-text', toggle).text(wpdiscuzAjaxObj.wpdiscuz_options.wc_hide_replies_text);
1104
 
1105
- if (obj.callbackFunctions != null && obj.callbackFunctions != 'undefined' && obj.callbackFunctions.length) {
1106
- $.each(obj.callbackFunctions, function (i) {
1107
- if (typeof wpdiscuzAjaxObj[obj.callbackFunctions[i]] === "function") {
1108
- wpdiscuzAjaxObj[obj.callbackFunctions[i]]();
1109
- } else {
1110
- console.log(obj.callbackFunctions[i] + " is not a function");
1111
- }
1112
- });
1113
- }
1114
  } else {
1115
  console.log('Unknown error occured');
1116
  }
@@ -1208,15 +1171,7 @@ jQuery(document).ready(function ($) {
1208
  scrollToSelector = '#comment-' + r.commentId;
1209
  }
1210
 
1211
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
1212
- $.each(r.callbackFunctions, function (i) {
1213
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
1214
- wpdiscuzAjaxObj[r.callbackFunctions[i]]();
1215
- } else {
1216
- console.log(r.callbackFunctions[i] + " is not a function");
1217
- }
1218
- });
1219
- }
1220
 
1221
  $('html, body').animate({
1222
  scrollTop: $(scrollToSelector).offset().top - 32
@@ -1256,15 +1211,7 @@ jQuery(document).ready(function ($) {
1256
  toggle.trigger('click');
1257
  }
1258
 
1259
- if (r.callbackFunctions != null && r.callbackFunctions != 'undefined' && r.callbackFunctions.length) {
1260
- $.each(r.callbackFunctions, function (i) {
1261
- if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
1262
- wpdiscuzAjaxObj[r.callbackFunctions[i]]();
1263
- } else {
1264
- console.log(r.callbackFunctions[i] + " is not a function");
1265
- }
1266
- });
1267
- }
1268
 
1269
  $('html, body').animate({
1270
  scrollTop: $(scrollToSelector).offset().top - 32
@@ -1332,6 +1279,62 @@ jQuery(document).ready(function ($) {
1332
  });
1333
  });
1334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1335
  /**
1336
  * @param {type} action the action key
1337
  * @param {type} data the request properties
@@ -1370,40 +1373,4 @@ jQuery(document).ready(function ($) {
1370
  });
1371
  }
1372
 
1373
- function addCommentsAfterSticky(comment) {
1374
- if ($('.wc-sticky-comment').last()[0]) {
1375
- $(comment).insertAfter($('.wc-sticky-comment').last()[0]);
1376
- } else {
1377
- $('.wc-thread-wrapper').prepend(comment);
1378
- }
1379
- }
1380
-
1381
- function showHideNotificationType(current) {
1382
- if (current) {
1383
- if (!current.prop('required')) {
1384
- if (current.val()) {
1385
- current.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'inline-block');
1386
- } else {
1387
- current.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'none');
1388
- }
1389
- }
1390
- } else {
1391
- $.each($('.wc_email'), function (i, val) {
1392
- var obj = $(val);
1393
- if (!obj.prop('required')) {
1394
- if (obj.val()) {
1395
- obj.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'inline-block');
1396
- } else {
1397
- obj.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'none');
1398
- }
1399
- }
1400
- });
1401
- }
1402
- }
1403
- showHideNotificationType();
1404
-
1405
- $(document).delegate('.wc_email', 'keyup', function () {
1406
- showHideNotificationType($(this));
1407
- });
1408
-
1409
  });
43
  loginButtonsClone();
44
 
45
  if (!wpdiscuzAjaxObj.wpdiscuz_options.wordpressIsPaginate && isCookiesEnabled) {
46
+ Cookies.remove('wordpress_last_visit', {path: ''});
47
  var wpdiscuzLastVisitKey = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitKey;
48
+ if (wpdiscuzAjaxObj.wpdiscuz_options.enableLastVisitCookie) {
49
+ var wpdiscuzLastVisit = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitCookie;
50
+ var wpdiscuzLastVisitExpires = wpdiscuzAjaxObj.wpdiscuz_options.lastVisitExpires;
51
+ Cookies.set(wpdiscuzLastVisitKey, wpdiscuzLastVisit, {expires: wpdiscuzLastVisitExpires, path: window.location});
52
+ } else {
53
+ Cookies.remove(wpdiscuzLastVisitKey, {path: ''});
54
+ }
55
  }
56
 
57
  $('#wc_unsubscribe_message, #wc_delete_content_message, #wc_follow_message').delay(3000).fadeOut(1500, function () {
70
  });
71
 
72
  $(document).delegate('.wc-comment-img-link', 'click', function () {
73
+ var el = $('<input/>');
74
+ var val = $(this).data('comment-url');
75
+ el.appendTo('body').css({'position': 'absolute', 'top': '-10000000px'}).val(val);
76
+ el.select();
77
+ document.execCommand('copy');
78
+ el.remove();
79
+ alert(val + '\r\nCopied to clipboard!');
80
  });
81
 
82
  $(document).delegate('textarea.wc_comment', 'focus', function () {
317
  $('#wc-secondary-form-wrapper-' + messageKey).after(message.replace('wc-reply', 'wc-reply wc-no-left-margin'));
318
  }
319
  }
 
 
 
 
 
 
 
 
 
320
  notifySubscribers(r);
321
  wpdiscuzRedirect(r);
322
  if (isCookiesEnabled && wpdCookiesConsent) {
341
  }
342
  wpdiscuzAjaxObj.setCommentMessage(wcForm, messageKey, message, true);
343
  }
344
+ runCallbacks(r, wcForm);
 
 
 
 
 
 
 
 
345
  } catch (e) {
346
  if (response.indexOf('<') >= 0 && response.indexOf('>') >= 0) {
347
  message = e;
429
  var wcCommentTextBeforeEditing;
430
 
431
  $(document).delegate('.wc_editable_comment', 'click', function () {
432
+ if (wcCommentTextBeforeEditing && $('.wpdiscuz-edit-form-wrap').length) {
433
+ wcCancelOrSave(getUniqueID($('.wpdiscuz-edit-form-wrap'), 0), wcCommentTextBeforeEditing);
434
+ }
435
  var uniqueID = getUniqueID($(this), 0);
436
  var commentID = getCommentID(uniqueID);
437
  var editButton = $(this);
502
  var message = '';
503
  if (parseInt(messageKey) >= 0) {
504
  wcCancelOrSave(uniqueID, r.message);
505
+ if (r.twitterShareLink) {
506
+ $('#wc-comm-' + uniqueID + ' #comment-' + commentID + '.wc-comment-right .wc-comment-header .wc-share-link .wc_tw').attr('href', r.twitterShareLink);
507
+ }
508
  } else {
509
  message = wpdiscuzAjaxObj.wpdiscuz_options[messageKey];
510
  wpdiscuzAjaxObj.setCommentMessage(saveButton, messageKey, message, false);
511
  }
512
+ runCallbacks(r, commentID);
 
 
 
 
 
 
 
 
513
  } catch (e) {
514
  if (response.indexOf('<') >= 0 && response.indexOf('>') >= 0) {
515
  message = e;
581
  data.append('orderBy', wpdiscuzCommentsOrderBy);
582
  data.append('order', wpdiscuzCommentsOrder);
583
  data.append('lastParentId', getLastParentID());
584
+ if (wpdiscuzAjaxObj.wpdiscuz_options.enableLastVisitCookie) {
585
+ data.append(wpdiscuzLastVisitKey, Cookies.get(wpdiscuzLastVisitKey));
586
+ }
587
  wpdiscuzLoadCount++;
588
  var ajax = isNativeAjaxEnabled ? getAjaxObj(true, data) : getCustomAjaxObj(true, data);
589
  ajax.done(function (response) {
613
  $('#wpdiscuzHasMoreComments').val(1);
614
  }
615
 
616
+ runCallbacks(r);
 
 
 
 
 
 
 
 
617
  }
618
 
619
  //============================== LOAD MORE ============================== //
658
  message = wpdiscuzAjaxObj.wpdiscuz_options[messageKey];
659
  wpdiscuzAjaxObj.setCommentMessage(currentVoteBtn, messageKey, message, false);
660
  }
661
+ runCallbacks(r, commentID, voteType);
 
 
 
 
 
 
 
 
662
  } catch (e) {
663
  console.log(e);
664
  }
742
  $('.wc-thread-wrapper').prepend(r.message);
743
  }
744
 
745
+ runCallbacks(r);
 
 
 
 
 
 
 
 
746
 
747
  $('html, body').animate({
748
  scrollTop: $(scrollToSelector).offset().top - 32
866
  $('#comment-' + commentId + ' .wc-comment-text').html(' ' + r.message);
867
  $('#wpdiscuz-readmore-' + uniqueId).remove();
868
  }
869
+ runCallbacks(r);
870
  } catch (e) {
871
  console.log(e);
872
  }
1066
  var ajax = isNativeAjaxEnabled ? getAjaxObj(true, data) : getCustomAjaxObj(true, data);
1067
  ajax.done(function (response) {
1068
  try {
1069
+ var r = $.parseJSON(response);
1070
+ if (r.code == 1) {
1071
+ $('#wc-comm-' + uniqueId).replaceWith(r.data);
1072
  $('#wc-comm-' + uniqueId + ' .wc-toggle .fas').removeClass('fa-chevron-down').addClass('fa-chevron-up').removeClass('wpdiscuz-show-replies').attr('title', wpdiscuzAjaxObj.wpdiscuz_options.wc_hide_replies_text);
1073
  var toggle = $('#wc-comm-' + uniqueId + ' .wc-toggle');
1074
  $('.wpdiscuz-children-button-text', toggle).text(wpdiscuzAjaxObj.wpdiscuz_options.wc_hide_replies_text);
1075
 
1076
+ runCallbacks(r);
 
 
 
 
 
 
 
 
1077
  } else {
1078
  console.log('Unknown error occured');
1079
  }
1171
  scrollToSelector = '#comment-' + r.commentId;
1172
  }
1173
 
1174
+ runCallbacks(r);
 
 
 
 
 
 
 
 
1175
 
1176
  $('html, body').animate({
1177
  scrollTop: $(scrollToSelector).offset().top - 32
1211
  toggle.trigger('click');
1212
  }
1213
 
1214
+ runCallbacks(r);
 
 
 
 
 
 
 
 
1215
 
1216
  $('html, body').animate({
1217
  scrollTop: $(scrollToSelector).offset().top - 32
1279
  });
1280
  });
1281
 
1282
+ function addCommentsAfterSticky(comment) {
1283
+ if ($('.wc-sticky-comment').last()[0]) {
1284
+ $(comment).insertAfter($('.wc-sticky-comment').last()[0]);
1285
+ } else {
1286
+ $('.wc-thread-wrapper').prepend(comment);
1287
+ }
1288
+ }
1289
+
1290
+ function showHideNotificationType(current) {
1291
+ if (current) {
1292
+ if (!current.prop('required')) {
1293
+ if (current.val()) {
1294
+ current.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'inline-block');
1295
+ } else {
1296
+ current.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'none');
1297
+ }
1298
+ }
1299
+ } else {
1300
+ $.each($('.wc_email'), function (i, val) {
1301
+ var obj = $(val);
1302
+ if (!obj.prop('required')) {
1303
+ if (obj.val()) {
1304
+ obj.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'inline-block');
1305
+ } else {
1306
+ obj.parents('form').find('[name=wpdiscuz_notification_type]').parent().css('display', 'none');
1307
+ }
1308
+ }
1309
+ });
1310
+ }
1311
+ }
1312
+ showHideNotificationType();
1313
+
1314
+ $(document).delegate('.wc_email', 'keyup', function () {
1315
+ showHideNotificationType($(this));
1316
+ });
1317
+
1318
+ $(document).delegate('#wpdiscuz-subscribe-form', 'submit', function (e) {
1319
+ $('<input />').attr('type', 'hidden')
1320
+ .attr('name', "ahk")
1321
+ .attr('value', wpdiscuzAjaxObj.wpdiscuz_options.ahk)
1322
+ .appendTo('#wpdiscuz-subscribe-form');
1323
+ return true;
1324
+ });
1325
+
1326
+ function runCallbacks(r, commentID, voteType, wcForm) {
1327
+ if (r.callbackFunctions) {
1328
+ $.each(r.callbackFunctions, function (i) {
1329
+ if (typeof wpdiscuzAjaxObj[r.callbackFunctions[i]] === "function") {
1330
+ wpdiscuzAjaxObj[r.callbackFunctions[i]](r.code, commentID, voteType, wcForm);
1331
+ } else {
1332
+ console.log(r.callbackFunctions[i] + " is not a function");
1333
+ }
1334
+ });
1335
+ }
1336
+ }
1337
+
1338
  /**
1339
  * @param {type} action the action key
1340
  * @param {type} data the request properties
1373
  });
1374
  }
1375
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1376
  });
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: 5.2.2
7
  * Author: gVectors Team (A. Chakhoyan, G. Zakaryan, H. Martirosyan)
8
  * Author URI: https://gvectors.com/
9
  * Plugin URI: http://wpdiscuz.com/
@@ -18,18 +18,18 @@ define('WPDISCUZ_DS', DIRECTORY_SEPARATOR);
18
  define('WPDISCUZ_DIR_PATH', dirname(__FILE__));
19
  define('WPDISCUZ_DIR_NAME', basename(WPDISCUZ_DIR_PATH));
20
 
21
- include_once 'includes/interface.WpDiscuzConstants.php';
22
- include_once 'utils/functions.php';
23
- include_once 'options/class.WpdiscuzOptions.php';
24
- include_once 'options/class.WpdiscuzOptionsSerialized.php';
25
- include_once 'utils/class.WpdiscuzHelper.php';
26
- include_once 'utils/class.WpdiscuzHelperEmail.php';
27
- include_once 'utils/class.WpdiscuzHelperOptimization.php';
28
- include_once 'includes/class.WpdiscuzDBManager.php';
29
- include_once 'includes/class.WpdiscuzCss.php';
30
- include_once 'forms/wpDiscuzForm.php';
31
- include_once 'utils/class.WpdiscuzCache.php';
32
- include_once 'utils/class.WpdiscuzHelperAjax.php';
33
 
34
  class WpdiscuzCore implements WpDiscuzConstants {
35
 
@@ -55,6 +55,9 @@ class WpdiscuzCore implements WpDiscuzConstants {
55
  private static $_instance = null;
56
 
57
  private function __construct() {
 
 
 
58
  $this->version = get_option(self::OPTION_SLUG_VERSION, '1.0.0');
59
  $this->dbManager = new WpdiscuzDBManager();
60
  $this->optionsSerialized = new WpdiscuzOptionsSerialized($this->dbManager);
@@ -273,13 +276,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
273
  }
274
 
275
  public function updateAutomatically() {
276
- $currentUser = WpdiscuzHelper::getCurrentUser();
277
  $messageArray = array('code' => 0);
278
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
279
  $loadLastCommentId = isset($_POST['loadLastCommentId']) ? intval($_POST['loadLastCommentId']) : 0;
280
  $visibleCommentIds = isset($_POST['visibleCommentIds']) ? $_POST['visibleCommentIds'] : '';
281
- $sentEmail = isset($_POST['email']) ? trim($_POST['email']) : '';
282
- $email = $currentUser && $currentUser->ID ? $currentUser->user_email : $sentEmail;
283
  if ($visibleCommentIds && $postId && $loadLastCommentId) {
284
  $cArgs = $this->getDefaultCommentsArgs($postId);
285
  $lastCommentId = $this->dbManager->getLastCommentId($cArgs);
@@ -289,11 +289,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
289
  $messageArray['loadLastCommentId'] = $lastCommentId;
290
  $commentListArgs = $this->getCommentListArgs($postId);
291
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
292
- $commentListArgs['current_user'] = $currentUser;
293
- $this->form = $this->wpdiscuzForm->getForm($postId);
294
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
295
  $newCommentIds = $this->dbManager->getNewCommentIds($cArgs, $loadLastCommentId, $email);
296
- $newCommentIds = apply_filters('wpdiscuz_live_update_new_comment_ids', $newCommentIds, $postId, $currentUser);
297
  if ($this->optionsSerialized->commentListUpdateType == 1) {
298
  $messageArray['message'] = array();
299
  foreach ($newCommentIds as $newCommentId) {
@@ -347,15 +346,11 @@ class WpdiscuzCore implements WpDiscuzConstants {
347
  $newCommentIds = isset($_POST['newCommentIds']) ? trim($_POST['newCommentIds']) : '';
348
 
349
  if ($postId && $newCommentIds) {
350
- $currentUser = WpdiscuzHelper::getCurrentUser();
351
  $messageArray['code'] = 1;
352
  $newCommentIds = explode(',', trim($newCommentIds, ','));
353
  $postId = trim(intval($postId));
354
  $commentListArgs = $this->getCommentListArgs($postId);
355
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
356
- $commentListArgs['current_user'] = $currentUser;
357
- $this->form = $this->wpdiscuzForm->getForm($postId);
358
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
359
  $messageArray['message'] = array();
360
  foreach ($newCommentIds as $newCommentId) {
361
  $comment = get_comment($newCommentId);
@@ -373,12 +368,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
373
  $uniqueId = isset($_POST['wpdiscuz_unique_id']) ? trim($_POST['wpdiscuz_unique_id']) : '';
374
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : '';
375
 
376
- if (!current_user_can('moderate_comments') &&
377
- ($key = trim($this->optionsSerialized->antispamKey)) &&
378
- isset($_POST['ahk']) &&
379
- ($ahk = trim($_POST['ahk'])) &&
380
- $key != $ahk) {
381
- die(__('We are sorry, but this comment cannot be posted. Please try later.', 'wpdiscuz'));
382
  }
383
 
384
  if ($uniqueId && $postId) {
@@ -469,7 +462,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
469
  $form->saveCommentMeta($new_comment_id);
470
  $newComment = get_comment($new_comment_id);
471
  $held_moderate = 1;
472
- if ($newComment->comment_approved) {
473
  $held_moderate = 0;
474
  }
475
  if ($notificationType == WpdiscuzCore::SUBSCRIPTION_POST && class_exists('Prompt_Comment_Form_Handling') && $this->optionsSerialized->usePostmaticForCommentNotification) {
@@ -504,11 +497,8 @@ class WpdiscuzCore implements WpDiscuzConstants {
504
  }
505
 
506
  $commentListArgs = $this->getCommentListArgs($postId);
507
- $commentListArgs['current_user'] = $currentUser;
508
  $commentListArgs['addComment'] = $commentDepth;
509
  $commentListArgs['comment_author_email'] = $email;
510
- $this->form = $this->wpdiscuzForm->getForm($postId);
511
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
512
  $messageArray['message'] = wp_list_comments($commentListArgs, array($newComment));
513
  $messageArray['message'] = wp_unslash($messageArray['message']);
514
  } else {
@@ -612,17 +602,21 @@ class WpdiscuzCore implements WpDiscuzConstants {
612
  $commentReadMoreLimit = $this->optionsSerialized->commentReadMoreLimit;
613
  if (strstr($commentContent, '[/spoiler]')) {
614
  $commentReadMoreLimit = 0;
615
- $commentContent = $this->helper->spoiler($commentContent);
616
  }
617
  if ($commentReadMoreLimit && count(explode(' ', strip_tags($commentContent))) > $commentReadMoreLimit) {
618
- $commentContent = $this->helper->getCommentExcerpt($commentContent, $uniqueId);
619
  }
620
 
621
  $commentHtml = '<div class="wc-comment-text">' . $commentContent;
622
- if ($comment->comment_approved == 0) {
623
  $commentHtml .= '<p class="wc_held_for_moderate">' . $this->optionsSerialized->phrases['wc_held_for_moderate'] . '</p>';
624
  }
625
  $commentHtml .= '</div>';
 
 
 
 
626
  $form->renderFrontCommentMetaHtml($comment->comment_ID, $commentHtml);
627
  $messageArray['message'] = $commentHtml;
628
  }
@@ -645,25 +639,27 @@ class WpdiscuzCore implements WpDiscuzConstants {
645
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
646
  if ($commentId && $postId && $comment && $comment->comment_post_ID == $postId) {
647
  $commentListArgs = $this->getCommentListArgs($postId);
648
- if ($comment->comment_approved == 1 || (!$comment->comment_approved && $commentListArgs['high_level_user'])) {
649
- $currentUser = WpdiscuzHelper::getCurrentUser();
650
- $parentComment = $this->helperOptimization->getCommentRoot($commentId);
651
- $tree = $parentComment->get_children(array(
652
- 'format' => 'flat',
653
- 'status' => $this->commentsArgs['status'],
654
- 'orderby' => $this->commentsArgs['orderby']
655
- ));
656
- $comments = array_merge(array($parentComment), $tree);
657
-
658
- $commentListArgs['isSingle'] = true;
659
- $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
660
- $commentListArgs['current_user'] = $currentUser;
661
- $this->form = $this->wpdiscuzForm->getForm($postId);
662
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
663
- $response['message'] = wp_list_comments($commentListArgs, $comments);
664
- $response['parentCommentID'] = $parentComment->comment_ID;
665
- $response['callbackFunctions'] = array();
666
- $response = apply_filters('wpdiscuz_wmu_lightbox', $response);
 
 
667
  }
668
  }
669
  wp_die(json_encode($response));
@@ -693,7 +689,6 @@ class WpdiscuzCore implements WpDiscuzConstants {
693
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
694
  $lastParentId = isset($_POST['lastParentId']) ? intval($_POST['lastParentId']) : 0;
695
  if ($lastParentId >= 0 && $postId) {
696
- $this->form = $this->wpdiscuzForm->getForm($postId);
697
  $limit = ($this->optionsSerialized->commentListLoadType == 1) ? 0 : $this->optionsSerialized->wordpressCommentPerPage;
698
  $args = array('limit' => $limit);
699
  $orderBy = isset($_POST['orderBy']) ? trim($_POST['orderBy']) : '';
@@ -705,11 +700,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
705
  $args['last_parent_id'] = $lastParentId;
706
  }
707
  $args['post_id'] = $postId;
708
- $args[self::COOKIE_LAST_VISIT] = isset($_POST[self::COOKIE_LAST_VISIT]) ? $_POST[self::COOKIE_LAST_VISIT] : '';
709
  $commentData = $this->getWPComments($args);
710
  $commentData['loadLastCommentId'] = $this->dbManager->getLastCommentId($this->commentsArgs);
711
  $commentData['callbackFunctions'] = array();
712
- $commentData = apply_filters('wpdiscuz_wmu_lightbox', $commentData);
713
  wp_die(json_encode($commentData));
714
  }
715
  }
@@ -810,7 +804,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
810
  $messageArray['is_show_load_more'] = $commentData['is_show_load_more'];
811
  $messageArray['message'] = $commentData['comment_list'];
812
  $messageArray['callbackFunctions'] = array();
813
- $messageArray = apply_filters('wpdiscuz_wmu_lightbox', $messageArray);
814
  }
815
  wp_die(json_encode($messageArray));
816
  }
@@ -819,7 +813,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
819
  * loads the comment content on click via ajax
820
  */
821
  public function readMore() {
822
- $messageArray = array('code' => 0);
823
  $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
824
  if ($commentId) {
825
  $comment = get_comment($commentId);
@@ -829,12 +823,14 @@ class WpdiscuzCore implements WpDiscuzConstants {
829
  $commentContent = $this->helper->makeClickable($commentContent);
830
  }
831
  $commentContent = apply_filters('comment_text', $commentContent, $comment);
832
- $messageArray['code'] = 1;
833
- $messageArray['message'] = $commentContent;
 
 
834
  } else {
835
- $messageArray['message'] = 'error';
836
  }
837
- wp_die(json_encode($messageArray));
838
  }
839
 
840
  /**
@@ -842,18 +838,13 @@ class WpdiscuzCore implements WpDiscuzConstants {
842
  */
843
  public function getWPComments($args = array()) {
844
  global $post;
845
- $currentUser = WpdiscuzHelper::getCurrentUser();
846
- $postId = $post && $post->ID ? $post->ID : $args['post_id'];
847
  $defaults = $this->getDefaultCommentsArgs($postId);
848
  $this->commentsArgs = wp_parse_args($args, $defaults);
849
- do_action('wpdiscuz_before_getcomments', $this->commentsArgs, $currentUser, $args);
850
- $commentData = array();
851
  $commentListArgs = $this->getCommentListArgs($this->commentsArgs['post_id']);
 
 
852
  $commentList = $this->_getWPComments($commentListArgs, $commentData);
853
- $commentListArgs['current_user'] = $currentUser;
854
- $this->form = $this->wpdiscuzForm->getForm($this->commentsArgs['post_id']);
855
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $this->commentsArgs['post_id']) : true;
856
- $commentListArgs[self::COOKIE_LAST_VISIT] = isset($this->commentsArgs[self::COOKIE_LAST_VISIT]) ? $this->commentsArgs[self::COOKIE_LAST_VISIT] : '';
857
  $wcWpComments = wp_list_comments($commentListArgs, $commentList);
858
  $commentData['comment_list'] = $wcWpComments;
859
  $this->commentsArgs['caller'] = '';
@@ -894,9 +885,8 @@ class WpdiscuzCore implements WpDiscuzConstants {
894
  'status' => $this->commentsArgs['status'],
895
  'orderby' => $this->commentsArgs['orderby']
896
  ));
897
- $countChildren = count($children);
898
- if ($countChildren && $this->optionsSerialized->isLoadOnlyParentComments) {
899
- $commentListArgs['wpdiscuz_child_count_' . $parentComment->comment_ID] = $countChildren;
900
  } else {
901
  $commentList = array_merge($commentList, $children);
902
  }
@@ -920,13 +910,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
920
  'status' => $this->commentsArgs['status'],
921
  'orderby' => $this->commentsArgs['orderby']
922
  ));
923
- $countChildren = count($children);
924
- if ($countChildren) {
925
- if ($this->optionsSerialized->isLoadOnlyParentComments) {
926
- $commentListArgs['wpdiscuz_child_count_' . $parentComment->comment_ID] = $countChildren;
927
- } else {
928
- $commentList = array_merge($commentList, $children);
929
- }
930
  }
931
  }
932
  }
@@ -965,17 +952,17 @@ class WpdiscuzCore implements WpDiscuzConstants {
965
  if (isset($qObj->query_vars['caller']) && $qObj->query_vars['caller'] == 'wpdiscuz') {
966
  global $wpdb, $post, $user_ID;
967
  $commenter = wp_get_current_commenter();
968
- $where = "WHERE ( (comment_approved = '1')";
969
- if ($user_ID) {
970
- $where .= "OR (user_id = $user_ID AND comment_approved = '0')";
971
- } elseif (!empty($commenter['comment_author_email'])) {
972
- $where .= "OR (comment_author_email = '{$commenter['comment_author_email']}' AND comment_approved = '0')";
973
- }
974
- $where .= ")";
975
  $where .= " AND comment_post_ID = {$post->ID}";
976
- $where .= " AND comment_parent = 0";
977
- $where .= " AND comment_type NOT IN ('" . self::WPDISCUZ_STICKY_COMMENT . "')";
978
- $where = apply_filters('wpdiscuz_found_comments_query', $where);
 
 
 
 
 
 
979
  $q = "SELECT COUNT(*) FROM {$wpdb->comments} $where";
980
  }
981
  return $q;
@@ -1013,17 +1000,18 @@ class WpdiscuzCore implements WpDiscuzConstants {
1013
  'date_order' => $this->optionsSerialized->wordpressCommentOrder,
1014
  'limit' => $this->optionsSerialized->commentListLoadType == 3 ? 0 : $this->optionsSerialized->wordpressCommentPerPage,
1015
  'is_threaded' => $this->optionsSerialized->wordpressThreadComments,
1016
- 'status' => current_user_can('moderate_comments') ? 'all' : 'approve',
1017
  'comment__in' => '',
1018
  'update_comment_meta_cache' => false,
1019
  'no_found_rows' => false,
1020
  'type__not_in' => array(self::WPDISCUZ_STICKY_COMMENT),
1021
  );
1022
-
1023
- if ($user_ID) {
1024
- $args['include_unapproved'] = array($user_ID);
1025
- } elseif (!empty($commenter['comment_author_email'])) {
1026
- $args['include_unapproved'] = array($commenter['comment_author_email']);
 
1027
  }
1028
  return apply_filters('wpdiscuz_comments_args', $args);
1029
  }
@@ -1048,6 +1036,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
1048
  global $typenow, $pagenow;
1049
  $wp_version = get_bloginfo('version');
1050
  $wpdiscuzPages = apply_filters('wpdiscuz_admin_pages', array(self::PAGE_SETTINGS, self::PAGE_PHRASES, self::PAGE_TOOLS, self::PAGE_ADDONS));
 
1051
  if ((isset($_GET['page']) && in_array($_GET['page'], $wpdiscuzPages)) || ($typenow == 'wpdiscuz_form') || $pagenow == 'edit-comments.php' || $pagenow == 'comment.php') {
1052
  $args = array(
1053
  'msgConfirmResetOptions' => __('Do you really want to reset all options?', 'wpdiscuz'),
@@ -1057,7 +1046,6 @@ class WpdiscuzCore implements WpDiscuzConstants {
1057
  'msgConfirmPurgeStatisticsCache' => __('Do you really want to delete statistics cache?', 'wpdiscuz'),
1058
  );
1059
 
1060
- wp_register_style('wpdiscuz-font-awesome', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/font-awesome-5.0.6/css/fontawesome-all.min.css'), null, $this->version);
1061
  wp_enqueue_style('wpdiscuz-font-awesome');
1062
  wp_register_style('wpdiscuz-cp-index-css', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/colorpicker/css/index.css'), null, $this->version);
1063
  wp_enqueue_style('wpdiscuz-cp-index-css');
@@ -1114,15 +1102,15 @@ class WpdiscuzCore implements WpDiscuzConstants {
1114
  global $post;
1115
  $this->isWpdiscuzLoaded = $this->helper->isLoadWpdiscuz($post);
1116
  wp_register_style('wpdiscuz-font-awesome', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/font-awesome-5.0.6/css/fontawesome-all.min.css'), null, $this->version);
 
 
1117
 
1118
  if (!$this->isWpdiscuzLoaded && $this->optionsSerialized->ratingCssOnNoneSingular) {
1119
  if (!$this->optionsSerialized->disableFontAwesome) {
1120
  wp_enqueue_style('wpdiscuz-font-awesome');
1121
  }
1122
- wp_register_style('wpdiscuz-ratings', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz-ratings.css'), null, $this->version);
1123
  wp_enqueue_style('wpdiscuz-ratings');
1124
  if (is_rtl()) {
1125
- wp_register_style('wpdiscuz-ratings-rtl', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz-ratings-rtl.css'), null, $this->version);
1126
  wp_enqueue_style('wpdiscuz-ratings-rtl');
1127
  }
1128
  }
@@ -1140,9 +1128,9 @@ class WpdiscuzCore implements WpDiscuzConstants {
1140
  wp_enqueue_style('wpdiscuz-frontend-css');
1141
  }
1142
 
1143
- wp_register_script('wpdiscuz-cookie-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/wpdcookiejs/customcookie.js'), array('jquery'), $this->version);
1144
  wp_enqueue_script('wpdiscuz-cookie-js');
1145
- wp_register_script('autogrowtextarea-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/autogrow/jquery.autogrowtextarea.min.js'), array('jquery'), $this->version);
1146
  wp_enqueue_script('autogrowtextarea-js');
1147
  $form = $this->wpdiscuzForm->getForm($post->ID);
1148
  $form->initFormMeta();
@@ -1151,8 +1139,10 @@ class WpdiscuzCore implements WpDiscuzConstants {
1151
  $this->wpdiscuzOptionsJs['wc_post_id'] = $post->ID;
1152
  $this->wpdiscuzOptionsJs['loadLastCommentId'] = 0;
1153
  $this->wpdiscuzOptionsJs['lastVisitKey'] = self::COOKIE_LAST_VISIT;
1154
- $this->wpdiscuzOptionsJs['lastVisitExpires'] = current_time('timestamp') + MONTH_IN_SECONDS;
1155
- $this->wpdiscuzOptionsJs['lastVisitCookie'] = $this->getLastVisitCookie();
 
 
1156
  $this->wpdiscuzOptionsJs['isCookiesEnabled'] = has_action('set_comment_cookies');
1157
  if ($this->optionsSerialized->commentListUpdateType) {
1158
  $cArgs = $this->getDefaultCommentsArgs($post->ID);
@@ -1160,13 +1150,13 @@ class WpdiscuzCore implements WpDiscuzConstants {
1160
  }
1161
  $this->wpdiscuzOptionsJs = apply_filters('wpdiscuz_js_options', $this->wpdiscuzOptionsJs, $this->optionsSerialized);
1162
  wp_enqueue_script('jquery-form');
1163
- wp_register_script('wpdiscuz-ajax-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz.js'), array('jquery'), $this->version);
1164
  wp_enqueue_script('wpdiscuz-ajax-js');
1165
  wp_localize_script('wpdiscuz-ajax-js', 'wpdiscuzAjaxObj', array('url' => admin_url('admin-ajax.php'), 'customAjaxUrl' => plugins_url(WPDISCUZ_DIR_NAME . '/utils/ajax/wpdiscuz-ajax.php'), 'wpdiscuz_options' => $this->wpdiscuzOptionsJs));
1166
 
1167
  if ($this->optionsSerialized->isQuickTagsEnabled) {
1168
  wp_enqueue_script('quicktags');
1169
- wp_register_script('wpdiscuz-quicktags', plugins_url('/assets/third-party/quicktags/wpdiscuz-quictags.js', __FILE__), null, $this->version, true);
1170
  wp_enqueue_script('wpdiscuz-quicktags');
1171
  }
1172
 
@@ -1178,14 +1168,14 @@ class WpdiscuzCore implements WpDiscuzConstants {
1178
  );
1179
  wp_register_style('wpdiscuz-user-content-css', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz-user-content.css'), null, $this->version);
1180
  wp_enqueue_style('wpdiscuz-user-content-css');
1181
- wp_register_script('wpdiscuz-user-content-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz-user-content.js'), array('jquery'), $this->version);
1182
  wp_enqueue_script('wpdiscuz-user-content-js');
1183
  wp_localize_script('wpdiscuz-user-content-js', 'wpdiscuzUCObj', $ucArgs);
1184
- wp_register_script('wpdiscuz-lity-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/lity/lity.js'), array('jquery'), $this->version);
1185
  wp_enqueue_script('wpdiscuz-lity-js');
1186
  }
1187
 
1188
- do_action('wpdiscuz_front_scripts');
1189
  }
1190
  }
1191
 
@@ -1279,7 +1269,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
1279
  global $post;
1280
  if ($this->isWpdiscuzLoaded) {
1281
  $this->form = $this->wpdiscuzForm->getForm($post->ID);
1282
- add_filter('comments_template', array(&$this, 'addCommentForm'), 10);
1283
  }
1284
  }
1285
 
@@ -1293,13 +1283,9 @@ class WpdiscuzCore implements WpDiscuzConstants {
1293
 
1294
  public function getLastVisitCookie() {
1295
  global $post;
1296
- $lastVisit = array();
1297
  if ($this->isWpdiscuzLoaded) {
1298
- $time = current_time('timestamp');
1299
- if (isset($_COOKIE[self::COOKIE_LAST_VISIT])) {
1300
- $lastVisit = json_decode(stripslashes($_COOKIE[self::COOKIE_LAST_VISIT]), true);
1301
- }
1302
- $lastVisit[self::$CURRENT_BLOG_ID][$post->ID] = $time;
1303
  }
1304
  return $lastVisit;
1305
  }
@@ -1309,21 +1295,23 @@ class WpdiscuzCore implements WpDiscuzConstants {
1309
  return $file;
1310
  }
1311
 
1312
- public function getCommentListArgs($postId) {
1313
  $post = get_post($postId);
1314
  $postsAuthors = ($post->comment_count && (!$this->optionsSerialized->disableProfileURLs || !$this->optionsSerialized->authorTitlesShowHide)) ? $this->dbManager->getPostsAuthors() : array();
1315
  $icons = $this->optionsSerialized->votingButtonsIcon ? explode('|', $this->optionsSerialized->votingButtonsIcon) : array('fa-plus', 'fa-minus');
1316
- $likeIcons = array('like' => $icons[0], 'dislike' => $icons[1]);
1317
  $currentUser = WpdiscuzHelper::getCurrentUser();
1318
  $currentUserEmail = '';
1319
  $isUserLoggedIn = false;
1320
- if ($currentUser && $currentUser->ID) {
1321
  $currentUserEmail = $currentUser->user_email;
1322
  $isUserLoggedIn = true;
1323
  } else if (isset($_COOKIE['comment_author_email_' . COOKIEHASH]) && $_COOKIE['comment_author_email_' . COOKIEHASH]) {
1324
  $currentUserEmail = urldecode(trim($_COOKIE['comment_author_email_' . COOKIEHASH]));
1325
  }
1326
- $userFollows = $this->dbManager->getUserFollows($currentUserEmail);
 
 
 
1327
  $args = array(
1328
  'style' => 'div',
1329
  'echo' => false,
@@ -1332,20 +1320,37 @@ class WpdiscuzCore implements WpDiscuzConstants {
1332
  'reverse_children' => !$this->optionsSerialized->reverseChildren,
1333
  'post_author' => $post->post_author,
1334
  'posts_authors' => $postsAuthors,
1335
- 'walker' => $this->wpdiscuzWalker,
1336
- 'comment_status' => array(1),
1337
- 'voting_icons' => $likeIcons,
1338
- 'comments_open' => comments_open($post->ID),
1339
- 'high_level_user' => current_user_can('moderate_comments'),
1340
  'avatar_trackback' => apply_filters('wpdiscuz_avatar_trackback', plugins_url(WPDISCUZ_DIR_NAME . '/assets/img/trackback.png')),
1341
- 'can_stick_or_close' => $post->post_author == $currentUser->ID,
1342
- 'is_rtl' => is_rtl(),
1343
- 'user_follows' => $userFollows,
 
1344
  'current_user_email' => $currentUserEmail,
1345
- 'comment_author_email' => $currentUserEmail,
1346
- 'is_user_logged_in' => $isUserLoggedIn,
1347
  'is_share_enabled' => $this->optionsSerialized->isShareEnabled(),
 
 
 
 
 
 
 
 
 
1348
  );
 
 
 
 
 
 
 
 
 
 
 
 
1349
  return apply_filters('wpdiscuz_comment_list_args', $args);
1350
  }
1351
 
@@ -1360,7 +1365,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
1360
  } elseif ($roleName == 'post_author') {
1361
  $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Author', 'wpdiscuz');
1362
  } elseif ($roleName == 'editor') {
1363
- $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : ucfirst(str_replace('_', ' ', $roleName));
1364
  } else {
1365
  $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Member', 'wpdiscuz');
1366
  }
@@ -1376,11 +1381,7 @@ class WpdiscuzCore implements WpDiscuzConstants {
1376
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
1377
  $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
1378
  if ($postId) {
1379
- $currentUser = WpdiscuzHelper::getCurrentUser();
1380
  $commentListArgs = $this->getCommentListArgs($postId);
1381
- $commentListArgs['current_user'] = $currentUser;
1382
- $this->form = $this->wpdiscuzForm->getForm($postId);
1383
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
1384
  $cArgs = $this->getDefaultCommentsArgs($postId);
1385
  $cArgs['parent'] = $commentId;
1386
  $cArgs['limit'] = 0;
@@ -1390,15 +1391,13 @@ class WpdiscuzCore implements WpDiscuzConstants {
1390
  'status' => $cArgs['status'],
1391
  'orderby' => $cArgs['orderby'],
1392
  ));
1393
- $countChildren = count($children);
1394
- $commentListArgs['wpdiscuz_child_count_' . $comment->comment_ID] = $countChildren;
1395
- $commentListArgs['wpdiscuz_hide_child_count_' . $comment->comment_ID] = 'wpdiscuz-hidden';
1396
  $comments = array_merge(array($comment), $children);
1397
  if ($comments) {
1398
  $response['code'] = 1;
1399
  $response['data'] = wp_list_comments($commentListArgs, $comments);
1400
  $response['callbackFunctions'] = array();
1401
- $response = apply_filters('wpdiscuz_wmu_lightbox', $response);
1402
  }
1403
  }
1404
  wp_die(json_encode($response));
@@ -1411,8 +1410,12 @@ class WpdiscuzCore implements WpDiscuzConstants {
1411
  $commentId = $this->dbManager->getMostReactedCommentId($postId);
1412
  $comment = get_comment($commentId);
1413
  if ($comment && $comment->comment_post_ID == $postId) {
1414
- $currentUser = WpdiscuzHelper::getCurrentUser();
1415
- $parentComment = $this->helperOptimization->getCommentRoot($commentId);
 
 
 
 
1416
  $tree = $parentComment->get_children(array(
1417
  'format' => 'flat',
1418
  'status' => $this->commentsArgs['status'],
@@ -1422,15 +1425,12 @@ class WpdiscuzCore implements WpDiscuzConstants {
1422
  $commentListArgs = $this->getCommentListArgs($postId);
1423
  $commentListArgs['isSingle'] = true;
1424
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
1425
- $commentListArgs['current_user'] = $currentUser;
1426
- $this->form = $this->wpdiscuzForm->getForm($postId);
1427
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
1428
  $response['code'] = 1;
1429
  $response['message'] = wp_list_comments($commentListArgs, $comments);
1430
  $response['commentId'] = $commentId;
1431
  $response['parentCommentID'] = $parentComment->comment_ID;
1432
  $response['callbackFunctions'] = array();
1433
- $response = apply_filters('wpdiscuz_wmu_lightbox', $response);
1434
  }
1435
  }
1436
  wp_die(json_encode($response));
@@ -1457,8 +1457,12 @@ class WpdiscuzCore implements WpDiscuzConstants {
1457
  }
1458
 
1459
  if ($hottestCommentId && $hottestChildren) {
1460
- $currentUser = WpdiscuzHelper::getCurrentUser();
1461
- $parentComment = $this->helperOptimization->getCommentRoot($hottestCommentId);
 
 
 
 
1462
  $tree = $parentComment->get_children(array(
1463
  'format' => 'flat',
1464
  'status' => $this->commentsArgs['status'],
@@ -1468,14 +1472,11 @@ class WpdiscuzCore implements WpDiscuzConstants {
1468
  $commentListArgs = $this->getCommentListArgs($postId);
1469
  $commentListArgs['isSingle'] = true;
1470
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
1471
- $commentListArgs['current_user'] = $currentUser;
1472
- $this->form = $this->wpdiscuzForm->getForm($postId);
1473
- $commentListArgs['can_user_comment'] = $this->form ? $this->form->isUserCanComment($currentUser, $postId) : true;
1474
  $response['code'] = 1;
1475
  $response['message'] = wp_list_comments($commentListArgs, $comments);
1476
  $response['commentId'] = $hottestCommentId;
1477
  $response['callbackFunctions'] = array();
1478
- $response = apply_filters('wpdiscuz_wmu_lightbox', $response);
1479
  }
1480
  }
1481
  wp_die(json_encode($response));
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: 5.3.0
7
  * Author: gVectors Team (A. Chakhoyan, G. Zakaryan, H. Martirosyan)
8
  * Author URI: https://gvectors.com/
9
  * Plugin URI: http://wpdiscuz.com/
18
  define('WPDISCUZ_DIR_PATH', dirname(__FILE__));
19
  define('WPDISCUZ_DIR_NAME', basename(WPDISCUZ_DIR_PATH));
20
 
21
+ include_once WPDISCUZ_DIR_PATH . '/includes/interface.WpDiscuzConstants.php';
22
+ include_once WPDISCUZ_DIR_PATH . '/utils/functions.php';
23
+ include_once WPDISCUZ_DIR_PATH . '/options/class.WpdiscuzOptions.php';
24
+ include_once WPDISCUZ_DIR_PATH . '/options/class.WpdiscuzOptionsSerialized.php';
25
+ include_once WPDISCUZ_DIR_PATH . '/utils/class.WpdiscuzHelper.php';
26
+ include_once WPDISCUZ_DIR_PATH . '/utils/class.WpdiscuzHelperEmail.php';
27
+ include_once WPDISCUZ_DIR_PATH . '/utils/class.WpdiscuzHelperOptimization.php';
28
+ include_once WPDISCUZ_DIR_PATH . '/includes/class.WpdiscuzDBManager.php';
29
+ include_once WPDISCUZ_DIR_PATH . '/includes/class.WpdiscuzCss.php';
30
+ include_once WPDISCUZ_DIR_PATH . '/forms/wpDiscuzForm.php';
31
+ include_once WPDISCUZ_DIR_PATH . '/utils/class.WpdiscuzCache.php';
32
+ include_once WPDISCUZ_DIR_PATH . '/utils/class.WpdiscuzHelperAjax.php';
33
 
34
  class WpdiscuzCore implements WpDiscuzConstants {
35
 
55
  private static $_instance = null;
56
 
57
  private function __construct() {
58
+ if (!is_admin() && !session_id()) {
59
+ session_start();
60
+ }
61
  $this->version = get_option(self::OPTION_SLUG_VERSION, '1.0.0');
62
  $this->dbManager = new WpdiscuzDBManager();
63
  $this->optionsSerialized = new WpdiscuzOptionsSerialized($this->dbManager);
276
  }
277
 
278
  public function updateAutomatically() {
 
279
  $messageArray = array('code' => 0);
280
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
281
  $loadLastCommentId = isset($_POST['loadLastCommentId']) ? intval($_POST['loadLastCommentId']) : 0;
282
  $visibleCommentIds = isset($_POST['visibleCommentIds']) ? $_POST['visibleCommentIds'] : '';
 
 
283
  if ($visibleCommentIds && $postId && $loadLastCommentId) {
284
  $cArgs = $this->getDefaultCommentsArgs($postId);
285
  $lastCommentId = $this->dbManager->getLastCommentId($cArgs);
289
  $messageArray['loadLastCommentId'] = $lastCommentId;
290
  $commentListArgs = $this->getCommentListArgs($postId);
291
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
292
+ $sentEmail = isset($_POST['email']) ? trim($_POST['email']) : '';
293
+ $email = !empty($commentListArgs['current_user']->ID) ? $commentListArgs['current_user']->user_email : $sentEmail;
 
294
  $newCommentIds = $this->dbManager->getNewCommentIds($cArgs, $loadLastCommentId, $email);
295
+ $newCommentIds = apply_filters('wpdiscuz_live_update_new_comment_ids', $newCommentIds, $postId, $commentListArgs['current_user']);
296
  if ($this->optionsSerialized->commentListUpdateType == 1) {
297
  $messageArray['message'] = array();
298
  foreach ($newCommentIds as $newCommentId) {
346
  $newCommentIds = isset($_POST['newCommentIds']) ? trim($_POST['newCommentIds']) : '';
347
 
348
  if ($postId && $newCommentIds) {
 
349
  $messageArray['code'] = 1;
350
  $newCommentIds = explode(',', trim($newCommentIds, ','));
351
  $postId = trim(intval($postId));
352
  $commentListArgs = $this->getCommentListArgs($postId);
353
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
 
 
 
354
  $messageArray['message'] = array();
355
  foreach ($newCommentIds as $newCommentId) {
356
  $comment = get_comment($newCommentId);
368
  $uniqueId = isset($_POST['wpdiscuz_unique_id']) ? trim($_POST['wpdiscuz_unique_id']) : '';
369
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : '';
370
 
371
+ if (!current_user_can('moderate_comments') && $key = trim($this->optionsSerialized->antispamKey)) {
372
+ if (!isset($_POST['ahk']) || (!($ahk = trim($_POST['ahk'])) || $key != $ahk)) {
373
+ die(__('We are sorry, but this comment cannot be posted. Please try later.', 'wpdiscuz'));
374
+ }
 
 
375
  }
376
 
377
  if ($uniqueId && $postId) {
462
  $form->saveCommentMeta($new_comment_id);
463
  $newComment = get_comment($new_comment_id);
464
  $held_moderate = 1;
465
+ if ($newComment->comment_approved === '1') {
466
  $held_moderate = 0;
467
  }
468
  if ($notificationType == WpdiscuzCore::SUBSCRIPTION_POST && class_exists('Prompt_Comment_Form_Handling') && $this->optionsSerialized->usePostmaticForCommentNotification) {
497
  }
498
 
499
  $commentListArgs = $this->getCommentListArgs($postId);
 
500
  $commentListArgs['addComment'] = $commentDepth;
501
  $commentListArgs['comment_author_email'] = $email;
 
 
502
  $messageArray['message'] = wp_list_comments($commentListArgs, array($newComment));
503
  $messageArray['message'] = wp_unslash($messageArray['message']);
504
  } else {
602
  $commentReadMoreLimit = $this->optionsSerialized->commentReadMoreLimit;
603
  if (strstr($commentContent, '[/spoiler]')) {
604
  $commentReadMoreLimit = 0;
605
+ $commentContent = WpdiscuzHelper::spoiler($commentContent);
606
  }
607
  if ($commentReadMoreLimit && count(explode(' ', strip_tags($commentContent))) > $commentReadMoreLimit) {
608
+ $commentContent = WpdiscuzHelper::getCommentExcerpt($commentContent, $uniqueId, $this->optionsSerialized);
609
  }
610
 
611
  $commentHtml = '<div class="wc-comment-text">' . $commentContent;
612
+ if ($comment->comment_approved === '0') {
613
  $commentHtml .= '<p class="wc_held_for_moderate">' . $this->optionsSerialized->phrases['wc_held_for_moderate'] . '</p>';
614
  }
615
  $commentHtml .= '</div>';
616
+ if ($this->optionsSerialized->enableTwitterShare) {
617
+ $commentLink = get_comment_link($comment);
618
+ $messageArray['twitterShareLink'] = 'https://twitter.com/intent/tweet?text=' . $this->helper->getTwitterShareContent($commentHtml, $commentLink) . '&url=' . urlencode($commentLink);
619
+ }
620
  $form->renderFrontCommentMetaHtml($comment->comment_ID, $commentHtml);
621
  $messageArray['message'] = $commentHtml;
622
  }
639
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
640
  if ($commentId && $postId && $comment && $comment->comment_post_ID == $postId) {
641
  $commentListArgs = $this->getCommentListArgs($postId);
642
+ $this->commentsArgs = $this->getDefaultCommentsArgs($postId);
643
+ if ($comment->comment_approved === '1' || ($comment->comment_approved === '0' && $commentListArgs['high_level_user'])) {
644
+ $commentStatusIn = array('1');
645
+ if ($this->commentsArgs['status'] === 'all') {
646
+ $commentStatusIn[] = '0';
647
+ }
648
+ if ($parentComment = $this->helperOptimization->getCommentRoot($commentId, $commentStatusIn)) {
649
+ $tree = $parentComment->get_children(array(
650
+ 'format' => 'flat',
651
+ 'status' => $this->commentsArgs['status'],
652
+ 'orderby' => $this->commentsArgs['orderby']
653
+ ));
654
+ $comments = array_merge(array($parentComment), $tree);
655
+
656
+ $commentListArgs['isSingle'] = true;
657
+ $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
658
+ $response['message'] = wp_list_comments($commentListArgs, $comments);
659
+ $response['parentCommentID'] = $parentComment->comment_ID;
660
+ $response['callbackFunctions'] = array();
661
+ $response = apply_filters('wpdiscuz_image_callbacks', $response);
662
+ }
663
  }
664
  }
665
  wp_die(json_encode($response));
689
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
690
  $lastParentId = isset($_POST['lastParentId']) ? intval($_POST['lastParentId']) : 0;
691
  if ($lastParentId >= 0 && $postId) {
 
692
  $limit = ($this->optionsSerialized->commentListLoadType == 1) ? 0 : $this->optionsSerialized->wordpressCommentPerPage;
693
  $args = array('limit' => $limit);
694
  $orderBy = isset($_POST['orderBy']) ? trim($_POST['orderBy']) : '';
700
  $args['last_parent_id'] = $lastParentId;
701
  }
702
  $args['post_id'] = $postId;
 
703
  $commentData = $this->getWPComments($args);
704
  $commentData['loadLastCommentId'] = $this->dbManager->getLastCommentId($this->commentsArgs);
705
  $commentData['callbackFunctions'] = array();
706
+ $commentData = apply_filters('wpdiscuz_image_callbacks', $commentData);
707
  wp_die(json_encode($commentData));
708
  }
709
  }
804
  $messageArray['is_show_load_more'] = $commentData['is_show_load_more'];
805
  $messageArray['message'] = $commentData['comment_list'];
806
  $messageArray['callbackFunctions'] = array();
807
+ $messageArray = apply_filters('wpdiscuz_image_callbacks', $messageArray);
808
  }
809
  wp_die(json_encode($messageArray));
810
  }
813
  * loads the comment content on click via ajax
814
  */
815
  public function readMore() {
816
+ $response = array('code' => 0);
817
  $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
818
  if ($commentId) {
819
  $comment = get_comment($commentId);
823
  $commentContent = $this->helper->makeClickable($commentContent);
824
  }
825
  $commentContent = apply_filters('comment_text', $commentContent, $comment);
826
+ $response['code'] = 1;
827
+ $response['message'] = $commentContent;
828
+ $response['callbackFunctions'] = array();
829
+ $response = apply_filters('wpdiscuz_image_callbacks', $response);
830
  } else {
831
+ $response['message'] = 'error';
832
  }
833
+ wp_die(json_encode($response));
834
  }
835
 
836
  /**
838
  */
839
  public function getWPComments($args = array()) {
840
  global $post;
841
+ $postId = !empty($post->ID) ? $post->ID : $args['post_id'];
 
842
  $defaults = $this->getDefaultCommentsArgs($postId);
843
  $this->commentsArgs = wp_parse_args($args, $defaults);
 
 
844
  $commentListArgs = $this->getCommentListArgs($this->commentsArgs['post_id']);
845
+ do_action('wpdiscuz_before_getcomments', $this->commentsArgs, $commentListArgs['current_user'], $args);
846
+ $commentData = array();
847
  $commentList = $this->_getWPComments($commentListArgs, $commentData);
 
 
 
 
848
  $wcWpComments = wp_list_comments($commentListArgs, $commentList);
849
  $commentData['comment_list'] = $wcWpComments;
850
  $this->commentsArgs['caller'] = '';
885
  'status' => $this->commentsArgs['status'],
886
  'orderby' => $this->commentsArgs['orderby']
887
  ));
888
+ if ($this->optionsSerialized->isLoadOnlyParentComments) {
889
+ $commentListArgs['wpdiscuz_child_count_' . $parentComment->comment_ID] = count($children);
 
890
  } else {
891
  $commentList = array_merge($commentList, $children);
892
  }
910
  'status' => $this->commentsArgs['status'],
911
  'orderby' => $this->commentsArgs['orderby']
912
  ));
913
+ if ($this->optionsSerialized->isLoadOnlyParentComments) {
914
+ $commentListArgs['wpdiscuz_child_count_' . $parentComment->comment_ID] = count($children);
915
+ } else {
916
+ $commentList = array_merge($commentList, $children);
 
 
 
917
  }
918
  }
919
  }
952
  if (isset($qObj->query_vars['caller']) && $qObj->query_vars['caller'] == 'wpdiscuz') {
953
  global $wpdb, $post, $user_ID;
954
  $commenter = wp_get_current_commenter();
955
+ $where = "WHERE comment_approved = '1'";
 
 
 
 
 
 
956
  $where .= " AND comment_post_ID = {$post->ID}";
957
+ if ($this->optionsSerialized->wordpressThreadComments) {
958
+ $where .= " AND comment_parent = 0";
959
+ }
960
+ $typesNotIn = array(self::WPDISCUZ_STICKY_COMMENT);
961
+ $typesNotIn = apply_filters('wpdiscuz_found_comments_query', $typesNotIn);
962
+ foreach ($typesNotIn as &$type) {
963
+ $type = esc_sql($type);
964
+ }
965
+ $where .= " AND comment_type NOT IN ('" . implode("','", $typesNotIn) . "')";
966
  $q = "SELECT COUNT(*) FROM {$wpdb->comments} $where";
967
  }
968
  return $q;
1000
  'date_order' => $this->optionsSerialized->wordpressCommentOrder,
1001
  'limit' => $this->optionsSerialized->commentListLoadType == 3 ? 0 : $this->optionsSerialized->wordpressCommentPerPage,
1002
  'is_threaded' => $this->optionsSerialized->wordpressThreadComments,
1003
+ 'status' => !$this->optionsSerialized->wordpressIsPaginate && current_user_can('moderate_comments') ? 'all' : 'approve',
1004
  'comment__in' => '',
1005
  'update_comment_meta_cache' => false,
1006
  'no_found_rows' => false,
1007
  'type__not_in' => array(self::WPDISCUZ_STICKY_COMMENT),
1008
  );
1009
+ if (!$this->optionsSerialized->wordpressIsPaginate) {
1010
+ if ($user_ID) {
1011
+ $args['include_unapproved'] = array($user_ID);
1012
+ } elseif (!empty($commenter['comment_author_email'])) {
1013
+ $args['include_unapproved'] = array($commenter['comment_author_email']);
1014
+ }
1015
  }
1016
  return apply_filters('wpdiscuz_comments_args', $args);
1017
  }
1036
  global $typenow, $pagenow;
1037
  $wp_version = get_bloginfo('version');
1038
  $wpdiscuzPages = apply_filters('wpdiscuz_admin_pages', array(self::PAGE_SETTINGS, self::PAGE_PHRASES, self::PAGE_TOOLS, self::PAGE_ADDONS));
1039
+ wp_register_style('wpdiscuz-font-awesome', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/font-awesome-5.0.6/css/fontawesome-all.min.css'), null, $this->version);
1040
  if ((isset($_GET['page']) && in_array($_GET['page'], $wpdiscuzPages)) || ($typenow == 'wpdiscuz_form') || $pagenow == 'edit-comments.php' || $pagenow == 'comment.php') {
1041
  $args = array(
1042
  'msgConfirmResetOptions' => __('Do you really want to reset all options?', 'wpdiscuz'),
1046
  'msgConfirmPurgeStatisticsCache' => __('Do you really want to delete statistics cache?', 'wpdiscuz'),
1047
  );
1048
 
 
1049
  wp_enqueue_style('wpdiscuz-font-awesome');
1050
  wp_register_style('wpdiscuz-cp-index-css', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/colorpicker/css/index.css'), null, $this->version);
1051
  wp_enqueue_style('wpdiscuz-cp-index-css');
1102
  global $post;
1103
  $this->isWpdiscuzLoaded = $this->helper->isLoadWpdiscuz($post);
1104
  wp_register_style('wpdiscuz-font-awesome', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/font-awesome-5.0.6/css/fontawesome-all.min.css'), null, $this->version);
1105
+ wp_register_style('wpdiscuz-ratings', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz-ratings.css'), null, $this->version);
1106
+ wp_register_style('wpdiscuz-ratings-rtl', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz-ratings-rtl.css'), null, $this->version);
1107
 
1108
  if (!$this->isWpdiscuzLoaded && $this->optionsSerialized->ratingCssOnNoneSingular) {
1109
  if (!$this->optionsSerialized->disableFontAwesome) {
1110
  wp_enqueue_style('wpdiscuz-font-awesome');
1111
  }
 
1112
  wp_enqueue_style('wpdiscuz-ratings');
1113
  if (is_rtl()) {
 
1114
  wp_enqueue_style('wpdiscuz-ratings-rtl');
1115
  }
1116
  }
1128
  wp_enqueue_style('wpdiscuz-frontend-css');
1129
  }
1130
 
1131
+ wp_register_script('wpdiscuz-cookie-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/wpdcookiejs/customcookie.js'), array('jquery'), $this->version, $this->optionsSerialized->isLoadScriptsInFooter);
1132
  wp_enqueue_script('wpdiscuz-cookie-js');
1133
+ wp_register_script('autogrowtextarea-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/autogrow/jquery.autogrowtextarea.min.js'), array('jquery'), $this->version, $this->optionsSerialized->isLoadScriptsInFooter);
1134
  wp_enqueue_script('autogrowtextarea-js');
1135
  $form = $this->wpdiscuzForm->getForm($post->ID);
1136
  $form->initFormMeta();
1139
  $this->wpdiscuzOptionsJs['wc_post_id'] = $post->ID;
1140
  $this->wpdiscuzOptionsJs['loadLastCommentId'] = 0;
1141
  $this->wpdiscuzOptionsJs['lastVisitKey'] = self::COOKIE_LAST_VISIT;
1142
+ if ($this->optionsSerialized->enableLastVisitCookie) {
1143
+ $this->wpdiscuzOptionsJs['lastVisitExpires'] = current_time('timestamp') + MONTH_IN_SECONDS;
1144
+ $this->wpdiscuzOptionsJs['lastVisitCookie'] = $this->getLastVisitCookie();
1145
+ }
1146
  $this->wpdiscuzOptionsJs['isCookiesEnabled'] = has_action('set_comment_cookies');
1147
  if ($this->optionsSerialized->commentListUpdateType) {
1148
  $cArgs = $this->getDefaultCommentsArgs($post->ID);
1150
  }
1151
  $this->wpdiscuzOptionsJs = apply_filters('wpdiscuz_js_options', $this->wpdiscuzOptionsJs, $this->optionsSerialized);
1152
  wp_enqueue_script('jquery-form');
1153
+ wp_register_script('wpdiscuz-ajax-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz.js'), array('jquery'), $this->version, $this->optionsSerialized->isLoadScriptsInFooter);
1154
  wp_enqueue_script('wpdiscuz-ajax-js');
1155
  wp_localize_script('wpdiscuz-ajax-js', 'wpdiscuzAjaxObj', array('url' => admin_url('admin-ajax.php'), 'customAjaxUrl' => plugins_url(WPDISCUZ_DIR_NAME . '/utils/ajax/wpdiscuz-ajax.php'), 'wpdiscuz_options' => $this->wpdiscuzOptionsJs));
1156
 
1157
  if ($this->optionsSerialized->isQuickTagsEnabled) {
1158
  wp_enqueue_script('quicktags');
1159
+ wp_register_script('wpdiscuz-quicktags', plugins_url('/assets/third-party/quicktags/wpdiscuz-quictags.js', __FILE__), null, $this->version, $this->optionsSerialized->isLoadScriptsInFooter);
1160
  wp_enqueue_script('wpdiscuz-quicktags');
1161
  }
1162
 
1168
  );
1169
  wp_register_style('wpdiscuz-user-content-css', plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz-user-content.css'), null, $this->version);
1170
  wp_enqueue_style('wpdiscuz-user-content-css');
1171
+ wp_register_script('wpdiscuz-user-content-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz-user-content.js'), array('jquery'), $this->version, $this->optionsSerialized->isLoadScriptsInFooter);
1172
  wp_enqueue_script('wpdiscuz-user-content-js');
1173
  wp_localize_script('wpdiscuz-user-content-js', 'wpdiscuzUCObj', $ucArgs);
1174
+ wp_register_script('wpdiscuz-lity-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/third-party/lity/lity.js'), array('jquery'), $this->version, $this->optionsSerialized->isLoadScriptsInFooter);
1175
  wp_enqueue_script('wpdiscuz-lity-js');
1176
  }
1177
 
1178
+ do_action('wpdiscuz_front_scripts', $this->optionsSerialized);
1179
  }
1180
  }
1181
 
1269
  global $post;
1270
  if ($this->isWpdiscuzLoaded) {
1271
  $this->form = $this->wpdiscuzForm->getForm($post->ID);
1272
+ add_filter('comments_template', array(&$this, 'addCommentForm'), 9999999);
1273
  }
1274
  }
1275
 
1283
 
1284
  public function getLastVisitCookie() {
1285
  global $post;
1286
+ $lastVisit = '';
1287
  if ($this->isWpdiscuzLoaded) {
1288
+ $lastVisit = current_time('timestamp');
 
 
 
 
1289
  }
1290
  return $lastVisit;
1291
  }
1295
  return $file;
1296
  }
1297
 
1298
+ private function getCommentListArgs($postId) {
1299
  $post = get_post($postId);
1300
  $postsAuthors = ($post->comment_count && (!$this->optionsSerialized->disableProfileURLs || !$this->optionsSerialized->authorTitlesShowHide)) ? $this->dbManager->getPostsAuthors() : array();
1301
  $icons = $this->optionsSerialized->votingButtonsIcon ? explode('|', $this->optionsSerialized->votingButtonsIcon) : array('fa-plus', 'fa-minus');
 
1302
  $currentUser = WpdiscuzHelper::getCurrentUser();
1303
  $currentUserEmail = '';
1304
  $isUserLoggedIn = false;
1305
+ if (!empty($currentUser->ID)) {
1306
  $currentUserEmail = $currentUser->user_email;
1307
  $isUserLoggedIn = true;
1308
  } else if (isset($_COOKIE['comment_author_email_' . COOKIEHASH]) && $_COOKIE['comment_author_email_' . COOKIEHASH]) {
1309
  $currentUserEmail = urldecode(trim($_COOKIE['comment_author_email_' . COOKIEHASH]));
1310
  }
1311
+ $this->form = $this->wpdiscuzForm->getForm($postId);
1312
+ $high_level_user = current_user_can('moderate_comments');
1313
+ $can_stick_or_close = $post->post_author == $currentUser->ID;
1314
+ $post_permalink = get_permalink($postId);
1315
  $args = array(
1316
  'style' => 'div',
1317
  'echo' => false,
1320
  'reverse_children' => !$this->optionsSerialized->reverseChildren,
1321
  'post_author' => $post->post_author,
1322
  'posts_authors' => $postsAuthors,
1323
+ 'voting_icons' => array('like' => $icons[0], 'dislike' => $icons[1]),
1324
+ 'high_level_user' => $high_level_user,
 
 
 
1325
  'avatar_trackback' => apply_filters('wpdiscuz_avatar_trackback', plugins_url(WPDISCUZ_DIR_NAME . '/assets/img/trackback.png')),
1326
+ 'wpdiscuz_gravatar_size' => apply_filters('wpdiscuz_gravatar_size', 64),
1327
+ 'can_stick_or_close' => $can_stick_or_close,
1328
+ 'user_follows' => $this->dbManager->getUserFollows($currentUserEmail),
1329
+ 'current_user' => $currentUser,
1330
  'current_user_email' => $currentUserEmail,
 
 
1331
  'is_share_enabled' => $this->optionsSerialized->isShareEnabled(),
1332
+ 'post_permalink' => $post_permalink,
1333
+ 'can_user_reply' => comments_open($post->ID) && $this->optionsSerialized->wordpressThreadComments && (($this->form ? $this->form->isUserCanComment($currentUser, $postId) : true) || $high_level_user),
1334
+ 'can_user_follow' => $this->optionsSerialized->isFollowActive && $isUserLoggedIn && !empty($currentUserEmail),
1335
+ 'can_user_vote' => $currentUser->ID || $this->optionsSerialized->isGuestCanVote,
1336
+ 'wc_stick_btn' => $this->optionsSerialized->enableStickButton && $high_level_user || $can_stick_or_close ? '<span class="wc_stick_btn wc-cta-button"><span class="wc_stick_text">%s</span></span>' : '',
1337
+ 'wc_close_btn' => $this->optionsSerialized->enableCloseButton && $high_level_user || $can_stick_or_close ? '<span class="wc_close_btn wc-cta-button"><span class="wc_close_text">%s</span></span>' : '',
1338
+ 'share_buttons' => '',
1339
+ 'last_visit' => $this->optionsSerialized->enableLastVisitCookie && isset($_COOKIE[self::COOKIE_LAST_VISIT]) ? $_COOKIE[self::COOKIE_LAST_VISIT] : '',
1340
+ 'walker' => $this->wpdiscuzWalker,
1341
  );
1342
+ if ($this->optionsSerialized->enableFbShare && $this->optionsSerialized->fbAppID) {
1343
+ $args['share_buttons'] .= '<span class="wc_fb"><i class="fab fa-facebook-f wpf-cta" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_share_facebook'] . '"></i></span>';
1344
+ }
1345
+ if ($this->optionsSerialized->enableGoogleShare) {
1346
+ $args['share_buttons'] .= '<a class="wc_go" target="_blank" href="https://plus.google.com/share?url=' . $post_permalink . '" title="' . $this->optionsSerialized->phrases['wc_share_google'] . '"><i class="fab fa-google wpf-cta" aria-hidden="true"></i></a>';
1347
+ }
1348
+ if ($this->optionsSerialized->enableVkShare) {
1349
+ $args['share_buttons'] .= '<a class="wc_vk" target="_blank" href="http://vk.com/share.php?url=' . $post_permalink . '" title="' . $this->optionsSerialized->phrases['wc_share_vk'] . '"><i class="fab fa-vk wpf-cta" aria-hidden="true"></i></a>';
1350
+ }
1351
+ if ($this->optionsSerialized->enableOkShare) {
1352
+ $args['share_buttons'] .= '<a class="wc_ok" target="_blank" href="http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl=' . $post_permalink . '" title=""><i class="fab fa-odnoklassniki wpf-cta" aria-hidden="true"></i></a>';
1353
+ }
1354
  return apply_filters('wpdiscuz_comment_list_args', $args);
1355
  }
1356
 
1365
  } elseif ($roleName == 'post_author') {
1366
  $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Author', 'wpdiscuz');
1367
  } elseif ($roleName == 'editor') {
1368
+ $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Editor', 'wpdiscuz');
1369
  } else {
1370
  $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Member', 'wpdiscuz');
1371
  }
1381
  $postId = isset($_POST['postId']) ? intval($_POST['postId']) : 0;
1382
  $commentId = isset($_POST['commentId']) ? intval($_POST['commentId']) : 0;
1383
  if ($postId) {
 
1384
  $commentListArgs = $this->getCommentListArgs($postId);
 
 
 
1385
  $cArgs = $this->getDefaultCommentsArgs($postId);
1386
  $cArgs['parent'] = $commentId;
1387
  $cArgs['limit'] = 0;
1391
  'status' => $cArgs['status'],
1392
  'orderby' => $cArgs['orderby'],
1393
  ));
1394
+ $commentListArgs['wpdiscuz_child_count_' . $comment->comment_ID] = count($children);
 
 
1395
  $comments = array_merge(array($comment), $children);
1396
  if ($comments) {
1397
  $response['code'] = 1;
1398
  $response['data'] = wp_list_comments($commentListArgs, $comments);
1399
  $response['callbackFunctions'] = array();
1400
+ $response = apply_filters('wpdiscuz_image_callbacks', $response);
1401
  }
1402
  }
1403
  wp_die(json_encode($response));
1410
  $commentId = $this->dbManager->getMostReactedCommentId($postId);
1411
  $comment = get_comment($commentId);
1412
  if ($comment && $comment->comment_post_ID == $postId) {
1413
+ $this->commentsArgs = $this->getDefaultCommentsArgs($postId);
1414
+ $commentStatusIn = array('1');
1415
+ if ($this->commentsArgs['status'] === 'all') {
1416
+ $commentStatusIn[] = '0';
1417
+ }
1418
+ $parentComment = $this->helperOptimization->getCommentRoot($commentId, $commentStatusIn);
1419
  $tree = $parentComment->get_children(array(
1420
  'format' => 'flat',
1421
  'status' => $this->commentsArgs['status'],
1425
  $commentListArgs = $this->getCommentListArgs($postId);
1426
  $commentListArgs['isSingle'] = true;
1427
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
 
 
 
1428
  $response['code'] = 1;
1429
  $response['message'] = wp_list_comments($commentListArgs, $comments);
1430
  $response['commentId'] = $commentId;
1431
  $response['parentCommentID'] = $parentComment->comment_ID;
1432
  $response['callbackFunctions'] = array();
1433
+ $response = apply_filters('wpdiscuz_image_callbacks', $response);
1434
  }
1435
  }
1436
  wp_die(json_encode($response));
1457
  }
1458
 
1459
  if ($hottestCommentId && $hottestChildren) {
1460
+ $this->commentsArgs = $this->getDefaultCommentsArgs($postId);
1461
+ $commentStatusIn = array('1');
1462
+ if ($this->commentsArgs['status'] === 'all') {
1463
+ $commentStatusIn[] = '0';
1464
+ }
1465
+ $parentComment = $this->helperOptimization->getCommentRoot($hottestCommentId, $commentStatusIn);
1466
  $tree = $parentComment->get_children(array(
1467
  'format' => 'flat',
1468
  'status' => $this->commentsArgs['status'],
1472
  $commentListArgs = $this->getCommentListArgs($postId);
1473
  $commentListArgs['isSingle'] = true;
1474
  $commentListArgs['new_loaded_class'] = 'wc-new-loaded-comment';
 
 
 
1475
  $response['code'] = 1;
1476
  $response['message'] = wp_list_comments($commentListArgs, $comments);
1477
  $response['commentId'] = $hottestCommentId;
1478
  $response['callbackFunctions'] = array();
1479
+ $response = apply_filters('wpdiscuz_image_callbacks', $response);
1480
  }
1481
  }
1482
  wp_die(json_encode($response));
forms/wpDiscuzForm.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- include_once 'autoload.php';
3
 
4
  use wpdFormAttr\FormConst\wpdFormConst;
5
  use wpdFormAttr\Form;
@@ -20,7 +20,7 @@ class wpDiscuzForm implements wpdFormConst {
20
  $this->options = $options;
21
  $this->pluginVersion = $pluginVersion;
22
  $this->form = new Form($this->options);
23
- $this->initAdminPhrazes();
24
  $this->formContentTypeRel = $options->formContentTypeRel;
25
  $this->formPostRel = $options->formPostRel;
26
  SocialLogin::getInstance($this->options);
@@ -212,11 +212,11 @@ class wpDiscuzForm implements wpdFormConst {
212
 
213
  public function wpdiscuzFieldsDialogContent() {
214
  $this->canManageOptions();
215
- include_once 'wpdFormAttr/html/admin-form-fields-list.php';
216
  wp_die();
217
  }
218
 
219
- private function initAdminPhrazes() {
220
  $this->wpdFormAdminOptions = array(
221
  'wpdiscuz_form_structure' => wpdFormConst::WPDISCUZ_META_FORMS_STRUCTURE,
222
  'wpd_form_fields' => __('Field Types', 'wpdiscuz'),
@@ -292,9 +292,9 @@ class wpDiscuzForm implements wpdFormConst {
292
  $formID = 0;
293
  if (!$this->form->getFormID()) {
294
  $postType = get_post_type($postID);
295
- if (key_exists($postID, $this->formPostRel)) {
296
  $formID = $this->formPostRel[$postID];
297
- } elseif (is_string($postType) && key_exists($postType, $this->formContentTypeRel)) {
298
  $tempContentTypeRel = $this->formContentTypeRel[$postType];
299
  $defaultFormID = array_shift($tempContentTypeRel);
300
  $lang = get_locale();
@@ -496,7 +496,7 @@ class wpDiscuzForm implements wpdFormConst {
496
  public function deleteCommentRating($commentId) {
497
  $rating = get_comment_meta($commentId, 'rating', true);
498
  $comment = get_comment($commentId);
499
- if ($rating && $comment->comment_approved == 1) {
500
  $this->updatePostRating($comment, -1);
501
  }
502
  }
@@ -529,7 +529,7 @@ class wpDiscuzForm implements wpdFormConst {
529
  $postRatings = array($metaKey => array());
530
  }
531
  if ($commentFieldRating) {
532
- if (key_exists($commentFieldRating, $postRatings[$metaKey])) {
533
  $postRatings[$metaKey][$commentFieldRating] = $postRatings[$metaKey][$commentFieldRating] + $difference;
534
  } else {
535
  $postRatings[$metaKey][$commentFieldRating] = $difference;
1
  <?php
2
+ include_once WPDISCUZ_DIR_PATH . '/forms/autoload.php';
3
 
4
  use wpdFormAttr\FormConst\wpdFormConst;
5
  use wpdFormAttr\Form;
20
  $this->options = $options;
21
  $this->pluginVersion = $pluginVersion;
22
  $this->form = new Form($this->options);
23
+ $this->initAdminPhrases();
24
  $this->formContentTypeRel = $options->formContentTypeRel;
25
  $this->formPostRel = $options->formPostRel;
26
  SocialLogin::getInstance($this->options);
212
 
213
  public function wpdiscuzFieldsDialogContent() {
214
  $this->canManageOptions();
215
+ include_once WPDISCUZ_DIR_PATH . '/forms/wpdFormAttr/html/admin-form-fields-list.php';
216
  wp_die();
217
  }
218
 
219
+ private function initAdminPhrases() {
220
  $this->wpdFormAdminOptions = array(
221
  'wpdiscuz_form_structure' => wpdFormConst::WPDISCUZ_META_FORMS_STRUCTURE,
222
  'wpd_form_fields' => __('Field Types', 'wpdiscuz'),
292
  $formID = 0;
293
  if (!$this->form->getFormID()) {
294
  $postType = get_post_type($postID);
295
+ if (isset($this->formPostRel[$postID])) {
296
  $formID = $this->formPostRel[$postID];
297
+ } elseif (is_string($postType) && isset($this->formContentTypeRel[$postType])) {
298
  $tempContentTypeRel = $this->formContentTypeRel[$postType];
299
  $defaultFormID = array_shift($tempContentTypeRel);
300
  $lang = get_locale();
496
  public function deleteCommentRating($commentId) {
497
  $rating = get_comment_meta($commentId, 'rating', true);
498
  $comment = get_comment($commentId);
499
+ if ($rating && $comment->comment_approved === '1') {
500
  $this->updatePostRating($comment, -1);
501
  }
502
  }
529
  $postRatings = array($metaKey => array());
530
  }
531
  if ($commentFieldRating) {
532
+ if (isset($postRatings[$metaKey][$commentFieldRating])) {
533
  $postRatings[$metaKey][$commentFieldRating] = $postRatings[$metaKey][$commentFieldRating] + $difference;
534
  } else {
535
  $postRatings[$metaKey][$commentFieldRating] = $difference;
forms/wpdFormAttr/Field/AgreementCheckbox.php CHANGED
@@ -55,10 +55,10 @@ class AgreementCheckbox extends Field {
55
  }
56
  $showAagainClass = $data['donot_show_again_if_checked'] == 1 ? ' wpd_agreement_hide ' : '';
57
  $uniqueId = uniqid();
58
- $html = '<tr><td class="first">';
59
  $html .= '</td><td>';
60
- $required = $data['required'] ? ' wpd-required-group ' : '';
61
- $html .= '<div class="wpdiscuz-item ' . $required . ' wpd-field-group">';
62
  $html .= '<input checked="checked" id="' . $key . '-1_' . $uniqueId . '" type="checkbox" name="' . $key . '" value="1" class="' . $key . ' wpd-field wpd-agreement-checkbox '.$showAagainClass.'" > <label class="wpd-field-label wpd-cursor-pointer" for="' . $key . '-1_' . $uniqueId . '">' . $data['label'] . '</label>';
63
  $html .= '</div>';
64
  $html .= '</td></tr >';
@@ -70,9 +70,9 @@ class AgreementCheckbox extends Field {
70
  return;
71
  $showAagainClass = $args['donot_show_again_if_checked'] == 1 ? ' wpd_agreement_hide ' : '';
72
  $hasDesc = $args['desc'] ? true : false;
73
- $required = $args['required'] ? ' wpd-required-group ' : '';
74
  ?>
75
- <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox wpd-field-agreement wpd-field-single <?php echo $required; ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
76
  <div class="wpd-field-group-title">
77
  <div class="wpd-item">
78
  <input id="<?php echo $name . '-1_' . $uniqueId; ?>" type="checkbox" name="<?php echo $name; ?>" value="1" class="<?php echo $name; ?> wpd-field wpd-agreement-checkbox <?php echo $showAagainClass; ?>" <?php echo $args['required'] ? 'required' : ''; ?>>
@@ -142,7 +142,7 @@ class AgreementCheckbox extends Field {
142
  }
143
 
144
  private function displayField($name, $args) {
145
- if ($args['donot_show_again_if_checked'] == 1 && isset($_COOKIE) && key_exists($name . '_' . COOKIEHASH, $_COOKIE)) {
146
  return false;
147
  }
148
  return true;
55
  }
56
  $showAagainClass = $data['donot_show_again_if_checked'] == 1 ? ' wpd_agreement_hide ' : '';
57
  $uniqueId = uniqid();
58
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
59
  $html .= '</td><td>';
60
+ $required = $data['required'] ? ' wpd-required-group' : '';
61
+ $html .= '<div class="wpdiscuz-item' . $required . ' wpd-field-group">';
62
  $html .= '<input checked="checked" id="' . $key . '-1_' . $uniqueId . '" type="checkbox" name="' . $key . '" value="1" class="' . $key . ' wpd-field wpd-agreement-checkbox '.$showAagainClass.'" > <label class="wpd-field-label wpd-cursor-pointer" for="' . $key . '-1_' . $uniqueId . '">' . $data['label'] . '</label>';
63
  $html .= '</div>';
64
  $html .= '</td></tr >';
70
  return;
71
  $showAagainClass = $args['donot_show_again_if_checked'] == 1 ? ' wpd_agreement_hide ' : '';
72
  $hasDesc = $args['desc'] ? true : false;
73
+ $required = $args['required'] ? ' wpd-required-group' : '';
74
  ?>
75
+ <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox wpd-field-agreement wpd-field-single <?php echo $name, '-wrapper', $required, ($hasDesc ? ' wpd-has-desc' : ''); ?>">
76
  <div class="wpd-field-group-title">
77
  <div class="wpd-item">
78
  <input id="<?php echo $name . '-1_' . $uniqueId; ?>" type="checkbox" name="<?php echo $name; ?>" value="1" class="<?php echo $name; ?> wpd-field wpd-agreement-checkbox <?php echo $showAagainClass; ?>" <?php echo $args['required'] ? 'required' : ''; ?>>
142
  }
143
 
144
  private function displayField($name, $args) {
145
+ if ($args['donot_show_again_if_checked'] == 1 && key_exists($name . '_' . COOKIEHASH, $_COOKIE)) {
146
  return false;
147
  }
148
  return true;
forms/wpdFormAttr/Field/CheckboxField.php CHANGED
@@ -65,11 +65,11 @@ class CheckboxField extends Field {
65
  }
66
  $valuesMeta = maybe_unserialize($value);
67
  $values = is_array($valuesMeta) ? $valuesMeta : array();
68
- $html = '<tr><td class="first">';
69
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
70
  $html .= '</td><td>';
71
- $required = $data['required'] ? ' wpd-required-group ' : '';
72
- $html .= '<div class="wpdiscuz-item ' . $required . ' wpd-field-group">';
73
  foreach ($data['values'] as $index => $val) {
74
  $uniqueId = uniqid();
75
  $checked = in_array($val, $values) ? ' checked="checked" ' : '';
@@ -85,11 +85,11 @@ class CheckboxField extends Field {
85
  if (empty($args['values']) || (!$isMainForm && !$args['is_show_sform']))
86
  return;
87
  $hasDesc = $args['desc'] ? true : false;
88
- $required = $args['required'] ? ' wpd-required-group ' : '';
89
 
90
  if (count($args['values']) == 1):
91
  ?>
92
- <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox wpd-field-single <?php echo $required; ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
93
  <div class="wpd-field-group-title">
94
  <div class="wpd-item">
95
  <input id="<?php echo $name . '-1_' . $uniqueId; ?>" type="checkbox" name="<?php echo $name; ?>[]" value="1" class="<?php echo $name; ?> wpd-field" <?php echo $args['required'] ? 'required' : ''; ?>>
@@ -103,7 +103,7 @@ class CheckboxField extends Field {
103
  <?php } ?>
104
  </div>
105
  <?php else: ?>
106
- <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox <?php echo $required; ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
107
  <div class="wpd-field-group-title"><?php _e($args['name'], 'wpdiscuz'); ?></div>
108
  <?php if ($args['desc']) { ?>
109
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo esc_html($args['desc']); ?></span></div>
@@ -126,9 +126,6 @@ class CheckboxField extends Field {
126
  }
127
 
128
  public function frontHtml($value, $args) {
129
- if (!$args['is_show_on_comment']) {
130
- return '';
131
- }
132
  $html = '<div class="wpd-custom-field wpd-cf-text">';
133
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_checkbox', implode(' , ', $value), $args) . '</div>';
134
  $html .= '</div>';
65
  }
66
  $valuesMeta = maybe_unserialize($value);
67
  $values = is_array($valuesMeta) ? $valuesMeta : array();
68
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
69
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
70
  $html .= '</td><td>';
71
+ $required = $data['required'] ? ' wpd-required-group' : '';
72
+ $html .= '<div class="wpdiscuz-item' . $required . ' wpd-field-group">';
73
  foreach ($data['values'] as $index => $val) {
74
  $uniqueId = uniqid();
75
  $checked = in_array($val, $values) ? ' checked="checked" ' : '';
85
  if (empty($args['values']) || (!$isMainForm && !$args['is_show_sform']))
86
  return;
87
  $hasDesc = $args['desc'] ? true : false;
88
+ $required = $args['required'] ? ' wpd-required-group' : '';
89
 
90
  if (count($args['values']) == 1):
91
  ?>
92
+ <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox wpd-field-single <?php echo $name, '-wrapper', $required, ($hasDesc ? ' wpd-has-desc' : ''); ?>">
93
  <div class="wpd-field-group-title">
94
  <div class="wpd-item">
95
  <input id="<?php echo $name . '-1_' . $uniqueId; ?>" type="checkbox" name="<?php echo $name; ?>[]" value="1" class="<?php echo $name; ?> wpd-field" <?php echo $args['required'] ? 'required' : ''; ?>>
103
  <?php } ?>
104
  </div>
105
  <?php else: ?>
106
+ <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox <?php echo $name, '-wrapper', $required, ($hasDesc ? ' wpd-has-desc' : ''); ?>">
107
  <div class="wpd-field-group-title"><?php _e($args['name'], 'wpdiscuz'); ?></div>
108
  <?php if ($args['desc']) { ?>
109
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo esc_html($args['desc']); ?></span></div>
126
  }
127
 
128
  public function frontHtml($value, $args) {
 
 
 
129
  $html = '<div class="wpd-custom-field wpd-cf-text">';
130
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_checkbox', implode(' , ', $value), $args) . '</div>';
131
  $html .= '</div>';
forms/wpdFormAttr/Field/ColorField.php CHANGED
@@ -59,7 +59,7 @@ class ColorField extends Field {
59
  if ($comment->comment_parent && !$data['is_show_sform']) {
60
  return '';
61
  }
62
- $html = '<tr><td class="first">';
63
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
@@ -77,15 +77,15 @@ class ColorField extends Field {
77
  $hasIcon = $args['icon'] ? true : false;
78
  $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
- <div class="wpdiscuz-item wpd-field-color <?php echo $hasIcon ? 'wpd-has-icon' : '' ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
81
  <div class="wpd-field-title">
82
  <?php echo $args['name']; ?>
83
  </div>
84
  <?php if ($hasIcon) { ?>
85
- <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
86
  <?php } ?>
87
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
88
- <input <?php echo $required; ?> class="<?php echo $name; ?> wpd-field wpd-field-color" type="color" name="<?php echo $name; ?>" value="" placeholder="#ff8040" pattern="^\#[A-Za-z0-9]{6}$" title="#ff8040">
89
  <?php if ($args['desc']) { ?>
90
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
91
  <?php } ?>
@@ -94,9 +94,6 @@ class ColorField extends Field {
94
  }
95
 
96
  public function frontHtml($value, $args) {
97
- if (!$args['is_show_on_comment']) {
98
- return '';
99
- }
100
  $html = '<div class="wpd-custom-field wpd-cf-color">';
101
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value" style="background:' . $value . ';"> ' . apply_filters('wpdiscuz_custom_field_color', $value, $args) . ' </div>';
102
  $html .= '</div>';
59
  if ($comment->comment_parent && !$data['is_show_sform']) {
60
  return '';
61
  }
62
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
63
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
77
  $hasIcon = $args['icon'] ? true : false;
78
  $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
+ <div class="wpdiscuz-item wpd-field-color <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''), ($hasDesc ? ' wpd-has-desc' : ''); ?>">
81
  <div class="wpd-field-title">
82
  <?php echo $args['name']; ?>
83
  </div>
84
  <?php if ($hasIcon) { ?>
85
+ <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas ' . $args['icon']; ?>"></i></div>
86
  <?php } ?>
87
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
88
+ <input <?php echo $required; ?> class="<?php echo $name; ?> wpd-field wpd-field-color" type="color" name="<?php echo $name; ?>" value="#000000" placeholder="#ff8040" pattern="^\#[A-Za-z0-9]{6}$" title="#ff8040">
89
  <?php if ($args['desc']) { ?>
90
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
91
  <?php } ?>
94
  }
95
 
96
  public function frontHtml($value, $args) {
 
 
 
97
  $html = '<div class="wpd-custom-field wpd-cf-color">';
98
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value" style="background:' . $value . ';"> ' . apply_filters('wpdiscuz_custom_field_color', $value, $args) . ' </div>';
99
  $html .= '</div>';
forms/wpdFormAttr/Field/CookiesConsent.php CHANGED
@@ -40,7 +40,7 @@ class CookiesConsent extends Field {
40
  $commenter = wp_get_current_commenter();
41
  $consent = empty($commenter['comment_author_email']) ? '' : ' checked="checked"';
42
  ?>
43
- <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox wpd-field-cookies-consent wpd-field-single <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
44
  <div class="wpd-field-group-title">
45
  <div class="wpd-item">
46
  <input id="<?php echo $name . '-1_' . $uniqueId; ?>" name="<?php echo $name; ?>" type="checkbox" value="1" <?php echo $consent; ?> class="<?php echo $name; ?> wpd-field wpd-cookies-checkbox" />
40
  $commenter = wp_get_current_commenter();
41
  $consent = empty($commenter['comment_author_email']) ? '' : ' checked="checked"';
42
  ?>
43
+ <div class="wpdiscuz-item wpd-field-group wpd-field-checkbox wpd-field-cookies-consent wpd-field-single <?php echo $name, '-wrapper', ($hasDesc ? ' wpd-has-desc' : ''); ?>">
44
  <div class="wpd-field-group-title">
45
  <div class="wpd-item">
46
  <input id="<?php echo $name . '-1_' . $uniqueId; ?>" name="<?php echo $name; ?>" type="checkbox" value="1" <?php echo $consent; ?> class="<?php echo $name; ?> wpd-field wpd-cookies-checkbox" />
forms/wpdFormAttr/Field/DateField.php CHANGED
@@ -59,12 +59,12 @@ class DateField extends Field {
59
  if($comment->comment_parent && !$data['is_show_sform']){
60
  return '';
61
  }
62
- $html = '<tr><td class="first">';
63
- $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
66
  $required = $data['required'] ? 'required="required"' : '';
67
- $html .= '<input ' . $required . ' class="wpd-field wpd-field-date" type="date" id="' . $key . '" value="' . $value . '" name="' . $key . '" pattern="^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$" title="03/28/2016">';
68
  $html .= '</div>';
69
  $html .= '</td></tr >';
70
  return $html;
@@ -77,7 +77,7 @@ class DateField extends Field {
77
  $hasIcon = $args['icon'] ? true : false;
78
  $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
- <div class="wpdiscuz-item wpd-field-date <?php echo $hasIcon ? 'wpd-has-icon' : '' ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
81
  <div class="wpd-field-title">
82
  <?php echo $args['name']; ?>
83
  </div>
@@ -94,9 +94,6 @@ class DateField extends Field {
94
  }
95
 
96
  public function frontHtml($value, $args) {
97
- if(!$args['is_show_on_comment']){
98
- return '';
99
- }
100
  $html = '<div class="wpd-custom-field wpd-cf-text">';
101
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_date', $value , $args) . '</div>';
102
  $html .= '</div>';
@@ -124,7 +121,8 @@ class DateField extends Field {
124
  'icon' => 'fa-calendar-alt',
125
  'required' => '0',
126
  'loc' => 'bottom',
127
- 'is_show_on_comment' => 1
 
128
  );
129
  }
130
 
59
  if($comment->comment_parent && !$data['is_show_sform']){
60
  return '';
61
  }
62
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
63
+ $html .= '<label for="' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
66
  $required = $data['required'] ? 'required="required"' : '';
67
+ $html .= '<input ' . $required . ' class="wpd-field wpd-field-date" type="date" id="' . $key . '" value="' . $value . '" name="' . $key . '" pattern="^(1[0-2]|0[1-9])/(3[01]|[12][0-9]|0[1-9])/[0-9]{4}$" title="03/28/2016">';
68
  $html .= '</div>';
69
  $html .= '</td></tr >';
70
  return $html;
77
  $hasIcon = $args['icon'] ? true : false;
78
  $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
+ <div class="wpdiscuz-item wpd-field-date <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''), ($hasDesc ? ' wpd-has-desc' : ''); ?>">
81
  <div class="wpd-field-title">
82
  <?php echo $args['name']; ?>
83
  </div>
94
  }
95
 
96
  public function frontHtml($value, $args) {
 
 
 
97
  $html = '<div class="wpd-custom-field wpd-cf-text">';
98
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_date', $value , $args) . '</div>';
99
  $html .= '</div>';
121
  'icon' => 'fa-calendar-alt',
122
  'required' => '0',
123
  'loc' => 'bottom',
124
+ 'is_show_on_comment' => 1,
125
+ 'is_show_sform' => 1,
126
  );
127
  }
128
 
forms/wpdFormAttr/Field/DefaultField/Captcha.php CHANGED
@@ -58,7 +58,7 @@ class Captcha extends Field {
58
  $this->generateCaptchaHtml($args, $options);
59
  } else if (!isset($args['wpdiscuz_recaptcha']) && $options->displayAntispamNote && !$currentUser->exists()) {
60
  ?>
61
- <div class="wc-field-captcha wpdiscuz-item">
62
  <div class="wc-bin-captcha">
63
  <i class="fas fa-shield-alt"></i><?php echo $options->phrases['wc_invisible_antispam_note']; ?>
64
  </div>
@@ -140,7 +140,7 @@ class Captcha extends Field {
140
 
141
  private function generateCaptchaHtml($args, $options) {
142
  ?>
143
- <div class="wc-field-captcha wpdiscuz-item">
144
  <div class="wc-captcha-input">
145
  <input type="text" maxlength="5" value="" autocomplete="off" required="required" name="wc_captcha" class="wpd-field wc_field_captcha" placeholder="<?php echo $args['name']; ?>" title="<?php _e('Insert the CAPTCHA code', 'wpdiscuz'); ?>">
146
  </div>
58
  $this->generateCaptchaHtml($args, $options);
59
  } else if (!isset($args['wpdiscuz_recaptcha']) && $options->displayAntispamNote && !$currentUser->exists()) {
60
  ?>
61
+ <div class="wc-field-captcha wpdiscuz-item <?php echo $name, '-wrapper'; ?>">
62
  <div class="wc-bin-captcha">
63
  <i class="fas fa-shield-alt"></i><?php echo $options->phrases['wc_invisible_antispam_note']; ?>
64
  </div>
140
 
141
  private function generateCaptchaHtml($args, $options) {
142
  ?>
143
+ <div class="wc-field-captcha wpdiscuz-item wc_captcha-wrapper">
144
  <div class="wc-captcha-input">
145
  <input type="text" maxlength="5" value="" autocomplete="off" required="required" name="wc_captcha" class="wpd-field wc_field_captcha" placeholder="<?php echo $args['name']; ?>" title="<?php _e('Insert the CAPTCHA code', 'wpdiscuz'); ?>">
146
  </div>
forms/wpdFormAttr/Field/DefaultField/Email.php CHANGED
@@ -46,12 +46,12 @@ class Email extends Field {
46
  $hasIcon = $args['icon'] ? true : false;
47
  $authorEmail = $this->commenter && is_array($this->commenter) && isset($this->commenter['comment_author_email']) && (strpos($this->commenter['comment_author_email'], '@example.com') === false) ? urldecode($this->commenter['comment_author_email']) : '';
48
  ?>
49
- <div class="wpdiscuz-item <?php echo $hasIcon ? 'wpd-has-icon' : '' ?>">
50
  <?php if ($hasIcon) { ?>
51
  <div class="wpd-field-icon"><i class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
52
  <?php } ?>
53
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
54
- <input value="<?php echo $authorEmail; ?>" <?php echo $required; ?> class="<?php echo $name; ?> wpd-field" type="email" name="<?php echo $name; ?>" value="" placeholder="<?php echo $args['name']; echo !empty($args['required']) ? '*' : ''; ?>">
55
  <?php if ($args['desc']) { ?>
56
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
57
  <?php } ?>
46
  $hasIcon = $args['icon'] ? true : false;
47
  $authorEmail = $this->commenter && is_array($this->commenter) && isset($this->commenter['comment_author_email']) && (strpos($this->commenter['comment_author_email'], '@example.com') === false) ? urldecode($this->commenter['comment_author_email']) : '';
48
  ?>
49
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''); ?>">
50
  <?php if ($hasIcon) { ?>
51
  <div class="wpd-field-icon"><i class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
52
  <?php } ?>
53
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
54
+ <input value="<?php echo $authorEmail; ?>" <?php echo $required; ?> class="<?php echo $name; ?> wpd-field" type="email" name="<?php echo $name; ?>" placeholder="<?php echo $args['name']; echo !empty($args['required']) ? '*' : ''; ?>">
55
  <?php if ($args['desc']) { ?>
56
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
57
  <?php } ?>
forms/wpdFormAttr/Field/DefaultField/Name.php CHANGED
@@ -45,12 +45,12 @@ class Name extends Field {
45
  $author = $this->commenter && is_array($this->commenter) && isset($this->commenter['comment_author']) ? urldecode($this->commenter['comment_author']) : '';
46
  $hasIcon = $args['icon'] ? true : false;
47
  $nameLengthRange = (intval($options->commenterNameMinLength) >= 1 && (intval($options->commenterNameMaxLength) >= 1 && intval($options->commenterNameMaxLength) <= 50)) ? 'pattern=".{' . $options->commenterNameMinLength . ',' . $options->commenterNameMaxLength . '}"' : ''; ?>
48
- <div class="wpdiscuz-item <?php echo $hasIcon ? 'wpd-has-icon' : ''?>">
49
  <?php if ($args['icon']) { ?>
50
  <div class="wpd-field-icon"><i class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
51
  <?php } ?>
52
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
53
- <input value="<?php echo $author; ?>" <?php echo $required; ?> class="<?php echo $name; ?> wpd-field" type="text" name="<?php echo $name; ?>" value="" placeholder="<?php _e($args['name'],'wpdiscuz'); echo !empty($args['required']) ? '*' : ''; ?>" maxlength="<?php echo $options->commenterNameMaxLength; ?>" <?php echo $nameLengthRange; ?> title="">
54
  <?php if ($args['desc']) { ?>
55
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
56
  <?php } ?>
45
  $author = $this->commenter && is_array($this->commenter) && isset($this->commenter['comment_author']) ? urldecode($this->commenter['comment_author']) : '';
46
  $hasIcon = $args['icon'] ? true : false;
47
  $nameLengthRange = (intval($options->commenterNameMinLength) >= 1 && (intval($options->commenterNameMaxLength) >= 1 && intval($options->commenterNameMaxLength) <= 50)) ? 'pattern=".{' . $options->commenterNameMinLength . ',' . $options->commenterNameMaxLength . '}"' : ''; ?>
48
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''); ?>">
49
  <?php if ($args['icon']) { ?>
50
  <div class="wpd-field-icon"><i class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
51
  <?php } ?>
52
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
53
+ <input value="<?php echo $author; ?>" <?php echo $required; ?> class="<?php echo $name; ?> wpd-field" type="text" name="<?php echo $name; ?>" placeholder="<?php _e($args['name'],'wpdiscuz'); echo !empty($args['required']) ? '*' : ''; ?>" maxlength="<?php echo $options->commenterNameMaxLength; ?>" <?php echo $nameLengthRange; ?> title="">
54
  <?php if ($args['desc']) { ?>
55
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
56
  <?php } ?>
forms/wpdFormAttr/Field/DefaultField/Website.php CHANGED
@@ -41,19 +41,20 @@ class Website extends Field {
41
  }
42
 
43
  public function frontFormHtml($name, $args, $options, $currentUser, $uniqueId, $isMainForm) {
44
- if (!$currentUser->ID) {
45
  $hasIcon = $args['icon'] ? true : false;
46
  if ($args['enable']) {
47
  $authorUrl = $this->commenter && is_array($this->commenter) && isset($this->commenter['comment_author_url']) ? urldecode($this->commenter['comment_author_url']) : '';
48
  ?>
49
- <div class="wpdiscuz-item <?php echo $hasIcon ? 'wpd-has-icon' : '' ?>">
50
  <?php if ($hasIcon) { ?>
51
- <div class="wpd-field-icon"><i class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
52
  <?php } ?>
53
- <input value="<?php echo $authorUrl; ?>" class="<?php echo $name; ?> wpd-field" type="text" name="<?php echo $name; ?>" value="" placeholder="<?php echo $args['name']; echo !empty($args['required']) ? '*' : ''; ?>">
54
- <?php if ($args['desc']) { ?>
 
55
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
56
- <?php } ?>
57
  </div>
58
  <?php
59
  }
@@ -90,15 +91,17 @@ class Website extends Field {
90
 
91
  public function validateFieldData($fieldName, $args, $options, $currentUser) {
92
  $website_url = trim(filter_input(INPUT_POST, $fieldName, FILTER_SANITIZE_STRING));
93
- if ($website_url != '' && (strpos($website_url, 'http://') !== '' && strpos($website_url, 'http://') !== 0) && (strpos($website_url, 'https://') !== '' && strpos($website_url, 'https://') !== 0)) {
94
- $website_url = 'http://' . $website_url;
95
- }
 
96
 
97
- if ($website_url != '' && (filter_var($website_url, FILTER_VALIDATE_URL) === false)) {
98
- $messageArray['code'] = 'wc_error_url_text';
99
- wp_die(json_encode($messageArray));
 
100
  }
101
- return $website_url;
102
  }
103
 
104
  public function editCommentHtml($key, $value, $data, $comment) {
41
  }
42
 
43
  public function frontFormHtml($name, $args, $options, $currentUser, $uniqueId, $isMainForm) {
44
+ if (!$currentUser->ID) {
45
  $hasIcon = $args['icon'] ? true : false;
46
  if ($args['enable']) {
47
  $authorUrl = $this->commenter && is_array($this->commenter) && isset($this->commenter['comment_author_url']) ? urldecode($this->commenter['comment_author_url']) : '';
48
  ?>
49
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''); ?>">
50
  <?php if ($hasIcon) { ?>
51
+ <div class="wpd-field-icon"><i class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas ' . $args['icon']; ?>"></i></div>
52
  <?php } ?>
53
+ <input value="<?php echo $authorUrl; ?>" class="<?php echo $name; ?> wpd-field" type="text" name="<?php echo $name; ?>" placeholder="<?php echo $args['name'];
54
+ echo!empty($args['required']) ? '*' : ''; ?>">
55
+ <?php if ($args['desc']) { ?>
56
  <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
57
+ <?php } ?>
58
  </div>
59
  <?php
60
  }
91
 
92
  public function validateFieldData($fieldName, $args, $options, $currentUser) {
93
  $website_url = trim(filter_input(INPUT_POST, $fieldName, FILTER_SANITIZE_STRING));
94
+ if ($website_url != '') {
95
+ if (strpos($website_url, 'http://') !== 0 && strpos($website_url, 'https://') !== 0) {
96
+ $website_url = 'http://' . $website_url;
97
+ }
98
 
99
+ if (filter_var($website_url, FILTER_VALIDATE_URL) === false) {
100
+ $messageArray['code'] = 'wc_error_url_text';
101
+ wp_die(json_encode($messageArray));
102
+ }
103
  }
104
+ return esc_url($website_url, array('http', 'https'));
105
  }
106
 
107
  public function editCommentHtml($key, $value, $data, $comment) {
forms/wpdFormAttr/Field/Field.php CHANGED
@@ -32,14 +32,21 @@ abstract class Field {
32
 
33
  abstract protected function dashboardForm();
34
 
35
- abstract public function editCommentHtml($key, $value, $data,$comment);
36
 
37
- abstract public function frontFormHtml($name, $args, $options, $currentUser, $uniqueId,$isMainForm);
38
 
39
  abstract public function validateFieldData($fieldName, $args, $options, $currentUser);
40
 
41
  abstract public function frontHtml($value, $args);
42
 
 
 
 
 
 
 
 
43
  public function dashboardFormHtml($row, $col, $name, $args) {
44
  $this->display = 'none';
45
  $this->setName($name);
@@ -54,9 +61,9 @@ abstract class Field {
54
  _e(' (Submit Button)', 'wpdiscuz');
55
  } elseif ($args['type'] == 'wpdFormAttr\Field\DefaultField\Captcha') {
56
  _e(' (CAPTCHA)', 'wpdiscuz');
57
- }elseif(!strstr($args['type'], 'wpdFormAttr\Field\DefaultField')){
58
  $fieldLable = str_replace('wpdFormAttr\Field\\', '', $args['type']);
59
- echo ' ( ' .str_replace('Field', '', $fieldLable) . ' )';
60
  }
61
  ?>
62
  <div class="wpd-field-actions">
@@ -142,24 +149,24 @@ abstract class Field {
142
  }
143
  if (isset($data['is_show_on_comment'])) {
144
  $cleanData['is_show_on_comment'] = intval($data['is_show_on_comment']);
145
- }else{
146
  $cleanData['is_show_on_comment'] = 0;
147
  }
148
  if (isset($data['is_show_sform'])) {
149
  $cleanData['is_show_sform'] = intval($data['is_show_sform']);
150
- }else{
151
  $cleanData['is_show_sform'] = 0;
152
  }
153
  return wp_parse_args($cleanData, $this->fieldDefaultData);
154
  }
155
-
156
- protected function isCommentParentZero(){
157
  $isParent = false;
158
  $uniqueID = filter_input(INPUT_POST, 'wpdiscuz_unique_id', FILTER_SANITIZE_STRING);
159
  $action = filter_input(INPUT_POST, 'action', FILTER_SANITIZE_STRING);
160
  if ($uniqueID) {
161
  $commentParent = strstr($uniqueID, '_');
162
- $isParent = ($action == 'editedcomment' && $commentParent == '_0') || ($action == 'wpdSaveEditedComment' && $commentParent == '_0') || ($action == 'wpdAddComment' && $uniqueID == '0_0')? true : false;
163
  }
164
  return $isParent;
165
  }
32
 
33
  abstract protected function dashboardForm();
34
 
35
+ abstract public function editCommentHtml($key, $value, $data, $comment);
36
 
37
+ abstract public function frontFormHtml($name, $args, $options, $currentUser, $uniqueId, $isMainForm);
38
 
39
  abstract public function validateFieldData($fieldName, $args, $options, $currentUser);
40
 
41
  abstract public function frontHtml($value, $args);
42
 
43
+ public function drawContent($value, $args) {
44
+ if ($args['is_show_on_comment'] || is_admin()) {
45
+ return $this->frontHtml($value, $args);
46
+ }
47
+ return '';
48
+ }
49
+
50
  public function dashboardFormHtml($row, $col, $name, $args) {
51
  $this->display = 'none';
52
  $this->setName($name);
61
  _e(' (Submit Button)', 'wpdiscuz');
62
  } elseif ($args['type'] == 'wpdFormAttr\Field\DefaultField\Captcha') {
63
  _e(' (CAPTCHA)', 'wpdiscuz');
64
+ } elseif (!strstr($args['type'], 'wpdFormAttr\Field\DefaultField')) {
65
  $fieldLable = str_replace('wpdFormAttr\Field\\', '', $args['type']);
66
+ echo ' ( ' . str_replace('Field', '', $fieldLable) . ' )';
67
  }
68
  ?>
69
  <div class="wpd-field-actions">
149
  }
150
  if (isset($data['is_show_on_comment'])) {
151
  $cleanData['is_show_on_comment'] = intval($data['is_show_on_comment']);
152
+ } else {
153
  $cleanData['is_show_on_comment'] = 0;
154
  }
155
  if (isset($data['is_show_sform'])) {
156
  $cleanData['is_show_sform'] = intval($data['is_show_sform']);
157
+ } else {
158
  $cleanData['is_show_sform'] = 0;
159
  }
160
  return wp_parse_args($cleanData, $this->fieldDefaultData);
161
  }
162
+
163
+ protected function isCommentParentZero() {
164
  $isParent = false;
165
  $uniqueID = filter_input(INPUT_POST, 'wpdiscuz_unique_id', FILTER_SANITIZE_STRING);
166
  $action = filter_input(INPUT_POST, 'action', FILTER_SANITIZE_STRING);
167
  if ($uniqueID) {
168
  $commentParent = strstr($uniqueID, '_');
169
+ $isParent = ($action == 'editedcomment' && $commentParent == '_0') || ($action == 'wpdSaveEditedComment' && $commentParent == '_0') || ($action == 'wpdAddComment' && $uniqueID == '0_0') ? true : false;
170
  }
171
  return $isParent;
172
  }
forms/wpdFormAttr/Field/NumberField.php CHANGED
@@ -69,7 +69,7 @@ class NumberField extends Field {
69
  if ($comment->comment_parent && !$data['is_show_sform']) {
70
  return '';
71
  }
72
- $html = '<tr><td class="first">';
73
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
74
  $html .= '</td><td>';
75
  $html .= '<div class="wpdiscuz-item">';
@@ -89,7 +89,7 @@ class NumberField extends Field {
89
  $hasIcon = $args['icon'] ? true : false;
90
  $hasDesc = $args['desc'] ? true : false;
91
  ?>
92
- <div class="wpdiscuz-item <?php echo $hasIcon ? 'wpd-has-icon' : '' ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
93
  <?php if ($hasIcon) { ?>
94
  <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
95
  <?php } ?>
@@ -107,9 +107,6 @@ class NumberField extends Field {
107
  }
108
 
109
  public function frontHtml($value, $args) {
110
- if (!$args['is_show_on_comment']) {
111
- return '';
112
- }
113
  $html = '<div class="wpd-custom-field wpd-cf-text">';
114
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_number', $value, $args) . '</div>';
115
  $html .= '</div>';
69
  if ($comment->comment_parent && !$data['is_show_sform']) {
70
  return '';
71
  }
72
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
73
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
74
  $html .= '</td><td>';
75
  $html .= '<div class="wpdiscuz-item">';
89
  $hasIcon = $args['icon'] ? true : false;
90
  $hasDesc = $args['desc'] ? true : false;
91
  ?>
92
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''), ($hasDesc ? ' wpd-has-desc' : ''); ?>">
93
  <?php if ($hasIcon) { ?>
94
  <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
95
  <?php } ?>
107
  }
108
 
109
  public function frontHtml($value, $args) {
 
 
 
110
  $html = '<div class="wpd-custom-field wpd-cf-text">';
111
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_number', $value, $args) . '</div>';
112
  $html .= '</div>';
forms/wpdFormAttr/Field/RadioField.php CHANGED
@@ -63,11 +63,11 @@ class RadioField extends Field {
63
  if($comment->comment_parent && !$data['is_show_sform']){
64
  return '';
65
  }
66
- $html = '<tr><td class="first">';
67
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
68
  $html .= '</td><td>';
69
- $required = $data['required'] ? ' wpd-required-group ' : '';
70
- $html .= '<div class="wpdiscuz-item ' . $required . ' wpd-field-group">';
71
  foreach ($data['values'] as $index => $val) {
72
  $uniqueId = uniqid();
73
  $checked = $value == $val ? ' checked="checked" ' : '';
@@ -83,8 +83,8 @@ class RadioField extends Field {
83
  if( empty($args['values']) || (!$isMainForm && !$args['is_show_sform'])) return;
84
  $hasDesc = $args['desc'] ? true : false;
85
  ?>
86
- <?php $required = $args['required'] ? ' wpd-required-group ' : ''; ?>
87
- <div class="wpdiscuz-item wpd-field-group wpd-field-radio <?php echo $required; ?> <?php echo $hasDesc ? 'wpd-has-desc' : ''?>">
88
  <div class="wpd-field-group-title">
89
  <?php _e($args['name'], 'wpdiscuz'); ?>
90
  <?php if ($args['desc']) { ?>
@@ -107,9 +107,6 @@ class RadioField extends Field {
107
  }
108
 
109
  public function frontHtml($value, $args) {
110
- if(!$args['is_show_on_comment']){
111
- return '';
112
- }
113
  $html = '<div class="wpd-custom-field wpd-cf-text">';
114
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_radio', $value , $args) . '</div>';
115
  $html .= '</div>';
63
  if($comment->comment_parent && !$data['is_show_sform']){
64
  return '';
65
  }
66
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
67
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
68
  $html .= '</td><td>';
69
+ $required = $data['required'] ? ' wpd-required-group' : '';
70
+ $html .= '<div class="wpdiscuz-item' . $required . ' wpd-field-group">';
71
  foreach ($data['values'] as $index => $val) {
72
  $uniqueId = uniqid();
73
  $checked = $value == $val ? ' checked="checked" ' : '';
83
  if( empty($args['values']) || (!$isMainForm && !$args['is_show_sform'])) return;
84
  $hasDesc = $args['desc'] ? true : false;
85
  ?>
86
+ <?php $required = $args['required'] ? ' wpd-required-group' : ''; ?>
87
+ <div class="wpdiscuz-item wpd-field-group wpd-field-radio <?php echo $name, '-wrapper', $required, ($hasDesc ? ' wpd-has-desc' : ''); ?>">
88
  <div class="wpd-field-group-title">
89
  <?php _e($args['name'], 'wpdiscuz'); ?>
90
  <?php if ($args['desc']) { ?>
107
  }
108
 
109
  public function frontHtml($value, $args) {
 
 
 
110
  $html = '<div class="wpd-custom-field wpd-cf-text">';
111
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_radio', $value , $args) . '</div>';
112
  $html .= '</div>';
forms/wpdFormAttr/Field/RatingField.php CHANGED
@@ -54,7 +54,7 @@ class RatingField extends Field {
54
  if ($comment->comment_parent) {
55
  return '';
56
  }
57
- $html = '<tr><td class="first">';
58
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
59
  $html .= '</td><td>';
60
  $uniqueId = uniqid();
@@ -76,10 +76,10 @@ class RatingField extends Field {
76
  if (!$isMainForm)
77
  return;
78
  $hasDesc = $args['desc'] ? true : false;
79
- $required = $args['required'] ? ' wpd-required-group ' : '';
80
  $uniqueId = uniqid($uniqueId);
81
  ?>
82
- <div class="wpdiscuz-item wpd-field-group wpd-field-rating <?php echo $required; ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
83
  <div class="wpd-field-group-title">
84
  <?php _e($args['name'], 'wpdiscuz'); ?>
85
  <?php if ($args['desc']) { ?>
@@ -103,13 +103,10 @@ class RatingField extends Field {
103
  }
104
 
105
  public function frontHtml($value, $args) {
106
- if(!$args['is_show_on_comment']){
107
- return '';
108
- }
109
  $html = '<div class="wpd-custom-field wpd-cf-rating">';
110
  $html .='<div class="wpd-cf-label">' . $args['name'] . ' : </div><div class="wpd-cf-value">';
111
  for ($i = 0; $i < 5; $i++) {
112
- $colorClass = ($i < $value) ? ' wcf-activ-star ' : ' wcf-pasiv-star ';
113
  $fa = strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon'];
114
  $html .= '<i class="'. $fa . ' ' . $colorClass . '" aria-hidden="true"></i>&nbsp;';
115
  }
54
  if ($comment->comment_parent) {
55
  return '';
56
  }
57
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
58
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
59
  $html .= '</td><td>';
60
  $uniqueId = uniqid();
76
  if (!$isMainForm)
77
  return;
78
  $hasDesc = $args['desc'] ? true : false;
79
+ $required = $args['required'] ? ' wpd-required-group' : '';
80
  $uniqueId = uniqid($uniqueId);
81
  ?>
82
+ <div class="wpdiscuz-item wpd-field-group wpd-field-rating <?php echo $name, '-wrapper', $required, ($hasDesc ? ' wpd-has-desc' : ''); ?>">
83
  <div class="wpd-field-group-title">
84
  <?php _e($args['name'], 'wpdiscuz'); ?>
85
  <?php if ($args['desc']) { ?>
103
  }
104
 
105
  public function frontHtml($value, $args) {
 
 
 
106
  $html = '<div class="wpd-custom-field wpd-cf-rating">';
107
  $html .='<div class="wpd-cf-label">' . $args['name'] . ' : </div><div class="wpd-cf-value">';
108
  for ($i = 0; $i < 5; $i++) {
109
+ $colorClass = ($i < $value) ? ' wcf-active-star ' : ' wcf-pasiv-star ';
110
  $fa = strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon'];
111
  $html .= '<i class="'. $fa . ' ' . $colorClass . '" aria-hidden="true"></i>&nbsp;';
112
  }
forms/wpdFormAttr/Field/SelectField.php CHANGED
@@ -63,7 +63,7 @@ class SelectField extends Field {
63
  if ($comment->comment_parent && !$data['is_show_sform']) {
64
  return '';
65
  }
66
- $html = '<tr><td class="first">';
67
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
68
  $html .= '</td><td>';
69
  $required = $data['required'] ? ' required="required" ' : '';
@@ -87,7 +87,7 @@ class SelectField extends Field {
87
  $hasDesc = $args['desc'] ? true : false;
88
  ?>
89
  <?php $required = $args['required'] ? ' required="required" ' : ''; ?>
90
- <div class="wpdiscuz-item wpd-field-group wpd-field-select <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
91
  <select <?php echo $required; ?> name="<?php echo $name; ?>" class="<?php echo $name; ?> wpd-field wpdiscuz_select">
92
  <option value=""><?php echo $args['name']; ?></option>
93
  <?php foreach ($args['values'] as $index => $val): ?>
@@ -102,9 +102,6 @@ class SelectField extends Field {
102
  }
103
 
104
  public function frontHtml($value, $args) {
105
- if(!$args['is_show_on_comment']){
106
- return '';
107
- }
108
  $html = '<div class="wpd-custom-field wpd-cf-text">';
109
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_select', $value , $args) . '</div>';
110
  $html .= '</div>';
63
  if ($comment->comment_parent && !$data['is_show_sform']) {
64
  return '';
65
  }
66
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
67
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
68
  $html .= '</td><td>';
69
  $required = $data['required'] ? ' required="required" ' : '';
87
  $hasDesc = $args['desc'] ? true : false;
88
  ?>
89
  <?php $required = $args['required'] ? ' required="required" ' : ''; ?>
90
+ <div class="wpdiscuz-item wpd-field-group wpd-field-select <?php echo $name, '-wrapper', ($hasDesc ? ' wpd-has-desc' : ''); ?>">
91
  <select <?php echo $required; ?> name="<?php echo $name; ?>" class="<?php echo $name; ?> wpd-field wpdiscuz_select">
92
  <option value=""><?php echo $args['name']; ?></option>
93
  <?php foreach ($args['values'] as $index => $val): ?>
102
  }
103
 
104
  public function frontHtml($value, $args) {
 
 
 
105
  $html = '<div class="wpd-custom-field wpd-cf-text">';
106
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_select', $value , $args) . '</div>';
107
  $html .= '</div>';
forms/wpdFormAttr/Field/TextAreaField.php CHANGED
@@ -53,7 +53,7 @@ class TextAreaField extends Field {
53
  if ($comment->comment_parent && !$data['is_show_sform']) {
54
  return '';
55
  }
56
- $html = '<tr><td class="first">';
57
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
58
  $html .= '</td><td>';
59
  $html .= '<div class="wpdiscuz-item">';
@@ -69,7 +69,7 @@ class TextAreaField extends Field {
69
  return;
70
  }
71
  ?>
72
- <div class="wpdiscuz-item">
73
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
74
  <textarea <?php echo $required; ?> class="<?php echo $name; ?> wpd-field wpd-field-textarea" name="<?php echo $name; ?>" value="" placeholder="<?php _e($args['name'], 'wpdiscuz'); echo !empty($args['required']) ? '*' : ''; ?>"></textarea>
75
  <?php if ($args['desc']) { ?>
@@ -80,9 +80,6 @@ class TextAreaField extends Field {
80
  }
81
 
82
  public function frontHtml($value, $args) {
83
- if(!$args['is_show_on_comment']){
84
- return '';
85
- }
86
  $html = '<div class="wpd-custom-field wpd-cf-text">';
87
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_textarea', nl2br($value) , $args) . '</div>';
88
  $html .= '</div>';
53
  if ($comment->comment_parent && !$data['is_show_sform']) {
54
  return '';
55
  }
56
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
57
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
58
  $html .= '</td><td>';
59
  $html .= '<div class="wpdiscuz-item">';
69
  return;
70
  }
71
  ?>
72
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper'; ?>">
73
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
74
  <textarea <?php echo $required; ?> class="<?php echo $name; ?> wpd-field wpd-field-textarea" name="<?php echo $name; ?>" value="" placeholder="<?php _e($args['name'], 'wpdiscuz'); echo !empty($args['required']) ? '*' : ''; ?>"></textarea>
75
  <?php if ($args['desc']) { ?>
80
  }
81
 
82
  public function frontHtml($value, $args) {
 
 
 
83
  $html = '<div class="wpd-custom-field wpd-cf-text">';
84
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_textarea', nl2br($value) , $args) . '</div>';
85
  $html .= '</div>';
forms/wpdFormAttr/Field/TextField.php CHANGED
@@ -59,7 +59,7 @@ class TextField extends Field {
59
  if ($comment->comment_parent && !$data['is_show_sform']) {
60
  return '';
61
  }
62
- $html = '<tr><td class="first">';
63
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
@@ -71,37 +71,35 @@ class TextField extends Field {
71
  }
72
 
73
  public function frontFormHtml($name, $args, $options, $currentUser, $uniqueId, $isMainForm) {
74
- if(!$isMainForm && !$args['is_show_sform']){
75
  return;
76
  }
77
  $hasIcon = $args['icon'] ? true : false;
78
- $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
- <div class="wpdiscuz-item <?php echo $hasIcon ? 'wpd-has-icon' : ''?> <?php echo $hasDesc ? 'wpd-has-desc' : ''?>">
81
  <?php if ($hasIcon) { ?>
82
- <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
83
  <?php } ?>
84
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
85
- <input <?php echo $required; ?> class="<?php echo $name; ?> wpd-field wpd-field-text" type="text" name="<?php echo $name; ?>" value="" placeholder="<?php _e($args['name'], 'wpdiscuz'); echo !empty($args['required']) ? '*' : ''; ?>">
86
- <?php if ($args['desc']) { ?>
87
- <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
88
- <?php } ?>
 
89
  </div>
90
  <?php
91
  }
92
 
93
  public function frontHtml($value, $args) {
94
- if(!$args['is_show_on_comment']){
95
- return '';
96
- }
97
  $html = '<div class="wpd-custom-field wpd-cf-text">';
98
- $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_text', $value , $args) . '</div>';
99
  $html .= '</div>';
100
  return $html;
101
  }
102
 
103
  public function validateFieldData($fieldName, $args, $options, $currentUser) {
104
- if(!$this->isCommentParentZero() && !$args['is_show_sform']){
105
  return '';
106
  }
107
  $value = filter_input(INPUT_POST, $fieldName, FILTER_SANITIZE_STRING);
59
  if ($comment->comment_parent && !$data['is_show_sform']) {
60
  return '';
61
  }
62
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
63
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
71
  }
72
 
73
  public function frontFormHtml($name, $args, $options, $currentUser, $uniqueId, $isMainForm) {
74
+ if (!$isMainForm && !$args['is_show_sform']) {
75
  return;
76
  }
77
  $hasIcon = $args['icon'] ? true : false;
78
+ $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''), ($hasDesc ? ' wpd-has-desc' : ''); ?>">
81
  <?php if ($hasIcon) { ?>
82
+ <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas ' . $args['icon']; ?>"></i></div>
83
  <?php } ?>
84
  <?php $required = $args['required'] ? 'required="required"' : ''; ?>
85
+ <input <?php echo $required; ?> class="<?php echo $name; ?> wpd-field wpd-field-text" type="text" name="<?php echo $name; ?>" value="" placeholder="<?php _e($args['name'], 'wpdiscuz');
86
+ echo!empty($args['required']) ? '*' : ''; ?>">
87
+ <?php if ($args['desc']) { ?>
88
+ <div class="wpd-field-desc"><i class="far fa-question-circle" aria-hidden="true"></i><span><?php echo $args['desc']; ?></span></div>
89
+ <?php } ?>
90
  </div>
91
  <?php
92
  }
93
 
94
  public function frontHtml($value, $args) {
 
 
 
95
  $html = '<div class="wpd-custom-field wpd-cf-text">';
96
+ $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> ' . apply_filters('wpdiscuz_custom_field_text', $value, $args) . '</div>';
97
  $html .= '</div>';
98
  return $html;
99
  }
100
 
101
  public function validateFieldData($fieldName, $args, $options, $currentUser) {
102
+ if (!$this->isCommentParentZero() && !$args['is_show_sform']) {
103
  return '';
104
  }
105
  $value = filter_input(INPUT_POST, $fieldName, FILTER_SANITIZE_STRING);
forms/wpdFormAttr/Field/UrlField.php CHANGED
@@ -59,7 +59,7 @@ class UrlField extends Field {
59
  if ($comment->comment_parent && !$data['is_show_sform']) {
60
  return '';
61
  }
62
- $html = '<tr><td class="first">';
63
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
@@ -77,7 +77,7 @@ class UrlField extends Field {
77
  $hasIcon = $args['icon'] ? true : false;
78
  $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
- <div class="wpdiscuz-item <?php echo $hasIcon ? 'wpd-has-icon' : '' ?> <?php echo $hasDesc ? 'wpd-has-desc' : '' ?>">
81
  <?php if ($hasIcon) { ?>
82
  <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
83
  <?php } ?>
@@ -91,9 +91,6 @@ class UrlField extends Field {
91
  }
92
 
93
  public function frontHtml($value, $args) {
94
- if(!$args['is_show_on_comment']){
95
- return '';
96
- }
97
  $html = '<div class="wpd-custom-field wpd-cf-text">';
98
  $value = apply_filters('wpdiscuz_custom_field_url', $value , $args);
99
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> <a href="' . esc_url($value) . '" target="_blank">' . $value . '</a></div>';
59
  if ($comment->comment_parent && !$data['is_show_sform']) {
60
  return '';
61
  }
62
+ $html = '<tr class="' . $key . '-wrapper"><td class="first">';
63
  $html .= '<label for = "' . $key . '">' . $data['name'] . ': </label>';
64
  $html .= '</td><td>';
65
  $html .= '<div class="wpdiscuz-item">';
77
  $hasIcon = $args['icon'] ? true : false;
78
  $hasDesc = $args['desc'] ? true : false;
79
  ?>
80
+ <div class="wpdiscuz-item <?php echo $name, '-wrapper', ($hasIcon ? ' wpd-has-icon' : ''), ($hasDesc ? ' wpd-has-desc' : ''); ?>">
81
  <?php if ($hasIcon) { ?>
82
  <div class="wpd-field-icon"><i style="opacity: 0.8;" class="<?php echo strpos(trim($args['icon']), ' ') ? $args['icon'] : 'fas '.$args['icon']; ?>"></i></div>
83
  <?php } ?>
91
  }
92
 
93
  public function frontHtml($value, $args) {
 
 
 
94
  $html = '<div class="wpd-custom-field wpd-cf-text">';
95
  $value = apply_filters('wpdiscuz_custom_field_url', $value , $args);
96
  $html .= '<div class="wpd-cf-label">' . $args['name'] . '</div> <div class="wpd-cf-value"> <a href="' . esc_url($value) . '" target="_blank">' . $value . '</a></div>';
forms/wpdFormAttr/Form.php CHANGED
@@ -183,7 +183,7 @@ class Form {
183
  foreach ($this->fieldsBeforeSave as $mettaKey => $data) {
184
  if ($this->ratingsExists && $this->formCustomFields[$mettaKey]['type'] == 'wpdFormAttr\Field\RatingField') {
185
  $oldCommentRating = get_comment_meta($commentID, $mettaKey, true);
186
- if ($oldCommentRating && $commentApproved) {
187
  $postID = $comment->comment_post_ID;
188
  $postRatingMeta = get_post_meta($postID, wpdFormConst::WPDISCUZ_RATING_COUNT, true);
189
  $oldCommentRatingCount = $postRatingMeta[$mettaKey][$oldCommentRating] - 1;
@@ -205,13 +205,13 @@ class Form {
205
  }
206
  $gRating = round($ratingSum / count($this->ratings));
207
  update_comment_meta($commentID, 'rating', $gRating);
208
- if ($commentApproved) {
209
- $this->saveProstRatingMeta($comment, $gRating);
210
  }
211
  }
212
  }
213
 
214
- private function saveProstRatingMeta($comment, $rating) {
215
  $postID = $comment->comment_post_ID;
216
  if (class_exists('WooCommerce') && get_post_type($postID) == 'product') {
217
  $ratingCount = get_post_meta($postID, '_wc_rating_count', true);
@@ -315,17 +315,29 @@ class Form {
315
  }
316
 
317
  public function getRatingMetaHtml($atts = array()) {
318
- global $post;
319
  $html = '';
320
  $atts = shortcode_atts(array(
321
  'metakey' => 'all',
322
  'show-lable' => true,
323
  'show-count' => true,
324
  'show-average' => true,
325
- 'itemprop' => true
 
326
  ), $atts);
 
 
 
 
 
 
 
 
 
 
 
 
327
  $this->initFormFields();
328
- if ($this->ratingsExists && (($this->wpdOptions->ratingCssOnNoneSingular && !is_singular()) || is_singular())) {
329
  $wpdiscuzRatingCountMeta = get_post_meta($post->ID, wpdFormConst::WPDISCUZ_RATING_COUNT, true);
330
  $wpdiscuzRatingCount = $wpdiscuzRatingCountMeta && is_array($wpdiscuzRatingCountMeta) ? $wpdiscuzRatingCountMeta : array();
331
  $ratingList = array();
@@ -387,11 +399,11 @@ class Form {
387
  <i class="' . $icon . ' wcf-pasiv-star"></i>
388
  </div>
389
  <div class="wpdiscuz-activ-stars" style="width:' . $ratingData['average'] * 100 / 5 . '%;">
390
- <i class="' . $icon . ' wcf-activ-star"></i>
391
- <i class="' . $icon . ' wcf-activ-star"></i>
392
- <i class="' . $icon . ' wcf-activ-star"></i>
393
- <i class="' . $icon . ' wcf-activ-star"></i>
394
- <i class="' . $icon . ' wcf-activ-star"></i>
395
  </div></div></div><div style="display:inline-block; position:relative;"></div>';
396
  $html .= '</div>';
397
  if ($args['itemprop'] && $ratingData['count']) {
@@ -535,7 +547,7 @@ class Form {
535
  $metaValuen = isset($meta[$key][0]) ? maybe_unserialize($meta[$key][0]) : '';
536
  if (is_callable($fieldType . '::getInstance') && $metaValuen) {
537
  $field = call_user_func($fieldType . '::getInstance');
538
- $html .= $field->frontHtml($metaValuen, $value);
539
  }
540
  }
541
  }
@@ -577,7 +589,7 @@ class Form {
577
  <div class="wc-field-avatararea">
578
  <?php
579
  $avatarSize = $isMain ? 40 : 48;
580
- echo get_avatar($currentUser->ID, $avatarSize, '', $authorName);
581
  ?>
582
  </div>
583
  <?php } ?>
183
  foreach ($this->fieldsBeforeSave as $mettaKey => $data) {
184
  if ($this->ratingsExists && $this->formCustomFields[$mettaKey]['type'] == 'wpdFormAttr\Field\RatingField') {
185
  $oldCommentRating = get_comment_meta($commentID, $mettaKey, true);
186
+ if ($oldCommentRating && $commentApproved === '1') {
187
  $postID = $comment->comment_post_ID;
188
  $postRatingMeta = get_post_meta($postID, wpdFormConst::WPDISCUZ_RATING_COUNT, true);
189
  $oldCommentRatingCount = $postRatingMeta[$mettaKey][$oldCommentRating] - 1;
205
  }
206
  $gRating = round($ratingSum / count($this->ratings));
207
  update_comment_meta($commentID, 'rating', $gRating);
208
+ if ($commentApproved === '1') {
209
+ $this->savePostRatingMeta($comment, $gRating);
210
  }
211
  }
212
  }
213
 
214
+ private function savePostRatingMeta($comment, $rating) {
215
  $postID = $comment->comment_post_ID;
216
  if (class_exists('WooCommerce') && get_post_type($postID) == 'product') {
217
  $ratingCount = get_post_meta($postID, '_wc_rating_count', true);
315
  }
316
 
317
  public function getRatingMetaHtml($atts = array()) {
 
318
  $html = '';
319
  $atts = shortcode_atts(array(
320
  'metakey' => 'all',
321
  'show-lable' => true,
322
  'show-count' => true,
323
  'show-average' => true,
324
+ 'itemprop' => true,
325
+ 'post_id' => null,
326
  ), $atts);
327
+ if ($atts['post_id']) {
328
+ $post = get_post($atts['post_id']);
329
+ wp_enqueue_style('wpdiscuz-font-awesome');
330
+ wp_enqueue_style('wpdiscuz-ratings');
331
+ if (is_rtl()) {
332
+ wp_enqueue_style('wpdiscuz-ratings-rtl');
333
+ }
334
+ $ratingByPostId = true;
335
+ } else {
336
+ global $post;
337
+ $ratingByPostId = false;
338
+ }
339
  $this->initFormFields();
340
+ if ($this->ratingsExists && (($this->wpdOptions->ratingCssOnNoneSingular && !is_singular()) || is_singular() || $ratingByPostId)) {
341
  $wpdiscuzRatingCountMeta = get_post_meta($post->ID, wpdFormConst::WPDISCUZ_RATING_COUNT, true);
342
  $wpdiscuzRatingCount = $wpdiscuzRatingCountMeta && is_array($wpdiscuzRatingCountMeta) ? $wpdiscuzRatingCountMeta : array();
343
  $ratingList = array();
399
  <i class="' . $icon . ' wcf-pasiv-star"></i>
400
  </div>
401
  <div class="wpdiscuz-activ-stars" style="width:' . $ratingData['average'] * 100 / 5 . '%;">
402
+ <i class="' . $icon . ' wcf-active-star"></i>
403
+ <i class="' . $icon . ' wcf-active-star"></i>
404
+ <i class="' . $icon . ' wcf-active-star"></i>
405
+ <i class="' . $icon . ' wcf-active-star"></i>
406
+ <i class="' . $icon . ' wcf-active-star"></i>
407
  </div></div></div><div style="display:inline-block; position:relative;"></div>';
408
  $html .= '</div>';
409
  if ($args['itemprop'] && $ratingData['count']) {
547
  $metaValuen = isset($meta[$key][0]) ? maybe_unserialize($meta[$key][0]) : '';
548
  if (is_callable($fieldType . '::getInstance') && $metaValuen) {
549
  $field = call_user_func($fieldType . '::getInstance');
550
+ $html .= $field->drawContent($metaValuen, $value);
551
  }
552
  }
553
  }
589
  <div class="wc-field-avatararea">
590
  <?php
591
  $avatarSize = $isMain ? 40 : 48;
592
+ echo get_avatar($currentUser->ID, $avatarSize, '', $authorName, array('wpdiscuz_current_user' => $currentUser));
593
  ?>
594
  </div>
595
  <?php } ?>
forms/wpdFormAttr/Login/SocialLogin.php CHANGED
@@ -14,7 +14,7 @@ class SocialLogin {
14
 
15
  private function __construct($options) {
16
  $this->generalOptions = $options;
17
- add_action('wp_enqueue_scripts', array(&$this, 'socialScripts'));
18
  add_action('comment_main_form_bar_top', array(&$this, 'getButtons'));
19
  add_action('comment_reply_form_bar_top', array(&$this, 'getReplyFormButtons'));
20
  add_action('wp_ajax_wpd_social_login', array(&$this, 'login'));
@@ -249,7 +249,7 @@ class SocialLogin {
249
  $accessToken = $twitter->oauth('oauth/access_token', array('oauth_verifier' => $oauthVerifier));
250
  $connection = new TwitterOAuth($this->generalOptions->twitterAppID, $this->generalOptions->twitterAppSecret, $accessToken['oauth_token'], $accessToken['oauth_token_secret']);
251
  $twitterUser = $connection->get('account/verify_credentials', array('include_email' => 'true'));
252
- if (is_object($twitterUser) && isset($twitterUser->id)) {
253
  $this->setCurrentUser(Utils::addUser($twitterUser, 'twitter'));
254
  $this->redirect($postURL);
255
  } else {
@@ -536,8 +536,7 @@ class SocialLogin {
536
  }
537
 
538
  public function socialScripts() {
539
- global $post;
540
- if (wpDiscuz()->helper->isLoadWpdiscuz($post) && ($this->generalOptions->enableFbLogin || $this->generalOptions->enableFbShare || $this->generalOptions->enableTwitterLogin || $this->generalOptions->enableGoogleLogin || $this->generalOptions->enableVkLogin || $this->generalOptions->enableOkLogin)) {
541
  wp_register_script('wpdiscuz-social-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz-social.js'), array('jquery'), get_option('wc_plugin_version', '1.0.0'), true);
542
  wp_enqueue_script('wpdiscuz-social-js');
543
  }
14
 
15
  private function __construct($options) {
16
  $this->generalOptions = $options;
17
+ add_action('wpdiscuz_front_scripts', array(&$this, 'socialScripts'));
18
  add_action('comment_main_form_bar_top', array(&$this, 'getButtons'));
19
  add_action('comment_reply_form_bar_top', array(&$this, 'getReplyFormButtons'));
20
  add_action('wp_ajax_wpd_social_login', array(&$this, 'login'));
249
  $accessToken = $twitter->oauth('oauth/access_token', array('oauth_verifier' => $oauthVerifier));
250
  $connection = new TwitterOAuth($this->generalOptions->twitterAppID, $this->generalOptions->twitterAppSecret, $accessToken['oauth_token'], $accessToken['oauth_token_secret']);
251
  $twitterUser = $connection->get('account/verify_credentials', array('include_email' => 'true'));
252
+ if (!empty($twitterUser->id)) {
253
  $this->setCurrentUser(Utils::addUser($twitterUser, 'twitter'));
254
  $this->redirect($postURL);
255
  } else {
536
  }
537
 
538
  public function socialScripts() {
539
+ if ($this->generalOptions->enableFbLogin || $this->generalOptions->enableFbShare || $this->generalOptions->enableTwitterLogin || $this->generalOptions->enableGoogleLogin || $this->generalOptions->enableVkLogin || $this->generalOptions->enableOkLogin) {
 
540
  wp_register_script('wpdiscuz-social-js', plugins_url(WPDISCUZ_DIR_NAME . '/assets/js/wpdiscuz-social.js'), array('jquery'), get_option('wc_plugin_version', '1.0.0'), true);
541
  wp_enqueue_script('wpdiscuz-social-js');
542
  }
forms/wpdFormAttr/Login/twitter/TwitterOAuthException.php CHANGED
@@ -9,7 +9,7 @@ class TwitterOAuthException extends \Exception {
9
 
10
  public function getOAuthMessage() {
11
  $message = json_decode($this->message);
12
- if (is_object($message) && isset($message->errors) && is_array($message->errors)) {
13
  $oautException = '';
14
  foreach ($message->errors as $error) {
15
  $oautException .= $error->message . '<br>';
9
 
10
  public function getOAuthMessage() {
11
  $message = json_decode($this->message);
12
+ if (isset($message->errors) && is_array($message->errors)) {
13
  $oautException = '';
14
  foreach ($message->errors as $error) {
15
  $oautException .= $error->message . '<br>';
forms/wpdFormAttr/Tools/PersonalDataExporter.php CHANGED
@@ -64,7 +64,7 @@ class PersonalDataExporter implements wpdFormConst {
64
  $data = array();
65
  $commentMeta = get_metadata('comment', $commentId);
66
  foreach ($this->fields as $key => $field) {
67
- if (key_exists($key, $commentMeta)) {
68
  $value = $this->generateFieldData($commentMeta[$key][0]);
69
  if (empty($value)) {
70
  continue;
64
  $data = array();
65
  $commentMeta = get_metadata('comment', $commentId);
66
  foreach ($this->fields as $key => $field) {
67
+ if (isset($commentMeta[$key])) {
68
  $value = $this->generateFieldData($commentMeta[$key][0]);
69
  if (empty($value)) {
70
  continue;
forms/wpdFormAttr/html/admin-form-fields-list.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- require_once 'default-fields.php';
3
 
4
  $wpdiscuzCustomFields = apply_filters('wpdiscuz_form_custom_fields', array());
5
  ?>
1
  <?php
2
+ require_once WPDISCUZ_DIR_PATH . '/forms/wpdFormAttr/html/default-fields.php';
3
 
4
  $wpdiscuzCustomFields = apply_filters('wpdiscuz_form_custom_fields', array());
5
  ?>
includes/class.WpdiscuzCss.php CHANGED
@@ -59,7 +59,7 @@ class WpdiscuzCss {
59
  #wpcomm .wpdiscuz-readmore{cursor:pointer;color:<?php echo $this->optionsSerialized->primaryColor; ?>;}
60
  #wpcomm .wpdiscuz-textarea-wrap{border:<?php echo $this->optionsSerialized->inputBorderColor; ?> 1px solid;} .wpd-custom-field .wcf-pasiv-star, #wpcomm .wpdiscuz-item .wpdiscuz-rating > label {color: <?php echo $this->optionsSerialized->ratingInactivColor; ?>;}
61
  #wpcomm .wpdiscuz-item .wpdiscuz-rating:not(:checked) > label:hover,.wpdiscuz-rating:not(:checked) > label:hover ~ label { }#wpcomm .wpdiscuz-item .wpdiscuz-rating > input ~ label:hover, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:not(:checked) ~ label:hover ~ label, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:not(:checked) ~ label:hover ~ label{color: <?php echo $this->optionsSerialized->ratingHoverColor; ?>;}
62
- #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover, #wpcomm .wpdiscuz-item .wpdiscuz-rating > label:hover ~ input:checked ~ label, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked + label:hover ~ label, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover ~ label, .wpd-custom-field .wcf-activ-star, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label{ color:<?php echo $this->optionsSerialized->ratingActivColor; ?>;}
63
  #wpcomm .wc-comment-header{border-top: 1px solid #dedede;}
64
  #wpcomm .wc-reply .wc-comment-header{border-top: 1px solid #dedede;}
65
  /* Buttons */
@@ -94,12 +94,9 @@ class WpdiscuzCss {
94
  #wpcomm .wc-footer-right .wc-toggle a,
95
  #wpcomm .wc-footer-right .wc-toggle i{color:<?php echo $this->optionsSerialized->primaryColor; ?>;}
96
  /* STICKY COMMENT HEADER */
97
- #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header{}
98
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header .wpd-sticky{background: #1ecea8; color: #ffffff; }
99
- #wpcomm .wc-closed-comment.wc-comment .wc-comment-header{}
100
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-header .wpd-closed{background: #aaaaaa; color: #ffffff;}
101
  /* PRIVATE COMMENT HEADER */
102
- #wpcomm .wc-private-comment.wc-comment .wc-comment-header{}
103
  #wpcomm .wc-private-comment.wc-comment .wc-comment-header .wpd-private{background: #999999; color: #ffffff;}
104
  /* FOLLOW LINK */
105
 
59
  #wpcomm .wpdiscuz-readmore{cursor:pointer;color:<?php echo $this->optionsSerialized->primaryColor; ?>;}
60
  #wpcomm .wpdiscuz-textarea-wrap{border:<?php echo $this->optionsSerialized->inputBorderColor; ?> 1px solid;} .wpd-custom-field .wcf-pasiv-star, #wpcomm .wpdiscuz-item .wpdiscuz-rating > label {color: <?php echo $this->optionsSerialized->ratingInactivColor; ?>;}
61
  #wpcomm .wpdiscuz-item .wpdiscuz-rating:not(:checked) > label:hover,.wpdiscuz-rating:not(:checked) > label:hover ~ label { }#wpcomm .wpdiscuz-item .wpdiscuz-rating > input ~ label:hover, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:not(:checked) ~ label:hover ~ label, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:not(:checked) ~ label:hover ~ label{color: <?php echo $this->optionsSerialized->ratingHoverColor; ?>;}
62
+ #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover, #wpcomm .wpdiscuz-item .wpdiscuz-rating > label:hover ~ input:checked ~ label, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked + label:hover ~ label, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label:hover ~ label, .wpd-custom-field .wcf-active-star, #wpcomm .wpdiscuz-item .wpdiscuz-rating > input:checked ~ label{ color:<?php echo $this->optionsSerialized->ratingActivColor; ?>;}
63
  #wpcomm .wc-comment-header{border-top: 1px solid #dedede;}
64
  #wpcomm .wc-reply .wc-comment-header{border-top: 1px solid #dedede;}
65
  /* Buttons */
94
  #wpcomm .wc-footer-right .wc-toggle a,
95
  #wpcomm .wc-footer-right .wc-toggle i{color:<?php echo $this->optionsSerialized->primaryColor; ?>;}
96
  /* STICKY COMMENT HEADER */
 
97
  #wpcomm .wc-sticky-comment.wc-comment .wc-comment-header .wpd-sticky{background: #1ecea8; color: #ffffff; }
 
98
  #wpcomm .wc-closed-comment.wc-comment .wc-comment-header .wpd-closed{background: #aaaaaa; color: #ffffff;}
99
  /* PRIVATE COMMENT HEADER */
 
100
  #wpcomm .wc-private-comment.wc-comment .wc-comment-header .wpd-private{background: #999999; color: #ffffff;}
101
  /* FOLLOW LINK */
102
 
includes/class.WpdiscuzDBManager.php CHANGED
@@ -623,13 +623,13 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
623
  if ($stat && isset($stat[self::POSTMETA_THREADS])) {
624
  $threads = intval($stat[self::POSTMETA_THREADS]);
625
  } else {
626
- $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = 1 AND `comment_parent` = 0;", $postId);
627
  $threads = intval($this->db->get_var($sql));
628
  $stat[self::POSTMETA_THREADS] = $threads;
629
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
630
  }
631
  } else {
632
- $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = 1 AND `comment_parent` = 0;", $postId);
633
  $threads = intval($this->db->get_var($sql));
634
  }
635
  return $threads;
@@ -643,13 +643,13 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
643
  if ($stat && isset($stat[self::POSTMETA_REPLIES])) {
644
  $replies = intval($stat[self::POSTMETA_REPLIES]);
645
  } else {
646
- $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = 1 AND `comment_parent` != 0;", $postId);
647
  $replies = intval($this->db->get_var($sql));
648
  $stat[self::POSTMETA_REPLIES] = $replies;
649
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
650
  }
651
  } else {
652
- $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = 1 AND `comment_parent` != 0;", $postId);
653
  $replies = intval($this->db->get_var($sql));
654
  }
655
  return $replies;
@@ -683,13 +683,13 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
683
  if ($stat && isset($stat[self::POSTMETA_REACTED])) {
684
  $reacted = intval($stat[self::POSTMETA_REACTED]);
685
  } else {
686
- $sql = $this->db->prepare("SELECT v.`comment_id` FROM `$this->users_voted` AS `v` INNER JOIN `{$this->db->comments}` AS `c` ON `v`.`comment_id` = `c`.`comment_ID` WHERE `c`.`comment_post_ID` = %d AND `c`.`comment_approved` = 1 GROUP BY `v`.`comment_id` ORDER BY COUNT(`v`.`comment_id`) DESC, `c`.`comment_date_gmt` DESC LIMIT 1;", $postId);
687
  $reacted = intval($this->db->get_var($sql));
688
  $stat[self::POSTMETA_REACTED] = $reacted;
689
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
690
  }
691
  } else {
692
- $sql = $this->db->prepare("SELECT v.`comment_id` FROM `$this->users_voted` AS `v` INNER JOIN `{$this->db->comments}` AS `c` ON `v`.`comment_id` = `c`.`comment_ID` WHERE `c`.`comment_post_ID` = %d AND `c`.`comment_approved` = 1 GROUP BY `v`.`comment_id` ORDER BY COUNT(`v`.`comment_id`) DESC, `c`.`comment_date_gmt` DESC LIMIT 1;", $postId);
693
  $reacted = intval($this->db->get_var($sql));
694
  }
695
  return $reacted;
@@ -709,13 +709,13 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
709
  if ($stat && isset($stat[self::POSTMETA_AUTHORS])) {
710
  $authors = intval($stat[self::POSTMETA_AUTHORS]);
711
  } else {
712
- $sql = $this->db->prepare("SELECT COUNT(DISTINCT `comment_author_email`) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_author_email` != '' AND `comment_approved` = 1;", $postId);
713
  $authors = intval($this->db->get_var($sql));
714
  $stat[self::POSTMETA_AUTHORS] = $authors;
715
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
716
  }
717
  } else {
718
- $sql = $this->db->prepare("SELECT COUNT(DISTINCT `comment_author_email`) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_author_email` != '' AND `comment_approved` = 1;", $postId);
719
  $authors = intval($this->db->get_var($sql));
720
  }
721
  return $authors;
@@ -730,13 +730,13 @@ class WpdiscuzDBManager implements WpDiscuzConstants {
730
  if ($stat && isset($stat[self::POSTMETA_RECENT_AUTHORS])) {
731
  $recentAuthors = $stat[self::POSTMETA_RECENT_AUTHORS];
732
  } else {
733
- $sql = $this->db->prepare("SELECT DISTINCT `comment_author_email`, `comment_author`, user_id FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = 1 ORDER BY `comment_ID` DESC LIMIT %d;", $postId, $limit);
734
  $recentAuthors = $this->db->get_results($sql);
735
  $stat[self::POSTMETA_RECENT_AUTHORS] = $recentAuthors;
736
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
737
  }
738
  } else {
739
- $sql = $this->db->prepare("SELECT DISTINCT `comment_author_email`, `comment_author`, user_id FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = 1 AND `comment_author_email` != '' ORDER BY `comment_ID` DESC LIMIT %d;", $postId, $limit);
740
  $recentAuthors = $this->db->get_results($sql);
741
  }
742
  return $recentAuthors;
623
  if ($stat && isset($stat[self::POSTMETA_THREADS])) {
624
  $threads = intval($stat[self::POSTMETA_THREADS]);
625
  } else {
626
+ $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = '1' AND `comment_parent` = 0;", $postId);
627
  $threads = intval($this->db->get_var($sql));
628
  $stat[self::POSTMETA_THREADS] = $threads;
629
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
630
  }
631
  } else {
632
+ $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = '1' AND `comment_parent` = 0;", $postId);
633
  $threads = intval($this->db->get_var($sql));
634
  }
635
  return $threads;
643
  if ($stat && isset($stat[self::POSTMETA_REPLIES])) {
644
  $replies = intval($stat[self::POSTMETA_REPLIES]);
645
  } else {
646
+ $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = '1' AND `comment_parent` != 0;", $postId);
647
  $replies = intval($this->db->get_var($sql));
648
  $stat[self::POSTMETA_REPLIES] = $replies;
649
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
650
  }
651
  } else {
652
+ $sql = $this->db->prepare("SELECT COUNT(*) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = '1' AND `comment_parent` != 0;", $postId);
653
  $replies = intval($this->db->get_var($sql));
654
  }
655
  return $replies;
683
  if ($stat && isset($stat[self::POSTMETA_REACTED])) {
684
  $reacted = intval($stat[self::POSTMETA_REACTED]);
685
  } else {
686
+ $sql = $this->db->prepare("SELECT v.`comment_id` FROM `$this->users_voted` AS `v` INNER JOIN `{$this->db->comments}` AS `c` ON `v`.`comment_id` = `c`.`comment_ID` WHERE `c`.`comment_post_ID` = %d AND `c`.`comment_approved` = '1' GROUP BY `v`.`comment_id` ORDER BY COUNT(`v`.`comment_id`) DESC, `c`.`comment_date_gmt` DESC LIMIT 1;", $postId);
687
  $reacted = intval($this->db->get_var($sql));
688
  $stat[self::POSTMETA_REACTED] = $reacted;
689
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
690
  }
691
  } else {
692
+ $sql = $this->db->prepare("SELECT v.`comment_id` FROM `$this->users_voted` AS `v` INNER JOIN `{$this->db->comments}` AS `c` ON `v`.`comment_id` = `c`.`comment_ID` WHERE `c`.`comment_post_ID` = %d AND `c`.`comment_approved` = '1' GROUP BY `v`.`comment_id` ORDER BY COUNT(`v`.`comment_id`) DESC, `c`.`comment_date_gmt` DESC LIMIT 1;", $postId);
693
  $reacted = intval($this->db->get_var($sql));
694
  }
695
  return $reacted;
709
  if ($stat && isset($stat[self::POSTMETA_AUTHORS])) {
710
  $authors = intval($stat[self::POSTMETA_AUTHORS]);
711
  } else {
712
+ $sql = $this->db->prepare("SELECT COUNT(DISTINCT `comment_author_email`) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_author_email` != '' AND `comment_approved` = '1';", $postId);
713
  $authors = intval($this->db->get_var($sql));
714
  $stat[self::POSTMETA_AUTHORS] = $authors;
715
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
716
  }
717
  } else {
718
+ $sql = $this->db->prepare("SELECT COUNT(DISTINCT `comment_author_email`) FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_author_email` != '' AND `comment_approved` = '1';", $postId);
719
  $authors = intval($this->db->get_var($sql));
720
  }
721
  return $authors;
730
  if ($stat && isset($stat[self::POSTMETA_RECENT_AUTHORS])) {
731
  $recentAuthors = $stat[self::POSTMETA_RECENT_AUTHORS];
732
  } else {
733
+ $sql = $this->db->prepare("SELECT DISTINCT `comment_author_email`, `comment_author`, user_id FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = '1' ORDER BY `comment_ID` DESC LIMIT %d;", $postId, $limit);
734
  $recentAuthors = $this->db->get_results($sql);
735
  $stat[self::POSTMETA_RECENT_AUTHORS] = $recentAuthors;
736
  update_post_meta($postId, self::POSTMETA_STATISTICS, $stat);
737
  }
738
  } else {
739
+ $sql = $this->db->prepare("SELECT DISTINCT `comment_author_email`, `comment_author`, user_id FROM `{$this->db->comments}` WHERE `comment_post_ID` = %d AND `comment_approved` = '1' AND `comment_author_email` != '' ORDER BY `comment_ID` DESC LIMIT %d;", $postId, $limit);
740
  $recentAuthors = $this->db->get_results($sql);
741
  }
742
  return $recentAuthors;
includes/interface.WpDiscuzConstants.php CHANGED
@@ -29,7 +29,7 @@ interface WpDiscuzConstants {
29
  /* === TRANSIENT KEYS === */
30
  const TRS_POSTS_AUTHORS = 'wpdiscuz_posts_authors';
31
  /* === COOKIES === */
32
- const COOKIE_LAST_VISIT = 'wordpress_last_visit';
33
  const COOKIE_COMMENTS_SORTING = 'wpdiscuz_comments_sorting';
34
  /* === CACHE === */
35
  const GRAVATARS_CACHE_DIR = '/wpdiscuz/cache/gravatars/';
29
  /* === TRANSIENT KEYS === */
30
  const TRS_POSTS_AUTHORS = 'wpdiscuz_posts_authors';
31
  /* === COOKIES === */
32
+ const COOKIE_LAST_VISIT = 'wpdiscuz_last_visit';
33
  const COOKIE_COMMENTS_SORTING = 'wpdiscuz_comments_sorting';
34
  /* === CACHE === */
35
  const GRAVATARS_CACHE_DIR = '/wpdiscuz/cache/gravatars/';
languages/wpdiscuz.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: wpDiscuz\n"
6
- "POT-Creation-Date: 2018-10-03 15:01+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
@@ -21,85 +21,89 @@ msgstr ""
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
  "Language: "
23
 
24
- #: class.WpdiscuzCore.php:264
25
  msgid "Every 3 hours"
26
  msgstr ""
27
 
28
- #: class.WpdiscuzCore.php:268
29
  msgid "Every 48 hours"
30
  msgstr ""
31
 
32
- #: class.WpdiscuzCore.php:381
33
  msgid "We are sorry, but this comment cannot be posted. Please try later."
34
  msgstr ""
35
 
36
- #: class.WpdiscuzCore.php:390
37
  msgid "We are sorry, you are not allowed to comment more than one time!"
38
  msgstr ""
39
 
40
- #: class.WpdiscuzCore.php:452
41
  msgid "This is closed comment thread"
42
  msgstr ""
43
 
44
- #: class.WpdiscuzCore.php:1036 class.WpdiscuzCore.php:1270
45
  msgid "Settings"
46
  msgstr ""
47
 
48
- #: class.WpdiscuzCore.php:1038 class.WpdiscuzCore.php:1272
49
  msgid "Phrases"
50
  msgstr ""
51
 
52
- #: class.WpdiscuzCore.php:1040
53
  msgid "Tools"
54
  msgstr ""
55
 
56
- #: class.WpdiscuzCore.php:1041 options/html-options.php:22
57
  #: options/html-options.php:64 options/options-layouts/settings-addons.php:14
58
  msgid "Addons"
59
  msgstr ""
60
 
61
- #: class.WpdiscuzCore.php:1053
62
  msgid "Do you really want to reset all options?"
63
  msgstr ""
64
 
65
- #: class.WpdiscuzCore.php:1054
66
  msgid "Do you really want to remove voting data?"
67
  msgstr ""
68
 
69
- #: class.WpdiscuzCore.php:1055
70
  msgid "Do you really want to reset phrases?"
71
  msgstr ""
72
 
73
- #: class.WpdiscuzCore.php:1056
74
  msgid "Do you really want to delete gravatars cache?"
75
  msgstr ""
76
 
77
- #: class.WpdiscuzCore.php:1057
78
  msgid "Do you really want to delete statistics cache?"
79
  msgstr ""
80
 
81
- #: class.WpdiscuzCore.php:1094
82
  msgid "Please check one of reasons before sending feedback!"
83
  msgstr ""
84
 
85
- #: class.WpdiscuzCore.php:1095 utils/deactivation-reason-modal.php:58
86
  msgid "Please provide more information"
87
  msgstr ""
88
 
89
- #: class.WpdiscuzCore.php:1359 options/phrases-layouts/phrases-comment.php:56
90
  msgid "Admin"
91
  msgstr ""
92
 
93
- #: class.WpdiscuzCore.php:1361 class.WpdiscuzCore.php:1370
94
  #: options/phrases-layouts/phrases-comment.php:58
95
  msgid "Author"
96
  msgstr ""
97
 
98
- #: class.WpdiscuzCore.php:1365 options/phrases-layouts/phrases-comment.php:64
 
 
 
 
99
  msgid "Member"
100
  msgstr ""
101
 
102
- #: class.WpdiscuzCore.php:1371 options/phrases-layouts/phrases-comment.php:62
103
  msgid "Guest"
104
  msgstr ""
105
 
@@ -143,7 +147,7 @@ msgstr ""
143
  msgid "Post IDs"
144
  msgstr ""
145
 
146
- #: forms/wpDiscuzForm.php:176 forms/wpdFormAttr/Form.php:674
147
  msgid "Language"
148
  msgstr ""
149
 
@@ -156,7 +160,7 @@ msgid "Two column"
156
  msgstr ""
157
 
158
  #: forms/wpDiscuzForm.php:224 forms/wpdFormAttr/Row.php:24
159
- #: forms/wpdFormAttr/Field/Field.php:66
160
  msgid "Delete"
161
  msgstr ""
162
 
@@ -168,9 +172,9 @@ msgstr ""
168
  msgid "Add Field"
169
  msgstr ""
170
 
171
- #: forms/wpDiscuzForm.php:227 options/class.WpdiscuzOptionsSerialized.php:820
172
  #: options/phrases-layouts/phrases-comment.php:19
173
- #: forms/wpdFormAttr/Field/Field.php:63
174
  msgid "Edit"
175
  msgstr ""
176
 
@@ -186,7 +190,7 @@ msgstr ""
186
  msgid "Permission Denied !!!"
187
  msgstr ""
188
 
189
- #: forms/wpDiscuzForm.php:261 forms/wpdFormAttr/Form.php:642
190
  #: options/options-layouts/settings-customfields.php:7
191
  #: forms/wpdFormAttr/html/admin-form-fields-list.php:18
192
  msgid "Custom Fields"
@@ -201,11 +205,11 @@ msgid "Default Form"
201
  msgstr ""
202
 
203
  #: forms/wpDiscuzForm.php:398 forms/wpDiscuzForm.php:406
204
- #: forms/wpdFormAttr/Form.php:755 forms/wpdFormAttr/Form.php:755
205
  msgid "Leave a Reply"
206
  msgstr ""
207
 
208
- #: forms/wpDiscuzForm.php:421 forms/wpdFormAttr/Form.php:878
209
  #: forms/wpdFormAttr/Field/AgreementCheckbox.php:12
210
  #: forms/wpdFormAttr/Field/CheckboxField.php:12
211
  #: forms/wpdFormAttr/Field/ColorField.php:12
@@ -228,8 +232,8 @@ msgstr ""
228
  msgid "Name"
229
  msgstr ""
230
 
231
- #: forms/wpDiscuzForm.php:423 options/class.WpdiscuzOptionsSerialized.php:806
232
- #: options/html-phrases.php:25 forms/wpdFormAttr/Form.php:885
233
  #: forms/wpdFormAttr/Field/DefaultField/Email.php:65
234
  msgid "Email"
235
  msgstr ""
@@ -238,7 +242,7 @@ msgstr ""
238
  msgid "WebSite URL"
239
  msgstr ""
240
 
241
- #: forms/wpDiscuzForm.php:428 forms/wpdFormAttr/Form.php:908
242
  #: forms/wpdFormAttr/Field/DefaultField/Submit.php:116
243
  msgid "Post Comment"
244
  msgstr ""
@@ -257,150 +261,150 @@ msgstr ""
257
  msgid "Add Comment Form"
258
  msgstr ""
259
 
260
- #: options/class.WpdiscuzOptions.php:22 options/class.WpdiscuzOptions.php:143
261
- #: options/class.WpdiscuzOptions.php:368
262
  msgid "Hacker?"
263
  msgstr ""
264
 
265
- #: options/class.WpdiscuzOptions.php:134
266
  msgid "Settings updated"
267
  msgstr ""
268
 
269
- #: options/class.WpdiscuzOptions.php:315
270
  msgid "Phrases updated"
271
  msgstr ""
272
 
273
- #: options/class.WpdiscuzOptions.php:342
274
  msgid "Options were backed up!"
275
  msgstr ""
276
 
277
- #: options/class.WpdiscuzOptions.php:344
278
  msgid "Cannot back up the options!"
279
  msgstr ""
280
 
281
- #: options/class.WpdiscuzOptions.php:355
282
  msgid "Options Imported Successfully!"
283
  msgstr ""
284
 
285
- #: options/class.WpdiscuzOptions.php:357
286
  msgid "Error occured! File content is empty or data is not valid!"
287
  msgstr ""
288
 
289
- #: options/class.WpdiscuzOptions.php:360
290
  msgid "Error occured! Can not get file content!"
291
  msgstr ""
292
 
293
- #: options/class.WpdiscuzOptions.php:363
294
  msgid "Error occured! Please choose file!"
295
  msgstr ""
296
 
297
- #: options/class.WpdiscuzOptions.php:379
298
  msgid ""
299
  "All 16 addons in one bundle. Save 90% and get Unlimited Site License with "
300
  "one year premium support."
301
  msgstr ""
302
 
303
- #: options/class.WpdiscuzOptions.php:380
304
  msgid ""
305
  "Brings an ocean of emotions to your comments. It comes with an awesome smile "
306
  "package."
307
  msgstr ""
308
 
309
- #: options/class.WpdiscuzOptions.php:381
310
  msgid ""
311
  "Extended information about comment author with Profile, Activity, Votes and "
312
  "Subscriptions Tabs on pop-up window."
313
  msgstr ""
314
 
315
- #: options/class.WpdiscuzOptions.php:382
316
  msgid ""
317
  "Real-time online user checking, pop-up notification of new online users and "
318
  "online/offline badges."
319
  msgstr ""
320
 
321
- #: options/class.WpdiscuzOptions.php:383
322
  msgid ""
323
  "Allows to create private comment threads. Rich management options in "
324
  "dashboard by user roles."
325
  msgstr ""
326
 
327
- #: options/class.WpdiscuzOptions.php:384
328
  msgid ""
329
  "Total control over comment subscriptions. Full list, monitor, manage, filter,"
330
  " unsubscribe, confirm..."
331
  msgstr ""
332
 
333
- #: options/class.WpdiscuzOptions.php:385
334
  msgid ""
335
  "A full-fledged tool-kit for advertising in comment section of your website. "
336
  "Separate banner and ad managment."
337
  msgstr ""
338
 
339
- #: options/class.WpdiscuzOptions.php:386
340
  msgid ""
341
  "Allows to mention comments and users in comment text using #comment-id and "
342
  "@username tags."
343
  msgstr ""
344
 
345
- #: options/class.WpdiscuzOptions.php:387
346
  msgid ""
347
  "See comment likers and voters of each comment. Adds user reputation and "
348
  "badges based on received likes."
349
  msgstr ""
350
 
351
- #: options/class.WpdiscuzOptions.php:388
352
  msgid ""
353
  "Comment reporting tools. Auto-moderates comments based on number of flags "
354
  "and dislikes."
355
  msgstr ""
356
 
357
- #: options/class.WpdiscuzOptions.php:389
358
  msgid ""
359
  "Adds a smart and intuitive AJAX \"Translate\" button with 60 language "
360
  "options. Uses free translation API."
361
  msgstr ""
362
 
363
- #: options/class.WpdiscuzOptions.php:390
364
  msgid ""
365
  "AJAX powered front-end comment search. It starts searching while you type "
366
  "search words. "
367
  msgstr ""
368
 
369
- #: options/class.WpdiscuzOptions.php:391
370
  msgid ""
371
  "Most voted comments, Active comment threads, Most commented posts, Active "
372
  "comment authors"
373
  msgstr ""
374
 
375
- #: options/class.WpdiscuzOptions.php:392
376
  msgid ""
377
  "All in one powerful yet simple admin toolkit to moderate comments on front-"
378
  "end."
379
  msgstr ""
380
 
381
- #: options/class.WpdiscuzOptions.php:393
382
  msgid ""
383
  "Extended comment attachment system. Allows to upload images, videos, audios "
384
  "and other file types."
385
  msgstr ""
386
 
387
- #: options/class.WpdiscuzOptions.php:394
388
  msgid ""
389
  "Adds No CAPTCHA on all comment forms. Stops spam and bot comments with "
390
  "Google reCAPTCHA"
391
  msgstr ""
392
 
393
- #: options/class.WpdiscuzOptions.php:395
394
  msgid ""
395
  "Integrates myCRED Badges and Ranks. Converts wpDiscuz comment votes/likes to "
396
  "myCRED points. "
397
  msgstr ""
398
 
399
- #: options/class.WpdiscuzOptions.php:401
400
  msgid "Custom Comment Forms"
401
  msgstr ""
402
 
403
- #: options/class.WpdiscuzOptions.php:402
404
  msgid ""
405
  "You can create custom comment forms with wpDiscuz. wpDiscuz 4 comes with "
406
  "custom comment forms and fields. You can create custom comment forms for "
@@ -408,63 +412,63 @@ msgid ""
408
  "eaxample: text, dropdown, rating, checkboxes, etc..."
409
  msgstr ""
410
 
411
- #: options/class.WpdiscuzOptions.php:405
412
  msgid "Emoticons"
413
  msgstr ""
414
 
415
- #: options/class.WpdiscuzOptions.php:406
416
  msgid ""
417
  "You can add more emotions to your comments using wpDiscuz Emoticons addon."
418
  msgstr ""
419
 
420
- #: options/class.WpdiscuzOptions.php:409
421
  msgid "Ads Manager"
422
  msgstr ""
423
 
424
- #: options/class.WpdiscuzOptions.php:410
425
  msgid ""
426
  "Increase your income using ad banners. Comment area is the most active "
427
  "sections for advertising. wpDiscuz Ads Manager addon is designed to help you "
428
  "add banners and control ads in this section."
429
  msgstr ""
430
 
431
- #: options/class.WpdiscuzOptions.php:413
432
  msgid "User and Comment Mentioning"
433
  msgstr ""
434
 
435
- #: options/class.WpdiscuzOptions.php:414
436
  msgid ""
437
  "Using wpDiscuz User &amp; Comment Mentioning addon you can allow commenters "
438
  "mention comments and users in comment text using #comment-id and @username "
439
  "tags."
440
  msgstr ""
441
 
442
- #: options/class.WpdiscuzOptions.php:417 options/addons/al/title.php:7
443
  msgid "Advanced Likers"
444
  msgstr ""
445
 
446
- #: options/class.WpdiscuzOptions.php:418
447
  msgid ""
448
  "wpDiscuz Advanced Likers addon displays likers and voters of each comment. "
449
  "Adds user reputation and badges based on received likes."
450
  msgstr ""
451
 
452
- #: options/class.WpdiscuzOptions.php:421 options/addons/raf/title.php:7
453
  msgid "Report and Flagging"
454
  msgstr ""
455
 
456
- #: options/class.WpdiscuzOptions.php:422
457
  msgid ""
458
  "Let your commenters help you to determine and remove spam comments. wpDiscuz "
459
  "Report and Flagging addon comes with comment reporting tools. Automaticaly "
460
  "auto-moderates comments based on number of flags and dislikes."
461
  msgstr ""
462
 
463
- #: options/class.WpdiscuzOptions.php:425
464
  msgid "Comment Translate"
465
  msgstr ""
466
 
467
- #: options/class.WpdiscuzOptions.php:426
468
  msgid ""
469
  "In most cases the big part of your visitors are not a native speakers of "
470
  "your language. Make your comments comprehensible for all visitors using "
@@ -473,11 +477,11 @@ msgid ""
473
  "translation API."
474
  msgstr ""
475
 
476
- #: options/class.WpdiscuzOptions.php:429
477
  msgid "Comment Search"
478
  msgstr ""
479
 
480
- #: options/class.WpdiscuzOptions.php:430
481
  msgid ""
482
  "You can let website visitor search in comments. It's always more attractive "
483
  "to find a comment about something that interest you. Using wpDiscuz Comment "
@@ -485,212 +489,212 @@ msgid ""
485
  "above comment list."
486
  msgstr ""
487
 
488
- #: options/class.WpdiscuzOptions.php:433
489
  msgid "wpDiscuz Widgets"
490
  msgstr ""
491
 
492
- #: options/class.WpdiscuzOptions.php:434
493
  msgid ""
494
  "More Comment Widgets! Most voted comments, Active comment threads, Most "
495
  "commented posts, Active comment authors widgets are available in wpDiscuz "
496
  "Widgets Addon"
497
  msgstr ""
498
 
499
- #: options/class.WpdiscuzOptions.php:437
500
  msgid "Front-end Moderation"
501
  msgstr ""
502
 
503
- #: options/class.WpdiscuzOptions.php:438
504
  msgid ""
505
  "You can moderate comments on front-end using all in one powerful yet simple "
506
  "wpDiscuz Frontend Moderation addon."
507
  msgstr ""
508
 
509
- #: options/class.WpdiscuzOptions.php:441 options/addons/mu/title.php:7
510
  msgid "Media Uploader"
511
  msgstr ""
512
 
513
- #: options/class.WpdiscuzOptions.php:442
514
  msgid ""
515
  "You can let website visitors attach images and files to comments and embed "
516
  "video/audio content using wpDiscuz Media Uploader addon."
517
  msgstr ""
518
 
519
- #: options/class.WpdiscuzOptions.php:445
520
  msgid "Google ReCaptcha"
521
  msgstr ""
522
 
523
- #: options/class.WpdiscuzOptions.php:446
524
  msgid ""
525
  "Advanced spam protection with wpDiscuz Google reCAPTCHA addon. This addon "
526
  "adds No-CAPTCHA reCAPTCHA on all comment forms. Stops spam and bot comments."
527
  msgstr ""
528
 
529
- #: options/class.WpdiscuzOptions.php:467
530
  msgid "Finally wpDiscuz Addons Bundle is ready for You!"
531
  msgstr ""
532
 
533
- #: options/class.WpdiscuzOptions.php:476
534
  msgid "View Addons Bundle"
535
  msgstr ""
536
 
537
- #: options/class.WpdiscuzOptions.php:514
538
  msgid "Do you know?"
539
  msgstr ""
540
 
541
- #: options/class.WpdiscuzOptions.php:527
542
  msgid "More info"
543
  msgstr ""
544
 
545
- #: options/class.WpdiscuzOptionsSerialized.php:796
546
  msgid "Be the First to Comment!"
547
  msgstr ""
548
 
549
- #: options/class.WpdiscuzOptionsSerialized.php:797
550
  msgid "Start the discussion"
551
  msgstr ""
552
 
553
- #: options/class.WpdiscuzOptionsSerialized.php:798
554
  msgid "Join the discussion"
555
  msgstr ""
556
 
557
- #: options/class.WpdiscuzOptionsSerialized.php:799
558
  #: options/phrases-layouts/phrases-form.php:19
559
  msgid "Comment threads"
560
  msgstr ""
561
 
562
- #: options/class.WpdiscuzOptionsSerialized.php:800
563
  #: options/phrases-layouts/phrases-form.php:23
564
  msgid "Thread replies"
565
  msgstr ""
566
 
567
- #: options/class.WpdiscuzOptionsSerialized.php:801
568
  #: options/phrases-layouts/phrases-form.php:27
569
  msgid "Followers"
570
  msgstr ""
571
 
572
- #: options/class.WpdiscuzOptionsSerialized.php:802
573
  #: options/phrases-layouts/phrases-form.php:31
574
  msgid "Most reacted comment"
575
  msgstr ""
576
 
577
- #: options/class.WpdiscuzOptionsSerialized.php:803
578
  #: options/phrases-layouts/phrases-form.php:35
579
  msgid "Hottest comment thread"
580
  msgstr ""
581
 
582
- #: options/class.WpdiscuzOptionsSerialized.php:804
583
  #: options/phrases-layouts/phrases-form.php:39
584
  msgid "Comment authors"
585
  msgstr ""
586
 
587
- #: options/class.WpdiscuzOptionsSerialized.php:805
588
  #: options/phrases-layouts/phrases-form.php:43
589
  msgid "Recent comment authors"
590
  msgstr ""
591
 
592
- #: options/class.WpdiscuzOptionsSerialized.php:807
593
  #: options/phrases-layouts/phrases-form.php:51
594
  msgid "Subscribe"
595
  msgstr ""
596
 
597
- #: options/class.WpdiscuzOptionsSerialized.php:808
598
  #: options/phrases-layouts/phrases-form.php:55
599
  msgid "Notify of"
600
  msgstr ""
601
 
602
- #: options/class.WpdiscuzOptionsSerialized.php:809
603
  msgid "new follow-up comments"
604
  msgstr ""
605
 
606
- #: options/class.WpdiscuzOptionsSerialized.php:810
607
  msgid "new replies to my comments"
608
  msgstr ""
609
 
610
- #: options/class.WpdiscuzOptionsSerialized.php:811
611
  msgid "Notify of new replies to this comment"
612
  msgstr ""
613
 
614
- #: options/class.WpdiscuzOptionsSerialized.php:812
615
  #: options/phrases-layouts/phrases-form.php:71
616
  msgid "Sort by"
617
  msgstr ""
618
 
619
- #: options/class.WpdiscuzOptionsSerialized.php:813
620
  #: options/phrases-layouts/phrases-form.php:75
621
  msgid "newest"
622
  msgstr ""
623
 
624
- #: options/class.WpdiscuzOptionsSerialized.php:814
625
  #: options/phrases-layouts/phrases-form.php:79
626
  msgid "oldest"
627
  msgstr ""
628
 
629
- #: options/class.WpdiscuzOptionsSerialized.php:815
630
  #: options/phrases-layouts/phrases-form.php:83
631
  msgid "most voted"
632
  msgstr ""
633
 
634
- #: options/class.WpdiscuzOptionsSerialized.php:816
635
  msgid "Load More Comments"
636
  msgstr ""
637
 
638
- #: options/class.WpdiscuzOptionsSerialized.php:817
639
  #: options/phrases-layouts/phrases-general.php:19
640
  msgid "Load Rest of Comments"
641
  msgstr ""
642
 
643
- #: options/class.WpdiscuzOptionsSerialized.php:818
644
  #: options/phrases-layouts/phrases-comment.php:11
645
  msgid "Reply"
646
  msgstr ""
647
 
648
- #: options/class.WpdiscuzOptionsSerialized.php:819
649
  #: options/phrases-layouts/phrases-comment.php:15
650
  msgid "Share"
651
  msgstr ""
652
 
653
- #: options/class.WpdiscuzOptionsSerialized.php:821
654
  #: options/phrases-layouts/phrases-comment.php:23
655
  msgid "Share On Facebook"
656
  msgstr ""
657
 
658
- #: options/class.WpdiscuzOptionsSerialized.php:822
659
  #: options/phrases-layouts/phrases-comment.php:27
660
  msgid "Share On Twitter"
661
  msgstr ""
662
 
663
- #: options/class.WpdiscuzOptionsSerialized.php:823
664
  #: options/phrases-layouts/phrases-comment.php:31
665
  msgid "Share On Google"
666
  msgstr ""
667
 
668
- #: options/class.WpdiscuzOptionsSerialized.php:824
669
  #: options/phrases-layouts/phrases-comment.php:35
670
  msgid "Share On VKontakte"
671
  msgstr ""
672
 
673
- #: options/class.WpdiscuzOptionsSerialized.php:825
674
  #: options/phrases-layouts/phrases-comment.php:39
675
  msgid "Share On Odnoklassniki"
676
  msgstr ""
677
 
678
- #: options/class.WpdiscuzOptionsSerialized.php:826
679
  #: options/phrases-layouts/phrases-comment.php:43
680
  msgid "Hide Replies"
681
  msgstr ""
682
 
683
- #: options/class.WpdiscuzOptionsSerialized.php:827
684
  #: options/phrases-layouts/phrases-comment.php:47
685
  msgid "View Replies"
686
  msgstr ""
687
 
688
- #: options/class.WpdiscuzOptionsSerialized.php:828
689
- #: options/class.WpdiscuzOptionsSerialized.php:953
690
  msgid "New Comment"
691
  msgstr ""
692
 
693
- #: options/class.WpdiscuzOptionsSerialized.php:829
694
  msgid ""
695
  "Hi [SUBSCRIBER_NAME],<br/><br/> new comment have been posted by the <em>"
696
  "<strong>[COMMENT_AUTHOR]</em></strong> on the discussion section you've been "
@@ -698,13 +702,13 @@ msgid ""
698
  "[COMMENT_CONTENT]<br/><br/><a href=\"[UNSUBSCRIBE_URL]\">Unsubscribe</a>"
699
  msgstr ""
700
 
701
- #: options/class.WpdiscuzOptionsSerialized.php:830
702
- #: options/class.WpdiscuzOptionsSerialized.php:832
703
  msgid "New Reply"
704
  msgstr ""
705
 
706
- #: options/class.WpdiscuzOptionsSerialized.php:831
707
- #: options/class.WpdiscuzOptionsSerialized.php:833
708
  msgid ""
709
  "Hi [SUBSCRIBER_NAME],<br/><br/> new reply have been posted by the <em>"
710
  "<strong>[COMMENT_AUTHOR]</em></strong> on the discussion section you've been "
@@ -712,52 +716,52 @@ msgid ""
712
  "[COMMENT_CONTENT]<br/><br/><a href=\"[UNSUBSCRIBE_URL]\">Unsubscribe</a>"
713
  msgstr ""
714
 
715
- #: options/class.WpdiscuzOptionsSerialized.php:834
716
  msgid "You're subscribed for new replies on this comment"
717
  msgstr ""
718
 
719
- #: options/class.WpdiscuzOptionsSerialized.php:835
720
  msgid "You're subscribed for new replies on all your comments"
721
  msgstr ""
722
 
723
- #: options/class.WpdiscuzOptionsSerialized.php:836
724
  msgid "You're subscribed for new follow-up comments on this post"
725
  msgstr ""
726
 
727
- #: options/class.WpdiscuzOptionsSerialized.php:837
728
  #: options/phrases-layouts/phrases-email.php:172
729
  msgid "Unsubscribe"
730
  msgstr ""
731
 
732
- #: options/class.WpdiscuzOptionsSerialized.php:838
733
  msgid "Cancel subscription"
734
  msgstr ""
735
 
736
- #: options/class.WpdiscuzOptionsSerialized.php:839
737
  #: options/phrases-layouts/phrases-notification.php:19
738
  msgid "You've successfully unsubscribed."
739
  msgstr ""
740
 
741
- #: options/class.WpdiscuzOptionsSerialized.php:840
742
  #: options/phrases-layouts/phrases-notification.php:15
743
  msgid "You've successfully subscribed."
744
  msgstr ""
745
 
746
- #: options/class.WpdiscuzOptionsSerialized.php:841
747
  #: options/phrases-layouts/phrases-email.php:180
748
  msgid "Confirm your subscription"
749
  msgstr ""
750
 
751
- #: options/class.WpdiscuzOptionsSerialized.php:842
752
  #: options/phrases-layouts/phrases-email.php:184
753
  msgid "You've successfully confirmed your subscription."
754
  msgstr ""
755
 
756
- #: options/class.WpdiscuzOptionsSerialized.php:843
757
  msgid "Subscription Confirmation"
758
  msgstr ""
759
 
760
- #: options/class.WpdiscuzOptionsSerialized.php:844
761
  msgid ""
762
  "Hi, <br/> You just subscribed for new comments on our website. This means "
763
  "you will receive an email when new comments are posted according to "
@@ -768,288 +772,288 @@ msgid ""
768
  "href=\"[CANCEL_URL]\">Cancel Subscription</a>"
769
  msgstr ""
770
 
771
- #: options/class.WpdiscuzOptionsSerialized.php:845
772
  msgid "please fill out this field to comment"
773
  msgstr ""
774
 
775
- #: options/class.WpdiscuzOptionsSerialized.php:846
776
  msgid "email address is invalid"
777
  msgstr ""
778
 
779
- #: options/class.WpdiscuzOptionsSerialized.php:847
780
  msgid "url is invalid"
781
  msgstr ""
782
 
783
- #: options/class.WpdiscuzOptionsSerialized.php:848
784
  msgid "year"
785
  msgstr ""
786
 
787
- #: options/class.WpdiscuzOptionsSerialized.php:849
788
  msgid "years"
789
  msgstr ""
790
 
791
- #: options/class.WpdiscuzOptionsSerialized.php:850
792
  msgid "month"
793
  msgstr ""
794
 
795
- #: options/class.WpdiscuzOptionsSerialized.php:851
796
  msgid "months"
797
  msgstr ""
798
 
799
- #: options/class.WpdiscuzOptionsSerialized.php:852
800
  msgid "day"
801
  msgstr ""
802
 
803
- #: options/class.WpdiscuzOptionsSerialized.php:853
804
  msgid "days"
805
  msgstr ""
806
 
807
- #: options/class.WpdiscuzOptionsSerialized.php:854
808
  msgid "hour"
809
  msgstr ""
810
 
811
- #: options/class.WpdiscuzOptionsSerialized.php:855
812
  msgid "hours"
813
  msgstr ""
814
 
815
- #: options/class.WpdiscuzOptionsSerialized.php:856
816
  msgid "minute"
817
  msgstr ""
818
 
819
- #: options/class.WpdiscuzOptionsSerialized.php:857
820
  msgid "minutes"
821
  msgstr ""
822
 
823
- #: options/class.WpdiscuzOptionsSerialized.php:858
824
  msgid "second"
825
  msgstr ""
826
 
827
- #: options/class.WpdiscuzOptionsSerialized.php:859
828
  msgid "seconds"
829
  msgstr ""
830
 
831
- #: options/class.WpdiscuzOptionsSerialized.php:860
832
  msgid "right now"
833
  msgstr ""
834
 
835
- #: options/class.WpdiscuzOptionsSerialized.php:861
836
  msgid "ago"
837
  msgstr ""
838
 
839
- #: options/class.WpdiscuzOptionsSerialized.php:862
840
  #: options/phrases-layouts/phrases-notification.php:38
841
  msgid "You must be"
842
  msgstr ""
843
 
844
- #: options/class.WpdiscuzOptionsSerialized.php:863
845
  msgid "You are logged in as"
846
  msgstr ""
847
 
848
- #: options/class.WpdiscuzOptionsSerialized.php:864
849
  #: options/phrases-layouts/phrases-notification.php:29
850
  msgid "Login"
851
  msgstr ""
852
 
853
- #: options/class.WpdiscuzOptionsSerialized.php:865
854
  #: options/phrases-layouts/phrases-notification.php:33
855
  #, php-format
856
  msgid "Please %s to comment"
857
  msgstr ""
858
 
859
- #: options/class.WpdiscuzOptionsSerialized.php:866
860
  #: options/phrases-layouts/phrases-notification.php:54
861
  msgid "Log out"
862
  msgstr ""
863
 
864
- #: options/class.WpdiscuzOptionsSerialized.php:867
865
  msgid "logged in"
866
  msgstr ""
867
 
868
- #: options/class.WpdiscuzOptionsSerialized.php:868
869
  msgid "to post a comment."
870
  msgstr ""
871
 
872
- #: options/class.WpdiscuzOptionsSerialized.php:869
873
  #: options/phrases-layouts/phrases-comment.php:75
874
  msgid "Vote Up"
875
  msgstr ""
876
 
877
- #: options/class.WpdiscuzOptionsSerialized.php:870
878
  #: options/phrases-layouts/phrases-comment.php:79
879
  msgid "Vote Down"
880
  msgstr ""
881
 
882
- #: options/class.WpdiscuzOptionsSerialized.php:871
883
  #: options/phrases-layouts/phrases-notification.php:58
884
  msgid "Vote Counted"
885
  msgstr ""
886
 
887
- #: options/class.WpdiscuzOptionsSerialized.php:872
888
  msgid "You've already voted for this comment"
889
  msgstr ""
890
 
891
- #: options/class.WpdiscuzOptionsSerialized.php:873
892
  #: options/phrases-layouts/phrases-error.php:27
893
  msgid "Voting Error"
894
  msgstr ""
895
 
896
- #: options/class.WpdiscuzOptionsSerialized.php:874
897
  msgid "You Must Be Logged In To Vote"
898
  msgstr ""
899
 
900
- #: options/class.WpdiscuzOptionsSerialized.php:875
901
  msgid "You cannot vote for your comment"
902
  msgstr ""
903
 
904
- #: options/class.WpdiscuzOptionsSerialized.php:876
905
  msgid "You are not allowed to vote for this comment"
906
  msgstr ""
907
 
908
- #: options/class.WpdiscuzOptionsSerialized.php:877
909
  #: options/phrases-layouts/phrases-error.php:39
910
  msgid "Invalid Captcha Code"
911
  msgstr ""
912
 
913
- #: options/class.WpdiscuzOptionsSerialized.php:878
914
  #: options/phrases-layouts/phrases-error.php:43
915
  msgid "Some of field value is invalid"
916
  msgstr ""
917
 
918
- #: options/class.WpdiscuzOptionsSerialized.php:879
919
  msgid "new comment"
920
  msgstr ""
921
 
922
- #: options/class.WpdiscuzOptionsSerialized.php:880
923
  msgid "new comments"
924
  msgstr ""
925
 
926
- #: options/class.WpdiscuzOptionsSerialized.php:881
927
  msgid "Comment awaiting moderation"
928
  msgstr ""
929
 
930
- #: options/class.WpdiscuzOptionsSerialized.php:882
931
  msgid "new reply on your comment"
932
  msgstr ""
933
 
934
- #: options/class.WpdiscuzOptionsSerialized.php:883
935
  msgid "new replies on your comments"
936
  msgstr ""
937
 
938
- #: options/class.WpdiscuzOptionsSerialized.php:884
939
  msgid "Sorry, the comment was not updated"
940
  msgstr ""
941
 
942
- #: options/class.WpdiscuzOptionsSerialized.php:885
943
  msgid "Sorry, this comment no longer possible to edit"
944
  msgstr ""
945
 
946
- #: options/class.WpdiscuzOptionsSerialized.php:886
947
  msgid "You've not made any changes"
948
  msgstr ""
949
 
950
- #: options/class.WpdiscuzOptionsSerialized.php:887
951
  msgid "Save"
952
  msgstr ""
953
 
954
- #: options/class.WpdiscuzOptionsSerialized.php:888
955
  msgid "Cancel"
956
  msgstr ""
957
 
958
- #: options/class.WpdiscuzOptionsSerialized.php:889
959
  msgid "Input is too short"
960
  msgstr ""
961
 
962
- #: options/class.WpdiscuzOptionsSerialized.php:890
963
  msgid "Input is too long"
964
  msgstr ""
965
 
966
- #: options/class.WpdiscuzOptionsSerialized.php:891
967
  msgid "Read more &raquo;"
968
  msgstr ""
969
 
970
- #: options/class.WpdiscuzOptionsSerialized.php:892
971
  msgid "Anonymous"
972
  msgstr ""
973
 
974
- #: options/class.WpdiscuzOptionsSerialized.php:893
975
  #: options/phrases-layouts/phrases-error.php:67
976
  msgid "Please fill out required fields"
977
  msgstr ""
978
 
979
- #: options/class.WpdiscuzOptionsSerialized.php:894
980
  #: options/phrases-layouts/phrases-social-login.php:11
981
  msgid "Connect with"
982
  msgstr ""
983
 
984
- #: options/class.WpdiscuzOptionsSerialized.php:895
985
  #: options/phrases-layouts/phrases-notification.php:11
986
  msgid "You're subscribed to"
987
  msgstr ""
988
 
989
- #: options/class.WpdiscuzOptionsSerialized.php:896
990
  msgid "Participate in this discussion via email"
991
  msgstr ""
992
 
993
- #: options/class.WpdiscuzOptionsSerialized.php:897
994
  #: utils/layouts/pagination.php:46
995
  msgid "&rsaquo;"
996
  msgstr ""
997
 
998
- #: options/class.WpdiscuzOptionsSerialized.php:898
999
  msgid "Your comment is approved!"
1000
  msgstr ""
1001
 
1002
- #: options/class.WpdiscuzOptionsSerialized.php:899
1003
  msgid ""
1004
  "Hi [COMMENT_AUTHOR],<br/><br/>your comment was approved.<br/><br/><a "
1005
  "href=\"[COMMENT_URL]\">[COMMENT_URL]</a><br/><br/>[COMMENT_CONTENT]"
1006
  msgstr ""
1007
 
1008
- #: options/class.WpdiscuzOptionsSerialized.php:900
1009
  msgid "Comments are closed."
1010
  msgstr ""
1011
 
1012
- #: options/class.WpdiscuzOptionsSerialized.php:901
1013
  msgid "Stick this comment"
1014
  msgstr ""
1015
 
1016
- #: options/class.WpdiscuzOptionsSerialized.php:902
1017
  #: options/phrases-layouts/phrases-comment.php:103
1018
  msgid "Stick"
1019
  msgstr ""
1020
 
1021
- #: options/class.WpdiscuzOptionsSerialized.php:903
1022
  #: options/phrases-layouts/phrases-comment.php:107
1023
  msgid "Unstick"
1024
  msgstr ""
1025
 
1026
- #: options/class.WpdiscuzOptionsSerialized.php:904
1027
  msgid "Sticky comment thread"
1028
  msgstr ""
1029
 
1030
- #: options/class.WpdiscuzOptionsSerialized.php:905
1031
  msgid "Close this thread"
1032
  msgstr ""
1033
 
1034
- #: options/class.WpdiscuzOptionsSerialized.php:906
1035
  #: options/phrases-layouts/phrases-comment.php:119
1036
  msgid "Close"
1037
  msgstr ""
1038
 
1039
- #: options/class.WpdiscuzOptionsSerialized.php:907
1040
  #: options/phrases-layouts/phrases-comment.php:123
1041
  msgid "Open"
1042
  msgstr ""
1043
 
1044
- #: options/class.WpdiscuzOptionsSerialized.php:908
1045
  msgid "Closed comment thread"
1046
  msgstr ""
1047
 
1048
- #: options/class.WpdiscuzOptionsSerialized.php:909
1049
  msgid "I allow to create an account"
1050
  msgstr ""
1051
 
1052
- #: options/class.WpdiscuzOptionsSerialized.php:910
1053
  msgid ""
1054
  "When you login first time using a Social Login button, we collect your "
1055
  "account public profile information shared by Social Login provider, based on "
@@ -1058,93 +1062,93 @@ msgid ""
1058
  "you'll be logged-in to this account."
1059
  msgstr ""
1060
 
1061
- #: options/class.WpdiscuzOptionsSerialized.php:911
1062
  msgid "This comment form is under antispam protection"
1063
  msgstr ""
1064
 
1065
- #: options/class.WpdiscuzOptionsSerialized.php:912
1066
  #: options/phrases-layouts/phrases-social-login.php:23
1067
  msgid "Disagree"
1068
  msgstr ""
1069
 
1070
- #: options/class.WpdiscuzOptionsSerialized.php:913
1071
  #: options/phrases-layouts/phrases-social-login.php:27
1072
  msgid "Agree"
1073
  msgstr ""
1074
 
1075
- #: options/class.WpdiscuzOptionsSerialized.php:914
1076
  #: options/phrases-layouts/phrases-user-settings.php:11
1077
  msgid "My content and settings"
1078
  msgstr ""
1079
 
1080
- #: options/class.WpdiscuzOptionsSerialized.php:915
1081
  #: options/phrases-layouts/phrases-user-settings.php:15
1082
  msgid "Activity"
1083
  msgstr ""
1084
 
1085
- #: options/class.WpdiscuzOptionsSerialized.php:916
1086
  #: options/phrases-layouts/phrases-user-settings.php:19
1087
  msgid "Subscriptions"
1088
  msgstr ""
1089
 
1090
- #: options/class.WpdiscuzOptionsSerialized.php:917
1091
  #: options/phrases-layouts/phrases-user-settings.php:23
1092
  msgid "Follows"
1093
  msgstr ""
1094
 
1095
- #: options/class.WpdiscuzOptionsSerialized.php:918
1096
  #: options/phrases-layouts/phrases-user-settings.php:27
1097
  msgid "In response to:"
1098
  msgstr ""
1099
 
1100
- #: options/class.WpdiscuzOptionsSerialized.php:919
1101
- #: options/class.WpdiscuzOptionsSerialized.php:925
1102
  #: options/phrases-layouts/phrases-user-settings.php:31
1103
  #: options/phrases-layouts/phrases-user-settings.php:55
1104
  msgid "Bulk management via email"
1105
  msgstr ""
1106
 
1107
- #: options/class.WpdiscuzOptionsSerialized.php:920
1108
  msgid ""
1109
  "Click the button above to get an email with bulk delete and unsubscribe "
1110
  "links."
1111
  msgstr ""
1112
 
1113
- #: options/class.WpdiscuzOptionsSerialized.php:921
1114
  #: options/phrases-layouts/phrases-user-settings.php:39
1115
  msgid "No data found!"
1116
  msgstr ""
1117
 
1118
- #: options/class.WpdiscuzOptionsSerialized.php:922
1119
- #: options/class.WpdiscuzOptionsSerialized.php:926
1120
  #: options/phrases-layouts/phrases-user-settings.php:43
1121
  #: options/phrases-layouts/phrases-user-settings.php:60
1122
  msgid "Delete all my comments"
1123
  msgstr ""
1124
 
1125
- #: options/class.WpdiscuzOptionsSerialized.php:923
1126
  #: options/phrases-layouts/phrases-user-settings.php:47
1127
  msgid "Cancel all comment subscriptions"
1128
  msgstr ""
1129
 
1130
- #: options/class.WpdiscuzOptionsSerialized.php:924
1131
  #: options/phrases-layouts/phrases-user-settings.php:51
1132
  msgid "Clear cookies with my personal data"
1133
  msgstr ""
1134
 
1135
- #: options/class.WpdiscuzOptionsSerialized.php:927
1136
  msgid ""
1137
  "Please use this link to delete all your comments. Please note, that this "
1138
  "action cannot be undone.<br/><br/><a href=\"[DELETE_COMMENTS_URL]\" "
1139
  "target=\"_blank\">Delete all my comments</a><br/><br/>"
1140
  msgstr ""
1141
 
1142
- #: options/class.WpdiscuzOptionsSerialized.php:928
1143
  #: options/phrases-layouts/phrases-user-settings.php:85
1144
  msgid "Delete all my subscriptions"
1145
  msgstr ""
1146
 
1147
- #: options/class.WpdiscuzOptionsSerialized.php:929
1148
  msgid ""
1149
  "Please use this link to cancel all subscriptions for new comments. Please "
1150
  "note, that this action cannot be undone.<br/><br/><a "
@@ -1152,106 +1156,106 @@ msgid ""
1152
  "subscriptions</a><br/><br/>"
1153
  msgstr ""
1154
 
1155
- #: options/class.WpdiscuzOptionsSerialized.php:930
1156
  #: options/phrases-layouts/phrases-user-settings.php:110
1157
  msgid "Delete all my follows"
1158
  msgstr ""
1159
 
1160
- #: options/class.WpdiscuzOptionsSerialized.php:931
1161
  msgid ""
1162
  "Please use this link to cancel all follows for new comments. Please note, "
1163
  "that this action cannot be undone.<br/><br/><a href=\"[DELETE_FOLLOWS_URL]\" "
1164
  "target=\"_blank\">Delete all my follows</a><br/><br/>"
1165
  msgstr ""
1166
 
1167
- #: options/class.WpdiscuzOptionsSerialized.php:932
1168
  #: options/phrases-layouts/phrases-user-settings.php:134
1169
  msgid "subscribed to this comment"
1170
  msgstr ""
1171
 
1172
- #: options/class.WpdiscuzOptionsSerialized.php:933
1173
  #: options/phrases-layouts/phrases-user-settings.php:138
1174
  msgid "subscribed to my comments"
1175
  msgstr ""
1176
 
1177
- #: options/class.WpdiscuzOptionsSerialized.php:934
1178
  #: options/phrases-layouts/phrases-user-settings.php:142
1179
  msgid "subscribed to all follow-up comments of this post"
1180
  msgstr ""
1181
 
1182
- #: options/class.WpdiscuzOptionsSerialized.php:936
1183
  #: options/phrases-layouts/phrases-user-settings.php:150
1184
  msgid "Error : Can't send email."
1185
  msgstr ""
1186
 
1187
- #: options/class.WpdiscuzOptionsSerialized.php:937
1188
  #: options/phrases-layouts/phrases-user-settings.php:154
1189
  msgid "Are you sure you want to delete this comment?"
1190
  msgstr ""
1191
 
1192
- #: options/class.WpdiscuzOptionsSerialized.php:938
1193
  #: options/phrases-layouts/phrases-user-settings.php:158
1194
  msgid "Are you sure you want to cancel this subscription?"
1195
  msgstr ""
1196
 
1197
- #: options/class.WpdiscuzOptionsSerialized.php:939
1198
  #: options/phrases-layouts/phrases-user-settings.php:162
1199
  msgid "Are you sure you want to cancel this follow?"
1200
  msgstr ""
1201
 
1202
- #: options/class.WpdiscuzOptionsSerialized.php:940
1203
  #: options/phrases-layouts/phrases-follow.php:11
1204
  msgid "Follow this user"
1205
  msgstr ""
1206
 
1207
- #: options/class.WpdiscuzOptionsSerialized.php:941
1208
  #: options/phrases-layouts/phrases-follow.php:15
1209
  msgid "Unfollow this user"
1210
  msgstr ""
1211
 
1212
- #: options/class.WpdiscuzOptionsSerialized.php:942
1213
  #: options/phrases-layouts/phrases-follow.php:19
1214
  msgid "You started following this comment author"
1215
  msgstr ""
1216
 
1217
- #: options/class.WpdiscuzOptionsSerialized.php:943
1218
  msgid "You stopped following this comment author."
1219
  msgstr ""
1220
 
1221
- #: options/class.WpdiscuzOptionsSerialized.php:944
1222
  msgid "Please check your email and confirm the user following request."
1223
  msgstr ""
1224
 
1225
- #: options/class.WpdiscuzOptionsSerialized.php:945
1226
  msgid "Sorry, we couldn't send confirmation email."
1227
  msgstr ""
1228
 
1229
- #: options/class.WpdiscuzOptionsSerialized.php:946
1230
  msgid "Please login to follow users."
1231
  msgstr ""
1232
 
1233
- #: options/class.WpdiscuzOptionsSerialized.php:947
1234
  msgid "We are sorry, but you can't follow this user."
1235
  msgstr ""
1236
 
1237
- #: options/class.WpdiscuzOptionsSerialized.php:948
1238
  msgid "Following failed. Please try again later."
1239
  msgstr ""
1240
 
1241
- #: options/class.WpdiscuzOptionsSerialized.php:949
1242
  msgid "Confirm user following request"
1243
  msgstr ""
1244
 
1245
- #: options/class.WpdiscuzOptionsSerialized.php:950
1246
  msgid "Cancel user following request"
1247
  msgstr ""
1248
 
1249
- #: options/class.WpdiscuzOptionsSerialized.php:951
1250
  msgid "User Following Confirmation"
1251
  msgstr ""
1252
 
1253
- #: options/class.WpdiscuzOptionsSerialized.php:952
1254
- #: options/class.WpdiscuzOptionsSerialized.php:954
1255
  msgid "</a>"
1256
  msgstr ""
1257
 
@@ -1426,15 +1430,15 @@ msgstr ""
1426
  msgid "Other"
1427
  msgstr ""
1428
 
1429
- #: utils/class.WpdiscuzHelper.php:225 utils/class.WpdiscuzHelper.php:228
1430
  msgid "Spoiler"
1431
  msgstr ""
1432
 
1433
- #: utils/class.WpdiscuzHelper.php:568
1434
  msgid "Go to update data"
1435
  msgstr ""
1436
 
1437
- #: utils/class.WpdiscuzHelperEmail.php:516
1438
  msgid "Cancel Follow"
1439
  msgstr ""
1440
 
@@ -1511,18 +1515,18 @@ msgstr ""
1511
  msgid "Thank you for your feedback!"
1512
  msgstr ""
1513
 
1514
- #: forms/wpdFormAttr/Form.php:131 forms/wpdFormAttr/Form.php:415
1515
- #: forms/wpdFormAttr/Form.php:744
1516
  msgid ""
1517
  "I allow to use my email address and send notification about new comments and "
1518
  "replies (you can unsubscribe at any time)."
1519
  msgstr ""
1520
 
1521
- #: forms/wpdFormAttr/Form.php:679 forms/wpdFormAttr/Form.php:701
1522
- #: forms/wpdFormAttr/Form.php:713 forms/wpdFormAttr/Form.php:725
1523
- #: forms/wpdFormAttr/Form.php:736 forms/wpdFormAttr/Form.php:756
1524
- #: forms/wpdFormAttr/Form.php:786 forms/wpdFormAttr/Form.php:796
1525
- #: forms/wpdFormAttr/Form.php:803 options/options-layouts/settings-cache.php:23
1526
  #: options/options-layouts/settings-cache.php:33
1527
  #: options/options-layouts/settings-cache.php:41
1528
  #: options/options-layouts/settings-form.php:18
@@ -1542,10 +1546,10 @@ msgstr ""
1542
  #: options/options-layouts/settings-form.php:220
1543
  #: options/options-layouts/settings-general.php:14
1544
  #: options/options-layouts/settings-general.php:26
1545
- #: options/options-layouts/settings-general.php:38
1546
- #: options/options-layouts/settings-general.php:80
1547
- #: options/options-layouts/settings-general.php:94
1548
  #: options/options-layouts/settings-general.php:104
 
1549
  #: options/options-layouts/settings-list.php:20
1550
  #: options/options-layouts/settings-list.php:31
1551
  #: options/options-layouts/settings-list.php:41
@@ -1580,74 +1584,74 @@ msgstr ""
1580
  msgid "Read the documentation"
1581
  msgstr ""
1582
 
1583
- #: forms/wpdFormAttr/Form.php:684
1584
  msgid "Disable commenting for roles"
1585
  msgstr ""
1586
 
1587
- #: forms/wpdFormAttr/Form.php:706
1588
  msgid "Allow guests to comment"
1589
  msgstr ""
1590
 
1591
- #: forms/wpdFormAttr/Form.php:710 forms/wpdFormAttr/Form.php:722
1592
- #: forms/wpdFormAttr/Form.php:733
1593
  msgid "Yes"
1594
  msgstr ""
1595
 
1596
- #: forms/wpdFormAttr/Form.php:712 forms/wpdFormAttr/Form.php:724
1597
- #: forms/wpdFormAttr/Form.php:735
1598
  msgid "No"
1599
  msgstr ""
1600
 
1601
- #: forms/wpdFormAttr/Form.php:718
1602
  msgid "Enable subscription bar"
1603
  msgstr ""
1604
 
1605
- #: forms/wpdFormAttr/Form.php:729
1606
  msgid "Display agreement checkbox in Comment Subscription bar"
1607
  msgstr ""
1608
 
1609
- #: forms/wpdFormAttr/Form.php:741
1610
  msgid "Comment Subscription bar agreement checkbox label"
1611
  msgstr ""
1612
 
1613
- #: forms/wpdFormAttr/Form.php:751
1614
  msgid "Comment form header text"
1615
  msgstr ""
1616
 
1617
- #: forms/wpdFormAttr/Form.php:761
1618
  msgid "Display comment form for post types"
1619
  msgstr ""
1620
 
1621
- #: forms/wpdFormAttr/Form.php:768
1622
  msgid ""
1623
  "The red marked post types are already attached to other comment form. If you "
1624
  "set this form too, the old forms will not be used for them."
1625
  msgstr ""
1626
 
1627
- #: forms/wpdFormAttr/Form.php:791
1628
  msgid "Display comment form for post IDs"
1629
  msgstr ""
1630
 
1631
- #: forms/wpdFormAttr/Form.php:792
1632
  msgid ""
1633
  "You can use this form for certain posts/pages specified by comma separated "
1634
  "IDs."
1635
  msgstr ""
1636
 
1637
- #: forms/wpdFormAttr/Form.php:807
1638
  msgid "Comment Text Field"
1639
  msgstr ""
1640
 
1641
- #: forms/wpdFormAttr/Form.php:822
1642
  msgid "ADD ROW"
1643
  msgstr ""
1644
 
1645
- #: forms/wpdFormAttr/Form.php:892
1646
- #: forms/wpdFormAttr/Field/DefaultField/Website.php:84
1647
  msgid "Website"
1648
  msgstr ""
1649
 
1650
- #: forms/wpdFormAttr/Form.php:901
1651
  #: forms/wpdFormAttr/Field/DefaultField/Captcha.php:117
1652
  msgid "Code"
1653
  msgstr ""
@@ -1936,67 +1940,71 @@ msgid ""
1936
  msgstr ""
1937
 
1938
  #: options/options-layouts/settings-general.php:31
 
 
 
 
1939
  msgid "Use guest email to detect registered account"
1940
  msgstr ""
1941
 
1942
- #: options/options-layouts/settings-general.php:33
1943
  msgid ""
1944
  "Sometimes registered users comment as guest using the same email address. "
1945
  "wpDiscuz can detect the account role using guest email and display commenter "
1946
  "label correctly."
1947
  msgstr ""
1948
 
1949
- #: options/options-layouts/settings-general.php:43
1950
  msgid "Secure comment content in HTTPS protocol."
1951
  msgstr ""
1952
 
1953
- #: options/options-layouts/settings-general.php:45
1954
  msgid ""
1955
  "This option detects images and other contents with non-https source URLs and "
1956
  "fix according to your selected logic."
1957
  msgstr ""
1958
 
1959
- #: options/options-layouts/settings-general.php:53
1960
  msgid "Replace non-https content to simple link URLs"
1961
  msgstr ""
1962
 
1963
- #: options/options-layouts/settings-general.php:57
1964
  msgid ""
1965
  "Just replace http protocols to https (https may not be supported by content "
1966
  "provider)"
1967
  msgstr ""
1968
 
1969
- #: options/options-layouts/settings-general.php:61
1970
  msgid "Ignore non-https content"
1971
  msgstr ""
1972
 
1973
- #: options/options-layouts/settings-general.php:69
1974
  msgid "Redirect first commenter to"
1975
  msgstr ""
1976
 
1977
- #: options/options-layouts/settings-general.php:76
1978
  msgid "Do not redirect"
1979
  msgstr ""
1980
 
1981
- #: options/options-layouts/settings-general.php:85
1982
  msgid "Use WordPress Date/Time format"
1983
  msgstr ""
1984
 
1985
- #: options/options-layouts/settings-general.php:86
1986
  msgid ""
1987
  "wpDiscuz shows Human Readable date format. If you check this option it'll "
1988
  "show the date/time format set in WordPress General Settings."
1989
  msgstr ""
1990
 
1991
- #: options/options-layouts/settings-general.php:92
1992
  msgid "Current Wordpress date/time format"
1993
  msgstr ""
1994
 
1995
- #: options/options-layouts/settings-general.php:99
1996
  msgid "Use Plugin .PO/.MO files"
1997
  msgstr ""
1998
 
1999
- #: options/options-layouts/settings-general.php:100
2000
  msgid ""
2001
  "wpDiscuz phrase system allows you to translate all front-end phrases. "
2002
  "However if you have a multi-language website it'll not allow you to add more "
@@ -2006,13 +2014,13 @@ msgid ""
2006
  "translate all phrases based on language files according to current language."
2007
  msgstr ""
2008
 
2009
- #: options/options-layouts/settings-general.php:110
2010
  msgid ""
2011
  "Help wpDiscuz to grow allowing people to recognize which comment plugin you "
2012
  "use"
2013
  msgstr ""
2014
 
2015
- #: options/options-layouts/settings-general.php:112
2016
  msgid ""
2017
  "Please check this option on to help wpDiscuz get more popularity as your "
2018
  "thank to the hard work we do for you totally free. This option adds a very "
@@ -2020,7 +2028,7 @@ msgid ""
2020
  "visitors recognize the name of comment solution you use."
2021
  msgstr ""
2022
 
2023
- #: options/options-layouts/settings-general.php:117
2024
  msgid "Thank you!"
2025
  msgstr ""
2026
 
@@ -2230,6 +2238,10 @@ msgstr ""
2230
  msgid "Disable Profiles URL"
2231
  msgstr ""
2232
 
 
 
 
 
2233
  #: options/options-layouts/settings-live-update.php:12
2234
  msgid "Live update options"
2235
  msgstr ""
@@ -3276,16 +3288,16 @@ msgid "Don't show again if the agreement is accepted once"
3276
  msgstr ""
3277
 
3278
  #: forms/wpdFormAttr/Field/AgreementCheckbox.php:101
3279
- #: forms/wpdFormAttr/Field/CheckboxField.php:153
3280
- #: forms/wpdFormAttr/Field/ColorField.php:115
3281
- #: forms/wpdFormAttr/Field/DateField.php:115
3282
- #: forms/wpdFormAttr/Field/NumberField.php:125
3283
- #: forms/wpdFormAttr/Field/RadioField.php:130
3284
- #: forms/wpdFormAttr/Field/RatingField.php:126
3285
- #: forms/wpdFormAttr/Field/SelectField.php:125
3286
- #: forms/wpdFormAttr/Field/TextAreaField.php:98
3287
- #: forms/wpdFormAttr/Field/TextField.php:109
3288
- #: forms/wpdFormAttr/Field/UrlField.php:110
3289
  msgid "field is required!"
3290
  msgstr ""
3291
 
@@ -3391,15 +3403,15 @@ msgstr ""
3391
  msgid "Font-awesome icon library."
3392
  msgstr ""
3393
 
3394
- #: forms/wpdFormAttr/Field/Field.php:54
3395
  msgid " (Submit Button)"
3396
  msgstr ""
3397
 
3398
- #: forms/wpdFormAttr/Field/Field.php:56
3399
  msgid " (CAPTCHA)"
3400
  msgstr ""
3401
 
3402
- #: forms/wpdFormAttr/Field/Field.php:89
3403
  msgid "Add To Form"
3404
  msgstr ""
3405
 
@@ -3415,11 +3427,11 @@ msgstr ""
3415
  msgid "Max Value"
3416
  msgstr ""
3417
 
3418
- #: forms/wpdFormAttr/Field/NumberField.php:129
3419
  msgid "value can not be less than"
3420
  msgstr ""
3421
 
3422
- #: forms/wpdFormAttr/Field/NumberField.php:132
3423
  msgid "value can not be more than"
3424
  msgstr ""
3425
 
3
  msgstr ""
4
  "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
5
  "Project-Id-Version: wpDiscuz\n"
6
+ "POT-Creation-Date: 2018-11-26 15:47+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: \n"
9
  "Language-Team: \n"
21
  "X-Poedit-SearchPathExcluded-0: *.js\n"
22
  "Language: "
23
 
24
+ #: class.WpdiscuzCore.php:267
25
  msgid "Every 3 hours"
26
  msgstr ""
27
 
28
+ #: class.WpdiscuzCore.php:271
29
  msgid "Every 48 hours"
30
  msgstr ""
31
 
32
+ #: class.WpdiscuzCore.php:373
33
  msgid "We are sorry, but this comment cannot be posted. Please try later."
34
  msgstr ""
35
 
36
+ #: class.WpdiscuzCore.php:383
37
  msgid "We are sorry, you are not allowed to comment more than one time!"
38
  msgstr ""
39
 
40
+ #: class.WpdiscuzCore.php:445
41
  msgid "This is closed comment thread"
42
  msgstr ""
43
 
44
+ #: class.WpdiscuzCore.php:1024 class.WpdiscuzCore.php:1260
45
  msgid "Settings"
46
  msgstr ""
47
 
48
+ #: class.WpdiscuzCore.php:1026 class.WpdiscuzCore.php:1262
49
  msgid "Phrases"
50
  msgstr ""
51
 
52
+ #: class.WpdiscuzCore.php:1028
53
  msgid "Tools"
54
  msgstr ""
55
 
56
+ #: class.WpdiscuzCore.php:1029 options/html-options.php:22
57
  #: options/html-options.php:64 options/options-layouts/settings-addons.php:14
58
  msgid "Addons"
59
  msgstr ""
60
 
61
+ #: class.WpdiscuzCore.php:1041
62
  msgid "Do you really want to reset all options?"
63
  msgstr ""
64
 
65
+ #: class.WpdiscuzCore.php:1042
66
  msgid "Do you really want to remove voting data?"
67
  msgstr ""
68
 
69
+ #: class.WpdiscuzCore.php:1043
70
  msgid "Do you really want to reset phrases?"
71
  msgstr ""
72
 
73
+ #: class.WpdiscuzCore.php:1044
74
  msgid "Do you really want to delete gravatars cache?"
75
  msgstr ""
76
 
77
+ #: class.WpdiscuzCore.php:1045
78
  msgid "Do you really want to delete statistics cache?"
79
  msgstr ""
80
 
81
+ #: class.WpdiscuzCore.php:1082
82
  msgid "Please check one of reasons before sending feedback!"
83
  msgstr ""
84
 
85
+ #: class.WpdiscuzCore.php:1083 utils/deactivation-reason-modal.php:58
86
  msgid "Please provide more information"
87
  msgstr ""
88
 
89
+ #: class.WpdiscuzCore.php:1364 options/phrases-layouts/phrases-comment.php:56
90
  msgid "Admin"
91
  msgstr ""
92
 
93
+ #: class.WpdiscuzCore.php:1366 class.WpdiscuzCore.php:1375
94
  #: options/phrases-layouts/phrases-comment.php:58
95
  msgid "Author"
96
  msgstr ""
97
 
98
+ #: class.WpdiscuzCore.php:1368 options/phrases-layouts/phrases-comment.php:60
99
+ msgid "Editor"
100
+ msgstr ""
101
+
102
+ #: class.WpdiscuzCore.php:1370 options/phrases-layouts/phrases-comment.php:64
103
  msgid "Member"
104
  msgstr ""
105
 
106
+ #: class.WpdiscuzCore.php:1376 options/phrases-layouts/phrases-comment.php:62
107
  msgid "Guest"
108
  msgstr ""
109
 
147
  msgid "Post IDs"
148
  msgstr ""
149
 
150
+ #: forms/wpDiscuzForm.php:176 forms/wpdFormAttr/Form.php:686
151
  msgid "Language"
152
  msgstr ""
153
 
160
  msgstr ""
161
 
162
  #: forms/wpDiscuzForm.php:224 forms/wpdFormAttr/Row.php:24
163
+ #: forms/wpdFormAttr/Field/Field.php:73
164
  msgid "Delete"
165
  msgstr ""
166
 
172
  msgid "Add Field"
173
  msgstr ""
174
 
175
+ #: forms/wpDiscuzForm.php:227 options/class.WpdiscuzOptionsSerialized.php:825
176
  #: options/phrases-layouts/phrases-comment.php:19
177
+ #: forms/wpdFormAttr/Field/Field.php:70
178
  msgid "Edit"
179
  msgstr ""
180
 
190
  msgid "Permission Denied !!!"
191
  msgstr ""
192
 
193
+ #: forms/wpDiscuzForm.php:261 forms/wpdFormAttr/Form.php:654
194
  #: options/options-layouts/settings-customfields.php:7
195
  #: forms/wpdFormAttr/html/admin-form-fields-list.php:18
196
  msgid "Custom Fields"
205
  msgstr ""
206
 
207
  #: forms/wpDiscuzForm.php:398 forms/wpDiscuzForm.php:406
208
+ #: forms/wpdFormAttr/Form.php:767 forms/wpdFormAttr/Form.php:767
209
  msgid "Leave a Reply"
210
  msgstr ""
211
 
212
+ #: forms/wpDiscuzForm.php:421 forms/wpdFormAttr/Form.php:890
213
  #: forms/wpdFormAttr/Field/AgreementCheckbox.php:12
214
  #: forms/wpdFormAttr/Field/CheckboxField.php:12
215
  #: forms/wpdFormAttr/Field/ColorField.php:12
232
  msgid "Name"
233
  msgstr ""
234
 
235
+ #: forms/wpDiscuzForm.php:423 options/class.WpdiscuzOptionsSerialized.php:811
236
+ #: options/html-phrases.php:25 forms/wpdFormAttr/Form.php:897
237
  #: forms/wpdFormAttr/Field/DefaultField/Email.php:65
238
  msgid "Email"
239
  msgstr ""
242
  msgid "WebSite URL"
243
  msgstr ""
244
 
245
+ #: forms/wpDiscuzForm.php:428 forms/wpdFormAttr/Form.php:920
246
  #: forms/wpdFormAttr/Field/DefaultField/Submit.php:116
247
  msgid "Post Comment"
248
  msgstr ""
261
  msgid "Add Comment Form"
262
  msgstr ""
263
 
264
+ #: options/class.WpdiscuzOptions.php:22 options/class.WpdiscuzOptions.php:145
265
+ #: options/class.WpdiscuzOptions.php:370
266
  msgid "Hacker?"
267
  msgstr ""
268
 
269
+ #: options/class.WpdiscuzOptions.php:136
270
  msgid "Settings updated"
271
  msgstr ""
272
 
273
+ #: options/class.WpdiscuzOptions.php:317
274
  msgid "Phrases updated"
275
  msgstr ""
276
 
277
+ #: options/class.WpdiscuzOptions.php:344
278
  msgid "Options were backed up!"
279
  msgstr ""
280
 
281
+ #: options/class.WpdiscuzOptions.php:346
282
  msgid "Cannot back up the options!"
283
  msgstr ""
284
 
285
+ #: options/class.WpdiscuzOptions.php:357
286
  msgid "Options Imported Successfully!"
287
  msgstr ""
288
 
289
+ #: options/class.WpdiscuzOptions.php:359
290
  msgid "Error occured! File content is empty or data is not valid!"
291
  msgstr ""
292
 
293
+ #: options/class.WpdiscuzOptions.php:362
294
  msgid "Error occured! Can not get file content!"
295
  msgstr ""
296
 
297
+ #: options/class.WpdiscuzOptions.php:365
298
  msgid "Error occured! Please choose file!"
299
  msgstr ""
300
 
301
+ #: options/class.WpdiscuzOptions.php:381
302
  msgid ""
303
  "All 16 addons in one bundle. Save 90% and get Unlimited Site License with "
304
  "one year premium support."
305
  msgstr ""
306
 
307
+ #: options/class.WpdiscuzOptions.php:382
308
  msgid ""
309
  "Brings an ocean of emotions to your comments. It comes with an awesome smile "
310
  "package."
311
  msgstr ""
312
 
313
+ #: options/class.WpdiscuzOptions.php:383
314
  msgid ""
315
  "Extended information about comment author with Profile, Activity, Votes and "
316
  "Subscriptions Tabs on pop-up window."
317
  msgstr ""
318
 
319
+ #: options/class.WpdiscuzOptions.php:384
320
  msgid ""
321
  "Real-time online user checking, pop-up notification of new online users and "
322
  "online/offline badges."
323
  msgstr ""
324
 
325
+ #: options/class.WpdiscuzOptions.php:385
326
  msgid ""
327
  "Allows to create private comment threads. Rich management options in "
328
  "dashboard by user roles."
329
  msgstr ""
330
 
331
+ #: options/class.WpdiscuzOptions.php:386
332
  msgid ""
333
  "Total control over comment subscriptions. Full list, monitor, manage, filter,"
334
  " unsubscribe, confirm..."
335
  msgstr ""
336
 
337
+ #: options/class.WpdiscuzOptions.php:387
338
  msgid ""
339
  "A full-fledged tool-kit for advertising in comment section of your website. "
340
  "Separate banner and ad managment."
341
  msgstr ""
342
 
343
+ #: options/class.WpdiscuzOptions.php:388
344
  msgid ""
345
  "Allows to mention comments and users in comment text using #comment-id and "
346
  "@username tags."
347
  msgstr ""
348
 
349
+ #: options/class.WpdiscuzOptions.php:389
350
  msgid ""
351
  "See comment likers and voters of each comment. Adds user reputation and "
352
  "badges based on received likes."
353
  msgstr ""
354
 
355
+ #: options/class.WpdiscuzOptions.php:390
356
  msgid ""
357
  "Comment reporting tools. Auto-moderates comments based on number of flags "
358
  "and dislikes."
359
  msgstr ""
360
 
361
+ #: options/class.WpdiscuzOptions.php:391
362
  msgid ""
363
  "Adds a smart and intuitive AJAX \"Translate\" button with 60 language "
364
  "options. Uses free translation API."
365
  msgstr ""
366
 
367
+ #: options/class.WpdiscuzOptions.php:392
368
  msgid ""
369
  "AJAX powered front-end comment search. It starts searching while you type "
370
  "search words. "
371
  msgstr ""
372
 
373
+ #: options/class.WpdiscuzOptions.php:393
374
  msgid ""
375
  "Most voted comments, Active comment threads, Most commented posts, Active "
376
  "comment authors"
377
  msgstr ""
378
 
379
+ #: options/class.WpdiscuzOptions.php:394
380
  msgid ""
381
  "All in one powerful yet simple admin toolkit to moderate comments on front-"
382
  "end."
383
  msgstr ""
384
 
385
+ #: options/class.WpdiscuzOptions.php:395
386
  msgid ""
387
  "Extended comment attachment system. Allows to upload images, videos, audios "
388
  "and other file types."
389
  msgstr ""
390
 
391
+ #: options/class.WpdiscuzOptions.php:396
392
  msgid ""
393
  "Adds No CAPTCHA on all comment forms. Stops spam and bot comments with "
394
  "Google reCAPTCHA"
395
  msgstr ""
396
 
397
+ #: options/class.WpdiscuzOptions.php:397
398
  msgid ""
399
  "Integrates myCRED Badges and Ranks. Converts wpDiscuz comment votes/likes to "
400
  "myCRED points. "
401
  msgstr ""
402
 
403
+ #: options/class.WpdiscuzOptions.php:403
404
  msgid "Custom Comment Forms"
405
  msgstr ""
406
 
407
+ #: options/class.WpdiscuzOptions.php:404
408
  msgid ""
409
  "You can create custom comment forms with wpDiscuz. wpDiscuz 4 comes with "
410
  "custom comment forms and fields. You can create custom comment forms for "
412
  "eaxample: text, dropdown, rating, checkboxes, etc..."
413
  msgstr ""
414
 
415
+ #: options/class.WpdiscuzOptions.php:407
416
  msgid "Emoticons"
417
  msgstr ""
418
 
419
+ #: options/class.WpdiscuzOptions.php:408
420
  msgid ""
421
  "You can add more emotions to your comments using wpDiscuz Emoticons addon."
422
  msgstr ""
423
 
424
+ #: options/class.WpdiscuzOptions.php:411
425
  msgid "Ads Manager"
426
  msgstr ""
427
 
428
+ #: options/class.WpdiscuzOptions.php:412
429
  msgid ""
430
  "Increase your income using ad banners. Comment area is the most active "
431
  "sections for advertising. wpDiscuz Ads Manager addon is designed to help you "
432
  "add banners and control ads in this section."
433
  msgstr ""
434
 
435
+ #: options/class.WpdiscuzOptions.php:415
436
  msgid "User and Comment Mentioning"
437
  msgstr ""
438
 
439
+ #: options/class.WpdiscuzOptions.php:416
440
  msgid ""
441
  "Using wpDiscuz User &amp; Comment Mentioning addon you can allow commenters "
442
  "mention comments and users in comment text using #comment-id and @username "
443
  "tags."
444
  msgstr ""
445
 
446
+ #: options/class.WpdiscuzOptions.php:419 options/addons/al/title.php:7
447
  msgid "Advanced Likers"
448
  msgstr ""
449
 
450
+ #: options/class.WpdiscuzOptions.php:420
451
  msgid ""
452
  "wpDiscuz Advanced Likers addon displays likers and voters of each comment. "
453
  "Adds user reputation and badges based on received likes."
454
  msgstr ""
455
 
456
+ #: options/class.WpdiscuzOptions.php:423 options/addons/raf/title.php:7
457
  msgid "Report and Flagging"
458
  msgstr ""
459
 
460
+ #: options/class.WpdiscuzOptions.php:424
461
  msgid ""
462
  "Let your commenters help you to determine and remove spam comments. wpDiscuz "
463
  "Report and Flagging addon comes with comment reporting tools. Automaticaly "
464
  "auto-moderates comments based on number of flags and dislikes."
465
  msgstr ""
466
 
467
+ #: options/class.WpdiscuzOptions.php:427
468
  msgid "Comment Translate"
469
  msgstr ""
470
 
471
+ #: options/class.WpdiscuzOptions.php:428
472
  msgid ""
473
  "In most cases the big part of your visitors are not a native speakers of "
474
  "your language. Make your comments comprehensible for all visitors using "
477
  "translation API."
478
  msgstr ""
479
 
480
+ #: options/class.WpdiscuzOptions.php:431
481
  msgid "Comment Search"
482
  msgstr ""
483
 
484
+ #: options/class.WpdiscuzOptions.php:432
485
  msgid ""
486
  "You can let website visitor search in comments. It's always more attractive "
487
  "to find a comment about something that interest you. Using wpDiscuz Comment "
489
  "above comment list."
490
  msgstr ""
491
 
492
+ #: options/class.WpdiscuzOptions.php:435
493
  msgid "wpDiscuz Widgets"
494
  msgstr ""
495
 
496
+ #: options/class.WpdiscuzOptions.php:436
497
  msgid ""
498
  "More Comment Widgets! Most voted comments, Active comment threads, Most "
499
  "commented posts, Active comment authors widgets are available in wpDiscuz "
500
  "Widgets Addon"
501
  msgstr ""
502
 
503
+ #: options/class.WpdiscuzOptions.php:439
504
  msgid "Front-end Moderation"
505
  msgstr ""
506
 
507
+ #: options/class.WpdiscuzOptions.php:440
508
  msgid ""
509
  "You can moderate comments on front-end using all in one powerful yet simple "
510
  "wpDiscuz Frontend Moderation addon."
511
  msgstr ""
512
 
513
+ #: options/class.WpdiscuzOptions.php:443 options/addons/mu/title.php:7
514
  msgid "Media Uploader"
515
  msgstr ""
516
 
517
+ #: options/class.WpdiscuzOptions.php:444
518
  msgid ""
519
  "You can let website visitors attach images and files to comments and embed "
520
  "video/audio content using wpDiscuz Media Uploader addon."
521
  msgstr ""
522
 
523
+ #: options/class.WpdiscuzOptions.php:447
524
  msgid "Google ReCaptcha"
525
  msgstr ""
526
 
527
+ #: options/class.WpdiscuzOptions.php:448
528
  msgid ""
529
  "Advanced spam protection with wpDiscuz Google reCAPTCHA addon. This addon "
530
  "adds No-CAPTCHA reCAPTCHA on all comment forms. Stops spam and bot comments."
531
  msgstr ""
532
 
533
+ #: options/class.WpdiscuzOptions.php:469
534
  msgid "Finally wpDiscuz Addons Bundle is ready for You!"
535
  msgstr ""
536
 
537
+ #: options/class.WpdiscuzOptions.php:479
538
  msgid "View Addons Bundle"
539
  msgstr ""
540
 
541
+ #: options/class.WpdiscuzOptions.php:519
542
  msgid "Do you know?"
543
  msgstr ""
544
 
545
+ #: options/class.WpdiscuzOptions.php:532
546
  msgid "More info"
547
  msgstr ""
548
 
549
+ #: options/class.WpdiscuzOptionsSerialized.php:801
550
  msgid "Be the First to Comment!"
551
  msgstr ""
552
 
553
+ #: options/class.WpdiscuzOptionsSerialized.php:802
554
  msgid "Start the discussion"
555
  msgstr ""
556
 
557
+ #: options/class.WpdiscuzOptionsSerialized.php:803
558
  msgid "Join the discussion"
559
  msgstr ""
560
 
561
+ #: options/class.WpdiscuzOptionsSerialized.php:804
562
  #: options/phrases-layouts/phrases-form.php:19
563
  msgid "Comment threads"
564
  msgstr ""
565
 
566
+ #: options/class.WpdiscuzOptionsSerialized.php:805
567
  #: options/phrases-layouts/phrases-form.php:23
568
  msgid "Thread replies"
569
  msgstr ""
570
 
571
+ #: options/class.WpdiscuzOptionsSerialized.php:806
572
  #: options/phrases-layouts/phrases-form.php:27
573
  msgid "Followers"
574
  msgstr ""
575
 
576
+ #: options/class.WpdiscuzOptionsSerialized.php:807
577
  #: options/phrases-layouts/phrases-form.php:31
578
  msgid "Most reacted comment"
579
  msgstr ""
580
 
581
+ #: options/class.WpdiscuzOptionsSerialized.php:808
582
  #: options/phrases-layouts/phrases-form.php:35
583
  msgid "Hottest comment thread"
584
  msgstr ""
585
 
586
+ #: options/class.WpdiscuzOptionsSerialized.php:809
587
  #: options/phrases-layouts/phrases-form.php:39
588
  msgid "Comment authors"
589
  msgstr ""
590
 
591
+ #: options/class.WpdiscuzOptionsSerialized.php:810
592
  #: options/phrases-layouts/phrases-form.php:43
593
  msgid "Recent comment authors"
594
  msgstr ""
595
 
596
+ #: options/class.WpdiscuzOptionsSerialized.php:812
597
  #: options/phrases-layouts/phrases-form.php:51
598
  msgid "Subscribe"
599
  msgstr ""
600
 
601
+ #: options/class.WpdiscuzOptionsSerialized.php:813
602
  #: options/phrases-layouts/phrases-form.php:55
603
  msgid "Notify of"
604
  msgstr ""
605
 
606
+ #: options/class.WpdiscuzOptionsSerialized.php:814
607
  msgid "new follow-up comments"
608
  msgstr ""
609
 
610
+ #: options/class.WpdiscuzOptionsSerialized.php:815
611
  msgid "new replies to my comments"
612
  msgstr ""
613
 
614
+ #: options/class.WpdiscuzOptionsSerialized.php:816
615
  msgid "Notify of new replies to this comment"
616
  msgstr ""
617
 
618
+ #: options/class.WpdiscuzOptionsSerialized.php:817
619
  #: options/phrases-layouts/phrases-form.php:71
620
  msgid "Sort by"
621
  msgstr ""
622
 
623
+ #: options/class.WpdiscuzOptionsSerialized.php:818
624
  #: options/phrases-layouts/phrases-form.php:75
625
  msgid "newest"
626
  msgstr ""
627
 
628
+ #: options/class.WpdiscuzOptionsSerialized.php:819
629
  #: options/phrases-layouts/phrases-form.php:79
630
  msgid "oldest"
631
  msgstr ""
632
 
633
+ #: options/class.WpdiscuzOptionsSerialized.php:820
634
  #: options/phrases-layouts/phrases-form.php:83
635
  msgid "most voted"
636
  msgstr ""
637
 
638
+ #: options/class.WpdiscuzOptionsSerialized.php:821
639
  msgid "Load More Comments"
640
  msgstr ""
641
 
642
+ #: options/class.WpdiscuzOptionsSerialized.php:822
643
  #: options/phrases-layouts/phrases-general.php:19
644
  msgid "Load Rest of Comments"
645
  msgstr ""
646
 
647
+ #: options/class.WpdiscuzOptionsSerialized.php:823
648
  #: options/phrases-layouts/phrases-comment.php:11
649
  msgid "Reply"
650
  msgstr ""
651
 
652
+ #: options/class.WpdiscuzOptionsSerialized.php:824
653
  #: options/phrases-layouts/phrases-comment.php:15
654
  msgid "Share"
655
  msgstr ""
656
 
657
+ #: options/class.WpdiscuzOptionsSerialized.php:826
658
  #: options/phrases-layouts/phrases-comment.php:23
659
  msgid "Share On Facebook"
660
  msgstr ""
661
 
662
+ #: options/class.WpdiscuzOptionsSerialized.php:827
663
  #: options/phrases-layouts/phrases-comment.php:27
664
  msgid "Share On Twitter"
665
  msgstr ""
666
 
667
+ #: options/class.WpdiscuzOptionsSerialized.php:828
668
  #: options/phrases-layouts/phrases-comment.php:31
669
  msgid "Share On Google"
670
  msgstr ""
671
 
672
+ #: options/class.WpdiscuzOptionsSerialized.php:829
673
  #: options/phrases-layouts/phrases-comment.php:35
674
  msgid "Share On VKontakte"
675
  msgstr ""
676
 
677
+ #: options/class.WpdiscuzOptionsSerialized.php:830
678
  #: options/phrases-layouts/phrases-comment.php:39
679
  msgid "Share On Odnoklassniki"
680
  msgstr ""
681
 
682
+ #: options/class.WpdiscuzOptionsSerialized.php:831
683
  #: options/phrases-layouts/phrases-comment.php:43
684
  msgid "Hide Replies"
685
  msgstr ""
686
 
687
+ #: options/class.WpdiscuzOptionsSerialized.php:832
688
  #: options/phrases-layouts/phrases-comment.php:47
689
  msgid "View Replies"
690
  msgstr ""
691
 
692
+ #: options/class.WpdiscuzOptionsSerialized.php:833
693
+ #: options/class.WpdiscuzOptionsSerialized.php:958
694
  msgid "New Comment"
695
  msgstr ""
696
 
697
+ #: options/class.WpdiscuzOptionsSerialized.php:834
698
  msgid ""
699
  "Hi [SUBSCRIBER_NAME],<br/><br/> new comment have been posted by the <em>"
700
  "<strong>[COMMENT_AUTHOR]</em></strong> on the discussion section you've been "
702
  "[COMMENT_CONTENT]<br/><br/><a href=\"[UNSUBSCRIBE_URL]\">Unsubscribe</a>"
703
  msgstr ""
704
 
705
+ #: options/class.WpdiscuzOptionsSerialized.php:835
706
+ #: options/class.WpdiscuzOptionsSerialized.php:837
707
  msgid "New Reply"
708
  msgstr ""
709
 
710
+ #: options/class.WpdiscuzOptionsSerialized.php:836
711
+ #: options/class.WpdiscuzOptionsSerialized.php:838
712
  msgid ""
713
  "Hi [SUBSCRIBER_NAME],<br/><br/> new reply have been posted by the <em>"
714
  "<strong>[COMMENT_AUTHOR]</em></strong> on the discussion section you've been "
716
  "[COMMENT_CONTENT]<br/><br/><a href=\"[UNSUBSCRIBE_URL]\">Unsubscribe</a>"
717
  msgstr ""
718
 
719
+ #: options/class.WpdiscuzOptionsSerialized.php:839
720
  msgid "You're subscribed for new replies on this comment"
721
  msgstr ""
722
 
723
+ #: options/class.WpdiscuzOptionsSerialized.php:840
724
  msgid "You're subscribed for new replies on all your comments"
725
  msgstr ""
726
 
727
+ #: options/class.WpdiscuzOptionsSerialized.php:841
728
  msgid "You're subscribed for new follow-up comments on this post"
729
  msgstr ""
730
 
731
+ #: options/class.WpdiscuzOptionsSerialized.php:842
732
  #: options/phrases-layouts/phrases-email.php:172
733
  msgid "Unsubscribe"
734
  msgstr ""
735
 
736
+ #: options/class.WpdiscuzOptionsSerialized.php:843
737
  msgid "Cancel subscription"
738
  msgstr ""
739
 
740
+ #: options/class.WpdiscuzOptionsSerialized.php:844
741
  #: options/phrases-layouts/phrases-notification.php:19
742
  msgid "You've successfully unsubscribed."
743
  msgstr ""
744
 
745
+ #: options/class.WpdiscuzOptionsSerialized.php:845
746
  #: options/phrases-layouts/phrases-notification.php:15
747
  msgid "You've successfully subscribed."
748
  msgstr ""
749
 
750
+ #: options/class.WpdiscuzOptionsSerialized.php:846
751
  #: options/phrases-layouts/phrases-email.php:180
752
  msgid "Confirm your subscription"
753
  msgstr ""
754
 
755
+ #: options/class.WpdiscuzOptionsSerialized.php:847
756
  #: options/phrases-layouts/phrases-email.php:184
757
  msgid "You've successfully confirmed your subscription."
758
  msgstr ""
759
 
760
+ #: options/class.WpdiscuzOptionsSerialized.php:848
761
  msgid "Subscription Confirmation"
762
  msgstr ""
763
 
764
+ #: options/class.WpdiscuzOptionsSerialized.php:849
765
  msgid ""
766
  "Hi, <br/> You just subscribed for new comments on our website. This means "
767
  "you will receive an email when new comments are posted according to "
772
  "href=\"[CANCEL_URL]\">Cancel Subscription</a>"
773
  msgstr ""
774
 
775
+ #: options/class.WpdiscuzOptionsSerialized.php:850
776
  msgid "please fill out this field to comment"
777
  msgstr ""
778
 
779
+ #: options/class.WpdiscuzOptionsSerialized.php:851
780
  msgid "email address is invalid"
781
  msgstr ""
782
 
783
+ #: options/class.WpdiscuzOptionsSerialized.php:852
784
  msgid "url is invalid"
785
  msgstr ""
786
 
787
+ #: options/class.WpdiscuzOptionsSerialized.php:853
788
  msgid "year"
789
  msgstr ""
790
 
791
+ #: options/class.WpdiscuzOptionsSerialized.php:854
792
  msgid "years"
793
  msgstr ""
794
 
795
+ #: options/class.WpdiscuzOptionsSerialized.php:855
796
  msgid "month"
797
  msgstr ""
798
 
799
+ #: options/class.WpdiscuzOptionsSerialized.php:856
800
  msgid "months"
801
  msgstr ""
802
 
803
+ #: options/class.WpdiscuzOptionsSerialized.php:857
804
  msgid "day"
805
  msgstr ""
806
 
807
+ #: options/class.WpdiscuzOptionsSerialized.php:858
808
  msgid "days"
809
  msgstr ""
810
 
811
+ #: options/class.WpdiscuzOptionsSerialized.php:859
812
  msgid "hour"
813
  msgstr ""
814
 
815
+ #: options/class.WpdiscuzOptionsSerialized.php:860
816
  msgid "hours"
817
  msgstr ""
818
 
819
+ #: options/class.WpdiscuzOptionsSerialized.php:861
820
  msgid "minute"
821
  msgstr ""
822
 
823
+ #: options/class.WpdiscuzOptionsSerialized.php:862
824
  msgid "minutes"
825
  msgstr ""
826
 
827
+ #: options/class.WpdiscuzOptionsSerialized.php:863
828
  msgid "second"
829
  msgstr ""
830
 
831
+ #: options/class.WpdiscuzOptionsSerialized.php:864
832
  msgid "seconds"
833
  msgstr ""
834
 
835
+ #: options/class.WpdiscuzOptionsSerialized.php:865
836
  msgid "right now"
837
  msgstr ""
838
 
839
+ #: options/class.WpdiscuzOptionsSerialized.php:866
840
  msgid "ago"
841
  msgstr ""
842
 
843
+ #: options/class.WpdiscuzOptionsSerialized.php:867
844
  #: options/phrases-layouts/phrases-notification.php:38
845
  msgid "You must be"
846
  msgstr ""
847
 
848
+ #: options/class.WpdiscuzOptionsSerialized.php:868
849
  msgid "You are logged in as"
850
  msgstr ""
851
 
852
+ #: options/class.WpdiscuzOptionsSerialized.php:869
853
  #: options/phrases-layouts/phrases-notification.php:29
854
  msgid "Login"
855
  msgstr ""
856
 
857
+ #: options/class.WpdiscuzOptionsSerialized.php:870
858
  #: options/phrases-layouts/phrases-notification.php:33
859
  #, php-format
860
  msgid "Please %s to comment"
861
  msgstr ""
862
 
863
+ #: options/class.WpdiscuzOptionsSerialized.php:871
864
  #: options/phrases-layouts/phrases-notification.php:54
865
  msgid "Log out"
866
  msgstr ""
867
 
868
+ #: options/class.WpdiscuzOptionsSerialized.php:872
869
  msgid "logged in"
870
  msgstr ""
871
 
872
+ #: options/class.WpdiscuzOptionsSerialized.php:873
873
  msgid "to post a comment."
874
  msgstr ""
875
 
876
+ #: options/class.WpdiscuzOptionsSerialized.php:874
877
  #: options/phrases-layouts/phrases-comment.php:75
878
  msgid "Vote Up"
879
  msgstr ""
880
 
881
+ #: options/class.WpdiscuzOptionsSerialized.php:875
882
  #: options/phrases-layouts/phrases-comment.php:79
883
  msgid "Vote Down"
884
  msgstr ""
885
 
886
+ #: options/class.WpdiscuzOptionsSerialized.php:876
887
  #: options/phrases-layouts/phrases-notification.php:58
888
  msgid "Vote Counted"
889
  msgstr ""
890
 
891
+ #: options/class.WpdiscuzOptionsSerialized.php:877
892
  msgid "You've already voted for this comment"
893
  msgstr ""
894
 
895
+ #: options/class.WpdiscuzOptionsSerialized.php:878
896
  #: options/phrases-layouts/phrases-error.php:27
897
  msgid "Voting Error"
898
  msgstr ""
899
 
900
+ #: options/class.WpdiscuzOptionsSerialized.php:879
901
  msgid "You Must Be Logged In To Vote"
902
  msgstr ""
903
 
904
+ #: options/class.WpdiscuzOptionsSerialized.php:880
905
  msgid "You cannot vote for your comment"
906
  msgstr ""
907
 
908
+ #: options/class.WpdiscuzOptionsSerialized.php:881
909
  msgid "You are not allowed to vote for this comment"
910
  msgstr ""
911
 
912
+ #: options/class.WpdiscuzOptionsSerialized.php:882
913
  #: options/phrases-layouts/phrases-error.php:39
914
  msgid "Invalid Captcha Code"
915
  msgstr ""
916
 
917
+ #: options/class.WpdiscuzOptionsSerialized.php:883
918
  #: options/phrases-layouts/phrases-error.php:43
919
  msgid "Some of field value is invalid"
920
  msgstr ""
921
 
922
+ #: options/class.WpdiscuzOptionsSerialized.php:884
923
  msgid "new comment"
924
  msgstr ""
925
 
926
+ #: options/class.WpdiscuzOptionsSerialized.php:885
927
  msgid "new comments"
928
  msgstr ""
929
 
930
+ #: options/class.WpdiscuzOptionsSerialized.php:886
931
  msgid "Comment awaiting moderation"
932
  msgstr ""
933
 
934
+ #: options/class.WpdiscuzOptionsSerialized.php:887
935
  msgid "new reply on your comment"
936
  msgstr ""
937
 
938
+ #: options/class.WpdiscuzOptionsSerialized.php:888
939
  msgid "new replies on your comments"
940
  msgstr ""
941
 
942
+ #: options/class.WpdiscuzOptionsSerialized.php:889
943
  msgid "Sorry, the comment was not updated"
944
  msgstr ""
945
 
946
+ #: options/class.WpdiscuzOptionsSerialized.php:890
947
  msgid "Sorry, this comment no longer possible to edit"
948
  msgstr ""
949
 
950
+ #: options/class.WpdiscuzOptionsSerialized.php:891
951
  msgid "You've not made any changes"
952
  msgstr ""
953
 
954
+ #: options/class.WpdiscuzOptionsSerialized.php:892
955
  msgid "Save"
956
  msgstr ""
957
 
958
+ #: options/class.WpdiscuzOptionsSerialized.php:893
959
  msgid "Cancel"
960
  msgstr ""
961
 
962
+ #: options/class.WpdiscuzOptionsSerialized.php:894
963
  msgid "Input is too short"
964
  msgstr ""
965
 
966
+ #: options/class.WpdiscuzOptionsSerialized.php:895
967
  msgid "Input is too long"
968
  msgstr ""
969
 
970
+ #: options/class.WpdiscuzOptionsSerialized.php:896
971
  msgid "Read more &raquo;"
972
  msgstr ""
973
 
974
+ #: options/class.WpdiscuzOptionsSerialized.php:897
975
  msgid "Anonymous"
976
  msgstr ""
977
 
978
+ #: options/class.WpdiscuzOptionsSerialized.php:898
979
  #: options/phrases-layouts/phrases-error.php:67
980
  msgid "Please fill out required fields"
981
  msgstr ""
982
 
983
+ #: options/class.WpdiscuzOptionsSerialized.php:899
984
  #: options/phrases-layouts/phrases-social-login.php:11
985
  msgid "Connect with"
986
  msgstr ""
987
 
988
+ #: options/class.WpdiscuzOptionsSerialized.php:900
989
  #: options/phrases-layouts/phrases-notification.php:11
990
  msgid "You're subscribed to"
991
  msgstr ""
992
 
993
+ #: options/class.WpdiscuzOptionsSerialized.php:901
994
  msgid "Participate in this discussion via email"
995
  msgstr ""
996
 
997
+ #: options/class.WpdiscuzOptionsSerialized.php:902
998
  #: utils/layouts/pagination.php:46
999
  msgid "&rsaquo;"
1000
  msgstr ""
1001
 
1002
+ #: options/class.WpdiscuzOptionsSerialized.php:903
1003
  msgid "Your comment is approved!"
1004
  msgstr ""
1005
 
1006
+ #: options/class.WpdiscuzOptionsSerialized.php:904
1007
  msgid ""
1008
  "Hi [COMMENT_AUTHOR],<br/><br/>your comment was approved.<br/><br/><a "
1009
  "href=\"[COMMENT_URL]\">[COMMENT_URL]</a><br/><br/>[COMMENT_CONTENT]"
1010
  msgstr ""
1011
 
1012
+ #: options/class.WpdiscuzOptionsSerialized.php:905
1013
  msgid "Comments are closed."
1014
  msgstr ""
1015
 
1016
+ #: options/class.WpdiscuzOptionsSerialized.php:906
1017
  msgid "Stick this comment"
1018
  msgstr ""
1019
 
1020
+ #: options/class.WpdiscuzOptionsSerialized.php:907
1021
  #: options/phrases-layouts/phrases-comment.php:103
1022
  msgid "Stick"
1023
  msgstr ""
1024
 
1025
+ #: options/class.WpdiscuzOptionsSerialized.php:908
1026
  #: options/phrases-layouts/phrases-comment.php:107
1027
  msgid "Unstick"
1028
  msgstr ""
1029
 
1030
+ #: options/class.WpdiscuzOptionsSerialized.php:909
1031
  msgid "Sticky comment thread"
1032
  msgstr ""
1033
 
1034
+ #: options/class.WpdiscuzOptionsSerialized.php:910
1035
  msgid "Close this thread"
1036
  msgstr ""
1037
 
1038
+ #: options/class.WpdiscuzOptionsSerialized.php:911
1039
  #: options/phrases-layouts/phrases-comment.php:119
1040
  msgid "Close"
1041
  msgstr ""
1042
 
1043
+ #: options/class.WpdiscuzOptionsSerialized.php:912
1044
  #: options/phrases-layouts/phrases-comment.php:123
1045
  msgid "Open"
1046
  msgstr ""
1047
 
1048
+ #: options/class.WpdiscuzOptionsSerialized.php:913
1049
  msgid "Closed comment thread"
1050
  msgstr ""
1051
 
1052
+ #: options/class.WpdiscuzOptionsSerialized.php:914
1053
  msgid "I allow to create an account"
1054
  msgstr ""
1055
 
1056
+ #: options/class.WpdiscuzOptionsSerialized.php:915
1057
  msgid ""
1058
  "When you login first time using a Social Login button, we collect your "
1059
  "account public profile information shared by Social Login provider, based on "
1062
  "you'll be logged-in to this account."
1063
  msgstr ""
1064
 
1065
+ #: options/class.WpdiscuzOptionsSerialized.php:916
1066
  msgid "This comment form is under antispam protection"
1067
  msgstr ""
1068
 
1069
+ #: options/class.WpdiscuzOptionsSerialized.php:917
1070
  #: options/phrases-layouts/phrases-social-login.php:23
1071
  msgid "Disagree"
1072
  msgstr ""
1073
 
1074
+ #: options/class.WpdiscuzOptionsSerialized.php:918
1075
  #: options/phrases-layouts/phrases-social-login.php:27
1076
  msgid "Agree"
1077
  msgstr ""
1078
 
1079
+ #: options/class.WpdiscuzOptionsSerialized.php:919
1080
  #: options/phrases-layouts/phrases-user-settings.php:11
1081
  msgid "My content and settings"
1082
  msgstr ""
1083
 
1084
+ #: options/class.WpdiscuzOptionsSerialized.php:920
1085
  #: options/phrases-layouts/phrases-user-settings.php:15
1086
  msgid "Activity"
1087
  msgstr ""
1088
 
1089
+ #: options/class.WpdiscuzOptionsSerialized.php:921
1090
  #: options/phrases-layouts/phrases-user-settings.php:19
1091
  msgid "Subscriptions"
1092
  msgstr ""
1093
 
1094
+ #: options/class.WpdiscuzOptionsSerialized.php:922
1095
  #: options/phrases-layouts/phrases-user-settings.php:23
1096
  msgid "Follows"
1097
  msgstr ""
1098
 
1099
+ #: options/class.WpdiscuzOptionsSerialized.php:923
1100
  #: options/phrases-layouts/phrases-user-settings.php:27
1101
  msgid "In response to:"
1102
  msgstr ""
1103
 
1104
+ #: options/class.WpdiscuzOptionsSerialized.php:924
1105
+ #: options/class.WpdiscuzOptionsSerialized.php:930
1106
  #: options/phrases-layouts/phrases-user-settings.php:31
1107
  #: options/phrases-layouts/phrases-user-settings.php:55
1108
  msgid "Bulk management via email"
1109
  msgstr ""
1110
 
1111
+ #: options/class.WpdiscuzOptionsSerialized.php:925
1112
  msgid ""
1113
  "Click the button above to get an email with bulk delete and unsubscribe "
1114
  "links."
1115
  msgstr ""
1116
 
1117
+ #: options/class.WpdiscuzOptionsSerialized.php:926
1118
  #: options/phrases-layouts/phrases-user-settings.php:39
1119
  msgid "No data found!"
1120
  msgstr ""
1121
 
1122
+ #: options/class.WpdiscuzOptionsSerialized.php:927
1123
+ #: options/class.WpdiscuzOptionsSerialized.php:931
1124
  #: options/phrases-layouts/phrases-user-settings.php:43
1125
  #: options/phrases-layouts/phrases-user-settings.php:60
1126
  msgid "Delete all my comments"
1127
  msgstr ""
1128
 
1129
+ #: options/class.WpdiscuzOptionsSerialized.php:928
1130
  #: options/phrases-layouts/phrases-user-settings.php:47
1131
  msgid "Cancel all comment subscriptions"
1132
  msgstr ""
1133
 
1134
+ #: options/class.WpdiscuzOptionsSerialized.php:929
1135
  #: options/phrases-layouts/phrases-user-settings.php:51
1136
  msgid "Clear cookies with my personal data"
1137
  msgstr ""
1138
 
1139
+ #: options/class.WpdiscuzOptionsSerialized.php:932
1140
  msgid ""
1141
  "Please use this link to delete all your comments. Please note, that this "
1142
  "action cannot be undone.<br/><br/><a href=\"[DELETE_COMMENTS_URL]\" "
1143
  "target=\"_blank\">Delete all my comments</a><br/><br/>"
1144
  msgstr ""
1145
 
1146
+ #: options/class.WpdiscuzOptionsSerialized.php:933
1147
  #: options/phrases-layouts/phrases-user-settings.php:85
1148
  msgid "Delete all my subscriptions"
1149
  msgstr ""
1150
 
1151
+ #: options/class.WpdiscuzOptionsSerialized.php:934
1152
  msgid ""
1153
  "Please use this link to cancel all subscriptions for new comments. Please "
1154
  "note, that this action cannot be undone.<br/><br/><a "
1156
  "subscriptions</a><br/><br/>"
1157
  msgstr ""
1158
 
1159
+ #: options/class.WpdiscuzOptionsSerialized.php:935
1160
  #: options/phrases-layouts/phrases-user-settings.php:110
1161
  msgid "Delete all my follows"
1162
  msgstr ""
1163
 
1164
+ #: options/class.WpdiscuzOptionsSerialized.php:936
1165
  msgid ""
1166
  "Please use this link to cancel all follows for new comments. Please note, "
1167
  "that this action cannot be undone.<br/><br/><a href=\"[DELETE_FOLLOWS_URL]\" "
1168
  "target=\"_blank\">Delete all my follows</a><br/><br/>"
1169
  msgstr ""
1170
 
1171
+ #: options/class.WpdiscuzOptionsSerialized.php:937
1172
  #: options/phrases-layouts/phrases-user-settings.php:134
1173
  msgid "subscribed to this comment"
1174
  msgstr ""
1175
 
1176
+ #: options/class.WpdiscuzOptionsSerialized.php:938
1177
  #: options/phrases-layouts/phrases-user-settings.php:138
1178
  msgid "subscribed to my comments"
1179
  msgstr ""
1180
 
1181
+ #: options/class.WpdiscuzOptionsSerialized.php:939
1182
  #: options/phrases-layouts/phrases-user-settings.php:142
1183
  msgid "subscribed to all follow-up comments of this post"
1184
  msgstr ""
1185
 
1186
+ #: options/class.WpdiscuzOptionsSerialized.php:941
1187
  #: options/phrases-layouts/phrases-user-settings.php:150
1188
  msgid "Error : Can't send email."
1189
  msgstr ""
1190
 
1191
+ #: options/class.WpdiscuzOptionsSerialized.php:942
1192
  #: options/phrases-layouts/phrases-user-settings.php:154
1193
  msgid "Are you sure you want to delete this comment?"
1194
  msgstr ""
1195
 
1196
+ #: options/class.WpdiscuzOptionsSerialized.php:943
1197
  #: options/phrases-layouts/phrases-user-settings.php:158
1198
  msgid "Are you sure you want to cancel this subscription?"
1199
  msgstr ""
1200
 
1201
+ #: options/class.WpdiscuzOptionsSerialized.php:944
1202
  #: options/phrases-layouts/phrases-user-settings.php:162
1203
  msgid "Are you sure you want to cancel this follow?"
1204
  msgstr ""
1205
 
1206
+ #: options/class.WpdiscuzOptionsSerialized.php:945
1207
  #: options/phrases-layouts/phrases-follow.php:11
1208
  msgid "Follow this user"
1209
  msgstr ""
1210
 
1211
+ #: options/class.WpdiscuzOptionsSerialized.php:946
1212
  #: options/phrases-layouts/phrases-follow.php:15
1213
  msgid "Unfollow this user"
1214
  msgstr ""
1215
 
1216
+ #: options/class.WpdiscuzOptionsSerialized.php:947
1217
  #: options/phrases-layouts/phrases-follow.php:19
1218
  msgid "You started following this comment author"
1219
  msgstr ""
1220
 
1221
+ #: options/class.WpdiscuzOptionsSerialized.php:948
1222
  msgid "You stopped following this comment author."
1223
  msgstr ""
1224
 
1225
+ #: options/class.WpdiscuzOptionsSerialized.php:949
1226
  msgid "Please check your email and confirm the user following request."
1227
  msgstr ""
1228
 
1229
+ #: options/class.WpdiscuzOptionsSerialized.php:950
1230
  msgid "Sorry, we couldn't send confirmation email."
1231
  msgstr ""
1232
 
1233
+ #: options/class.WpdiscuzOptionsSerialized.php:951
1234
  msgid "Please login to follow users."
1235
  msgstr ""
1236
 
1237
+ #: options/class.WpdiscuzOptionsSerialized.php:952
1238
  msgid "We are sorry, but you can't follow this user."
1239
  msgstr ""
1240
 
1241
+ #: options/class.WpdiscuzOptionsSerialized.php:953
1242
  msgid "Following failed. Please try again later."
1243
  msgstr ""
1244
 
1245
+ #: options/class.WpdiscuzOptionsSerialized.php:954
1246
  msgid "Confirm user following request"
1247
  msgstr ""
1248
 
1249
+ #: options/class.WpdiscuzOptionsSerialized.php:955
1250
  msgid "Cancel user following request"
1251
  msgstr ""
1252
 
1253
+ #: options/class.WpdiscuzOptionsSerialized.php:956
1254
  msgid "User Following Confirmation"
1255
  msgstr ""
1256
 
1257
+ #: options/class.WpdiscuzOptionsSerialized.php:957
1258
+ #: options/class.WpdiscuzOptionsSerialized.php:959
1259
  msgid "</a>"
1260
  msgstr ""
1261
 
1430
  msgid "Other"
1431
  msgstr ""
1432
 
1433
+ #: utils/class.WpdiscuzHelper.php:229 utils/class.WpdiscuzHelper.php:232
1434
  msgid "Spoiler"
1435
  msgstr ""
1436
 
1437
+ #: utils/class.WpdiscuzHelper.php:564
1438
  msgid "Go to update data"
1439
  msgstr ""
1440
 
1441
+ #: utils/class.WpdiscuzHelperEmail.php:520
1442
  msgid "Cancel Follow"
1443
  msgstr ""
1444
 
1515
  msgid "Thank you for your feedback!"
1516
  msgstr ""
1517
 
1518
+ #: forms/wpdFormAttr/Form.php:131 forms/wpdFormAttr/Form.php:427
1519
+ #: forms/wpdFormAttr/Form.php:756
1520
  msgid ""
1521
  "I allow to use my email address and send notification about new comments and "
1522
  "replies (you can unsubscribe at any time)."
1523
  msgstr ""
1524
 
1525
+ #: forms/wpdFormAttr/Form.php:691 forms/wpdFormAttr/Form.php:713
1526
+ #: forms/wpdFormAttr/Form.php:725 forms/wpdFormAttr/Form.php:737
1527
+ #: forms/wpdFormAttr/Form.php:748 forms/wpdFormAttr/Form.php:768
1528
+ #: forms/wpdFormAttr/Form.php:798 forms/wpdFormAttr/Form.php:808
1529
+ #: forms/wpdFormAttr/Form.php:815 options/options-layouts/settings-cache.php:23
1530
  #: options/options-layouts/settings-cache.php:33
1531
  #: options/options-layouts/settings-cache.php:41
1532
  #: options/options-layouts/settings-form.php:18
1546
  #: options/options-layouts/settings-form.php:220
1547
  #: options/options-layouts/settings-general.php:14
1548
  #: options/options-layouts/settings-general.php:26
1549
+ #: options/options-layouts/settings-general.php:48
1550
+ #: options/options-layouts/settings-general.php:90
 
1551
  #: options/options-layouts/settings-general.php:104
1552
+ #: options/options-layouts/settings-general.php:114
1553
  #: options/options-layouts/settings-list.php:20
1554
  #: options/options-layouts/settings-list.php:31
1555
  #: options/options-layouts/settings-list.php:41
1584
  msgid "Read the documentation"
1585
  msgstr ""
1586
 
1587
+ #: forms/wpdFormAttr/Form.php:696
1588
  msgid "Disable commenting for roles"
1589
  msgstr ""
1590
 
1591
+ #: forms/wpdFormAttr/Form.php:718
1592
  msgid "Allow guests to comment"
1593
  msgstr ""
1594
 
1595
+ #: forms/wpdFormAttr/Form.php:722 forms/wpdFormAttr/Form.php:734
1596
+ #: forms/wpdFormAttr/Form.php:745
1597
  msgid "Yes"
1598
  msgstr ""
1599
 
1600
+ #: forms/wpdFormAttr/Form.php:724 forms/wpdFormAttr/Form.php:736
1601
+ #: forms/wpdFormAttr/Form.php:747
1602
  msgid "No"
1603
  msgstr ""
1604
 
1605
+ #: forms/wpdFormAttr/Form.php:730
1606
  msgid "Enable subscription bar"
1607
  msgstr ""
1608
 
1609
+ #: forms/wpdFormAttr/Form.php:741
1610
  msgid "Display agreement checkbox in Comment Subscription bar"
1611
  msgstr ""
1612
 
1613
+ #: forms/wpdFormAttr/Form.php:753
1614
  msgid "Comment Subscription bar agreement checkbox label"
1615
  msgstr ""
1616
 
1617
+ #: forms/wpdFormAttr/Form.php:763
1618
  msgid "Comment form header text"
1619
  msgstr ""
1620
 
1621
+ #: forms/wpdFormAttr/Form.php:773
1622
  msgid "Display comment form for post types"
1623
  msgstr ""
1624
 
1625
+ #: forms/wpdFormAttr/Form.php:780
1626
  msgid ""
1627
  "The red marked post types are already attached to other comment form. If you "
1628
  "set this form too, the old forms will not be used for them."
1629
  msgstr ""
1630
 
1631
+ #: forms/wpdFormAttr/Form.php:803
1632
  msgid "Display comment form for post IDs"
1633
  msgstr ""
1634
 
1635
+ #: forms/wpdFormAttr/Form.php:804
1636
  msgid ""
1637
  "You can use this form for certain posts/pages specified by comma separated "
1638
  "IDs."
1639
  msgstr ""
1640
 
1641
+ #: forms/wpdFormAttr/Form.php:819
1642
  msgid "Comment Text Field"
1643
  msgstr ""
1644
 
1645
+ #: forms/wpdFormAttr/Form.php:834
1646
  msgid "ADD ROW"
1647
  msgstr ""
1648
 
1649
+ #: forms/wpdFormAttr/Form.php:904
1650
+ #: forms/wpdFormAttr/Field/DefaultField/Website.php:85
1651
  msgid "Website"
1652
  msgstr ""
1653
 
1654
+ #: forms/wpdFormAttr/Form.php:913
1655
  #: forms/wpdFormAttr/Field/DefaultField/Captcha.php:117
1656
  msgid "Code"
1657
  msgstr ""
1940
  msgstr ""
1941
 
1942
  #: options/options-layouts/settings-general.php:31
1943
+ msgid "Load scripts in footer"
1944
+ msgstr ""
1945
+
1946
+ #: options/options-layouts/settings-general.php:41
1947
  msgid "Use guest email to detect registered account"
1948
  msgstr ""
1949
 
1950
+ #: options/options-layouts/settings-general.php:43
1951
  msgid ""
1952
  "Sometimes registered users comment as guest using the same email address. "
1953
  "wpDiscuz can detect the account role using guest email and display commenter "
1954
  "label correctly."
1955
  msgstr ""
1956
 
1957
+ #: options/options-layouts/settings-general.php:53
1958
  msgid "Secure comment content in HTTPS protocol."
1959
  msgstr ""
1960
 
1961
+ #: options/options-layouts/settings-general.php:55
1962
  msgid ""
1963
  "This option detects images and other contents with non-https source URLs and "
1964
  "fix according to your selected logic."
1965
  msgstr ""
1966
 
1967
+ #: options/options-layouts/settings-general.php:63
1968
  msgid "Replace non-https content to simple link URLs"
1969
  msgstr ""
1970
 
1971
+ #: options/options-layouts/settings-general.php:67
1972
  msgid ""
1973
  "Just replace http protocols to https (https may not be supported by content "
1974
  "provider)"
1975
  msgstr ""
1976
 
1977
+ #: options/options-layouts/settings-general.php:71
1978
  msgid "Ignore non-https content"
1979
  msgstr ""
1980
 
1981
+ #: options/options-layouts/settings-general.php:79
1982
  msgid "Redirect first commenter to"
1983
  msgstr ""
1984
 
1985
+ #: options/options-layouts/settings-general.php:86
1986
  msgid "Do not redirect"
1987
  msgstr ""
1988
 
1989
+ #: options/options-layouts/settings-general.php:95
1990
  msgid "Use WordPress Date/Time format"
1991
  msgstr ""
1992
 
1993
+ #: options/options-layouts/settings-general.php:96
1994
  msgid ""
1995
  "wpDiscuz shows Human Readable date format. If you check this option it'll "
1996
  "show the date/time format set in WordPress General Settings."
1997
  msgstr ""
1998
 
1999
+ #: options/options-layouts/settings-general.php:102
2000
  msgid "Current Wordpress date/time format"
2001
  msgstr ""
2002
 
2003
+ #: options/options-layouts/settings-general.php:109
2004
  msgid "Use Plugin .PO/.MO files"
2005
  msgstr ""
2006
 
2007
+ #: options/options-layouts/settings-general.php:110
2008
  msgid ""
2009
  "wpDiscuz phrase system allows you to translate all front-end phrases. "
2010
  "However if you have a multi-language website it'll not allow you to add more "
2014
  "translate all phrases based on language files according to current language."
2015
  msgstr ""
2016
 
2017
+ #: options/options-layouts/settings-general.php:120
2018
  msgid ""
2019
  "Help wpDiscuz to grow allowing people to recognize which comment plugin you "
2020
  "use"
2021
  msgstr ""
2022
 
2023
+ #: options/options-layouts/settings-general.php:122
2024
  msgid ""
2025
  "Please check this option on to help wpDiscuz get more popularity as your "
2026
  "thank to the hard work we do for you totally free. This option adds a very "
2028
  "visitors recognize the name of comment solution you use."
2029
  msgstr ""
2030
 
2031
+ #: options/options-layouts/settings-general.php:127
2032
  msgid "Thank you!"
2033
  msgstr ""
2034
 
2238
  msgid "Disable Profiles URL"
2239
  msgstr ""
2240
 
2241
+ #: options/options-layouts/settings-list.php:193
2242
+ msgid "Highlight Unread Comments"
2243
+ msgstr ""
2244
+
2245
  #: options/options-layouts/settings-live-update.php:12
2246
  msgid "Live update options"
2247
  msgstr ""
3288
  msgstr ""
3289
 
3290
  #: forms/wpdFormAttr/Field/AgreementCheckbox.php:101
3291
+ #: forms/wpdFormAttr/Field/CheckboxField.php:150
3292
+ #: forms/wpdFormAttr/Field/ColorField.php:112
3293
+ #: forms/wpdFormAttr/Field/DateField.php:112
3294
+ #: forms/wpdFormAttr/Field/NumberField.php:122
3295
+ #: forms/wpdFormAttr/Field/RadioField.php:127
3296
+ #: forms/wpdFormAttr/Field/RatingField.php:123
3297
+ #: forms/wpdFormAttr/Field/SelectField.php:122
3298
+ #: forms/wpdFormAttr/Field/TextAreaField.php:95
3299
+ #: forms/wpdFormAttr/Field/TextField.php:107
3300
+ #: forms/wpdFormAttr/Field/UrlField.php:107
3301
  msgid "field is required!"
3302
  msgstr ""
3303
 
3403
  msgid "Font-awesome icon library."
3404
  msgstr ""
3405
 
3406
+ #: forms/wpdFormAttr/Field/Field.php:61
3407
  msgid " (Submit Button)"
3408
  msgstr ""
3409
 
3410
+ #: forms/wpdFormAttr/Field/Field.php:63
3411
  msgid " (CAPTCHA)"
3412
  msgstr ""
3413
 
3414
+ #: forms/wpdFormAttr/Field/Field.php:96
3415
  msgid "Add To Form"
3416
  msgstr ""
3417
 
3427
  msgid "Max Value"
3428
  msgstr ""
3429
 
3430
+ #: forms/wpdFormAttr/Field/NumberField.php:126
3431
  msgid "value can not be less than"
3432
  msgstr ""
3433
 
3434
+ #: forms/wpdFormAttr/Field/NumberField.php:129
3435
  msgid "value can not be more than"
3436
  msgstr ""
3437
 
options/class.WpdiscuzOptions.php CHANGED
@@ -129,11 +129,13 @@ class WpdiscuzOptions implements WpDiscuzConstants {
129
  $this->optionsSerialized->enableCloseButton = isset($_POST['enableCloseButton']) ? intval($_POST['enableCloseButton']) : 0;
130
  $this->optionsSerialized->enableDropAnimation = isset($_POST['enableDropAnimation']) ? intval($_POST['enableDropAnimation']) : 0;
131
  $this->optionsSerialized->isNativeAjaxEnabled = isset($_POST['isNativeAjaxEnabled']) ? intval($_POST['isNativeAjaxEnabled']) : 0;
 
 
132
  do_action('wpdiscuz_save_options', $_POST);
133
  $this->optionsSerialized->updateOptions();
134
  add_settings_error('wpdiscuz', 'settings_updated', __('Settings updated', 'wpdiscuz'), 'updated');
135
  }
136
- include_once 'html-options.php';
137
  }
138
 
139
  public function phrasesOptionsForm() {
@@ -316,7 +318,7 @@ class WpdiscuzOptions implements WpDiscuzConstants {
316
  }
317
  $this->optionsSerialized->initPhrasesOnLoad();
318
 
319
- include_once 'html-phrases.php';
320
  }
321
 
322
  public function tools() {
@@ -367,11 +369,11 @@ class WpdiscuzOptions implements WpDiscuzConstants {
367
  } else {
368
  die(_e('Hacker?', 'wpdiscuz'));
369
  }
370
- include_once 'html-tools.php';
371
  }
372
 
373
  public function addons() {
374
- include_once 'html-addons.php';
375
  }
376
 
377
  private function initAddons() {
@@ -384,7 +386,7 @@ class WpdiscuzOptions implements WpDiscuzConstants {
384
  'subscriptions' => array('version' => '1.0.0', 'requires' => '5.1.0', '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/'),
385
  'ads-manager' => array('version' => '1.0.0', 'requires' => '5.1.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/'),
386
  'user-mention' => array('version' => '1.0.0', 'requires' => '5.1.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/'),
387
- 'likers' => array('version' => '1.0.0', 'requires' => '5.1.0', 'class' => 'WpdiscuzVoters', 'title' => 'Advanced Likers', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'likers' . WPDISCUZ_DS . 'header.png'), 'desc' => __('See comment likers and voters of each comment. Adds user reputation and badges based on received likes.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-advanced-likers/'),
388
  'report-flagging' => array('version' => '1.1.5', 'requires' => '5.1.0', 'class' => 'wpDiscuzFlagComment', 'title' => 'Report and Flagging', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'report' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Comment reporting tools. Auto-moderates comments based on number of flags and dislikes.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-report-flagging/'),
389
  'translate' => array('version' => '1.0.3', 'requires' => '5.1.0', 'class' => 'WpDiscuzTranslate', 'title' => 'Comment Translate', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'translate' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Adds a smart and intuitive AJAX "Translate" button with 60 language options. Uses free translation API.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-comment-translation/'),
390
  'search' => array('version' => '1.1.0', 'requires' => '5.1.0', 'class' => 'wpDiscuzCommentSearch', 'title' => 'Comment Search', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'search' . WPDISCUZ_DS . 'header.png'), 'desc' => __('AJAX powered front-end comment search. It starts searching while you type search words. ', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-comment-search/'),
@@ -450,89 +452,93 @@ class WpdiscuzOptions implements WpDiscuzConstants {
450
  }
451
 
452
  public function addonNote() {
453
-
454
- $lastHash = get_option('wpdiscuz-addon-note-dismissed');
455
- //if (!$lastHash) return false;
456
- $lastHashArray = explode(',', $lastHash);
457
- //$currentHash = $this->addonHash();
458
- $currentHash = 'wpDiscuz Addon Bundle';
459
- if (strpos($_SERVER['REQUEST_URI'], 'edit-comments.php?') === FALSE && strpos($_SERVER['REQUEST_URI'], 'edit.php?post_type=wpdiscuz_form') === FALSE) {
460
- return false;
461
- }
462
- if ($lastHash != $currentHash && !in_array('Addons Bundle', $lastHashArray) ) {
463
- ?>
464
- <div class="updated notice wpdiscuz_addon_note is-dismissible" style="margin-top:10px;">
465
- <p style="font-weight:normal; font-size:15px; border-bottom:1px dotted #DCDCDC; padding-bottom:10px; clear: both;">
466
- <?php //_e('New Addons are available for wpDiscuz Comments Plugin'); ?>
467
- <?php _e('Finally wpDiscuz Addons Bundle is ready for You!', 'wpdiscuz'); ?>
468
- </p>
469
- <div style="font-size:14px;">
470
- <?php
471
- foreach ($this->addons as $key => $addon) {
472
- if( $addon['class'] != 'Bundle' ) continue;
473
- if (in_array($addon['title'], $lastHashArray))
474
- continue;
475
- ?>
476
- <div style="display:inline-block; min-width:27%; padding-right:10px; margin-bottom:10px;"><img src="<?php echo $addon['thumb'] ?>" style="height:40px; width:auto; vertical-align:middle; margin:0px 10px; text-decoration:none;" /> <a href="<?php echo esc_url( $addon['url'] ) ?>" target="_blank" style="color:#444; text-decoration:none;" title="<?php _e('View Addons Bundle', 'wpdiscuz'); ?>"><?php echo $addon['title']; ?></a></div>
477
  <?php
478
- }
479
- ?>
480
- <div style="clear:both;"></div>
 
 
 
 
 
 
 
 
 
 
481
  </div>
482
- <p>&nbsp;&nbsp;&nbsp;<a href="<?php echo admin_url('edit-comments.php?page=' . self::PAGE_ADDONS) ?>"><?php _e('Go to wpDiscuz Addons subMenu'); ?> &raquo;</a></p>
483
- </div>
484
- <?php
485
  }
486
  }
487
 
488
  public function tipNote() {
489
- if (isset($this->optionsSerialized->disableTips) && $this->optionsSerialized->disableTips) {
490
- return false;
491
- }
492
- if (strpos($_SERVER['REQUEST_URI'], 'edit-comments.php?') === FALSE && strpos($_SERVER['REQUEST_URI'], 'edit.php?post_type=wpdiscuz_form') === FALSE) {
493
- return false;
494
- } else {
495
- $show = mt_rand(1, 5);
496
- if ($show != 1)
497
  return false;
498
- }
499
- $lastHash = get_option('wpdiscuz-tip-note-dismissed');
500
- $lastHashArray = explode(',', $lastHash);
501
- $currentHash = $this->tipHash();
502
- if ($lastHash != $currentHash) {
503
- foreach ($this->tips as $key => $tip) {
504
- if (in_array($tip['title'], $lastHashArray)) {
505
- continue;
506
- }
507
- $notDisplayedTips[] = $tip;
508
  }
509
- if (empty($notDisplayedTips)) {
510
  return false;
 
 
 
 
511
  }
512
- ?>
513
- <div class="updated notice wpdiscuz_tip_note is-dismissible" style="margin-top:10px;">
514
- <p style="font-weight: 600; font-size:15px; border-bottom:1px dotted #DCDCDC; padding-bottom:10px; width:95%;"><?php _e('Do you know?', 'wpdiscuz'); ?></p>
515
- <div style="font-size:14px;">
516
- <?php
517
- $cTipKey = array_rand($notDisplayedTips, 1);
518
- $cTip = $notDisplayedTips[$cTipKey];
519
- ?>
520
- <div style="display:inline-block; width:100%; padding-right:10px; margin-bottom:10px;">
521
- <input type="hidden" value="<?php echo esc_attr($cTip['title']) ?>" name="wpdiscuz_tip_note_value" id="wpdiscuz_tip_note_value" />
522
- <table style="width:100%" width="100%" border="0" cellspacing="0" cellpadding="0">
523
- <tbody>
524
- <tr>
525
- <td style="width:50px; vertical-align:middle; text-align:center;"><img src="<?php echo esc_url($cTip['thumb']) ?>" style="height:45px; width:auto; vertical-align:middle; margin:0px 10px; text-decoration:none;" /></td>
526
- <td style="vertical-align:middle;"><?php echo $cTip['text']; ?></td>
527
- <td style="width:100px; text-align:center; vertical-align:middle;"><a href="<?php echo esc_url($cTip['url']); ?>" class="button button-primary button-large" target="_blank"><?php _e('More info', 'wpdiscuz') ?></a></td>
528
- </tr>
529
- </tbody>
530
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
531
  </div>
532
- <div style="clear:both;"></div>
533
  </div>
534
- </div>
535
- <?php
536
  }
537
  }
538
 
129
  $this->optionsSerialized->enableCloseButton = isset($_POST['enableCloseButton']) ? intval($_POST['enableCloseButton']) : 0;
130
  $this->optionsSerialized->enableDropAnimation = isset($_POST['enableDropAnimation']) ? intval($_POST['enableDropAnimation']) : 0;
131
  $this->optionsSerialized->isNativeAjaxEnabled = isset($_POST['isNativeAjaxEnabled']) ? intval($_POST['isNativeAjaxEnabled']) : 0;
132
+ $this->optionsSerialized->enableLastVisitCookie = isset($_POST['enableLastVisitCookie']) ? intval($_POST['enableLastVisitCookie']) : 0;
133
+ $this->optionsSerialized->isLoadScriptsInFooter = isset($_POST['isLoadScriptsInFooter']) ? intval($_POST['isLoadScriptsInFooter']) : 0;
134
  do_action('wpdiscuz_save_options', $_POST);
135
  $this->optionsSerialized->updateOptions();
136
  add_settings_error('wpdiscuz', 'settings_updated', __('Settings updated', 'wpdiscuz'), 'updated');
137
  }
138
+ include_once WPDISCUZ_DIR_PATH . '/options/html-options.php';
139
  }
140
 
141
  public function phrasesOptionsForm() {
318
  }
319
  $this->optionsSerialized->initPhrasesOnLoad();
320
 
321
+ include_once WPDISCUZ_DIR_PATH . '/options/html-phrases.php';
322
  }
323
 
324
  public function tools() {
369
  } else {
370
  die(_e('Hacker?', 'wpdiscuz'));
371
  }
372
+ include_once WPDISCUZ_DIR_PATH . '/options/html-tools.php';
373
  }
374
 
375
  public function addons() {
376
+ include_once WPDISCUZ_DIR_PATH . '/options/html-addons.php';
377
  }
378
 
379
  private function initAddons() {
386
  'subscriptions' => array('version' => '1.0.0', 'requires' => '5.1.0', '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/'),
387
  'ads-manager' => array('version' => '1.0.0', 'requires' => '5.1.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/'),
388
  'user-mention' => array('version' => '1.0.0', 'requires' => '5.1.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/'),
389
+ 'likers' => array('version' => '1.0.0', 'requires' => '5.3.0', 'class' => 'WpdiscuzVoters', 'title' => 'Advanced Likers', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'likers' . WPDISCUZ_DS . 'header.png'), 'desc' => __('See comment likers and voters of each comment. Adds user reputation and badges based on received likes.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-advanced-likers/'),
390
  'report-flagging' => array('version' => '1.1.5', 'requires' => '5.1.0', 'class' => 'wpDiscuzFlagComment', 'title' => 'Report and Flagging', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'report' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Comment reporting tools. Auto-moderates comments based on number of flags and dislikes.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-report-flagging/'),
391
  'translate' => array('version' => '1.0.3', 'requires' => '5.1.0', 'class' => 'WpDiscuzTranslate', 'title' => 'Comment Translate', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'translate' . WPDISCUZ_DS . 'header.png'), 'desc' => __('Adds a smart and intuitive AJAX "Translate" button with 60 language options. Uses free translation API.', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-comment-translation/'),
392
  'search' => array('version' => '1.1.0', 'requires' => '5.1.0', 'class' => 'wpDiscuzCommentSearch', 'title' => 'Comment Search', 'thumb' => plugins_url(WPDISCUZ_DIR_NAME . WPDISCUZ_DS . 'assets' . WPDISCUZ_DS . 'addons' . WPDISCUZ_DS . 'search' . WPDISCUZ_DS . 'header.png'), 'desc' => __('AJAX powered front-end comment search. It starts searching while you type search words. ', 'wpdiscuz'), 'url' => 'https://gvectors.com/product/wpdiscuz-comment-search/'),
452
  }
453
 
454
  public function addonNote() {
455
+ if (current_user_can('manage_options')) {
456
+ $lastHash = get_option('wpdiscuz-addon-note-dismissed');
457
+ //if (!$lastHash) return false;
458
+ $lastHashArray = explode(',', $lastHash);
459
+ //$currentHash = $this->addonHash();
460
+ $currentHash = 'wpDiscuz Addon Bundle';
461
+ if (strpos($_SERVER['REQUEST_URI'], 'edit-comments.php?') === FALSE && strpos($_SERVER['REQUEST_URI'], 'edit.php?post_type=wpdiscuz_form') === FALSE) {
462
+ return false;
463
+ }
464
+ if ($lastHash != $currentHash && !in_array('Addons Bundle', $lastHashArray)) {
465
+ ?>
466
+ <div class="updated notice wpdiscuz_addon_note is-dismissible" style="margin-top:10px;">
467
+ <p style="font-weight:normal; font-size:15px; border-bottom:1px dotted #DCDCDC; padding-bottom:10px; clear: both;">
468
+ <?php //_e('New Addons are available for wpDiscuz Comments Plugin'); ?>
469
+ <?php _e('Finally wpDiscuz Addons Bundle is ready for You!', 'wpdiscuz'); ?>
470
+ </p>
471
+ <div style="font-size:14px;">
 
 
 
 
 
 
 
472
  <?php
473
+ foreach ($this->addons as $key => $addon) {
474
+ if ($addon['class'] != 'Bundle')
475
+ continue;
476
+ if (in_array($addon['title'], $lastHashArray))
477
+ continue;
478
+ ?>
479
+ <div style="display:inline-block; min-width:27%; padding-right:10px; margin-bottom:10px;"><img src="<?php echo $addon['thumb'] ?>" style="height:40px; width:auto; vertical-align:middle; margin:0px 10px; text-decoration:none;" /> <a href="<?php echo esc_url($addon['url']) ?>" target="_blank" style="color:#444; text-decoration:none;" title="<?php _e('View Addons Bundle', 'wpdiscuz'); ?>"><?php echo $addon['title']; ?></a></div>
480
+ <?php
481
+ }
482
+ ?>
483
+ <div style="clear:both;"></div>
484
+ </div>
485
+ <p>&nbsp;&nbsp;&nbsp;<a href="<?php echo admin_url('edit-comments.php?page=' . self::PAGE_ADDONS) ?>"><?php _e('Go to wpDiscuz Addons subMenu'); ?> &raquo;</a></p>
486
  </div>
487
+ <?php
488
+ }
 
489
  }
490
  }
491
 
492
  public function tipNote() {
493
+ if (current_user_can('manage_options')) {
494
+ if (isset($this->optionsSerialized->disableTips) && $this->optionsSerialized->disableTips) {
 
 
 
 
 
 
495
  return false;
 
 
 
 
 
 
 
 
 
 
496
  }
497
+ if (strpos($_SERVER['REQUEST_URI'], 'edit-comments.php?') === FALSE && strpos($_SERVER['REQUEST_URI'], 'edit.php?post_type=wpdiscuz_form') === FALSE) {
498
  return false;
499
+ } else {
500
+ $show = mt_rand(1, 5);
501
+ if ($show != 1)
502
+ return false;
503
  }
504
+ $lastHash = get_option('wpdiscuz-tip-note-dismissed');
505
+ $lastHashArray = explode(',', $lastHash);
506
+ $currentHash = $this->tipHash();
507
+ if ($lastHash != $currentHash) {
508
+ foreach ($this->tips as $key => $tip) {
509
+ if (in_array($tip['title'], $lastHashArray)) {
510
+ continue;
511
+ }
512
+ $notDisplayedTips[] = $tip;
513
+ }
514
+ if (empty($notDisplayedTips)) {
515
+ return false;
516
+ }
517
+ ?>
518
+ <div class="updated notice wpdiscuz_tip_note is-dismissible" style="margin-top:10px;">
519
+ <p style="font-weight: 600; font-size:15px; border-bottom:1px dotted #DCDCDC; padding-bottom:10px; width:95%;"><?php _e('Do you know?', 'wpdiscuz'); ?></p>
520
+ <div style="font-size:14px;">
521
+ <?php
522
+ $cTipKey = array_rand($notDisplayedTips, 1);
523
+ $cTip = $notDisplayedTips[$cTipKey];
524
+ ?>
525
+ <div style="display:inline-block; width:100%; padding-right:10px; margin-bottom:10px;">
526
+ <input type="hidden" value="<?php echo esc_attr($cTip['title']) ?>" name="wpdiscuz_tip_note_value" id="wpdiscuz_tip_note_value" />
527
+ <table style="width:100%" width="100%" border="0" cellspacing="0" cellpadding="0">
528
+ <tbody>
529
+ <tr>
530
+ <td style="width:50px; vertical-align:middle; text-align:center;"><img src="<?php echo esc_url($cTip['thumb']) ?>" style="height:45px; width:auto; vertical-align:middle; margin:0px 10px; text-decoration:none;" /></td>
531
+ <td style="vertical-align:middle;"><?php echo $cTip['text']; ?></td>
532
+ <td style="width:100px; text-align:center; vertical-align:middle;"><a href="<?php echo esc_url($cTip['url']); ?>" class="button button-primary button-large" target="_blank"><?php _e('More info', 'wpdiscuz') ?></a></td>
533
+ </tr>
534
+ </tbody>
535
+ </table>
536
+ </div>
537
+ <div style="clear:both;"></div>
538
  </div>
 
539
  </div>
540
+ <?php
541
+ }
542
  }
543
  }
544
 
options/class.WpdiscuzOptionsSerialized.php CHANGED
@@ -654,6 +654,9 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
654
  public $wordpressDefaultCommentsPage;
655
  public $wordpressCommentPerPage;
656
  public $wordpressShowAvatars;
 
 
 
657
 
658
  function __construct($dbmanager) {
659
  $this->dbManager = $dbmanager;
@@ -785,6 +788,8 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
785
  $this->enableCloseButton = isset($options['enableCloseButton']) ? $options['enableCloseButton'] : 0;
786
  $this->enableDropAnimation = isset($options['enableDropAnimation']) ? $options['enableDropAnimation'] : 0;
787
  $this->isNativeAjaxEnabled = isset($options['isNativeAjaxEnabled']) ? $options['isNativeAjaxEnabled'] : 0;
 
 
788
  do_action('wpdiscuz_init_options', $this);
789
  }
790
 
@@ -1061,6 +1066,8 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
1061
  'enableCloseButton' => $this->enableCloseButton,
1062
  'enableDropAnimation' => $this->enableDropAnimation,
1063
  'isNativeAjaxEnabled' => $this->isNativeAjaxEnabled,
 
 
1064
  );
1065
  return $options;
1066
  }
@@ -1181,6 +1188,8 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
1181
  'enableCloseButton' => 1,
1182
  'enableDropAnimation' => 1,
1183
  'isNativeAjaxEnabled' => 1,
 
 
1184
  );
1185
  add_option(self::OPTION_SLUG_OPTIONS, serialize($options));
1186
  }
@@ -1281,6 +1290,7 @@ class WpdiscuzOptionsSerialized implements WpDiscuzConstants {
1281
  $js_options['enableDropAnimation'] = $this->enableDropAnimation;
1282
  $js_options['isNativeAjaxEnabled'] = $this->isNativeAjaxEnabled;
1283
  $js_options['cookieCommentsSorting'] = self::COOKIE_COMMENTS_SORTING;
 
1284
  return $js_options;
1285
  }
1286
 
654
  public $wordpressDefaultCommentsPage;
655
  public $wordpressCommentPerPage;
656
  public $wordpressShowAvatars;
657
+
658
+ public $enableLastVisitCookie;
659
+ public $isLoadScriptsInFooter;
660
 
661
  function __construct($dbmanager) {
662
  $this->dbManager = $dbmanager;
788
  $this->enableCloseButton = isset($options['enableCloseButton']) ? $options['enableCloseButton'] : 0;
789
  $this->enableDropAnimation = isset($options['enableDropAnimation']) ? $options['enableDropAnimation'] : 0;
790
  $this->isNativeAjaxEnabled = isset($options['isNativeAjaxEnabled']) ? $options['isNativeAjaxEnabled'] : 0;
791
+ $this->enableLastVisitCookie = isset($options['enableLastVisitCookie']) ? $options['enableLastVisitCookie'] : 0;
792
+ $this->isLoadScriptsInFooter = isset($options['isLoadScriptsInFooter']) ? $options['isLoadScriptsInFooter'] : 0;
793
  do_action('wpdiscuz_init_options', $this);
794
  }
795
 
1066
  'enableCloseButton' => $this->enableCloseButton,
1067
  'enableDropAnimation' => $this->enableDropAnimation,
1068
  'isNativeAjaxEnabled' => $this->isNativeAjaxEnabled,
1069
+ 'enableLastVisitCookie' => $this->enableLastVisitCookie,
1070
+ 'isLoadScriptsInFooter' => $this->isLoadScriptsInFooter,
1071
  );
1072
  return $options;
1073
  }
1188
  'enableCloseButton' => 1,
1189
  'enableDropAnimation' => 1,
1190
  'isNativeAjaxEnabled' => 1,
1191
+ 'enableLastVisitCookie' => 0,
1192
+ 'isLoadScriptsInFooter' => 1,
1193
  );
1194
  add_option(self::OPTION_SLUG_OPTIONS, serialize($options));
1195
  }
1290
  $js_options['enableDropAnimation'] = $this->enableDropAnimation;
1291
  $js_options['isNativeAjaxEnabled'] = $this->isNativeAjaxEnabled;
1292
  $js_options['cookieCommentsSorting'] = self::COOKIE_COMMENTS_SORTING;
1293
+ $js_options['enableLastVisitCookie'] = $this->enableLastVisitCookie;
1294
  return $js_options;
1295
  }
1296
 
options/html-options.php CHANGED
@@ -65,16 +65,16 @@ if (!defined('ABSPATH')) {
65
  </ul>
66
  <div class="resp-tabs-container options_tab_id">
67
  <?php
68
- include 'options-layouts/settings-general.php';
69
- include 'options-layouts/settings-form.php';
70
- include 'options-layouts/settings-list.php';
71
- include 'options-layouts/settings-live-update.php';
72
- include 'options-layouts/settings-subscription.php';
73
- include 'options-layouts/settings-style.php';
74
- include 'options-layouts/settings-cache.php';
75
- include 'options-layouts/settings-social.php';
76
- include 'options-layouts/settings-integrations.php';
77
- include 'options-layouts/settings-addons.php';
78
  ?>
79
  </div>
80
  </div>
65
  </ul>
66
  <div class="resp-tabs-container options_tab_id">
67
  <?php
68
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-general.php';
69
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-form.php';
70
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-list.php';
71
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-live-update.php';
72
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-subscription.php';
73
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-style.php';
74
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-cache.php';
75
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-social.php';
76
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-integrations.php';
77
+ include_once WPDISCUZ_DIR_PATH . '/options/options-layouts/settings-addons.php';
78
  ?>
79
  </div>
80
  </div>
options/html-phrases.php CHANGED
@@ -30,16 +30,16 @@ if (!defined('ABSPATH')) {
30
  <li><?php _e('Errors', 'wpdiscuz'); ?></li>
31
  </ul>
32
  <div class="resp-tabs-container phrases_tab_id">
33
- <?php include 'phrases-layouts/phrases-general.php'; ?>
34
- <?php include 'phrases-layouts/phrases-form.php'; ?>
35
- <?php include 'phrases-layouts/phrases-comment.php'; ?>
36
- <?php include 'phrases-layouts/phrases-datetime.php'; ?>
37
- <?php include 'phrases-layouts/phrases-email.php'; ?>
38
- <?php include 'phrases-layouts/phrases-notification.php'; ?>
39
- <?php include 'phrases-layouts/phrases-follow.php'; ?>
40
- <?php include 'phrases-layouts/phrases-social-login.php'; ?>
41
- <?php include 'phrases-layouts/phrases-user-settings.php'; ?>
42
- <?php include 'phrases-layouts/phrases-error.php'; ?>
43
  </div>
44
  </div>
45
  <script type="text/javascript">
30
  <li><?php _e('Errors', 'wpdiscuz'); ?></li>
31
  </ul>
32
  <div class="resp-tabs-container phrases_tab_id">
33
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-general.php'; ?>
34
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-form.php'; ?>
35
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-comment.php'; ?>
36
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-datetime.php'; ?>
37
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-email.php'; ?>
38
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-notification.php'; ?>
39
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-follow.php'; ?>
40
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-social-login.php'; ?>
41
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-user-settings.php'; ?>
42
+ <?php include_once WPDISCUZ_DIR_PATH . '/options/phrases-layouts/phrases-error.php'; ?>
43
  </div>
44
  </div>
45
  <script type="text/javascript">
options/html-tools.php CHANGED
@@ -19,10 +19,10 @@ if (!defined('ABSPATH')) {
19
  </ul>
20
  <div class="resp-tabs-container tools_tab_id">
21
  <?php
22
- include 'tools-layouts/options-export.php';
23
- include 'tools-layouts/options-import.php';
24
- include 'tools-layouts/subscriptions-import.php';
25
- include 'tools-layouts/tools-other.php';
26
  ?>
27
  </div>
28
  </div>
19
  </ul>
20
  <div class="resp-tabs-container tools_tab_id">
21
  <?php
22
+ include_once WPDISCUZ_DIR_PATH . '/options/tools-layouts/options-export.php';
23
+ include_once WPDISCUZ_DIR_PATH . '/options/tools-layouts/options-import.php';
24
+ include_once WPDISCUZ_DIR_PATH . '/options/tools-layouts/subscriptions-import.php';
25
+ include_once WPDISCUZ_DIR_PATH . '/options/tools-layouts/tools-other.php';
26
  ?>
27
  </div>
28
  </div>
options/options-layouts/settings-form.php CHANGED
@@ -10,206 +10,206 @@ if (!defined('ABSPATH')) {
10
  <tr valign="top">
11
  <th scope="row" style="width: 50%;">
12
  <label for="wc_header_text_show_hide"><?php _e('Hide Header Text', 'wpdiscuz'); ?></label>
13
- <p class="wpd-desc"><?php _e('This option hides "Leave Reply" header text on top of comment form. You can change this text in Comments > Forms admin page.', 'wpdiscuz'); ?></p>
14
- </th>
15
- <td>
16
- <input type="checkbox" <?php checked($this->optionsSerialized->headerTextShowHide == 1) ?> value="1" name="wc_header_text_show_hide" id="wc_header_text_show_hide" />
17
- <label for="wc_header_text_show_hide"></label>
18
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#hide_header_text" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
19
- </td>
20
- </tr>
21
- <tr valign="top">
22
- <th scope="row">
23
- <label for="wc_show_hide_loggedin_username"><?php _e('Show logged-in user name and logout link on top of main form', 'wpdiscuz'); ?></label>
24
- </th>
25
- <td>
26
- <input type="checkbox" <?php checked($this->optionsSerialized->showHideLoggedInUsername == 1) ?> value="1" name="wc_show_hide_loggedin_username" id="wc_show_hide_loggedin_username" />
27
- <label for="wc_show_hide_loggedin_username"></label>
28
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#user_name_and_logout_link" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
29
- </td>
30
- </tr>
31
- <tr valign="top">
32
- <th scope="row">
33
- <label for="comment_form_components"><?php _e('Comment Form components', 'wpdiscuz'); ?></label>
34
- <p class="wpd-desc"><?php _e('These components can be found on the main comment form. The "My Content and Settings" button is located on the top left side, under the "Leave Reply" header text. The "Discussion Statistic" and "Recent Comment Authors" sections are located under the main comment form fields ont the left and right sides accordingly.', 'wpdiscuz'); ?></p>
35
- </th>
36
- <td>
37
- <fieldset>
38
- <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
39
- <div style="display: inline-block; vertical-align: middle;">
40
- <input type="checkbox" <?php checked($this->optionsSerialized->hideLoginLinkForGuests == 1) ?> value="1" name="hideLoginLinkForGuests" id="hideLoginLinkForGuests" />
41
- <label for="hideLoginLinkForGuests"></label>
42
- </div> &nbsp;
43
- <span for="hideLoginLinkForGuests"><?php _e('Hide "Please login to comment" text', 'wpdiscuz'); ?></span>
44
- </div>
45
- <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
46
- <div style="display: inline-block; vertical-align: middle;">
47
- <input type="checkbox" value="1" <?php checked($this->optionsSerialized->hideUserSettingsButton == 1) ?> name="hideUserSettingsButton" id="hideUserSettingsButton" />
48
- <label for="hideUserSettingsButton"></label>
49
- </div> &nbsp;
50
- <span data-target="hideUserSettingsButton" style="display: inline-block"><?php _e('Hide "My Content and Settings" button', 'wpdiscuz'); ?></span>
51
- </div>
52
- <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
53
- <div style="display: inline-block; vertical-align: middle;">
54
- <input type="checkbox" value="1" <?php checked($this->optionsSerialized->hideDiscussionStat == 1) ?> name="hideDiscussionStat" id="hideDiscussionStat" />
55
- <label for="hideDiscussionStat"></label>
56
- </div> &nbsp;
57
- <span data-target="hideDiscussionStat" style="display: inline-block"><?php _e('Hide "Discussion Statistic" section', 'wpdiscuz'); ?></span>
58
- </div>
59
- <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
60
- <div style="display: inline-block; vertical-align: middle;">
61
- <input type="checkbox" value="1" <?php checked($this->optionsSerialized->hideRecentAuthors == 1) ?> name="hideRecentAuthors" id="hideRecentAuthors" />
62
- <label for="hideRecentAuthors"></label>
63
- </div> &nbsp;
64
- <span data-target="hideRecentAuthors" style="display: inline-block;"><?php _e('Hide "Recent Comment Authors" section', 'wpdiscuz'); ?></span>
65
- </div>
66
- <div style="clear: both;"></div>
67
- </fieldset>
68
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#components" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
69
- </td>
70
- </tr>
71
- <tr valign="top">
72
- <th scope="row">
73
- <label for="storeCommenterData"><?php _e('Keep guest commenter credentials in browser cookies for x days', 'wpdiscuz'); ?></label>
74
- <p class="wpd-desc">
75
- <?php _e('wpDiscuz uses WordPress function to keep guest Name, Email and Website information in cookies to fill according fields of comment form on next commenting time.', 'wpdiscuz'); ?><br />
76
- <?php _e('Set this option value -1 to make it unlimited.', 'wpdiscuz'); ?><br />
77
- <?php _e('Set this option value 0 to clear those data when user closes browser.', 'wpdiscuz'); ?>
78
- </p>
79
- </th>
80
- <td>
81
- <input type="number" value="<?php echo isset($this->optionsSerialized->storeCommenterData) ? $this->optionsSerialized->storeCommenterData : -1; ?>" name="storeCommenterData" id="storeCommenterData" style="width:100px;" />
82
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#guest_commenter_credentials" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
83
- </td>
84
- </tr>
85
- <tr valign="top">
86
- <th scope="row">
87
- <label><?php _e('Comment author name length (for guests only)', 'wpdiscuz'); ?></label>
88
- </th>
89
- <td>
90
- <span for="commenterNameMinLength">
91
- <?php _e('Min', 'wpdiscuz'); ?>: <input type="number" value="<?php echo $this->optionsSerialized->commenterNameMinLength; ?>" name="commenterNameMinLength" id="commenterNameMinLength" style="width:70px;" />
92
- </span>
93
- <span for="commenterNameMaxLength">
94
- &nbsp; <?php _e('Max', 'wpdiscuz'); ?>: <input type="number" value="<?php echo $this->optionsSerialized->commenterNameMaxLength; ?>" name="commenterNameMaxLength" id="commenterNameMaxLength" style="width:70px;" />
95
- </span>
96
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#comment_author_name_length" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
97
- </td>
98
- </tr>
99
- <tr valign="top">
100
- <th scope="row">
101
- <label><?php _e('Comment text length', 'wpdiscuz'); ?></label>
102
- <p class="wpd-desc"><?php _e('Allows to set minimum and maximum number of chars can be inserted in comment textarea. Leave the max value empty to remove the limit.', 'wpdiscuz'); ?></p>
103
- </th>
104
- <td>
105
- <span for="wc_comment_text_min_length">
106
- <?php _e('Min', 'wpdiscuz'); ?>: <input type="number" value="<?php echo isset($this->optionsSerialized->commentTextMinLength) ? $this->optionsSerialized->commentTextMinLength : 10; ?>" name="wc_comment_text_min_length" id="wc_comment_text_min_length" style="width:70px;" />
107
- </span>
108
- <span for="wc_comment_text_max_length">
109
- &nbsp; <?php _e('Max', 'wpdiscuz'); ?>: <input type="number" value="<?php echo isset($this->optionsSerialized->commentTextMaxLength) ? $this->optionsSerialized->commentTextMaxLength : ''; ?>" name="wc_comment_text_max_length" id="wc_comment_text_max_length" style="width:70px;" />
110
- </span>
111
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#comment_text_length" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
112
- </td>
113
- </tr>
114
- <tr valign="top">
115
- <th scope="row">
116
- <label><?php _e('Captcha generation type', 'wpdiscuz'); ?></label>
117
- </th>
118
- <th>
119
- <?php $isCaptchaInSession = isset($this->optionsSerialized->isCaptchaInSession) ? $this->optionsSerialized->isCaptchaInSession : 0; ?>
120
- <div class="wpd-switch-field">
121
- <input type="radio" value="0" <?php checked('0' == $isCaptchaInSession); ?> name="isCaptchaInSession" id="captchaByImageFile" /><label for="captchaByImageFile"><?php _e('File system', 'wpdiscuz') ?></label> &nbsp;
122
- <input type="radio" value="1" <?php checked('1' == $isCaptchaInSession); ?> name="isCaptchaInSession" id="captchaInSession" /><label for="captchaInSession"><?php _e('WP Session', 'wpdiscuz') ?></label>
123
- </div>
124
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#captcha_generation_type" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
125
- </th>
126
- </tr>
127
- <tr valign="top">
128
- <th scope="row">
129
- <label for="antispamKey"><?php _e('Invisible Spam Protection', 'wpdiscuz'); ?></label>
130
- <p class="wpd-desc">
131
- <?php _e('You should purge caches after each key generation otherwise the plugin may work not correctly', 'wpdiscuz'); ?>
132
- </p>
133
- <p class="wpd-desc">
134
- <?php _e('Leave the field empty if you don\'t want to use this feature', 'wpdiscuz'); ?>
135
- </p>
136
- </th>
137
- <th>
138
- <input type="text" value="<?php echo $this->optionsSerialized->antispamKey ?>" name="antispamKey" id="antispamKey" style="padding: 3px 5px;" size="35"/>
139
- <button type="button" id="generateAntispamKey" class="button button-secondary"><?php _e('Generate', 'wpdiscuz') ?></button>
140
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#invisible_spam_protection" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
141
- </th>
142
- </tr>
143
- <tr valign="top">
144
- <th scope="row" style="width:55%;">
145
- <label for="displayAntispamNote"><?php _e('Display note about Invisible Spam Protection', 'wpdiscuz'); ?></label>
146
- <p class="wpd-desc"><?php _e('wpDiscuz has built-in invisible antispam protection based on server side and front-end unique key comparation. By default wpDiscuz display a small note in simple CAPTCHA area, saying the comment form is under antispam protection. The note text can be managed in Comments > Phrases > Form tab.', 'wpdiscuz'); ?></p>
147
- </th>
148
- <td>
149
- <input type="checkbox" value="1" <?php checked($this->optionsSerialized->displayAntispamNote == 1) ?> name="displayAntispamNote" id="displayAntispamNote" />
150
- <label for="displayAntispamNote"></label>
151
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#note_about_spam_protection" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
152
- </td>
153
- </tr>
154
- <tr valign="top">
155
- <th scope="row" style="width:55%;">
156
- <label for="wc_quick_tags"><?php _e('Enable Quicktags', 'wpdiscuz'); ?></label>
157
- <p class="wpd-desc"><?php _e('Quicktag is a on-click button that inserts HTML in to comment textarea. For example the "b" Quicktag will insert the HTML bold tags < b > < /b >.', 'wpdiscuz'); ?></p>
158
- </th>
159
- <td>
160
- <input type="checkbox" <?php checked($this->optionsSerialized->isQuickTagsEnabled == 1) ?> value="1" name="wc_quick_tags" id="wc_quick_tags" />
161
- <label for="wc_quick_tags"></label>
162
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#quicktags" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
163
- </td>
164
- </tr>
165
- <tr valign="top">
166
- <th scope="row">
167
- <label for="enableImageConversion"><?php _e('Enable automatic image URL to image HTML conversion', 'wpdiscuz'); ?></label>
168
- </th>
169
- <td>
170
- <input type="checkbox" <?php checked($this->optionsSerialized->enableImageConversion == 1) ?> value="1" name="enableImageConversion" id="enableImageConversion" />
171
- <label for="enableImageConversion"></label>
172
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#image-embed" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
173
- </td>
174
- </tr>
175
- <tr valign="top">
176
- <th scope="row">
177
- <label><?php _e('Edit Button - Allow comment editing for', 'wpdiscuz'); ?></label>
178
- </th>
179
- <td>
180
- <select id="wc_comment_editable_time" name="wc_comment_editable_time">
181
- <?php $wc_comment_editable_time = isset($this->optionsSerialized->commentEditableTime) ? $this->optionsSerialized->commentEditableTime : 0; ?>
182
- <option value="0" <?php selected($wc_comment_editable_time, '0'); ?>><?php _e('Do not allow', 'wpdiscuz'); ?></option>
183
- <option value="900" <?php selected($wc_comment_editable_time, '900'); ?>>15 <?php _e('Minutes', 'wpdiscuz'); ?></option>
184
- <option value="1800" <?php selected($wc_comment_editable_time, '1800'); ?>>30 <?php _e('Minutes', 'wpdiscuz'); ?></option>
185
- <option value="3600" <?php selected($wc_comment_editable_time, '3600'); ?>>1 <?php _e('Hour', 'wpdiscuz'); ?></option>
186
- <option value="10800" <?php selected($wc_comment_editable_time, '10800'); ?>>3 <?php _e('Hours', 'wpdiscuz'); ?></option>
187
- <option value="86400" <?php selected($wc_comment_editable_time, '86400'); ?>>24 <?php _e('Hours', 'wpdiscuz'); ?></option>
188
- <option value="unlimit" <?php selected($wc_comment_editable_time, 'unlimit'); ?>><?php _e('Unlimit', 'wpdiscuz'); ?></option>
189
- </select>
190
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#allow_editing" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
191
- </td>
192
- </tr>
193
- <tr valign="top">
194
- <th scope="row" style="width: 50%;">
195
- <label for="enableStickButton"><?php _e('Stick Button - Stick a comment thread', 'wpdiscuz'); ?></label>
196
- </th>
197
- <td>
198
- <input type="checkbox" <?php checked($this->optionsSerialized->enableStickButton == 1) ?> value="1" name="enableStickButton" id="enableStickButton" />
199
- <label for="enableStickButton"></label>
200
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#stick_comment" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
201
- </td>
202
- </tr>
203
- <tr valign="top">
204
- <th scope="row" style="width: 50%;">
205
- <label for="enableCloseButton"><?php _e('Close Button - Close a comment thread', 'wpdiscuz'); ?></label>
206
- </th>
207
- <td>
208
- <input type="checkbox" <?php checked($this->optionsSerialized->enableCloseButton == 1) ?> value="1" name="enableCloseButton" id="enableCloseButton" />
209
- <label for="enableCloseButton"></label>
210
- <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#close_comment" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
211
- </td>
212
- </tr>
213
  <tr valign="top">
214
  <th scope="row">
215
  <label for="enableDropAnimation"><?php _e('Enable drop animation for comment form and subscription bar', 'wpdiscuz'); ?></label>
10
  <tr valign="top">
11
  <th scope="row" style="width: 50%;">
12
  <label for="wc_header_text_show_hide"><?php _e('Hide Header Text', 'wpdiscuz'); ?></label>
13
+ <p class="wpd-desc"><?php _e('This option hides "Leave Reply" header text on top of comment form. You can change this text in Comments > Forms admin page.', 'wpdiscuz'); ?></p>
14
+ </th>
15
+ <td>
16
+ <input type="checkbox" <?php checked($this->optionsSerialized->headerTextShowHide == 1) ?> value="1" name="wc_header_text_show_hide" id="wc_header_text_show_hide" />
17
+ <label for="wc_header_text_show_hide"></label>
18
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#hide_header_text" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
19
+ </td>
20
+ </tr>
21
+ <tr valign="top">
22
+ <th scope="row">
23
+ <label for="wc_show_hide_loggedin_username"><?php _e('Show logged-in user name and logout link on top of main form', 'wpdiscuz'); ?></label>
24
+ </th>
25
+ <td>
26
+ <input type="checkbox" <?php checked($this->optionsSerialized->showHideLoggedInUsername == 1) ?> value="1" name="wc_show_hide_loggedin_username" id="wc_show_hide_loggedin_username" />
27
+ <label for="wc_show_hide_loggedin_username"></label>
28
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#user_name_and_logout_link" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
29
+ </td>
30
+ </tr>
31
+ <tr valign="top">
32
+ <th scope="row">
33
+ <label for="comment_form_components"><?php _e('Comment Form components', 'wpdiscuz'); ?></label>
34
+ <p class="wpd-desc"><?php _e('These components can be found on the main comment form. The "My Content and Settings" button is located on the top left side, under the "Leave Reply" header text. The "Discussion Statistic" and "Recent Comment Authors" sections are located under the main comment form fields ont the left and right sides accordingly.', 'wpdiscuz'); ?></p>
35
+ </th>
36
+ <td>
37
+ <fieldset>
38
+ <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
39
+ <div style="display: inline-block; vertical-align: middle;">
40
+ <input type="checkbox" <?php checked($this->optionsSerialized->hideLoginLinkForGuests == 1) ?> value="1" name="hideLoginLinkForGuests" id="hideLoginLinkForGuests" />
41
+ <label for="hideLoginLinkForGuests"></label>
42
+ </div> &nbsp;
43
+ <span for="hideLoginLinkForGuests"><?php _e('Hide "Please login to comment" text', 'wpdiscuz'); ?></span>
44
+ </div>
45
+ <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
46
+ <div style="display: inline-block; vertical-align: middle;">
47
+ <input type="checkbox" value="1" <?php checked($this->optionsSerialized->hideUserSettingsButton == 1) ?> name="hideUserSettingsButton" id="hideUserSettingsButton" />
48
+ <label for="hideUserSettingsButton"></label>
49
+ </div> &nbsp;
50
+ <span data-target="hideUserSettingsButton" style="display: inline-block"><?php _e('Hide "My Content and Settings" button', 'wpdiscuz'); ?></span>
51
+ </div>
52
+ <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
53
+ <div style="display: inline-block; vertical-align: middle;">
54
+ <input type="checkbox" value="1" <?php checked($this->optionsSerialized->hideDiscussionStat == 1) ?> name="hideDiscussionStat" id="hideDiscussionStat" />
55
+ <label for="hideDiscussionStat"></label>
56
+ </div> &nbsp;
57
+ <span data-target="hideDiscussionStat" style="display: inline-block"><?php _e('Hide "Discussion Statistic" section', 'wpdiscuz'); ?></span>
58
+ </div>
59
+ <div class="wpd-subopt" style="float: none; padding: 5px 0px;">
60
+ <div style="display: inline-block; vertical-align: middle;">
61
+ <input type="checkbox" value="1" <?php checked($this->optionsSerialized->hideRecentAuthors == 1) ?> name="hideRecentAuthors" id="hideRecentAuthors" />
62
+ <label for="hideRecentAuthors"></label>
63
+ </div> &nbsp;
64
+ <span data-target="hideRecentAuthors" style="display: inline-block;"><?php _e('Hide "Recent Comment Authors" section', 'wpdiscuz'); ?></span>
65
+ </div>
66
+ <div style="clear: both;"></div>
67
+ </fieldset>
68
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#components" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
69
+ </td>
70
+ </tr>
71
+ <tr valign="top">
72
+ <th scope="row">
73
+ <label for="storeCommenterData"><?php _e('Keep guest commenter credentials in browser cookies for x days', 'wpdiscuz'); ?></label>
74
+ <p class="wpd-desc">
75
+ <?php _e('wpDiscuz uses WordPress function to keep guest Name, Email and Website information in cookies to fill according fields of comment form on next commenting time.', 'wpdiscuz'); ?><br />
76
+ <?php _e('Set this option value -1 to make it unlimited.', 'wpdiscuz'); ?><br />
77
+ <?php _e('Set this option value 0 to clear those data when user closes browser.', 'wpdiscuz'); ?>
78
+ </p>
79
+ </th>
80
+ <td>
81
+ <input type="number" value="<?php echo isset($this->optionsSerialized->storeCommenterData) ? $this->optionsSerialized->storeCommenterData : -1; ?>" name="storeCommenterData" id="storeCommenterData" style="width:100px;" />
82
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#guest_commenter_credentials" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
83
+ </td>
84
+ </tr>
85
+ <tr valign="top">
86
+ <th scope="row">
87
+ <label><?php _e('Comment author name length (for guests only)', 'wpdiscuz'); ?></label>
88
+ </th>
89
+ <td>
90
+ <span for="commenterNameMinLength">
91
+ <?php _e('Min', 'wpdiscuz'); ?>: <input type="number" value="<?php echo $this->optionsSerialized->commenterNameMinLength; ?>" name="commenterNameMinLength" id="commenterNameMinLength" style="width:70px;" />
92
+ </span>
93
+ <span for="commenterNameMaxLength">
94
+ &nbsp; <?php _e('Max', 'wpdiscuz'); ?>: <input type="number" value="<?php echo $this->optionsSerialized->commenterNameMaxLength; ?>" name="commenterNameMaxLength" id="commenterNameMaxLength" style="width:70px;" />
95
+ </span>
96
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#comment_author_name_length" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
97
+ </td>
98
+ </tr>
99
+ <tr valign="top">
100
+ <th scope="row">
101
+ <label><?php _e('Comment text length', 'wpdiscuz'); ?></label>
102
+ <p class="wpd-desc"><?php _e('Allows to set minimum and maximum number of chars can be inserted in comment textarea. Leave the max value empty to remove the limit.', 'wpdiscuz'); ?></p>
103
+ </th>
104
+ <td>
105
+ <span for="wc_comment_text_min_length">
106
+ <?php _e('Min', 'wpdiscuz'); ?>: <input type="number" value="<?php echo isset($this->optionsSerialized->commentTextMinLength) ? $this->optionsSerialized->commentTextMinLength : 10; ?>" name="wc_comment_text_min_length" id="wc_comment_text_min_length" style="width:70px;" />
107
+ </span>
108
+ <span for="wc_comment_text_max_length">
109
+ &nbsp; <?php _e('Max', 'wpdiscuz'); ?>: <input type="number" value="<?php echo isset($this->optionsSerialized->commentTextMaxLength) ? $this->optionsSerialized->commentTextMaxLength : ''; ?>" name="wc_comment_text_max_length" id="wc_comment_text_max_length" style="width:70px;" />
110
+ </span>
111
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#comment_text_length" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
112
+ </td>
113
+ </tr>
114
+ <tr valign="top">
115
+ <th scope="row">
116
+ <label><?php _e('Captcha generation type', 'wpdiscuz'); ?></label>
117
+ </th>
118
+ <th>
119
+ <?php $isCaptchaInSession = isset($this->optionsSerialized->isCaptchaInSession) ? $this->optionsSerialized->isCaptchaInSession : 0; ?>
120
+ <div class="wpd-switch-field">
121
+ <input type="radio" value="0" <?php checked('0' == $isCaptchaInSession); ?> name="isCaptchaInSession" id="captchaByImageFile" /><label for="captchaByImageFile"><?php _e('File system', 'wpdiscuz') ?></label> &nbsp;
122
+ <input type="radio" value="1" <?php checked('1' == $isCaptchaInSession); ?> name="isCaptchaInSession" id="captchaInSession" /><label for="captchaInSession"><?php _e('WP Session', 'wpdiscuz') ?></label>
123
+ </div>
124
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#captcha_generation_type" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
125
+ </th>
126
+ </tr>
127
+ <tr valign="top">
128
+ <th scope="row">
129
+ <label for="antispamKey"><?php _e('Invisible Spam Protection', 'wpdiscuz'); ?></label>
130
+ <p class="wpd-desc">
131
+ <?php _e('You should purge caches after each key generation otherwise the plugin may work not correctly', 'wpdiscuz'); ?>
132
+ </p>
133
+ <p class="wpd-desc">
134
+ <?php _e('Leave the field empty if you don\'t want to use this feature', 'wpdiscuz'); ?>
135
+ </p>
136
+ </th>
137
+ <th>
138
+ <input type="text" value="<?php echo $this->optionsSerialized->antispamKey ?>" name="antispamKey" id="antispamKey" style="padding: 3px 5px;" size="35"/>
139
+ <button type="button" id="generateAntispamKey" class="button button-secondary"><?php _e('Generate', 'wpdiscuz') ?></button>
140
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#invisible_spam_protection" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
141
+ </th>
142
+ </tr>
143
+ <tr valign="top">
144
+ <th scope="row" style="width:55%;">
145
+ <label for="displayAntispamNote"><?php _e('Display note about Invisible Spam Protection', 'wpdiscuz'); ?></label>
146
+ <p class="wpd-desc"><?php _e('wpDiscuz has built-in invisible antispam protection based on server side and front-end unique key comparation. By default wpDiscuz display a small note in simple CAPTCHA area, saying the comment form is under antispam protection. The note text can be managed in Comments > Phrases > Form tab.', 'wpdiscuz'); ?></p>
147
+ </th>
148
+ <td>
149
+ <input type="checkbox" value="1" <?php checked($this->optionsSerialized->displayAntispamNote == 1) ?> name="displayAntispamNote" id="displayAntispamNote" />
150
+ <label for="displayAntispamNote"></label>
151
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#note_about_spam_protection" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
152
+ </td>
153
+ </tr>
154
+ <tr valign="top">
155
+ <th scope="row" style="width:55%;">
156
+ <label for="wc_quick_tags"><?php _e('Enable Quicktags', 'wpdiscuz'); ?></label>
157
+ <p class="wpd-desc"><?php _e('Quicktag is a on-click button that inserts HTML in to comment textarea. For example the "b" Quicktag will insert the HTML bold tags < b > < /b >.', 'wpdiscuz'); ?></p>
158
+ </th>
159
+ <td>
160
+ <input type="checkbox" <?php checked($this->optionsSerialized->isQuickTagsEnabled == 1) ?> value="1" name="wc_quick_tags" id="wc_quick_tags" />
161
+ <label for="wc_quick_tags"></label>
162
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#quicktags" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
163
+ </td>
164
+ </tr>
165
+ <tr valign="top">
166
+ <th scope="row">
167
+ <label for="enableImageConversion"><?php _e('Enable automatic image URL to image HTML conversion', 'wpdiscuz'); ?></label>
168
+ </th>
169
+ <td>
170
+ <input type="checkbox" <?php checked($this->optionsSerialized->enableImageConversion == 1) ?> value="1" name="enableImageConversion" id="enableImageConversion" />
171
+ <label for="enableImageConversion"></label>
172
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#image-embed" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
173
+ </td>
174
+ </tr>
175
+ <tr valign="top">
176
+ <th scope="row">
177
+ <label><?php _e('Edit Button - Allow comment editing for', 'wpdiscuz'); ?></label>
178
+ </th>
179
+ <td>
180
+ <select id="wc_comment_editable_time" name="wc_comment_editable_time">
181
+ <?php $wc_comment_editable_time = isset($this->optionsSerialized->commentEditableTime) ? $this->optionsSerialized->commentEditableTime : 0; ?>
182
+ <option value="0" <?php selected($wc_comment_editable_time, '0'); ?>><?php _e('Do not allow', 'wpdiscuz'); ?></option>
183
+ <option value="900" <?php selected($wc_comment_editable_time, '900'); ?>>15 <?php _e('Minutes', 'wpdiscuz'); ?></option>
184
+ <option value="1800" <?php selected($wc_comment_editable_time, '1800'); ?>>30 <?php _e('Minutes', 'wpdiscuz'); ?></option>
185
+ <option value="3600" <?php selected($wc_comment_editable_time, '3600'); ?>>1 <?php _e('Hour', 'wpdiscuz'); ?></option>
186
+ <option value="10800" <?php selected($wc_comment_editable_time, '10800'); ?>>3 <?php _e('Hours', 'wpdiscuz'); ?></option>
187
+ <option value="86400" <?php selected($wc_comment_editable_time, '86400'); ?>>24 <?php _e('Hours', 'wpdiscuz'); ?></option>
188
+ <option value="unlimit" <?php selected($wc_comment_editable_time, 'unlimit'); ?>><?php _e('Unlimit', 'wpdiscuz'); ?></option>
189
+ </select>
190
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#allow_editing" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
191
+ </td>
192
+ </tr>
193
+ <tr valign="top">
194
+ <th scope="row" style="width: 50%;">
195
+ <label for="enableStickButton"><?php _e('Stick Button - Stick a comment thread', 'wpdiscuz'); ?></label>
196
+ </th>
197
+ <td>
198
+ <input type="checkbox" <?php checked($this->optionsSerialized->enableStickButton == 1) ?> value="1" name="enableStickButton" id="enableStickButton" />
199
+ <label for="enableStickButton"></label>
200
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#stick_comment" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
201
+ </td>
202
+ </tr>
203
+ <tr valign="top">
204
+ <th scope="row" style="width: 50%;">
205
+ <label for="enableCloseButton"><?php _e('Close Button - Close a comment thread', 'wpdiscuz'); ?></label>
206
+ </th>
207
+ <td>
208
+ <input type="checkbox" <?php checked($this->optionsSerialized->enableCloseButton == 1) ?> value="1" name="enableCloseButton" id="enableCloseButton" />
209
+ <label for="enableCloseButton"></label>
210
+ <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-form/#close_comment" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
211
+ </td>
212
+ </tr>
213
  <tr valign="top">
214
  <th scope="row">
215
  <label for="enableDropAnimation"><?php _e('Enable drop animation for comment form and subscription bar', 'wpdiscuz'); ?></label>
options/options-layouts/settings-general.php CHANGED
@@ -25,6 +25,16 @@ if (!defined('ABSPATH')) {
25
  <input type="checkbox" <?php checked($this->optionsSerialized->isNativeAjaxEnabled == 1) ?> value="1" name="isNativeAjaxEnabled" id="isNativeAjaxEnabled" /><label for="isNativeAjaxEnabled"></label>
26
  <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/general-settings/#use_wordpress_native_ajax" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
27
  </td>
 
 
 
 
 
 
 
 
 
 
28
  </tr>
29
  <tr valign="top">
30
  <th scope="row">
@@ -38,32 +48,32 @@ if (!defined('ABSPATH')) {
38
  <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/general-settings/#guest_email_to_detect_account" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
39
  </td>
40
  </tr>
41
- <?php if(is_ssl()){?>
42
- <tr valign="top">
43
- <th scope="row"><?php _e('Secure comment content in HTTPS protocol.', 'wpdiscuz'); ?>
44
- <p class="wpd-desc">
45
- <?php _e('This option detects images and other contents with non-https source URLs and fix according to your selected logic.', 'wpdiscuz'); ?>
46
- </p>
47
- </th>
48
- <th>
49
- <fieldset class="commentLinkFilter">
50
- <?php $commentLinkFilter = isset($this->optionsSerialized->commentLinkFilter) ? $this->optionsSerialized->commentLinkFilter : 1; ?>
51
- <label>
52
- <input type="radio" value="1" <?php checked('1' == $commentLinkFilter); ?> name="commentLinkFilter" id="http-to-link" />
53
- <span style="display: inline;"><?php _e('Replace non-https content to simple link URLs', 'wpdiscuz') ?></span>
54
- </label> &nbsp;<br/>
55
- <label>
56
- <input type="radio" value="2" <?php checked('2' == $commentLinkFilter); ?> name="commentLinkFilter" id="http-to-https" />
57
- <span style="display: inline;"><?php _e('Just replace http protocols to https (https may not be supported by content provider)', 'wpdiscuz') ?></span>
58
- </label><br>
59
- <label>
60
- <input type="radio" value="3" <?php checked('3' == $commentLinkFilter); ?> name="commentLinkFilter" id="ignore-https" />
61
- <span style="display: inline;"><?php _e('Ignore non-https content', 'wpdiscuz') ?></span>
62
- </label><br>
63
- </fieldset>
64
- </td>
65
- </tr>
66
- <?php }?>
67
  <tr valign="top">
68
  <th scope="row">
69
  <label><?php _e('Redirect first commenter to', 'wpdiscuz'); ?></label>
@@ -116,7 +126,7 @@ if (!defined('ABSPATH')) {
116
  <input type="checkbox" <?php checked($this->optionsSerialized->showPluginPoweredByLink == 1) ?> value="1" name="wc_show_plugin_powerid_by" id="wc_show_plugin_powerid_by" />
117
  <span id="wpdiscuz_thank_you" style="color:#006600; font-size:13px;"> &nbsp;<?php _e('Thank you!', 'wpdiscuz'); ?></span>
118
  </label>
119
- </td>
120
  </tr>
121
  </tbody>
122
  </table>
25
  <input type="checkbox" <?php checked($this->optionsSerialized->isNativeAjaxEnabled == 1) ?> value="1" name="isNativeAjaxEnabled" id="isNativeAjaxEnabled" /><label for="isNativeAjaxEnabled"></label>
26
  <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/general-settings/#use_wordpress_native_ajax" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
27
  </td>
28
+ </tr>
29
+ <tr valign="top">
30
+ <th scope="row">
31
+ <label for="isLoadScriptsInFooter"><?php _e('Load scripts in footer', 'wpdiscuz'); ?> </label>
32
+ </th>
33
+ <td>
34
+ <div class="wpd-switch-field">
35
+ <input type="checkbox" <?php checked($this->optionsSerialized->isLoadScriptsInFooter == 1) ?> value="1" name="isLoadScriptsInFooter" id="isLoadScriptsInFooter" /><label for="isLoadScriptsInFooter"></label>
36
+ </div>
37
+ </td>
38
  </tr>
39
  <tr valign="top">
40
  <th scope="row">
48
  <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/general-settings/#guest_email_to_detect_account" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
49
  </td>
50
  </tr>
51
+ <?php if (is_ssl()) { ?>
52
+ <tr valign="top">
53
+ <th scope="row"><?php _e('Secure comment content in HTTPS protocol.', 'wpdiscuz'); ?>
54
+ <p class="wpd-desc">
55
+ <?php _e('This option detects images and other contents with non-https source URLs and fix according to your selected logic.', 'wpdiscuz'); ?>
56
+ </p>
57
+ </th>
58
+ <th>
59
+ <fieldset class="commentLinkFilter">
60
+ <?php $commentLinkFilter = isset($this->optionsSerialized->commentLinkFilter) ? $this->optionsSerialized->commentLinkFilter : 1; ?>
61
+ <label>
62
+ <input type="radio" value="1" <?php checked('1' == $commentLinkFilter); ?> name="commentLinkFilter" id="http-to-link" />
63
+ <span style="display: inline;"><?php _e('Replace non-https content to simple link URLs', 'wpdiscuz') ?></span>
64
+ </label> &nbsp;<br/>
65
+ <label>
66
+ <input type="radio" value="2" <?php checked('2' == $commentLinkFilter); ?> name="commentLinkFilter" id="http-to-https" />
67
+ <span style="display: inline;"><?php _e('Just replace http protocols to https (https may not be supported by content provider)', 'wpdiscuz') ?></span>
68
+ </label><br>
69
+ <label>
70
+ <input type="radio" value="3" <?php checked('3' == $commentLinkFilter); ?> name="commentLinkFilter" id="ignore-https" />
71
+ <span style="display: inline;"><?php _e('Ignore non-https content', 'wpdiscuz') ?></span>
72
+ </label><br>
73
+ </fieldset>
74
+ </td>
75
+ </tr>
76
+ <?php } ?>
77
  <tr valign="top">
78
  <th scope="row">
79
  <label><?php _e('Redirect first commenter to', 'wpdiscuz'); ?></label>
126
  <input type="checkbox" <?php checked($this->optionsSerialized->showPluginPoweredByLink == 1) ?> value="1" name="wc_show_plugin_powerid_by" id="wc_show_plugin_powerid_by" />
127
  <span id="wpdiscuz_thank_you" style="color:#006600; font-size:13px;"> &nbsp;<?php _e('Thank you!', 'wpdiscuz'); ?></span>
128
  </label>
129
+ </td>
130
  </tr>
131
  </tbody>
132
  </table>
options/options-layouts/settings-list.php CHANGED
@@ -188,6 +188,15 @@ if (!defined('ABSPATH')) {
188
  <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-list-settings/#disable_profiles_URL" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
189
  </td>
190
  </tr>
 
 
 
 
 
 
 
 
 
191
 
192
  </tbody>
193
  </table>
188
  <a href="https://wpdiscuz.com/docs/wpdiscuz-documentation/settings/comment-list-settings/#disable_profiles_URL" title="<?php _e('Read the documentation', 'wpdiscuz') ?>" target="_blank"><i class="far fa-question-circle"></i></a>
189
  </td>
190
  </tr>
191
+ <tr valign="top">
192
+ <th scope="row">
193
+ <label for="enableLastVisitCookie"><?php _e('Highlight Unread Comments', 'wpdiscuz'); ?></label>
194
+ </th>
195
+ <td>
196
+ <input type="checkbox" <?php checked($this->optionsSerialized->enableLastVisitCookie == 1) ?> value="1" name="enableLastVisitCookie" id="enableLastVisitCookie" />
197
+ <label for="enableLastVisitCookie"></label>
198
+ </td>
199
+ </tr>
200
 
201
  </tbody>
202
  </table>
options/phrases-layouts/phrases-comment.php CHANGED
@@ -57,7 +57,7 @@ if (!defined('ABSPATH')) {
57
  } elseif ($roleName == 'post_author') {
58
  $roleTitle = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Author', 'wpdiscuz');
59
  } elseif ($roleName == 'editor') {
60
- $roleTitle = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : ucfirst(str_replace('_', ' ', $roleName));
61
  } elseif ($roleName == 'guest') {
62
  $roleTitle = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Guest', 'wpdiscuz');
63
  } else {
57
  } elseif ($roleName == 'post_author') {
58
  $roleTitle = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Author', 'wpdiscuz');
59
  } elseif ($roleName == 'editor') {
60
+ $roleTitle = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Editor', 'wpdiscuz');
61
  } elseif ($roleName == 'guest') {
62
  $roleTitle = isset($this->optionsSerialized->phrases['wc_blog_role_' . $roleName]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $roleName] : __('Guest', 'wpdiscuz');
63
  } else {
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  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: 5.2.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
@@ -174,14 +174,24 @@ Nothing will be lost! **Comments - wpDiscuz** will show all old comments.
174
 
175
  == Changelog ==
176
 
177
- = Comments - wpDiscuz v5.2.2 =
178
-
179
- * Added: Asterisk in required fields placeholder
180
- * Added: Hide "Notify of new replies to this comment" button when email field is not required and not filled
181
- * Optimized: Avoiding CPU and Memory overloading on very busy websites
182
- * Fixed Bug: Child count of sticky comments when only parent comments are enabled to load
183
- * Fixed Bug: Comment position issue if there is a sticky
184
- * Fixed Bug: Reloading page after deleting comments
 
 
 
 
 
 
 
 
 
 
185
 
186
 
187
  IMPORTANT!
@@ -195,6 +205,16 @@ IMPORTANT!
195
  - If you use CDN and found some issue please purge it.
196
  - If your server PHP version is lower than 5.4, [please change it to higher](https://wordpress.org/support/topic/wpdiscuz-4-requires-php-5-4-and-higher/)
197
 
 
 
 
 
 
 
 
 
 
 
198
  = Comments - wpDiscuz v5.2.0 / v5.2.1 =
199
 
200
  * Fixed Bug: Comment replies not displaying
2
  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: 5.0
6
+ Stable tag: 5.3.0
7
  Requires PHP: 5.4 and higher
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
174
 
175
  == Changelog ==
176
 
177
+ = Comments - wpDiscuz v5.3.0 =
178
+
179
+ * Boosted: Another large change in core to make it twice faster than before. Finally wpDiscuz becomes many times faster than the native WordPress comment system.
180
+ * Adapted: Performs dozens and hundreds of thousands comments with ten levels of nesting without any issue.
181
+ * Added: New post_id attribute for [wpdrating] shortcode
182
+ * Added: Invisible antispam protection on subscribe form
183
+ * Added: Option to disable cookies collected for last visit information
184
+ * Added: Classes on custom field parent elements for CSS devs
185
+ * Added: Option to load scripts in footer
186
+ * Changed: Pagination issues
187
+ * Changed: Copy comment url to clipboard
188
+ * Changed: code optimization
189
+ * Changed: Display custom fields in admin comments list even if display on comment option is disabled
190
+ * Fixed Bug: Invisible antispam protection key issue
191
+ * Fixed Bug: Get single comment issue when parent is trashed
192
+ * Fixed Bug: Twitter link issue after editing comment
193
+ * Fixed Bug: Issue on editing more than 1 comment
194
+ * Fixed Bug: Agreement checkbox on subscribe form is by default unchecked now
195
 
196
 
197
  IMPORTANT!
205
  - If you use CDN and found some issue please purge it.
206
  - If your server PHP version is lower than 5.4, [please change it to higher](https://wordpress.org/support/topic/wpdiscuz-4-requires-php-5-4-and-higher/)
207
 
208
+ = Comments - wpDiscuz v5.2.2 =
209
+
210
+ * Added: Asterisk in required fields placeholder
211
+ * Added: Hide "Notify of new replies to this comment" button when email field is not required and not filled
212
+ * Optimized: Avoiding CPU and Memory overloading on very busy websites
213
+ * Fixed Bug: Child count of sticky comments when only parent comments are enabled to load
214
+ * Fixed Bug: Comment position issue if there is a sticky
215
+ * Fixed Bug: Reloading page after deleting comments
216
+
217
+
218
  = Comments - wpDiscuz v5.2.0 / v5.2.1 =
219
 
220
  * Fixed Bug: Comment replies not displaying
templates/comment/class.WpdiscuzWalker.php CHANGED
@@ -3,20 +3,16 @@
3
  /** COMMENTS WALKER */
4
  class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
5
 
6
- public $tree_type = 'comment';
7
- public $db_fields = array('parent' => 'comment_parent', 'id' => 'comment_ID');
8
  private $helper;
9
  private $helperOptimization;
10
  private $dbManager;
11
  private $optionsSerialized;
12
- private $users;
13
 
14
  public function __construct($helper, $helperOptimization, $dbManager, $optionsSerialized) {
15
  $this->helper = $helper;
16
  $this->helperOptimization = $helperOptimization;
17
  $this->dbManager = $dbManager;
18
  $this->optionsSerialized = $optionsSerialized;
19
- $this->users = array();
20
  }
21
 
22
  /** START_EL */
@@ -25,40 +21,44 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
25
  $GLOBALS['comment_depth'] = $depth;
26
  $GLOBALS['comment'] = $comment;
27
  // BEGIN
28
- $currentUser = $args['current_user'];
29
  $depth = isset($args['addComment']) ? $args['addComment'] : $depth;
30
  $uniqueId = $comment->comment_ID . '_' . $comment->comment_parent;
31
- $commentContent = $comment->comment_content;
32
- $commentWrapperClass = array();
33
- $isSticky = $comment->comment_type == self::WPDISCUZ_STICKY_COMMENT;
34
  $isClosed = $comment->comment_karma;
35
- if ($isSticky) {
 
36
  $commentWrapperClass[] = 'wc-sticky-comment';
 
 
 
 
37
  }
38
 
39
  if ($isClosed) {
40
  $commentWrapperClass[] = 'wc-closed-comment';
 
 
 
 
41
  }
42
 
43
- $commentContent = apply_filters('wpdiscuz_before_comment_text', $commentContent, $comment);
44
  if ($this->optionsSerialized->enableImageConversion) {
45
- $commentContent = $this->helper->makeClickable($commentContent);
46
  }
47
 
48
- $commentContent = apply_filters('comment_text', $commentContent, $comment, $args);
49
  $commentReadMoreLimit = $this->optionsSerialized->commentReadMoreLimit;
50
- if (strstr($commentContent, '[/spoiler]')) {
51
  $commentReadMoreLimit = 0;
52
- $commentContent = $this->helper->spoiler($commentContent);
53
  }
54
- if ($commentReadMoreLimit && count(explode(' ', strip_tags($commentContent))) > $commentReadMoreLimit) {
55
- $commentContent = $this->helper->getCommentExcerpt($commentContent, $uniqueId);
56
  }
57
- $commentContent .= $comment->comment_approved == 0 ? '<p class="wc_held_for_moderate">' . $this->optionsSerialized->phrases['wc_held_for_moderate'] . '</p>' : '';
58
 
59
- if ($this->optionsSerialized->wordpressIsPaginate && $comment->comment_parent) {
60
- $rootComment = $this->helperOptimization->getCommentRoot($comment->comment_parent);
61
- }
62
  if (isset($args['new_loaded_class'])) {
63
  $commentWrapperClass[] = $args['new_loaded_class'];
64
  if ($args['isSingle']) {
@@ -68,251 +68,198 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
68
  }
69
  }
70
 
71
- if (!$this->optionsSerialized->wordpressIsPaginate && isset($args[self::COOKIE_LAST_VISIT])) {
72
- $blogId = WpdiscuzCore::$CURRENT_BLOG_ID;
73
- $lastVisit = json_decode(stripslashes($args[self::COOKIE_LAST_VISIT]), true);
74
- $lastVisitForPost = isset($lastVisit[$blogId][$comment->comment_post_ID]) ? $lastVisit[$blogId][$comment->comment_post_ID] : 0;
75
- if (isset($args['comment_author_email'])) {
76
- $storedCookieEmail = $args['comment_author_email'];
77
- } else {
78
- $storedCookieEmail = isset($_COOKIE['comment_author_email_' . COOKIEHASH]) ? $_COOKIE['comment_author_email_' . COOKIEHASH] : '';
79
- }
80
-
81
- $commentTime = strtotime($comment->comment_date);
82
- if ($lastVisitForPost && $commentTime > $lastVisitForPost && $storedCookieEmail != $comment->comment_author_email) {
83
  $commentWrapperClass[] = 'wc-new-loaded-comment';
84
  }
85
  }
86
 
87
- $commentAuthorUrl = ('http://' == $comment->comment_author_url) ? '' : $comment->comment_author_url;
88
- $commentAuthorUrl = esc_url($commentAuthorUrl, array('http', 'https'));
89
- $commentAuthorUrl = apply_filters('get_comment_author_url', $commentAuthorUrl, $comment->comment_ID, $comment);
90
-
91
  $userKey = $comment->user_id . '_' . $comment->comment_author_email;
92
- if (isset($this->users[$userKey])) {
93
- $user = $this->users[$userKey];
94
  } else {
95
- if ($this->optionsSerialized->isUserByEmail) {
96
- $user = get_user_by('email', $comment->comment_author_email);
97
- } else {
98
- $user = $comment->user_id ? get_user_by('id', $comment->user_id) : '';
 
 
99
  }
100
- $this->users[$userKey] = $user;
101
- }
102
-
103
- if ($user) {
104
- $authorName = $user->display_name ? $user->display_name : $comment->comment_author;
105
- $authorAvatarField = $user->ID;
106
- $gravatarUserId = $user->ID;
107
- $gravatarUserEmail = $user->user_email;
108
- $profileUrl = in_array($user->ID, $args['posts_authors']) ? get_author_posts_url($user->ID) : '';
109
- $commentAuthorUrl = $commentAuthorUrl ? $commentAuthorUrl : $user->user_url;
110
- if ($user->ID == $args['post_author']) {
111
- $authorClass = 'wc-blog-user wc-blog-post_author';
112
- $author_title = $this->optionsSerialized->phrases['wc_blog_role_post_author'];
113
- } else {
114
- $authorClass = 'wc-blog-guest';
115
- $author_title = $this->optionsSerialized->phrases['wc_blog_role_guest'];
116
- $blogRoles = $this->optionsSerialized->blogRoles;
117
- if ($blogRoles) {
118
- if ($user->roles && is_array($user->roles)) {
119
- foreach ($user->roles as $role) {
120
- if (array_key_exists($role, $blogRoles)) {
121
- $authorClass = 'wc-blog-user wc-blog-' . $role;
122
- $rolePhrase = isset($this->optionsSerialized->phrases['wc_blog_role_' . $role]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $role] : '';
123
- $author_title = apply_filters('wpdiscuz_user_label', $rolePhrase, $user);
124
- break;
125
  }
126
  }
127
  }
128
  }
 
 
 
 
 
 
 
 
129
  }
130
- } else {
131
- $authorName = $comment->comment_author ? $comment->comment_author : $this->optionsSerialized->phrases['wc_anonymous'];
132
- $authorAvatarField = $comment->comment_author_email;
133
- $gravatarUserId = 0;
134
- $gravatarUserEmail = $comment->comment_author_email;
135
- $profileUrl = '';
136
- $authorClass = 'wc-blog-guest';
137
- $author_title = $this->optionsSerialized->phrases['wc_blog_role_guest'];
138
- }
139
-
140
- $replyText = $this->optionsSerialized->phrases['wc_reply_text'];
141
- $shareText = $this->optionsSerialized->phrases['wc_share_text'];
142
- if (isset($rootComment) && $rootComment->comment_approved != 1) {
143
- $commentWrapperClass[] = 'wc-comment';
144
- } else {
145
- $commentWrapperClass[] = ($comment->comment_parent && $this->optionsSerialized->wordpressThreadComments) ? 'wc-comment wc-reply' : 'wc-comment';
146
- }
147
-
148
- $authorName = apply_filters('wpdiscuz_comment_author', $authorName, $comment);
149
- $profileUrl = apply_filters('wpdiscuz_profile_url', $profileUrl, $user);
150
- $authorAvatarField = apply_filters('wpdiscuz_author_avatar_field', $authorAvatarField, $comment, $user, $profileUrl);
151
-
152
- $gravatarSize = apply_filters('wpdiscuz_gravatar_size', 64);
153
- $gravatarArgs = array(
154
- 'wpdiscuz_gravatar_field' => $authorAvatarField,
155
- 'wpdiscuz_gravatar_size' => $gravatarSize,
156
- 'wpdiscuz_gravatar_user_id' => $gravatarUserId,
157
- 'wpdiscuz_gravatar_user_email' => $gravatarUserEmail,
158
- 'wpdiscuz_current_user' => $user,
159
- );
160
-
161
- $trackOrPingback = $comment->comment_type == 'pingback' || $comment->comment_type == 'trackback';
162
- if ($this->optionsSerialized->wordpressShowAvatars) {
163
- $hideAvatarStyle = '';
164
- $authorAvatar = $trackOrPingback ? '<img class="avatar avatar-' . $gravatarSize . ' photo" width="' . $gravatarSize . '" height="' . $gravatarSize . '" src="' . $args['avatar_trackback'] . '" alt="trackback">' : get_avatar($authorAvatarField, $gravatarSize, '', $authorName, $gravatarArgs);
165
- } else {
166
- $authorAvatar = '';
167
- $hideAvatarStyle = $args['is_rtl'] ? 'style="margin-right:0;"' : 'style="margin-left:0;"';
168
- }
169
-
170
- $commentAuthorAvatar = $authorAvatar;
171
- if (!$this->optionsSerialized->disableProfileURLs) {
172
- if ($profileUrl) {
173
- $attributes = apply_filters('wpdiscuz_avatar_link_attributes', array('href' => $profileUrl, 'target' => '_blank'));
174
- if ($attributes && is_array($attributes)) {
175
- $attributesHtml = "";
176
- foreach ($attributes as $attribute => $value) {
177
- $attributesHtml .= "$attribute='{$value}' ";
178
- }
179
- $attributesHtml = trim($attributesHtml);
180
- $commentAuthorAvatar = "<a $attributesHtml>$authorAvatar</a>";
181
- } else {
182
- $commentAuthorAvatar = "<a href='$profileUrl' target='_blank'>$authorAvatar</a>";
183
- }
184
  }
185
-
186
- if ($commentAuthorUrl) {
187
- $attributes = apply_filters('wpdiscuz_author_link_attributes', array('href' => $commentAuthorUrl, 'rel' => 'nofollow', 'target' => '_blank'));
188
- if ($attributes && is_array($attributes)) {
189
- $attributesHtml = "";
190
- foreach ($attributes as $attribute => $value) {
191
- $attributesHtml .= "$attribute='{$value}' ";
 
 
 
 
 
192
  }
193
- $attributesHtml = trim($attributesHtml);
194
- $authorName = "<a $attributesHtml>$authorName</a>";
195
- } else {
196
- $authorName = "<a rel='nofollow' href='$commentAuthorUrl' target='_blank'>$authorName</a>";
197
  }
198
- } else if ($profileUrl) {
199
- $attributes = apply_filters('wpdiscuz_author_link_attributes', array('href' => $profileUrl, 'rel' => 'nofollow', 'target' => '_blank'));
200
 
201
- if ($attributes && is_array($attributes)) {
202
- $attributesHtml = "";
203
- foreach ($attributes as $attribute => $value) {
204
- $attributesHtml .= "$attribute='{$value}' ";
 
 
 
 
 
 
 
205
  }
206
- $attributesHtml = trim($attributesHtml);
207
- $authorName = "<a $attributesHtml>$authorName</a>";
208
- } else {
209
- $authorName = "<a rel='nofollow' href='$profileUrl' target='_blank'>$authorName</a>";
210
  }
211
  }
 
212
  }
213
 
214
- if (!$this->optionsSerialized->isGuestCanVote && !$currentUser->ID) {
215
- $voteClass = '';
216
- $voteTitleText = $this->optionsSerialized->phrases['wc_login_to_vote'];
217
- $voteUp = $voteTitleText;
218
- $voteDown = $voteTitleText;
219
- } else {
220
- $voteClass = ' wc_vote wc_not_clicked';
221
- $voteUp = $this->optionsSerialized->phrases['wc_vote_up'];
222
- $voteDown = $this->optionsSerialized->phrases['wc_vote_down'];
223
  }
224
 
225
- $commentWrapperClass[] = $authorClass;
 
 
226
  $commentWrapperClass[] = 'wc_comment_level-' . $depth;
227
  $commentWrapperClass = apply_filters('wpdiscuz_comment_wrap_classes', $commentWrapperClass, $comment);
228
  $wrapperClass = implode(' ', $commentWrapperClass);
229
 
230
- $commentContentClass = '';
231
  // begin printing comment template
232
- $output .= '<div id="wc-comm-' . $uniqueId . '" class="' . $wrapperClass . '">';
233
  if ($this->optionsSerialized->wordpressShowAvatars) {
 
 
 
 
234
  $commentLeftClass = apply_filters('wpdiscuz_comment_left_class', '');
235
- $output .= '<div class="wc-comment-left ' . $commentLeftClass . '"><div class="wpd-xborder"></div>' . $commentAuthorAvatar;
236
  if (!$this->optionsSerialized->authorTitlesShowHide && !$trackOrPingback) {
237
- $author_title = apply_filters('wpdiscuz_author_title', $author_title, $comment);
238
- $output .= '<div class="' . $authorClass . ' wc-comment-label">' . '<span>' . $author_title . '</span>' . '</div>';
239
  }
240
- $afterLabelHtml = apply_filters('wpdiscuz_after_label', $afterLabelHtml = '', $comment);
241
- $output .= $afterLabelHtml;
242
- $output .= '</div>';
 
 
243
  }
244
 
245
- $commentLink = get_comment_link($comment);
246
- $output .= '<div id="comment-' . $comment->comment_ID . '" class="wc-comment-right ' . $commentContentClass . '" ' . $hideAvatarStyle . '>';
247
- $output .= '<div class="wc-comment-header">';
248
  $uNameClasses = apply_filters('wpdiscuz_username_classes', '');
249
- $afterCommentAuthorName = apply_filters('wpdiscuz_after_comment_author', '', $comment, $user);
250
 
251
- $output .= '<div class="wc-comment-author ' . $uNameClasses . '">' . $authorName . $afterCommentAuthorName . '</div>';
252
- if ($this->optionsSerialized->isFollowActive && $args['is_user_logged_in'] && (isset($args['current_user_email'])) && $args['current_user_email'] && $args['current_user_email'] != $comment->comment_author_email) {
253
- if (isset($args['user_follows']) && is_array($args['user_follows']) && in_array($comment->comment_author_email, $args['user_follows'])) {
254
  $followClass = 'wc-unfollow wc-follow-active';
255
  $followTip = $this->optionsSerialized->phrases['wc_unfollow_user'];
256
  } else {
257
  $followClass = 'wc-follow';
258
  $followTip = $this->optionsSerialized->phrases['wc_follow_user'];
259
  }
260
- $output .= '<div class="wc-follow-link wpd-tooltip-right wc_not_clicked ' . $followClass . '">';
261
- $output .= '<i class="fas fa-rss" aria-hidden="true"></i>';
262
- $output .= '<wpdtip>' . $followTip . '</wpdtip>';
263
- $output .= '</div>';
264
- }
265
-
266
- $output .= '<div class="wc-comment-link">';
267
- if ($isSticky) {
268
- $output .= '<i class="fas fa-thumbtack wpd-sticky" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_sticky_comment_icon_title'] . '"></i>';
269
- }
270
-
271
- if ($isClosed) {
272
- $output .= '<i class="fas fa-lock wpd-closed" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_closed_comment_icon_title'] . '"></i>';
273
  }
274
 
275
- $output .= apply_filters('wpdiscuz_comment_type_icon', '', $comment, $user, $currentUser);
 
276
 
277
- if (isset($args['is_share_enabled']) && $args['is_share_enabled']) {
278
- $output .= '<div class="wc-share-link wpf-cta wpd-tooltip-right"><i class="fas fa-share-alt" aria-hidden="true" title="' . esc_attr($shareText) . '" ></i>';
279
- $commentLinkLength = strlen($commentLink);
280
- if ($commentLinkLength < 110) {
281
- $twitt_content = esc_attr(strip_tags($commentContent));
282
- $twitt_content = function_exists('mb_substr') ? mb_substr($twitt_content, 0, 135 - $commentLinkLength) . '... ' : substr($twitt_content, 0, 135 - $commentLinkLength) . '... ';
283
- } else {
284
- $twitt_content = '';
285
- }
286
- $postLink = get_permalink($comment->comment_post_ID);
287
- $twitt_content = urlencode($twitt_content);
288
- $twCommentLink = urlencode($commentLink);
289
- $output .= '<wpdtip>';
290
- $output .= ( $this->optionsSerialized->enableFbShare && $this->optionsSerialized->fbAppID) ? '<span class="wc_fb"><i class="fab fa-facebook-f wpf-cta" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_share_facebook'] . '"></i></span>' : '';
291
- $output .= $this->optionsSerialized->enableTwitterShare ? '<a class="wc_tw" target="_blank" href="https://twitter.com/intent/tweet?text=' . $twitt_content . '&url=' . $twCommentLink . '" title="' . $this->optionsSerialized->phrases['wc_share_twitter'] . '"><i class="fab fa-twitter wpf-cta" aria-hidden="true"></i></a>' : '';
292
- $output .= $this->optionsSerialized->enableGoogleShare ? '<a class="wc_go" target="_blank" href="https://plus.google.com/share?url=' . $postLink . '" title="' . $this->optionsSerialized->phrases['wc_share_google'] . '"><i class="fab fa-google wpf-cta" aria-hidden="true"></i></a>' : '';
293
- $output .= $this->optionsSerialized->enableVkShare ? '<a class="wc_vk" target="_blank" href="http://vk.com/share.php?url=' . $postLink . '" title="' . $this->optionsSerialized->phrases['wc_share_vk'] . '"><i class="fab fa-vk wpf-cta" aria-hidden="true"></i></a>' : '';
294
- $output .= $this->optionsSerialized->enableOkShare ? '<a class="wc_ok" target="_blank" href="http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl=' . $postLink . '" title=""><i class="fab fa-odnoklassniki wpf-cta" aria-hidden="true"></i></a>' : '';
295
- $output .= '</wpdtip></div>';
296
  }
297
 
298
- $output = apply_filters('wpdiscuz_before_comment_link', $output, $comment, $user, $currentUser);
299
 
300
  if (!$this->optionsSerialized->showHideCommentLink) {
301
- $commentLinkImg = '<span class="wc-comment-img-link-wrap"><i class="fas fa-link wc-comment-img-link wpf-cta" aria-hidden="true"/></i><span><input type="text" class="wc-comment-link-input" value="' . $commentLink . '" /></span></span>';
302
- $output .= apply_filters('wpdiscuz_comment_link_img', $commentLinkImg, $comment);
303
  }
304
 
305
- $output = apply_filters('wpdiscuz_after_comment_link', $output, $comment, $user, $currentUser);
306
 
307
- $output .= '</div>';
308
- $output .= '<div class="wpdiscuz_clear"></div>';
309
- $output .= '</div>';
310
 
311
- $output .= apply_filters('wpdiscuz_comment_text', '<div class="wc-comment-text">' . $commentContent . '</div>', $comment, $args);
312
- $output = apply_filters('wpdiscuz_after_comment_text', $output, $comment);
313
- $output .= '<div class="wc-comment-footer">';
314
- $output .= '<div class="wc-footer-left">';
315
  if (!$this->optionsSerialized->votingButtonsShowHide) {
 
 
 
 
 
 
 
 
 
 
 
316
  if ($this->optionsSerialized->votingButtonsStyle) {
317
  $votesArr = $this->dbManager->getVotes($comment->comment_ID);
318
  if ($votesArr && count($votesArr) == 1) {
@@ -322,90 +269,70 @@ class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
322
  $like = isset($votesArr[0]) ? intval($votesArr[0]) : 0;
323
  $dislike = isset($votesArr[1]) ? intval($votesArr[1]) : 0;
324
  }
325
- $output .= '<span class="wc-vote-link wc-up wc-separate ' . $voteClass . '">';
326
- $voteFaUpImg = '<i class="fas ' . $args['voting_icons']['like'] . ' wc-vote-img-up"></i><span>' . $voteUp . '</span>';
327
- $output .= apply_filters('wpdiscuz_vote_up_icon', $voteFaUpImg, $comment, $currentUser);
328
- $output .= '</span>';
329
- $output .= '<span class="wc-vote-result wc-vote-result-like' . (($like) ? ' wc-positive' : '') . '">' . $like . '</span>';
330
- $output .= '<span class="wc-vote-result wc-vote-result-dislike' . (($dislike) ? ' wc-negative' : '') . '">' . $dislike . '</span>';
331
- $output .= '<span class="wc-vote-link wc-down wc-separate' . $voteClass . '">';
332
- $voteFaDownImg = '<i class="fas ' . $args['voting_icons']['dislike'] . ' wc-vote-img-down"></i><span>' . $voteDown . '</span>';
333
- $output .= apply_filters('wpdiscuz_vote_down_icon', $voteFaDownImg, $comment, $currentUser);
334
- $output .= '</span>';
335
- $output = apply_filters('wpdiscuz_voters', $output, $uniqueId, $comment, $user, $currentUser);
336
  } else {
337
  $voteCount = get_comment_meta($comment->comment_ID, WpdiscuzCore::META_KEY_VOTES, true);
338
- $output = apply_filters('wpdiscuz_voters', $output, $uniqueId, $comment, $user, $currentUser);
339
- $output .= '<span class="wc-vote-link wc-up ' . $voteClass . '">';
340
- $voteFaUpImg = '<i class="fas ' . $args['voting_icons']['like'] . ' wc-vote-img-up"></i><span>' . $voteUp . '</span>';
341
- $output .= apply_filters('wpdiscuz_vote_up_icon', $voteFaUpImg, $comment, $currentUser);
342
- $output .= '</span>';
343
- $output .= '<span class="wc-vote-result">' . intval($voteCount) . '</span>';
344
- $output .= '<span class="wc-vote-link wc-down ' . $voteClass . '">';
345
- $voteFaDownImg = '<i class="fas ' . $args['voting_icons']['dislike'] . ' wc-vote-img-down"></i><span>' . $voteDown . '</span>';
346
- $output .= apply_filters('wpdiscuz_vote_down_icon', $voteFaDownImg, $comment, $currentUser);
347
- $output .= '</span>&nbsp;';
348
  }
349
  }
350
 
351
- if (!$isClosed && isset($args['comments_open']) && $args['comments_open'] &&
352
- $this->optionsSerialized->wordpressThreadComments &&
353
- ((isset($args['can_user_comment']) && $args['can_user_comment']) ||
354
- (isset($args['high_level_user']) && $args['high_level_user']))
355
- ) {
356
- $output .= '<span class="wc-reply-button wc-cta-button" title="' . $replyText . '">' . '<i class="far fa-comments" aria-hidden="true"></i> ' . $replyText . '</span>';
357
- }
358
-
359
 
360
- if (!$isClosed && ((isset($args['high_level_user']) && $args['high_level_user']) || ($this->helper->isCommentEditable($comment) && $this->helper->canUserEditComment($comment, $currentUser, $args)) )) {
361
- $output .= '<span class="wc_editable_comment wc-cta-button"><i class="fas fa-pencil-alt" aria-hidden="true"></i> ' . $this->optionsSerialized->phrases['wc_edit_text'] . '</span>';
362
- $output .= '<span class="wc_cancel_edit wc-cta-button-x"><i class="fas fa-ban" aria-hidden="true"></i> ' . $this->optionsSerialized->phrases['wc_comment_edit_cancel_button'] . '</span>';
 
363
  }
364
 
365
- $output = apply_filters('wpdiscuz_comment_buttons', $output, $comment, $user, $currentUser);
366
-
367
- if (!$comment->comment_parent &&
368
- ((isset($args['high_level_user']) && $args['high_level_user']) ||
369
- (isset($args['can_stick_or_close']) && $args['can_stick_or_close']))) {
370
- if ($this->optionsSerialized->enableStickButton) {
371
- $stickText = $isSticky ? $this->optionsSerialized->phrases['wc_unstick_comment'] : $this->optionsSerialized->phrases['wc_stick_comment'];
372
- $output .= '<span class="wc_stick_btn wc-cta-button"><i class="fas fa-thumbtack"></i><span class="wc_stick_text">' . $stickText . '</span></span>';
373
- }
374
- if ($this->optionsSerialized->enableCloseButton) {
375
- $closeText = $isClosed ? $this->optionsSerialized->phrases['wc_open_comment'] : $this->optionsSerialized->phrases['wc_close_comment'];
376
- $output .= '<span class="wc_close_btn wc-cta-button"><i class="far fa-comments"></i><span class="wc_close_text">' . $closeText . '</span></span>';
377
- }
378
  }
379
- $output .= '</div>';
380
- $output .= '<div class="wc-footer-right">';
381
 
382
  if (!$this->optionsSerialized->hideCommentDate) {
383
- $postedDate = $this->optionsSerialized->simpleCommentDate ? get_comment_date($this->optionsSerialized->wordpressDateFormat . ' ' . $this->optionsSerialized->wordpressTimeFormat, $comment->comment_ID) : $this->helper->dateDiff($comment->comment_date_gmt);
384
- $output .= '<div class="wc-comment-date"><i class="far fa-clock" aria-hidden="true"></i>' . $postedDate . '</div>';
385
  }
386
- if ($depth < $this->optionsSerialized->wordpressThreadCommentsDepth && $this->optionsSerialized->wordpressThreadComments) {
387
- $output .= '<div class="wc-toggle">';
388
  if (isset($args['wpdiscuz_child_count_' . $comment->comment_ID])) {
389
  $countChildren = $args['wpdiscuz_child_count_' . $comment->comment_ID];
390
  if ($countChildren) {
391
- $chevron = '<a href="#" title="' . $this->optionsSerialized->phrases['wc_show_replies_text'] . '">';
392
- $chevron .= '<span class="wcsep">|</span> <span class="wpdiscuz-children"><span class="wpdiscuz-children-button-text">' . $this->optionsSerialized->phrases['wc_show_replies_text'] . '</span> (<span class="wpdiscuz-children-count">' . $countChildren . '</span>)</span> ';
393
- $chevron .= '<i class="fas fa-chevron-down wpdiscuz-show-replies"></i>';
394
- $chevron .= '</a>';
395
  }
396
  } else {
397
- $chevron = $comment->get_children() ? '<i class="fas fa-chevron-up" title="' . $this->optionsSerialized->phrases['wc_hide_replies_text'] . '"></i>' : '';
398
  }
399
- $output .= $chevron;
400
- $output .= '</div>';
401
  }
402
- $output .= '</div>';
403
- $output .= '<div class="wpdiscuz_clear"></div>';
404
- $output .= '</div>';
405
- $output .= '</div>';
406
- $output .= '<div class="wpdiscuz-comment-message"></div>';
407
- $output .= '<div id="wpdiscuz_form_anchor-' . $uniqueId . '" style="clear:both"></div>';
408
- $output = apply_filters('wpdiscuz_comment_end', $output, $comment, $depth, $args);
409
  }
410
 
411
  public function end_el(&$output, $comment, $depth = 0, $args = array()) {
3
  /** COMMENTS WALKER */
4
  class WpdiscuzWalker extends Walker_Comment implements WpDiscuzConstants {
5
 
 
 
6
  private $helper;
7
  private $helperOptimization;
8
  private $dbManager;
9
  private $optionsSerialized;
 
10
 
11
  public function __construct($helper, $helperOptimization, $dbManager, $optionsSerialized) {
12
  $this->helper = $helper;
13
  $this->helperOptimization = $helperOptimization;
14
  $this->dbManager = $dbManager;
15
  $this->optionsSerialized = $optionsSerialized;
 
16
  }
17
 
18
  /** START_EL */
21
  $GLOBALS['comment_depth'] = $depth;
22
  $GLOBALS['comment'] = $comment;
23
  // BEGIN
24
+ $commentOutput = '';
25
  $depth = isset($args['addComment']) ? $args['addComment'] : $depth;
26
  $uniqueId = $comment->comment_ID . '_' . $comment->comment_parent;
27
+ $commentWrapperClass = array('wc-comment');
 
 
28
  $isClosed = $comment->comment_karma;
29
+ $commentIcons = '';
30
+ if ($comment->comment_type == self::WPDISCUZ_STICKY_COMMENT) {
31
  $commentWrapperClass[] = 'wc-sticky-comment';
32
+ $commentIcons .= '<i class="fas fa-thumbtack wpd-sticky" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_sticky_comment_icon_title'] . '"></i>';
33
+ $stickText = $this->optionsSerialized->phrases['wc_unstick_comment'];
34
+ } else {
35
+ $stickText = $this->optionsSerialized->phrases['wc_stick_comment'];
36
  }
37
 
38
  if ($isClosed) {
39
  $commentWrapperClass[] = 'wc-closed-comment';
40
+ $commentIcons .= '<i class="fas fa-lock wpd-closed" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_closed_comment_icon_title'] . '"></i>';
41
+ $closeText = $this->optionsSerialized->phrases['wc_open_comment'];
42
+ } else {
43
+ $closeText = $this->optionsSerialized->phrases['wc_close_comment'];
44
  }
45
 
46
+ $comment->comment_content = apply_filters('wpdiscuz_before_comment_text', $comment->comment_content, $comment);
47
  if ($this->optionsSerialized->enableImageConversion) {
48
+ $comment->comment_content = $this->helper->makeClickable($comment->comment_content);
49
  }
50
 
51
+ $comment->comment_content = apply_filters('comment_text', $comment->comment_content, $comment, $args);
52
  $commentReadMoreLimit = $this->optionsSerialized->commentReadMoreLimit;
53
+ if (strstr($comment->comment_content, '[/spoiler]')) {
54
  $commentReadMoreLimit = 0;
55
+ $comment->comment_content = WpdiscuzHelper::spoiler($comment->comment_content);
56
  }
57
+ if ($commentReadMoreLimit && count(explode(' ', strip_tags($comment->comment_content))) > $commentReadMoreLimit) {
58
+ $comment->comment_content = WpdiscuzHelper::getCommentExcerpt($comment->comment_content, $uniqueId, $this->optionsSerialized);
59
  }
60
+ $comment->comment_content .= $comment->comment_approved === '0' ? '<p class="wc_held_for_moderate">' . $this->optionsSerialized->phrases['wc_held_for_moderate'] . '</p>' : '';
61
 
 
 
 
62
  if (isset($args['new_loaded_class'])) {
63
  $commentWrapperClass[] = $args['new_loaded_class'];
64
  if ($args['isSingle']) {
68
  }
69
  }
70
 
71
+ if ($this->optionsSerialized->wordpressIsPaginate) {
72
+ $commentLink = get_comment_link($comment);
73
+ } else {
74
+ $commentLink = $args['post_permalink'] . '#comment-' . $comment->comment_ID;
75
+ if (!empty($args['last_visit'])&& !empty($args['current_user_email']) && strtotime($comment->comment_date) > $args['last_visit'] && $args['current_user_email'] != $comment->comment_author_email) {
 
 
 
 
 
 
 
76
  $commentWrapperClass[] = 'wc-new-loaded-comment';
77
  }
78
  }
79
 
 
 
 
 
80
  $userKey = $comment->user_id . '_' . $comment->comment_author_email;
81
+ if (isset($_SESSION['wpdiscuz_users'][$userKey])) {
82
+ $user = $_SESSION['wpdiscuz_users'][$userKey];
83
  } else {
84
+ $user = array();
85
+ $user['user'] = '';
86
+ if ($comment->user_id) {
87
+ $user['user'] = get_user_by('id', $comment->user_id);
88
+ } else if ($this->optionsSerialized->isUserByEmail) {
89
+ $user['user'] = get_user_by('email', $comment->comment_author_email);
90
  }
91
+ $user['commentAuthorUrl'] = ('http://' == $comment->comment_author_url) ? '' : $comment->comment_author_url;
92
+ $user['commentAuthorUrl'] = apply_filters('get_comment_author_url', $user['commentAuthorUrl'], $comment->comment_ID, $comment);
93
+ if ($user['user']) {
94
+ $user['commentAuthorUrl'] = $user['commentAuthorUrl'] ? $user['commentAuthorUrl'] : $user['user']->user_url;
95
+ $user['authorName'] = $user['user']->display_name ? $user['user']->display_name : $comment->comment_author;
96
+ $authorAvatarField = $user['user']->ID;
97
+ $gravatarUserId = $user['user']->ID;
98
+ $gravatarUserEmail = $user['user']->user_email;
99
+ $user['profileUrl'] = in_array($user['user']->ID, $args['posts_authors']) ? get_author_posts_url($user['user']->ID) : '';
100
+ if ($user['user']->ID == $args['post_author']) {
101
+ $user['authorClass'] = 'wc-blog-user wc-blog-post_author';
102
+ $user['author_title'] = $this->optionsSerialized->phrases['wc_blog_role_post_author'];
103
+ } else {
104
+ $user['authorClass'] = 'wc-blog-guest';
105
+ $user['author_title'] = $this->optionsSerialized->phrases['wc_blog_role_guest'];
106
+ if ($this->optionsSerialized->blogRoles) {
107
+ if ($user['user']->roles && is_array($user['user']->roles)) {
108
+ foreach ($user['user']->roles as $role) {
109
+ if (isset($this->optionsSerialized->blogRoles[$role])) {
110
+ $user['authorClass'] = 'wc-blog-user wc-blog-' . $role;
111
+ $rolePhrase = isset($this->optionsSerialized->phrases['wc_blog_role_' . $role]) ? $this->optionsSerialized->phrases['wc_blog_role_' . $role] : '';
112
+ $user['author_title'] = apply_filters('wpdiscuz_user_label', $rolePhrase, $user['user']);
113
+ break;
114
+ }
 
115
  }
116
  }
117
  }
118
  }
119
+ } else {
120
+ $user['authorName'] = $comment->comment_author ? $comment->comment_author : $this->optionsSerialized->phrases['wc_anonymous'];
121
+ $authorAvatarField = $comment->comment_author_email;
122
+ $gravatarUserId = 0;
123
+ $gravatarUserEmail = $comment->comment_author_email;
124
+ $user['profileUrl'] = '';
125
+ $user['authorClass'] = 'wc-blog-guest';
126
+ $user['author_title'] = $this->optionsSerialized->phrases['wc_blog_role_guest'];
127
  }
128
+ $user['authorName'] = apply_filters('wpdiscuz_comment_author', $user['authorName'], $comment);
129
+ $user['profileUrl'] = apply_filters('wpdiscuz_profile_url', $user['profileUrl'], $user['user']);
130
+ if ($this->optionsSerialized->wordpressShowAvatars) {
131
+ $authorAvatarField = apply_filters('wpdiscuz_author_avatar_field', $authorAvatarField, $comment, $user['user'], $user['profileUrl']);
132
+ $user['gravatarArgs'] = array(
133
+ 'wpdiscuz_gravatar_field' => $authorAvatarField,
134
+ 'wpdiscuz_gravatar_size' => $args['wpdiscuz_gravatar_size'],
135
+ 'wpdiscuz_gravatar_user_id' => $gravatarUserId,
136
+ 'wpdiscuz_gravatar_user_email' => $gravatarUserEmail,
137
+ 'wpdiscuz_current_user' => $user['user'],
138
+ );
139
+ $user['avatar'] = get_avatar($user['gravatarArgs']['wpdiscuz_gravatar_field'], $user['gravatarArgs']['wpdiscuz_gravatar_size'], '', $user['authorName'], $user['gravatarArgs']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  }
141
+ if (!$this->optionsSerialized->disableProfileURLs) {
142
+ if ($user['profileUrl']) {
143
+ $attributes = apply_filters('wpdiscuz_avatar_link_attributes', array('href' => $user['profileUrl'], 'target' => '_blank'));
144
+ if ($attributes && is_array($attributes)) {
145
+ $attributesHtml = "";
146
+ foreach ($attributes as $attribute => $value) {
147
+ $attributesHtml .= "$attribute='{$value}' ";
148
+ }
149
+ $attributesHtml = trim($attributesHtml);
150
+ $user['authorAvatarSprintf'] = "<a $attributesHtml>%s</a>";
151
+ } else {
152
+ $user['authorAvatarSprintf'] = "<a href='{$user['profileUrl']}' target='_blank'>%s</a>";
153
  }
 
 
 
 
154
  }
 
 
155
 
156
+ if (($href = $user['commentAuthorUrl']) || ($href = $user['profileUrl'])) {
157
+ $attributes = apply_filters('wpdiscuz_author_link_attributes', array('href' => $href, 'rel' => 'nofollow', 'target' => '_blank'));
158
+ if ($attributes && is_array($attributes)) {
159
+ $attributesHtml = "";
160
+ foreach ($attributes as $attribute => $value) {
161
+ $attributesHtml .= "$attribute='{$value}' ";
162
+ }
163
+ $attributesHtml = trim($attributesHtml);
164
+ $user['authorName'] = "<a $attributesHtml>{$user['authorName']}</a>";
165
+ } else {
166
+ $user['authorName'] = "<a rel='nofollow' href='$href' target='_blank'>{$user['authorName']}</a>";
167
  }
 
 
 
 
168
  }
169
  }
170
+ $_SESSION['wpdiscuz_users'][$userKey] = $user;
171
  }
172
 
173
+ if ($comment->comment_parent && $this->optionsSerialized->wordpressThreadComments) {
174
+ $commentWrapperClass[] = 'wc-reply';
 
 
 
 
 
 
 
175
  }
176
 
177
+ $trackOrPingback = $comment->comment_type == 'pingback' || $comment->comment_type == 'trackback';
178
+
179
+ $commentWrapperClass[] = $user['authorClass'];
180
  $commentWrapperClass[] = 'wc_comment_level-' . $depth;
181
  $commentWrapperClass = apply_filters('wpdiscuz_comment_wrap_classes', $commentWrapperClass, $comment);
182
  $wrapperClass = implode(' ', $commentWrapperClass);
183
 
 
184
  // begin printing comment template
185
+ $commentOutput .= '<div id="wc-comm-' . $uniqueId . '" class="' . $wrapperClass . '">';
186
  if ($this->optionsSerialized->wordpressShowAvatars) {
187
+ $authorAvatar = $trackOrPingback ? '<img class="avatar avatar-' . $user['gravatarArgs']['wpdiscuz_gravatar_size'] . ' photo" width="' . $user['gravatarArgs']['wpdiscuz_gravatar_size'] . '" height="' . $user['gravatarArgs']['wpdiscuz_gravatar_size'] . '" src="' . $args['avatar_trackback'] . '" alt="trackback">' : $user['avatar'];
188
+ if (isset($user['authorAvatarSprintf'])) {
189
+ $authorAvatar = sprintf($user['authorAvatarSprintf'], $authorAvatar);
190
+ }
191
  $commentLeftClass = apply_filters('wpdiscuz_comment_left_class', '');
192
+ $commentOutput .= '<div class="wc-comment-left ' . $commentLeftClass . '"><div class="wpd-xborder"></div>' . $authorAvatar;
193
  if (!$this->optionsSerialized->authorTitlesShowHide && !$trackOrPingback) {
194
+ $user['author_title'] = apply_filters('wpdiscuz_author_title', $user['author_title'], $comment);
195
+ $commentOutput .= '<div class="' . $user['authorClass'] . ' wc-comment-label">' . '<span>' . $user['author_title'] . '</span>' . '</div>';
196
  }
197
+ $commentOutput .= apply_filters('wpdiscuz_after_label', '', $comment);
198
+ $commentOutput .= '</div>';
199
+ $commentRightClass = '';
200
+ } else {
201
+ $commentRightClass = ' wc-hide-avatar';
202
  }
203
 
204
+ $commentOutput .= '<div id="comment-' . $comment->comment_ID . '" class="wc-comment-right' . $commentRightClass . '">';
205
+ $commentOutput .= '<div class="wc-comment-header">';
 
206
  $uNameClasses = apply_filters('wpdiscuz_username_classes', '');
207
+ $user['authorName'] .= apply_filters('wpdiscuz_after_comment_author', '', $comment, $user['user']);
208
 
209
+ $commentOutput .= '<div class="wc-comment-author ' . $uNameClasses . '">' . $user['authorName'] . '</div>';
210
+ if ($args['can_user_follow'] && $args['current_user_email'] != $comment->comment_author_email) {
211
+ if (is_array($args['user_follows']) && in_array($comment->comment_author_email, $args['user_follows'])) {
212
  $followClass = 'wc-unfollow wc-follow-active';
213
  $followTip = $this->optionsSerialized->phrases['wc_unfollow_user'];
214
  } else {
215
  $followClass = 'wc-follow';
216
  $followTip = $this->optionsSerialized->phrases['wc_follow_user'];
217
  }
218
+ $commentOutput .= '<div class="wc-follow-link wpd-tooltip-right wc_not_clicked ' . $followClass . '">';
219
+ $commentOutput .= '<i class="fas fa-rss" aria-hidden="true"></i>';
220
+ $commentOutput .= '<wpdtip>' . $followTip . '</wpdtip>';
221
+ $commentOutput .= '</div>';
 
 
 
 
 
 
 
 
 
222
  }
223
 
224
+ $commentOutput .= '<div class="wc-comment-link">' . $commentIcons;
225
+ $commentOutput .= apply_filters('wpdiscuz_comment_type_icon', '', $comment, $user['user'], $args['current_user']);
226
 
227
+ if ($args['is_share_enabled']) {
228
+ $commentOutput .= '<div class="wc-share-link wpf-cta wpd-tooltip-right"><i class="fas fa-share-alt" aria-hidden="true" title="' . $this->optionsSerialized->phrases['wc_share_text'] . '" ></i>';
229
+ $commentOutput .= '<wpdtip>';
230
+ $commentOutput .= $this->optionsSerialized->enableTwitterShare ? '<a class="wc_tw" target="_blank" href="https://twitter.com/intent/tweet?text=' . $this->helper->getTwitterShareContent($comment->comment_content, $commentLink) . '&url=' . urlencode($commentLink) . '" title="' . $this->optionsSerialized->phrases['wc_share_twitter'] . '"><i class="fab fa-twitter wpf-cta" aria-hidden="true"></i></a>' : '';
231
+ $commentOutput .= $args['share_buttons'];
232
+ $commentOutput .= '</wpdtip></div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  }
234
 
235
+ $commentOutput .= apply_filters('wpdiscuz_before_comment_link', '', $comment, $user['user'], $args['current_user']);
236
 
237
  if (!$this->optionsSerialized->showHideCommentLink) {
238
+ $commentOutput .= apply_filters('wpdiscuz_comment_link_img', '<span class="wc-comment-img-link-wrap"><i class="fas fa-link wc-comment-img-link wpf-cta" data-comment-url="' . $commentLink . '" aria-hidden="true"></i></span>', $comment);
 
239
  }
240
 
241
+ $commentOutput .= apply_filters('wpdiscuz_after_comment_link', '', $comment, $user['user'], $args['current_user']);
242
 
243
+ $commentOutput .= '</div>';
244
+ $commentOutput .= '<div class="wpdiscuz_clear"></div>';
245
+ $commentOutput .= '</div>';
246
 
247
+ $commentOutput .= apply_filters('wpdiscuz_comment_text', '<div class="wc-comment-text">' . $comment->comment_content . '</div>', $comment, $args);
248
+ $commentOutput .= apply_filters('wpdiscuz_after_comment_text', '', $comment);
249
+ $commentOutput .= '<div class="wc-comment-footer">';
250
+ $commentOutput .= '<div class="wc-footer-left">';
251
  if (!$this->optionsSerialized->votingButtonsShowHide) {
252
+ if ($args['can_user_vote']) {
253
+ $voteClass = ' wc_vote wc_not_clicked';
254
+ $voteUp = $this->optionsSerialized->phrases['wc_vote_up'];
255
+ $voteDown = $this->optionsSerialized->phrases['wc_vote_down'];
256
+ } else {
257
+ $voteClass = '';
258
+ $voteUp = $this->optionsSerialized->phrases['wc_login_to_vote'];
259
+ $voteDown = $this->optionsSerialized->phrases['wc_login_to_vote'];
260
+ }
261
+ $voteUpClasses = apply_filters('wpdiscuz_vote_up_icon_classes', array('fas', $args['voting_icons']['like'], 'wc-vote-img-up'), $comment, $args['current_user']);
262
+ $voteDownClasses = apply_filters('wpdiscuz_vote_down_icon_classes', array('fas', $args['voting_icons']['dislike'], 'wc-vote-img-down'), $comment, $args['current_user']);
263
  if ($this->optionsSerialized->votingButtonsStyle) {
264
  $votesArr = $this->dbManager->getVotes($comment->comment_ID);
265
  if ($votesArr && count($votesArr) == 1) {
269
  $like = isset($votesArr[0]) ? intval($votesArr[0]) : 0;
270
  $dislike = isset($votesArr[1]) ? intval($votesArr[1]) : 0;
271
  }
272
+ $commentOutput .= '<span class="wc-vote-link wc-up wc-separate' . $voteClass . '">';
273
+ $commentOutput .= '<i class="' . implode(' ', $voteUpClasses) . '"></i><span>' . $voteUp . '</span>';
274
+ $commentOutput .= '</span>';
275
+ $commentOutput .= '<span class="wc-vote-result wc-vote-result-like' . (($like) ? ' wc-positive' : '') . '">' . $like . '</span>';
276
+ $commentOutput .= '<span class="wc-vote-result wc-vote-result-dislike' . (($dislike) ? ' wc-negative' : '') . '">' . $dislike . '</span>';
277
+ $commentOutput .= '<span class="wc-vote-link wc-down wc-separate' . $voteClass . '">';
278
+ $commentOutput .= '<i class="' . implode(' ', $voteDownClasses) . '"></i><span>' . $voteDown . '</span>';
279
+ $commentOutput .= '</span>';
 
 
 
280
  } else {
281
  $voteCount = get_comment_meta($comment->comment_ID, WpdiscuzCore::META_KEY_VOTES, true);
282
+ $commentOutput .= '<span class="wc-vote-link wc-up' . $voteClass . '">';
283
+ $commentOutput .= '<i class="' . implode(' ', $voteUpClasses) . '"></i><span>' . $voteUp . '</span>';
284
+ $commentOutput .= '</span>';
285
+ $commentOutput .= '<span class="wc-vote-result">' . intval($voteCount) . '</span>';
286
+ $commentOutput .= '<span class="wc-vote-link wc-down' . $voteClass . '">';
287
+ $commentOutput .= '<i class="' . implode(' ', $voteDownClasses) . '"></i><span>' . $voteDown . '</span>';
288
+ $commentOutput .= '</span>&nbsp;';
 
 
 
289
  }
290
  }
291
 
292
+ if (!$isClosed) {
293
+ if ($args['can_user_reply']) {
294
+ $commentOutput .= '<span class="wc-reply-button wc-cta-button" title="' . $this->optionsSerialized->phrases['wc_reply_text'] . '"><i class="far fa-comments" aria-hidden="true"></i> ' . $this->optionsSerialized->phrases['wc_reply_text'] . '</span>';
295
+ }
 
 
 
 
296
 
297
+ if ($args['high_level_user'] || ($this->helper->isCommentEditable($comment) && $this->helper->canUserEditComment($comment, $args['current_user'], $args))) {
298
+ $commentOutput .= '<span class="wc_editable_comment wc-cta-button"> ' . $this->optionsSerialized->phrases['wc_edit_text'] . '</span>';
299
+ $commentOutput .= '<span class="wc_cancel_edit wc-cta-button-x"> ' . $this->optionsSerialized->phrases['wc_comment_edit_cancel_button'] . '</span>';
300
+ }
301
  }
302
 
303
+ $commentOutput .= apply_filters('wpdiscuz_comment_buttons', '', $comment, $user['user'], $args['current_user']);
304
+ if ($comment->comment_parent == 0) {
305
+ $commentOutput .= sprintf($args['wc_stick_btn'], $stickText);
306
+ $commentOutput .= sprintf($args['wc_close_btn'], $closeText);
 
 
 
 
 
 
 
 
 
307
  }
308
+ $commentOutput .= '</div>';
309
+ $commentOutput .= '<div class="wc-footer-right">';
310
 
311
  if (!$this->optionsSerialized->hideCommentDate) {
312
+ $commentOutput .= '<div class="wc-comment-date"><i class="far fa-clock" aria-hidden="true"></i>' . ($this->optionsSerialized->simpleCommentDate ? get_comment_date($this->optionsSerialized->wordpressDateFormat . ' ' . $this->optionsSerialized->wordpressTimeFormat, $comment->comment_ID) : $this->helper->dateDiff($comment->comment_date_gmt)) . '</div>';
 
313
  }
314
+ if ($this->optionsSerialized->wordpressThreadComments && $depth < $this->optionsSerialized->wordpressThreadCommentsDepth) {
315
+ $commentOutput .= '<div class="wc-toggle">';
316
  if (isset($args['wpdiscuz_child_count_' . $comment->comment_ID])) {
317
  $countChildren = $args['wpdiscuz_child_count_' . $comment->comment_ID];
318
  if ($countChildren) {
319
+ $commentOutput .= '<a href="#" title="' . $this->optionsSerialized->phrases['wc_show_replies_text'] . '">';
320
+ $commentOutput .= '<span class="wcsep">|</span> <span class="wpdiscuz-children"><span class="wpdiscuz-children-button-text">' . $this->optionsSerialized->phrases['wc_show_replies_text'] . '</span> (<span class="wpdiscuz-children-count">' . $countChildren . '</span>)</span> ';
321
+ $commentOutput .= '<i class="fas fa-chevron-down wpdiscuz-show-replies"></i>';
322
+ $commentOutput .= '</a>';
323
  }
324
  } else {
325
+ $commentOutput .= $comment->get_children() ? '<i class="fas fa-chevron-up" title="' . $this->optionsSerialized->phrases['wc_hide_replies_text'] . '"></i>' : '';
326
  }
327
+ $commentOutput .= '</div>';
 
328
  }
329
+ $commentOutput .= '</div>';
330
+ $commentOutput .= '<div class="wpdiscuz_clear"></div>';
331
+ $commentOutput .= '</div>';
332
+ $commentOutput .= '</div>';
333
+ $commentOutput .= '<div class="wpdiscuz-comment-message"></div>';
334
+ $commentOutput .= '<div id="wpdiscuz_form_anchor-' . $uniqueId . '" class="wpdiscuz_clear"></div>';
335
+ $output .= apply_filters('wpdiscuz_comment_end', $commentOutput, $comment, $depth, $args);
336
  }
337
 
338
  public function end_el(&$output, $comment, $depth = 0, $args = array()) {
templates/comment/comment-form.php CHANGED
@@ -325,11 +325,12 @@ if (!post_password_required($post->ID)) {
325
  </div>
326
  <?php if (!$currentUser->ID && $form->isShowSubscriptionBarAgreement()): ?>
327
  <div class="wpdiscuz-subscribe-agreement">
328
- <input id="show_subscription_agreement" type="checkbox" checked="checked" required="required" name="show_subscription_agreement" value="1">
329
  <label for="show_subscription_agreement"><?php echo $form->subscriptionBarAgreementLabel(); ?></label>
330
  </div>
331
  <?php endif; ?>
332
  <?php wp_nonce_field('wpdiscuz_subscribe_form_nonce_action', 'wpdiscuz_subscribe_form_nonce'); ?>
 
333
  <input type="hidden" value="<?php echo $post->ID; ?>" name="wpdiscuzSubscriptionPostId" />
334
  </form>
335
  <?php } ?>
@@ -360,16 +361,8 @@ if (!post_password_required($post->ID)) {
360
  <div id="wcThreadWrapper" class="wc-thread-wrapper">
361
  <?php
362
  $args = array('first_load' => 1, 'orderby' => $wpdiscuzCommentsOrderBy);
363
- $showLoadeMore = 1;
364
-
365
- if (isset($_COOKIE[WpDiscuzCore::COOKIE_LAST_VISIT])) {
366
- $args[WpDiscuzCore::COOKIE_LAST_VISIT] = $_COOKIE[WpDiscuzCore::COOKIE_LAST_VISIT];
367
- }
368
-
369
  $args['orderby'] = $wpdiscuzCommentsOrderBy;
370
  $args['order'] = $wpdiscuzCommentsOrder;
371
-
372
-
373
  $commentData = $wpdiscuz->getWPComments($args);
374
  echo $commentData['comment_list'];
375
  ?>
325
  </div>
326
  <?php if (!$currentUser->ID && $form->isShowSubscriptionBarAgreement()): ?>
327
  <div class="wpdiscuz-subscribe-agreement">
328
+ <input id="show_subscription_agreement" type="checkbox" required="required" name="show_subscription_agreement" value="1">
329
  <label for="show_subscription_agreement"><?php echo $form->subscriptionBarAgreementLabel(); ?></label>
330
  </div>
331
  <?php endif; ?>
332
  <?php wp_nonce_field('wpdiscuz_subscribe_form_nonce_action', 'wpdiscuz_subscribe_form_nonce'); ?>
333
+ <?php do_action('wpdiscuz_after_subscription_form'); ?>
334
  <input type="hidden" value="<?php echo $post->ID; ?>" name="wpdiscuzSubscriptionPostId" />
335
  </form>
336
  <?php } ?>
361
  <div id="wcThreadWrapper" class="wc-thread-wrapper">
362
  <?php
363
  $args = array('first_load' => 1, 'orderby' => $wpdiscuzCommentsOrderBy);
 
 
 
 
 
 
364
  $args['orderby'] = $wpdiscuzCommentsOrderBy;
365
  $args['order'] = $wpdiscuzCommentsOrder;
 
 
366
  $commentData = $wpdiscuz->getWPComments($args);
367
  echo $commentData['comment_list'];
368
  ?>
utils/class.WpdiscuzHelper.php CHANGED
@@ -1,19 +1,22 @@
1
  <?php
 
2
  if (!defined('ABSPATH')) {
3
  exit();
4
  }
5
 
6
  class WpdiscuzHelper implements WpDiscuzConstants {
7
 
8
- private $spoilerPattern = '@\[(\[?)(spoiler)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)@is';
9
  private $optionsSerialized;
10
  private $dbManager;
11
  private $wpdiscuzForm;
 
12
 
13
  public function __construct($optionsSerialized, $dbManager, $wpdiscuzForm) {
14
  $this->optionsSerialized = $optionsSerialized;
15
  $this->dbManager = $dbManager;
16
  $this->wpdiscuzForm = $wpdiscuzForm;
 
17
  add_filter('the_champ_login_interface_filter', array(&$this, 'wpDiscuzSuperSocializerLogin'), 15, 2);
18
  add_action('wpdiscuz_form_bottom', array(&$this, 'formBottom'), 10, 4);
19
  add_filter('pre_comment_user_ip', array(&$this, 'fixLocalhostIp'), 10);
@@ -104,7 +107,8 @@ class WpdiscuzHelper implements WpDiscuzConstants {
104
  if (is_ssl() && $this->optionsSerialized->commentLinkFilter == 2 && !strstr($matches[1], 'https://')) {
105
  $url = str_replace('http://', 'https://', $url);
106
  }
107
- return '<a rel="nofollow" target="_blank" href="' . esc_url($url) . '"><img alt="comment image" src="' . esc_url($url) . '" /></a>';
 
108
  }
109
 
110
  /**
@@ -113,7 +117,7 @@ class WpdiscuzHelper implements WpDiscuzConstants {
113
  * @return type
114
  */
115
  public static function isPostedToday($comment) {
116
- if ($comment && is_object($comment)) {
117
  return date('Ymd', strtotime(current_time('Ymd'))) <= date('Ymd', strtotime($comment->comment_date));
118
  } else {
119
  return date('Ymd', strtotime(current_time('Ymd'))) <= date('Ymd', strtotime($comment));
@@ -124,10 +128,10 @@ class WpdiscuzHelper implements WpDiscuzConstants {
124
  * check if comment is still editable or not
125
  * return boolean
126
  */
127
- public function isCommentEditable($comment) {
128
  $editableTimeLimit = isset($this->optionsSerialized->commentEditableTime) ? $this->optionsSerialized->commentEditableTime : 0;
129
  $commentTimestamp = strtotime($comment->comment_date);
130
- $timeDiff = (current_time('timestamp') - $commentTimestamp);
131
  $editableTimeLimit = ($editableTimeLimit == 'unlimit') ? $timeDiff + 1 : intval($editableTimeLimit);
132
  return $editableTimeLimit && ($timeDiff < $editableTimeLimit);
133
  }
@@ -169,423 +173,430 @@ class WpdiscuzHelper implements WpDiscuzConstants {
169
  }
170
 
171
  public function superSocializerFix() {
 
172
  if (function_exists('the_champ_login_button')) {
173
- ?>
174
- <div id="comments" style="width: 0;height: 0;clear: both;margin: 0;padding: 0;"></div>
175
- <div id="respond" class="comments-area">
176
- <?php } else { ?>
177
- <div id="comments" class="comments-area">
178
- <div id="respond" style="width: 0;height: 0;clear: both;margin: 0;padding: 0;"></div>
179
- <?php
180
- }
181
- }
182
-
183
- public function getCommentExcerpt($commentContent, $uniqueId) {
184
- $readMoreLink = '<span id="wpdiscuz-readmore-' . $uniqueId . '"><span class="wpdiscuz-hellip">&hellip;&nbsp;</span><span class="wpdiscuz-readmore" title="' . $this->optionsSerialized->phrases['wc_read_more'] . '">' . $this->optionsSerialized->phrases['wc_read_more'] . '</span></span>';
185
- return "<p>" . wp_trim_words($commentContent, $this->optionsSerialized->commentReadMoreLimit, $readMoreLink) . "</p>";
186
- }
187
 
188
- public function isLoadWpdiscuz($post) {
189
- if (!$post || !is_object($post) || (is_front_page() && !$this->optionsSerialized->isEnableOnHome)) {
190
- return false;
191
- }
192
- $form = $this->wpdiscuzForm->getForm($post->ID);
193
- return $form->getFormID() && (comments_open($post) || $post->comment_count) && is_singular() && post_type_supports($post->post_type, 'comments');
194
- }
195
 
196
- public function replaceCommentContentCode($content) {
197
- if (is_ssl()) {
198
- $content = preg_replace_callback('#<\s*?img[^>]*src*=*["\']?([^"\']*)[^>]+>#is', array(&$this, 'replaceImageToURL'), $content);
199
- }
200
- return preg_replace_callback('#`(.*?)`#is', array(&$this, 'replaceCodeContent'), stripslashes($content));
201
- }
 
202
 
203
- private function replaceImageToURL($matches) {
204
- if (!strstr($matches[1], 'https://') && $this->optionsSerialized->commentLinkFilter == 1) {
205
- return "\r\n" . $matches[1] . "\r\n";
206
- } elseif (!strstr($matches[1], 'https://') && $this->optionsSerialized->commentLinkFilter == 2) {
207
- return str_replace('http://', 'https://', $matches[0]);
208
- } else {
209
- return $matches[0];
210
- }
211
- }
212
 
213
- private function replaceCodeContent($matches) {
214
- $codeContent = trim($matches[1]);
215
- $codeContent = str_replace(array('<', '>'), array('&lt;', '&gt;'), $codeContent);
216
- return '<code>' . $codeContent . '</code>';
217
- }
 
 
 
 
218
 
219
- public function spoiler($content) {
220
- return preg_replace_callback($this->spoilerPattern, array(&$this, '_spoiler'), $content);
221
- }
 
 
222
 
223
- private function _spoiler($matches) {
224
- $html = '<div class="wpdiscuz-spoiler-wrap">';
225
- $title = __('Spoiler', 'wpdiscuz');
226
- $matches[3] = str_replace(array('&#8221;', '&#8220;', '&#8243;', '&#8242;'), '"', $matches[3]);
227
- if (preg_match('@title[^\S]*=[^\S]*"*([^\"]+)"@is', $matches[3], $titleMatch)) {
228
- $title = trim($titleMatch[1]) ? trim($titleMatch[1]) : __('Spoiler', 'wpdiscuz');
229
- }
230
 
231
- $html .= '<div class="wpdiscuz-spoiler wpdiscuz-spoiler-closed"><i class="fas fa-plus" aria-hidden="true"></i>' . $title . '</div>';
232
- $html .= '<div class="wpdiscuz-spoiler-content">' . $matches[5] . '</div>';
233
- $html .= '</div>';
234
- return $html;
235
- }
 
 
236
 
237
- public function getCurrentUserDisplayName($current_user) {
238
- $displayName = trim($current_user->display_name);
239
- if (!$displayName) {
240
- $displayName = trim($current_user->user_nicename) ? trim($current_user->user_nicename) : trim($current_user->user_login);
241
- }
242
- return $displayName;
243
- }
244
 
245
- public function registerWpDiscuzStyle($version) {
246
- $templateDir = get_stylesheet_directory();
247
- $wpcTemplateStyleFile = $templateDir . DIRECTORY_SEPARATOR . 'wpdiscuz' . DIRECTORY_SEPARATOR . 'wpdiscuz.css';
248
- $wpdiscuzStyleURL = plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz.css');
249
- if (file_exists($wpcTemplateStyleFile)) {
250
- $wpdiscuzStyleURL = get_stylesheet_directory_uri() . '/wpdiscuz/wpdiscuz.css';
251
- } elseif (file_exists(get_template_directory() . DIRECTORY_SEPARATOR . 'wpdiscuz' . DIRECTORY_SEPARATOR . 'wpdiscuz.css')) {
252
- $wpdiscuzStyleURL = get_template_directory_uri() . '/wpdiscuz/wpdiscuz.css';
253
- }
254
- wp_register_style('wpdiscuz-frontend-css', $wpdiscuzStyleURL, null, $version);
255
- }
256
 
257
- public function wpDiscuzSuperSocializerLogin($html, $theChampLoginOptions) {
258
- global $wp_current_filter;
259
- if (in_array('comment_form_top', $wp_current_filter) && isset($theChampLoginOptions['providers']) && is_array($theChampLoginOptions['providers']) && count($theChampLoginOptions['providers']) > 0) {
260
- $html = '<style type="text/css">#wpcomm .wc_social_plugin_wrapper .wp-social-login-connect-with_by_the_champ{float:left;font-size:13px;padding:5px 7px 0 0;text-transform:uppercase}#wpcomm .wc_social_plugin_wrapper ul.wc_social_login_by_the_champ{list-style:none outside none!important;margin:0!important;padding-left:0!important}#wpcomm .wc_social_plugin_wrapper ul.wc_social_login_by_the_champ .theChampLogin{width:24px!important;height:24px!important}#wpcomm .wc-secondary-forms-social-content ul.wc_social_login_by_the_champ{list-style:none outside none!important;margin:0!important;padding-left:0!important}#wpcomm .wc-secondary-forms-social-content ul.wc_social_login_by_the_champ .theChampLogin{width:24px!important;height:24px!important}#wpcomm .wc-secondary-forms-social-content ul.wc_social_login_by_the_champ li{float:right!important}#wpcomm .wc_social_plugin_wrapper .theChampFacebookButton{ display:block!important; }#wpcomm .theChampTwitterButton{background-position:-4px -68px!important}#wpcomm .theChampGoogleButton{background-position:-36px -2px!important}#wpcomm .theChampVkontakteButton{background-position:-35px -67px!important}#wpcomm .theChampLinkedinButton{background-position:-34px -34px!important;}.theChampCommentingTabs #wpcomm li{ margin:0px 1px 10px 0px!important; }</style>';
261
- $html .= '<div class="wp-social-login-widget">';
262
- $html .= '<div class="wp-social-login-connect-with_by_the_champ">' . $this->optionsSerialized->phrases['wc_connect_with'] . ':</div>';
263
- $html .= '<div class="wp-social-login-provider-list">';
264
- if (isset($theChampLoginOptions['gdpr_enable'])) {
265
- $html .= '<div class="heateor_ss_sl_optin_container"><label><input type="checkbox" class="heateor_ss_social_login_optin" value="1" />' . str_replace($theChampLoginOptions['ppu_placeholder'], '<a href="' . $theChampLoginOptions['privacy_policy_url'] . '" target="_blank">' . $theChampLoginOptions['ppu_placeholder'] . '</a>', wp_strip_all_tags($theChampLoginOptions['privacy_policy_optin_text'])) . '</label></div>';
266
- }
267
- $html .= '<ul class="wc_social_login_by_the_champ">';
268
- foreach ($theChampLoginOptions['providers'] as $provider) {
269
- $html .= '<li><i ';
270
- if ($provider == 'google') {
271
- $html .= 'id="theChamp' . ucfirst($provider) . 'Button" ';
272
- }
273
- $html .= 'class="theChampLogin theChamp' . ucfirst($provider) . 'Background theChamp' . ucfirst($provider) . 'Login" ';
274
- $html .= 'alt="Login with ';
275
- $html .= ucfirst($provider);
276
- $html .= '" title="Login with ';
277
- if ($provider == 'live') {
278
- $html .= 'Windows Live';
279
- } else {
280
- $html .= ucfirst($provider);
281
- }
282
- $html .= '" onclick="theChampCommentFormLogin = true; theChampInitiateLogin(this)" >';
283
- $html .= '<ss style="display:block" class="theChampLoginSvg theChamp' . ucfirst($provider) . 'LoginSvg"></ss></i></li>';
284
- }
285
- $html .= '</ul><div class="wpdiscuz_clear"></div></div></div>';
286
- }
287
- return $html;
288
- }
289
 
290
- public function getAuthorPostsUrl($author_id, $author_nicename = '') {
291
- $authorURL = '';
292
- $post_types = apply_filters('wpdiscuz_author_post_types', array('post'));
293
- if (count_user_posts($author_id, $post_types)) {
294
- return get_author_posts_url($author_id, $author_nicename);
 
 
 
 
 
 
 
 
 
 
295
  }
296
- $authorURL = apply_filters('author_link', $authorURL, $author_id, $author_nicename);
297
- return $authorURL;
298
- }
299
-
300
- public static function getCurrentUser() {
301
- global $user_ID;
302
- if ($user_ID) {
303
- $user = get_userdata($user_ID);
304
  } else {
305
- $user = wp_set_current_user(0);
306
  }
307
- return $user;
 
308
  }
 
 
 
 
309
 
310
- public function canUserEditComment($comment, $currentUser, $commentListArgs = array()) {
311
- $currentIP = $this->getRealIPAddr();
312
- if (isset($commentListArgs['comment_author_email'])) {
313
- $storedCookieEmail = $commentListArgs['comment_author_email'];
314
- } else {
315
- $storedCookieEmail = isset($_COOKIE['comment_author_email_' . COOKIEHASH]) ? $_COOKIE['comment_author_email_' . COOKIEHASH] : '';
316
- }
317
- return ($storedCookieEmail == $comment->comment_author_email && $currentIP == $comment->comment_author_IP) || ($currentUser && $currentUser->ID && $currentUser->ID == $comment->user_id);
318
- }
319
 
320
- public function addCommentTypes($args) {
321
- $args[self::WPDISCUZ_STICKY_COMMENT] = __('Sticky', 'woodiscuz');
322
- return $args;
323
- }
 
 
 
 
 
324
 
325
- public function commentRowStickAction($actions, $comment) {
326
- if (!$comment->comment_parent) {
327
- $stickText = $comment->comment_type == self::WPDISCUZ_STICKY_COMMENT ? $this->optionsSerialized->phrases['wc_unstick_comment'] : $this->optionsSerialized->phrases['wc_stick_comment'];
328
- if ($comment->comment_karma) {
329
- $closeText = $this->optionsSerialized->phrases['wc_open_comment'];
330
- $closeIcon = 'fa-lock';
331
- } else {
332
- $closeText = $this->optionsSerialized->phrases['wc_close_comment'];
333
- $closeIcon = 'fa-unlock';
334
- }
335
- $actions['stick'] = '<a data-comment="' . $comment->comment_ID . '" data-post="' . $comment->comment_post_ID . '" class="wc_stick_btn" href="#"> <i class="fas fa-thumbtack"></i> <span class="wc_stick_text">' . $stickText . '</span></a>';
336
- $actions['close'] = '<a data-comment="' . $comment->comment_ID . '" data-post="' . $comment->comment_post_ID . '" class="wc_close_btn" href="#"> <i class="fas ' . $closeIcon . '"></i> <span class="wc_close_text">' . $closeText . '</span></a>';
337
- }
338
- return $actions;
339
- }
340
 
341
- public function wpdDeactivationReasonModal() {
342
- include_once 'deactivation-reason-modal.php';
343
- }
 
 
 
 
 
 
 
 
 
 
 
 
344
 
345
- public function disableAddonsDemo() {
346
- if (current_user_can('manage_options') && isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], 'disableAddonsDemo') && isset($_GET['show'])) {
347
- update_option(self::OPTION_SLUG_SHOW_DEMO, intval($_GET['show']));
348
- wp_redirect(admin_url('edit-comments.php?page=' . WpdiscuzCore::PAGE_SETTINGS));
349
- }
350
- }
351
 
352
- public function getCommentDate($comment) {
353
- if ($this->optionsSerialized->simpleCommentDate) {
354
- $dateFormat = $this->optionsSerialized->wordpressDateFormat;
355
- $timeFormat = $this->optionsSerialized->wordpressTimeFormat;
356
- if (self::isPostedToday($comment)) {
357
- $postedDate = $this->optionsSerialized->phrases['wc_posted_today_text'] . ' ' . mysql2date($timeFormat, $comment->comment_date);
358
- } else {
359
- $postedDate = get_comment_date($dateFormat . ' ' . $timeFormat, $comment->comment_ID);
360
- }
361
- } else {
362
- $postedDate = $this->dateDiff($comment->comment_date_gmt);
363
- }
364
- return $postedDate;
365
- }
366
 
367
- public function getPostDate($post) {
368
- if ($this->optionsSerialized->simpleCommentDate) {
369
- $dateFormat = $this->optionsSerialized->wordpressDateFormat;
370
- $timeFormat = $this->optionsSerialized->wordpressTimeFormat;
371
- if ($this->isPostPostedToday($post)) {
372
- $postedDate = $this->optionsSerialized->phrases['wc_posted_today_text'] . ' ' . mysql2date($timeFormat, $post->post_date);
373
- } else {
374
- $postedDate = get_the_date($dateFormat . ' ' . $timeFormat, $post);
375
- }
376
- } else {
377
- $postedDate = $this->dateDiff($post->post_date_gmt);
378
- }
379
- return $postedDate;
380
  }
 
 
 
 
 
381
 
382
- public function getDate($comment) {
383
- if ($this->optionsSerialized->simpleCommentDate) {
384
- $dateFormat = $this->optionsSerialized->wordpressDateFormat;
385
- $timeFormat = $this->optionsSerialized->wordpressTimeFormat;
386
- if (self::isPostedToday($comment)) {
387
- $postedDate = $this->optionsSerialized->phrases['wc_posted_today_text'] . ' ' . mysql2date($timeFormat, $comment);
388
- } else {
389
- $postedDate = date($dateFormat . ' ' . $timeFormat, strtotime($comment));
390
- }
391
- } else {
392
- $postedDate = $this->dateDiff($comment);
393
- }
394
- return $postedDate;
395
  }
 
 
 
 
 
396
 
397
- private function isPostPostedToday($post) {
398
- return date('Ymd', strtotime(current_time('Ymd'))) <= date('Ymd', strtotime($post->post_date));
 
 
 
 
 
 
399
  }
 
 
 
 
 
400
 
401
- public function formBottom($isMain, $form, $currentUser, $commentsCount) {
402
- include_once 'form-bottom-statistics.php';
403
- }
404
 
405
- public function wpdGetInfo() {
406
- $response = '';
407
- $currentUser = self::getCurrentUser();
408
- if ($currentUser && $currentUser->ID) {
409
- $currentUserId = $currentUser->ID;
410
- $currentUserEmail = $currentUser->user_email;
411
- } else {
412
- $currentUserId = 0;
413
- $currentUserEmail = isset($_COOKIE['comment_author_email_' . COOKIEHASH]) ? $_COOKIE['comment_author_email_' . COOKIEHASH] : '';
414
- }
415
 
416
- if (is_user_logged_in()) {
417
- $response .= "<div class='wpd-wrapper'>";
418
- $response .= "<ul class='wpd-list'>";
419
- $response .= $this->getActivityTitleHtml();
420
- $response .= $this->getSubscriptionsTitleHtml();
421
- $response .= $this->getFollowsTitleHtml();
422
- $response .= "</ul>";
423
- $response .= "<div class='wpd-content'>";
424
- $response .= $this->getActivityContentHtml($currentUserId, $currentUserEmail);
425
- $response .= $this->getSubscriptionsContentHtml($currentUserId, $currentUserEmail);
426
- $response .= $this->getFollowsContentHtml($currentUserId, $currentUserEmail);
427
- $response .= "</div>";
428
- $response .= "<div class='wpd-user-email-delete-links-wrap'>";
429
- $response .= "<a href='#' class='wpd-user-email-delete-links wpd-not-clicked'>";
430
- $response .= $this->optionsSerialized->phrases['wc_user_settings_email_me_delete_links'];
431
- $response .= "<span class='wpd-loading wpd-hide'><i class='fas fa-pulse fa-spinner'></i></span>";
432
- $response .= "</a>";
433
- $response .= "<div class='wpd-bulk-desc'>" . $this->optionsSerialized->phrases['wc_user_settings_email_me_delete_links_desc'] . "</div>";
434
- $response .= "</div>";
435
- $response .= "</div>";
436
- } else if ($currentUserEmail) {
437
- $commentBtn = $this->getDeleteAllCommentsButton($currentUserEmail);
438
- $subscribeBtn = $this->getDeleteAllSubscriptionsButton($currentUserEmail);
439
- $cookieBtnClass = !$commentBtn && !$subscribeBtn ? 'wpd-show' : 'wpd-hide';
440
- $response .= "<div class='wpd-wrapper wpd-guest-settings'>";
441
- $response .= $commentBtn;
442
- $response .= $subscribeBtn;
443
- $response .= $this->deleteCookiesButton($currentUserEmail, $cookieBtnClass);
444
- $response .= "</div>";
445
- } else {
446
- $response .= "<div class='wpd-wrapper'>";
447
- $response .= $this->optionsSerialized->phrases['wc_user_settings_no_data'];
448
- $response .= "</div>";
449
- }
450
- wp_die($response);
451
- }
452
 
453
- private function getDeleteAllCommentsButton($email) {
454
- $html = '';
455
- if (!is_email($email)) {
456
- return $html;
457
- }
458
- $commentCount = get_comments(array('author_email' => $email, 'count' => true));
459
- if ($commentCount) {
460
- $html .= '<div class="wpd-user-settings-button-wrap">';
461
- $html .= '<div class="wpd-user-settings-button wpd-delete-all-comments wpd-not-clicked" data-wpd-delete-action="deleteComments">';
462
- $html .= $this->optionsSerialized->phrases['wc_user_settings_request_deleting_comments'];
463
- $html .= '<span class="wpd-loading wpd-hide"><i class="fas fa-spinner fa-pulse"></i></span>';
464
- $html .= '</div>';
465
- $html .= '</div>';
466
- }
467
- return $html;
468
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
469
 
470
- private function getDeleteAllSubscriptionsButton($email) {
471
- $html = '';
472
- if (!is_email($email)) {
473
- return $html;
474
- }
475
- $subscriptions = $this->dbManager->getSubscriptions($email, 1, 0);
476
- if ($subscriptions) {
477
- $html .= '<div class="wpd-user-settings-button-wrap">';
478
- $html .= '<div class="wpd-user-settings-button wpd-delete-all-subscriptions wpd-not-clicked" data-wpd-delete-action="deleteSubscriptions">';
479
- $html .= $this->optionsSerialized->phrases['wc_user_settings_cancel_subscriptions'];
480
- $html .= '<span class="wpd-loading wpd-hide"><i class="fas fa-spinner fa-pulse"></i></span>';
481
- $html .= '</div>';
482
- $html .= '</div>';
483
- }
484
- return $html;
485
- }
486
 
487
- private function deleteCookiesButton($email, $cookieBtnClass) {
488
- $html = '';
489
- if (!is_email($email)) {
490
- return $html;
491
- }
492
- $html .= '<div class="wpd-user-settings-button-wrap ' . $cookieBtnClass . '">';
493
- $html .= '<div class="wpd-user-settings-button wpd-delete-all-cookies wpd-not-clicked" data-wpd-delete-action="deleteCookies">';
494
- $html .= $this->optionsSerialized->phrases['wc_user_settings_clear_cookie'];
495
- $html .= '<span class="wpd-loading wpd-hide"><i class="fas fa-spinner fa-pulse"></i></span>';
496
- $html .= '</div>';
497
- $html .= '</div>';
498
- return $html;
499
- }
 
 
 
500
 
501
- private function getActivityTitleHtml() {
502
- ob_start();
503
- include_once 'layouts/activity/title.php';
504
- return ob_get_clean();
505
- }
 
 
 
 
 
 
 
 
506
 
507
- private function getActivityContentHtml($currentUserId, $currentUserEmail) {
508
- $html = "<div id='wpd-content-item-1' class='wpd-content-item'>";
509
- include_once 'layouts/activity/content.php';
510
- $html .= "</div>";
511
- return $html;
512
- }
513
 
514
- public function getActivityPage() {
515
- ob_start();
516
- include_once 'layouts/activity/activity-page.php';
517
- $html = ob_get_clean();
518
- wp_die($html);
519
- }
520
 
521
- private function getSubscriptionsTitleHtml() {
522
- ob_start();
523
- include_once 'layouts/subscriptions/title.php';
524
- return ob_get_clean();
525
- }
 
526
 
527
- private function getSubscriptionsContentHtml($currentUserId, $currentUserEmail) {
528
- $html = "<div id='wpd-content-item-2' class='wpd-content-item'>";
529
- include_once 'layouts/subscriptions/content.php';
530
- $html .= "</div>";
531
- return $html;
532
- }
533
 
534
- public function getSubscriptionsPage() {
535
- ob_start();
536
- include_once 'layouts/subscriptions/subscriptions-page.php';
537
- $html = ob_get_clean();
538
- wp_die($html);
539
- }
540
 
541
- private function getFollowsTitleHtml() {
542
- ob_start();
543
- include_once 'layouts/follows/title.php';
544
- return ob_get_clean();
545
- }
 
546
 
547
- private function getFollowsContentHtml($currentUserId, $currentUserEmail) {
548
- $html = "<div id='wpd-content-item-3' class='wpd-content-item'>";
549
- include_once 'layouts/follows/content.php';
550
- $html .= "</div>";
551
- return $html;
552
- }
553
 
554
- public function getFollowsPage() {
555
- ob_start();
556
- include_once 'layouts/follows/follows-page.php';
557
- $html = ob_get_clean();
558
- wp_die($html);
559
- }
560
 
561
- public function hashVotesNote() {
562
- if ($this->dbManager->getNotHashedIpCount()) {
563
- $page = isset($_GET['page']) ? $_GET['page'] : '';
564
- if ($page != self::PAGE_TOOLS) {
565
- $goToHashUrl = get_admin_url(WpdiscuzCore::$CURRENT_BLOG_ID, 'edit-comments.php?page=') . self::PAGE_TOOLS . '#toolsTab4';
566
- $html = "<div class='error' style='padding:10px;'>";
567
- $html .= "<p>" . __('Before using wpDiscuz you should update your data', $goToHashUrl) . "</p>";
568
- $html .= "<a class='' href='$goToHashUrl'>" . __('Go to update data', 'wpdiscuz') . "</a>";
569
- $html .= "</div>";
570
- echo$html;
571
- }
572
- }
573
- }
574
 
575
- public static function fixEmailFrom($domain) {
576
- $domain = strtolower($domain);
577
- if (substr($domain, 0, 4) == 'www.') {
578
- $domain = substr($domain, 4);
 
 
 
 
 
 
 
579
  }
580
- return $domain;
581
  }
 
 
582
 
583
- public function fixLocalhostIp($ip) {
584
- if (trim($ip) == '::1') {
585
- $ip = '127.0.0.1';
586
- }
587
- return $ip;
588
- }
 
589
 
 
 
 
590
  }
591
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+
3
  if (!defined('ABSPATH')) {
4
  exit();
5
  }
6
 
7
  class WpdiscuzHelper implements WpDiscuzConstants {
8
 
9
+ private static $spoilerPattern = '@\[(\[?)(spoiler)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)@is';
10
  private $optionsSerialized;
11
  private $dbManager;
12
  private $wpdiscuzForm;
13
+ private static $current_time;
14
 
15
  public function __construct($optionsSerialized, $dbManager, $wpdiscuzForm) {
16
  $this->optionsSerialized = $optionsSerialized;
17
  $this->dbManager = $dbManager;
18
  $this->wpdiscuzForm = $wpdiscuzForm;
19
+ self::$current_time = current_time('timestamp');
20
  add_filter('the_champ_login_interface_filter', array(&$this, 'wpDiscuzSuperSocializerLogin'), 15, 2);
21
  add_action('wpdiscuz_form_bottom', array(&$this, 'formBottom'), 10, 4);
22
  add_filter('pre_comment_user_ip', array(&$this, 'fixLocalhostIp'), 10);
107
  if (is_ssl() && $this->optionsSerialized->commentLinkFilter == 2 && !strstr($matches[1], 'https://')) {
108
  $url = str_replace('http://', 'https://', $url);
109
  }
110
+ $url = esc_url($url);
111
+ return '<a rel="nofollow" target="_blank" href="' . $url . '"><img alt="comment image" src="' . $url . '" /></a>';
112
  }
113
 
114
  /**
117
  * @return type
118
  */
119
  public static function isPostedToday($comment) {
120
+ if (is_object($comment)) {
121
  return date('Ymd', strtotime(current_time('Ymd'))) <= date('Ymd', strtotime($comment->comment_date));
122
  } else {
123
  return date('Ymd', strtotime(current_time('Ymd'))) <= date('Ymd', strtotime($comment));
128
  * check if comment is still editable or not
129
  * return boolean
130
  */
131
+ public function isCommentEditable($comment) {
132
  $editableTimeLimit = isset($this->optionsSerialized->commentEditableTime) ? $this->optionsSerialized->commentEditableTime : 0;
133
  $commentTimestamp = strtotime($comment->comment_date);
134
+ $timeDiff = (self::$current_time - $commentTimestamp);
135
  $editableTimeLimit = ($editableTimeLimit == 'unlimit') ? $timeDiff + 1 : intval($editableTimeLimit);
136
  return $editableTimeLimit && ($timeDiff < $editableTimeLimit);
137
  }
173
  }
174
 
175
  public function superSocializerFix() {
176
+ $output = '';
177
  if (function_exists('the_champ_login_button')) {
178
+ $output .= '<div id="comments" style="width: 0;height: 0;clear: both;margin: 0;padding: 0;"></div>';
179
+ $output .= '<div id="respond" class="comments-area">';
180
+ } else {
181
+ $output .= '<div id="comments" class="comments-area">';
182
+ $output .= '<div id="respond" style="width: 0;height: 0;clear: both;margin: 0;padding: 0;"></div>';
183
+ }
184
+ echo $output;
185
+ }
 
 
 
 
 
 
186
 
187
+ public static function getCommentExcerpt($commentContent, $uniqueId, $optionsSerialized) {
188
+ $readMoreLink = '<span id="wpdiscuz-readmore-' . $uniqueId . '"><span class="wpdiscuz-hellip">&hellip;&nbsp;</span><span class="wpdiscuz-readmore" title="' . $optionsSerialized->phrases['wc_read_more'] . '">' . $optionsSerialized->phrases['wc_read_more'] . '</span></span>';
189
+ return "<p>" . wp_trim_words($commentContent, $optionsSerialized->commentReadMoreLimit, $readMoreLink) . "</p>";
190
+ }
 
 
 
191
 
192
+ public function isLoadWpdiscuz($post) {
193
+ if (!$post || !is_object($post) || (is_front_page() && !$this->optionsSerialized->isEnableOnHome)) {
194
+ return false;
195
+ }
196
+ $form = $this->wpdiscuzForm->getForm($post->ID);
197
+ return $form->getFormID() && (comments_open($post) || $post->comment_count) && is_singular() && post_type_supports($post->post_type, 'comments');
198
+ }
199
 
200
+ public function replaceCommentContentCode($content) {
201
+ if (is_ssl()) {
202
+ $content = preg_replace_callback('#<\s*?img[^>]*src*=*["\']?([^"\']*)[^>]+>#is', array(&$this, 'replaceImageToURL'), $content);
203
+ }
204
+ return preg_replace_callback('#`(.*?)`#is', array(&$this, 'replaceCodeContent'), stripslashes($content));
205
+ }
 
 
 
206
 
207
+ private function replaceImageToURL($matches) {
208
+ if (!strstr($matches[1], 'https://') && $this->optionsSerialized->commentLinkFilter == 1) {
209
+ return "\r\n" . $matches[1] . "\r\n";
210
+ } elseif (!strstr($matches[1], 'https://') && $this->optionsSerialized->commentLinkFilter == 2) {
211
+ return str_replace('http://', 'https://', $matches[0]);
212
+ } else {
213
+ return $matches[0];
214
+ }
215
+ }
216
 
217
+ private function replaceCodeContent($matches) {
218
+ $codeContent = trim($matches[1]);
219
+ $codeContent = str_replace(array('<', '>'), array('&lt;', '&gt;'), $codeContent);
220
+ return '<code>' . $codeContent . '</code>';
221
+ }
222
 
223
+ public static function spoiler($content) {
224
+ return preg_replace_callback(self::$spoilerPattern, array('self', '_spoiler'), $content);
225
+ }
 
 
 
 
226
 
227
+ private static function _spoiler($matches) {
228
+ $html = '<div class="wpdiscuz-spoiler-wrap">';
229
+ $title = __('Spoiler', 'wpdiscuz');
230
+ $matches[3] = str_replace(array('&#8221;', '&#8220;', '&#8243;', '&#8242;'), '"', $matches[3]);
231
+ if (preg_match('@title[^\S]*=[^\S]*"*([^\"]+)"@is', $matches[3], $titleMatch)) {
232
+ $title = trim($titleMatch[1]) ? trim($titleMatch[1]) : __('Spoiler', 'wpdiscuz');
233
+ }
234
 
235
+ $html .= '<div class="wpdiscuz-spoiler wpdiscuz-spoiler-closed"><i class="fas fa-plus" aria-hidden="true"></i>' . $title . '</div>';
236
+ $html .= '<div class="wpdiscuz-spoiler-content">' . $matches[5] . '</div>';
237
+ $html .= '</div>';
238
+ return $html;
239
+ }
 
 
240
 
241
+ public function getCurrentUserDisplayName($current_user) {
242
+ $displayName = trim($current_user->display_name);
243
+ if (!$displayName) {
244
+ $user_nicename = trim($current_user->user_nicename);
245
+ $displayName = $user_nicename ? $user_nicename : trim($current_user->user_login);
246
+ }
247
+ return $displayName;
248
+ }
 
 
 
249
 
250
+ public function registerWpDiscuzStyle($version) {
251
+ $templateDir = get_stylesheet_directory();
252
+ $wpcTemplateStyleFile = $templateDir . DIRECTORY_SEPARATOR . 'wpdiscuz' . DIRECTORY_SEPARATOR . 'wpdiscuz.css';
253
+ $wpdiscuzStyleURL = plugins_url(WPDISCUZ_DIR_NAME . '/assets/css/wpdiscuz.css');
254
+ if (file_exists($wpcTemplateStyleFile)) {
255
+ $wpdiscuzStyleURL = get_stylesheet_directory_uri() . '/wpdiscuz/wpdiscuz.css';
256
+ } elseif (file_exists(get_template_directory() . DIRECTORY_SEPARATOR . 'wpdiscuz' . DIRECTORY_SEPARATOR . 'wpdiscuz.css')) {
257
+ $wpdiscuzStyleURL = get_template_directory_uri() . '/wpdiscuz/wpdiscuz.css';
258
+ }
259
+ wp_register_style('wpdiscuz-frontend-css', $wpdiscuzStyleURL, null, $version);
260
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
 
262
+ public function wpDiscuzSuperSocializerLogin($html, $theChampLoginOptions) {
263
+ global $wp_current_filter;
264
+ if (in_array('comment_form_top', $wp_current_filter) && isset($theChampLoginOptions['providers']) && is_array($theChampLoginOptions['providers']) && count($theChampLoginOptions['providers']) > 0) {
265
+ $html = '<style type="text/css">#wpcomm .wc_social_plugin_wrapper .wp-social-login-connect-with_by_the_champ{float:left;font-size:13px;padding:5px 7px 0 0;text-transform:uppercase}#wpcomm .wc_social_plugin_wrapper ul.wc_social_login_by_the_champ{list-style:none outside none!important;margin:0!important;padding-left:0!important}#wpcomm .wc_social_plugin_wrapper ul.wc_social_login_by_the_champ .theChampLogin{width:24px!important;height:24px!important}#wpcomm .wc-secondary-forms-social-content ul.wc_social_login_by_the_champ{list-style:none outside none!important;margin:0!important;padding-left:0!important}#wpcomm .wc-secondary-forms-social-content ul.wc_social_login_by_the_champ .theChampLogin{width:24px!important;height:24px!important}#wpcomm .wc-secondary-forms-social-content ul.wc_social_login_by_the_champ li{float:right!important}#wpcomm .wc_social_plugin_wrapper .theChampFacebookButton{ display:block!important; }#wpcomm .theChampTwitterButton{background-position:-4px -68px!important}#wpcomm .theChampGoogleButton{background-position:-36px -2px!important}#wpcomm .theChampVkontakteButton{background-position:-35px -67px!important}#wpcomm .theChampLinkedinButton{background-position:-34px -34px!important;}.theChampCommentingTabs #wpcomm li{ margin:0px 1px 10px 0px!important; }</style>';
266
+ $html .= '<div class="wp-social-login-widget">';
267
+ $html .= '<div class="wp-social-login-connect-with_by_the_champ">' . $this->optionsSerialized->phrases['wc_connect_with'] . ':</div>';
268
+ $html .= '<div class="wp-social-login-provider-list">';
269
+ if (isset($theChampLoginOptions['gdpr_enable'])) {
270
+ $html .= '<div class="heateor_ss_sl_optin_container"><label><input type="checkbox" class="heateor_ss_social_login_optin" value="1" />' . str_replace($theChampLoginOptions['ppu_placeholder'], '<a href="' . $theChampLoginOptions['privacy_policy_url'] . '" target="_blank">' . $theChampLoginOptions['ppu_placeholder'] . '</a>', wp_strip_all_tags($theChampLoginOptions['privacy_policy_optin_text'])) . '</label></div>';
271
+ }
272
+ $html .= '<ul class="wc_social_login_by_the_champ">';
273
+ foreach ($theChampLoginOptions['providers'] as $provider) {
274
+ $html .= '<li><i ';
275
+ if ($provider == 'google') {
276
+ $html .= 'id="theChamp' . ucfirst($provider) . 'Button" ';
277
  }
278
+ $html .= 'class="theChampLogin theChamp' . ucfirst($provider) . 'Background theChamp' . ucfirst($provider) . 'Login" ';
279
+ $html .= 'alt="Login with ';
280
+ $html .= ucfirst($provider);
281
+ $html .= '" title="Login with ';
282
+ if ($provider == 'live') {
283
+ $html .= 'Windows Live';
 
 
284
  } else {
285
+ $html .= ucfirst($provider);
286
  }
287
+ $html .= '" onclick="theChampCommentFormLogin = true; theChampInitiateLogin(this)" >';
288
+ $html .= '<ss style="display:block" class="theChampLoginSvg theChamp' . ucfirst($provider) . 'LoginSvg"></ss></i></li>';
289
  }
290
+ $html .= '</ul><div class="wpdiscuz_clear"></div></div></div>';
291
+ }
292
+ return $html;
293
+ }
294
 
295
+ public static function getCurrentUser() {
296
+ global $user_ID;
297
+ if ($user_ID) {
298
+ $user = get_userdata($user_ID);
299
+ } else {
300
+ $user = wp_set_current_user(0);
301
+ }
302
+ return $user;
303
+ }
304
 
305
+ public function canUserEditComment($comment, $currentUser, $commentListArgs = array()) {
306
+ $currentIP = $this->getRealIPAddr();
307
+ if (isset($commentListArgs['comment_author_email'])) {
308
+ $storedCookieEmail = $commentListArgs['comment_author_email'];
309
+ } else {
310
+ $storedCookieEmail = isset($_COOKIE['comment_author_email_' . COOKIEHASH]) ? $_COOKIE['comment_author_email_' . COOKIEHASH] : '';
311
+ }
312
+ return ($storedCookieEmail == $comment->comment_author_email && $currentIP == $comment->comment_author_IP) || ($currentUser && $currentUser->ID && $currentUser->ID == $comment->user_id);
313
+ }
314
 
315
+ public function addCommentTypes($args) {
316
+ $args[self::WPDISCUZ_STICKY_COMMENT] = __('Sticky', 'woodiscuz');
317
+ return $args;
318
+ }
 
 
 
 
 
 
 
 
 
 
 
319
 
320
+ public function commentRowStickAction($actions, $comment) {
321
+ if (!$comment->comment_parent) {
322
+ $stickText = $comment->comment_type == self::WPDISCUZ_STICKY_COMMENT ? $this->optionsSerialized->phrases['wc_unstick_comment'] : $this->optionsSerialized->phrases['wc_stick_comment'];
323
+ if ($comment->comment_karma) {
324
+ $closeText = $this->optionsSerialized->phrases['wc_open_comment'];
325
+ $closeIcon = 'fa-lock';
326
+ } else {
327
+ $closeText = $this->optionsSerialized->phrases['wc_close_comment'];
328
+ $closeIcon = 'fa-unlock';
329
+ }
330
+ $actions['stick'] = '<a data-comment="' . $comment->comment_ID . '" data-post="' . $comment->comment_post_ID . '" class="wc_stick_btn" href="#"> <i class="fas fa-thumbtack"></i> <span class="wc_stick_text">' . $stickText . '</span></a>';
331
+ $actions['close'] = '<a data-comment="' . $comment->comment_ID . '" data-post="' . $comment->comment_post_ID . '" class="wc_close_btn" href="#"> <i class="fas ' . $closeIcon . '"></i> <span class="wc_close_text">' . $closeText . '</span></a>';
332
+ }
333
+ return $actions;
334
+ }
335
 
336
+ public function wpdDeactivationReasonModal() {
337
+ include_once WPDISCUZ_DIR_PATH . '/utils/deactivation-reason-modal.php';
338
+ }
 
 
 
339
 
340
+ public function disableAddonsDemo() {
341
+ if (current_user_can('manage_options') && isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], 'disableAddonsDemo') && isset($_GET['show'])) {
342
+ update_option(self::OPTION_SLUG_SHOW_DEMO, intval($_GET['show']));
343
+ wp_redirect(admin_url('edit-comments.php?page=' . WpdiscuzCore::PAGE_SETTINGS));
344
+ }
345
+ }
 
 
 
 
 
 
 
 
346
 
347
+ public function getCommentDate($comment) {
348
+ if ($this->optionsSerialized->simpleCommentDate) {
349
+ $dateFormat = $this->optionsSerialized->wordpressDateFormat;
350
+ $timeFormat = $this->optionsSerialized->wordpressTimeFormat;
351
+ if (self::isPostedToday($comment)) {
352
+ $postedDate = $this->optionsSerialized->phrases['wc_posted_today_text'] . ' ' . mysql2date($timeFormat, $comment->comment_date);
353
+ } else {
354
+ $postedDate = get_comment_date($dateFormat . ' ' . $timeFormat, $comment->comment_ID);
 
 
 
 
 
355
  }
356
+ } else {
357
+ $postedDate = $this->dateDiff($comment->comment_date_gmt);
358
+ }
359
+ return $postedDate;
360
+ }
361
 
362
+ public function getPostDate($post) {
363
+ if ($this->optionsSerialized->simpleCommentDate) {
364
+ $dateFormat = $this->optionsSerialized->wordpressDateFormat;
365
+ $timeFormat = $this->optionsSerialized->wordpressTimeFormat;
366
+ if ($this->isPostPostedToday($post)) {
367
+ $postedDate = $this->optionsSerialized->phrases['wc_posted_today_text'] . ' ' . mysql2date($timeFormat, $post->post_date);
368
+ } else {
369
+ $postedDate = get_the_date($dateFormat . ' ' . $timeFormat, $post);
 
 
 
 
 
370
  }
371
+ } else {
372
+ $postedDate = $this->dateDiff($post->post_date_gmt);
373
+ }
374
+ return $postedDate;
375
+ }
376
 
377
+ public function getDate($comment) {
378
+ if ($this->optionsSerialized->simpleCommentDate) {
379
+ $dateFormat = $this->optionsSerialized->wordpressDateFormat;
380
+ $timeFormat = $this->optionsSerialized->wordpressTimeFormat;
381
+ if (self::isPostedToday($comment)) {
382
+ $postedDate = $this->optionsSerialized->phrases['wc_posted_today_text'] . ' ' . mysql2date($timeFormat, $comment);
383
+ } else {
384
+ $postedDate = date($dateFormat . ' ' . $timeFormat, strtotime($comment));
385
  }
386
+ } else {
387
+ $postedDate = $this->dateDiff($comment);
388
+ }
389
+ return $postedDate;
390
+ }
391
 
392
+ private function isPostPostedToday($post) {
393
+ return date('Ymd', strtotime(current_time('Ymd'))) <= date('Ymd', strtotime($post->post_date));
394
+ }
395
 
396
+ public function formBottom($isMain, $form, $currentUser, $commentsCount) {
397
+ include_once WPDISCUZ_DIR_PATH . '/utils/form-bottom-statistics.php';
398
+ }
 
 
 
 
 
 
 
399
 
400
+ public function wpdGetInfo() {
401
+ $response = '';
402
+ $currentUser = self::getCurrentUser();
403
+ if ($currentUser && $currentUser->ID) {
404
+ $currentUserId = $currentUser->ID;
405
+ $currentUserEmail = $currentUser->user_email;
406
+ } else {
407
+ $currentUserId = 0;
408
+ $currentUserEmail = isset($_COOKIE['comment_author_email_' . COOKIEHASH]) ? $_COOKIE['comment_author_email_' . COOKIEHASH] : '';
409
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
410
 
411
+ if (is_user_logged_in()) {
412
+ $response .= "<div class='wpd-wrapper'>";
413
+ $response .= "<ul class='wpd-list'>";
414
+ $response .= $this->getActivityTitleHtml();
415
+ $response .= $this->getSubscriptionsTitleHtml();
416
+ $response .= $this->getFollowsTitleHtml();
417
+ $response .= "</ul>";
418
+ $response .= "<div class='wpd-content'>";
419
+ $response .= $this->getActivityContentHtml($currentUserId, $currentUserEmail);
420
+ $response .= $this->getSubscriptionsContentHtml($currentUserId, $currentUserEmail);
421
+ $response .= $this->getFollowsContentHtml($currentUserId, $currentUserEmail);
422
+ $response .= "</div>";
423
+ $response .= "<div class='wpd-user-email-delete-links-wrap'>";
424
+ $response .= "<a href='#' class='wpd-user-email-delete-links wpd-not-clicked'>";
425
+ $response .= $this->optionsSerialized->phrases['wc_user_settings_email_me_delete_links'];
426
+ $response .= "<span class='wpd-loading wpd-hide'><i class='fas fa-pulse fa-spinner'></i></span>";
427
+ $response .= "</a>";
428
+ $response .= "<div class='wpd-bulk-desc'>" . $this->optionsSerialized->phrases['wc_user_settings_email_me_delete_links_desc'] . "</div>";
429
+ $response .= "</div>";
430
+ $response .= "</div>";
431
+ } else if ($currentUserEmail) {
432
+ $commentBtn = $this->getDeleteAllCommentsButton($currentUserEmail);
433
+ $subscribeBtn = $this->getDeleteAllSubscriptionsButton($currentUserEmail);
434
+ $cookieBtnClass = !$commentBtn && !$subscribeBtn ? 'wpd-show' : 'wpd-hide';
435
+ $response .= "<div class='wpd-wrapper wpd-guest-settings'>";
436
+ $response .= $commentBtn;
437
+ $response .= $subscribeBtn;
438
+ $response .= $this->deleteCookiesButton($currentUserEmail, $cookieBtnClass);
439
+ $response .= "</div>";
440
+ } else {
441
+ $response .= "<div class='wpd-wrapper'>";
442
+ $response .= $this->optionsSerialized->phrases['wc_user_settings_no_data'];
443
+ $response .= "</div>";
444
+ }
445
+ wp_die($response);
446
+ }
447
 
448
+ private function getDeleteAllCommentsButton($email) {
449
+ $html = '';
450
+ if (!is_email($email)) {
451
+ return $html;
452
+ }
453
+ $commentCount = get_comments(array('author_email' => $email, 'count' => true));
454
+ if ($commentCount) {
455
+ $html .= '<div class="wpd-user-settings-button-wrap">';
456
+ $html .= '<div class="wpd-user-settings-button wpd-delete-all-comments wpd-not-clicked" data-wpd-delete-action="deleteComments">';
457
+ $html .= $this->optionsSerialized->phrases['wc_user_settings_request_deleting_comments'];
458
+ $html .= '<span class="wpd-loading wpd-hide"><i class="fas fa-spinner fa-pulse"></i></span>';
459
+ $html .= '</div>';
460
+ $html .= '</div>';
461
+ }
462
+ return $html;
463
+ }
464
 
465
+ private function getDeleteAllSubscriptionsButton($email) {
466
+ $html = '';
467
+ if (!is_email($email)) {
468
+ return $html;
469
+ }
470
+ $subscriptions = $this->dbManager->getSubscriptions($email, 1, 0);
471
+ if ($subscriptions) {
472
+ $html .= '<div class="wpd-user-settings-button-wrap">';
473
+ $html .= '<div class="wpd-user-settings-button wpd-delete-all-subscriptions wpd-not-clicked" data-wpd-delete-action="deleteSubscriptions">';
474
+ $html .= $this->optionsSerialized->phrases['wc_user_settings_cancel_subscriptions'];
475
+ $html .= '<span class="wpd-loading wpd-hide"><i class="fas fa-spinner fa-pulse"></i></span>';
476
+ $html .= '</div>';
477
+ $html .= '</div>';
478
+ }
479
+ return $html;
480
+ }
481
 
482
+ private function deleteCookiesButton($email, $cookieBtnClass) {
483
+ $html = '';
484
+ if (!is_email($email)) {
485
+ return $html;
486
+ }
487
+ $html .= '<div class="wpd-user-settings-button-wrap ' . $cookieBtnClass . '">';
488
+ $html .= '<div class="wpd-user-settings-button wpd-delete-all-cookies wpd-not-clicked" data-wpd-delete-action="deleteCookies">';
489
+ $html .= $this->optionsSerialized->phrases['wc_user_settings_clear_cookie'];
490
+ $html .= '<span class="wpd-loading wpd-hide"><i class="fas fa-spinner fa-pulse"></i></span>';
491
+ $html .= '</div>';
492
+ $html .= '</div>';
493
+ return $html;
494
+ }
495
 
496
+ private function getActivityTitleHtml() {
497
+ ob_start();
498
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/activity/title.php';
499
+ return ob_get_clean();
500
+ }
 
501
 
502
+ private function getActivityContentHtml($currentUserId, $currentUserEmail) {
503
+ $html = "<div id='wpd-content-item-1' class='wpd-content-item'>";
504
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/activity/content.php';
505
+ $html .= "</div>";
506
+ return $html;
507
+ }
508
 
509
+ public function getActivityPage() {
510
+ ob_start();
511
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/activity/activity-page.php';
512
+ $html = ob_get_clean();
513
+ wp_die($html);
514
+ }
515
 
516
+ private function getSubscriptionsTitleHtml() {
517
+ ob_start();
518
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/subscriptions/title.php';
519
+ return ob_get_clean();
520
+ }
 
521
 
522
+ private function getSubscriptionsContentHtml($currentUserId, $currentUserEmail) {
523
+ $html = "<div id='wpd-content-item-2' class='wpd-content-item'>";
524
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/subscriptions/content.php';
525
+ $html .= "</div>";
526
+ return $html;
527
+ }
528
 
529
+ public function getSubscriptionsPage() {
530
+ ob_start();
531
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/subscriptions/subscriptions-page.php';
532
+ $html = ob_get_clean();
533
+ wp_die($html);
534
+ }
535
 
536
+ private function getFollowsTitleHtml() {
537
+ ob_start();
538
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/follows/title.php';
539
+ return ob_get_clean();
540
+ }
 
541
 
542
+ private function getFollowsContentHtml($currentUserId, $currentUserEmail) {
543
+ $html = "<div id='wpd-content-item-3' class='wpd-content-item'>";
544
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/follows/content.php';
545
+ $html .= "</div>";
546
+ return $html;
547
+ }
548
 
549
+ public function getFollowsPage() {
550
+ ob_start();
551
+ include_once WPDISCUZ_DIR_PATH . '/utils/layouts/follows/follows-page.php';
552
+ $html = ob_get_clean();
553
+ wp_die($html);
554
+ }
 
 
 
 
 
 
 
555
 
556
+ public function hashVotesNote() {
557
+ if (current_user_can('manage_options')) {
558
+ if ($this->dbManager->getNotHashedIpCount()) {
559
+ $page = isset($_GET['page']) ? $_GET['page'] : '';
560
+ if ($page != self::PAGE_TOOLS) {
561
+ $goToHashUrl = get_admin_url(WpdiscuzCore::$CURRENT_BLOG_ID, 'edit-comments.php?page=') . self::PAGE_TOOLS . '#toolsTab4';
562
+ $html = "<div class='error' style='padding:10px;'>";
563
+ $html .= "<p>" . __('Before using wpDiscuz you should update your data', $goToHashUrl) . "</p>";
564
+ $html .= "<a class='' href='$goToHashUrl'>" . __('Go to update data', 'wpdiscuz') . "</a>";
565
+ $html .= "</div>";
566
+ echo $html;
567
  }
 
568
  }
569
+ }
570
+ }
571
 
572
+ public static function fixEmailFrom($domain) {
573
+ $domain = strtolower($domain);
574
+ if (substr($domain, 0, 4) == 'www.') {
575
+ $domain = substr($domain, 4);
576
+ }
577
+ return $domain;
578
+ }
579
 
580
+ public function fixLocalhostIp($ip) {
581
+ if (trim($ip) == '::1') {
582
+ $ip = '127.0.0.1';
583
  }
584
+ return $ip;
585
+ }
586
+
587
+ public function getTwitterShareContent($comment_content, $commentLink) {
588
+ $commentLinkLength = strlen($commentLink);
589
+ $twitt_content = '';
590
+ if ($commentLinkLength < 110) {
591
+ $twitt_content = esc_attr(strip_tags($comment_content));
592
+ $length = strlen($twitt_content);
593
+ $twitt_content = function_exists('mb_substr') ? mb_substr($twitt_content, 0, 135 - $commentLinkLength) : substr($twitt_content, 0, 135 - $commentLinkLength);
594
+ if (strlen($twitt_content) < $length) {
595
+ $twitt_content .= '... ';
596
+ }
597
+ $twitt_content = urlencode($twitt_content);
598
+ }
599
+ return $twitt_content;
600
+ }
601
+
602
+ }
utils/class.WpdiscuzHelperEmail.php CHANGED
@@ -16,9 +16,17 @@ class WpdiscuzHelperEmail implements WpDiscuzConstants {
16
 
17
  public function addSubscription() {
18
  global $wp_rewrite;
 
 
 
 
 
 
 
 
 
19
  $currentUser = WpdiscuzHelper::getCurrentUser();
20
  $subscribeFormNonce = filter_input(INPUT_POST, 'wpdiscuz_subscribe_form_nonce');
21
- $httpReferer = filter_input(INPUT_POST, '_wp_http_referer');
22
  $subscriptionType = filter_input(INPUT_POST, 'wpdiscuzSubscriptionType');
23
  $postId = filter_input(INPUT_POST, 'wpdiscuzSubscriptionPostId');
24
  $showSubscriptionBarAgreement = filter_input(INPUT_POST, 'show_subscription_agreement', FILTER_SANITIZE_NUMBER_INT);
@@ -31,8 +39,8 @@ class WpdiscuzHelperEmail implements WpDiscuzConstants {
31
  if (!$currentUser->exists() && $form->isShowSubscriptionBarAgreement() && !$showSubscriptionBarAgreement && ($subscriptionType == WpdiscuzCore::SUBSCRIPTION_POST || $subscriptionType == WpdiscuzCore::SUBSCRIPTION_ALL_COMMENT)) {
32
  $email = '';
33
  }
34
- $success = 0;
35
- if (wp_verify_nonce($subscribeFormNonce, 'wpdiscuz_subscribe_form_nonce_action') && $email && filter_var($email, FILTER_VALIDATE_EMAIL) !== false && in_array($subscriptionType, array(self::SUBSCRIPTION_POST, self::SUBSCRIPTION_ALL_COMMENT)) && $postId) {
36
  $noNeedMemberConfirm = ($currentUser->ID && $this->optionsSerialized->disableMemberConfirm);
37
  $noNeedGuestsConfirm = (!$currentUser->ID && $this->optionsSerialized->disableGuestsConfirm);
38
  if ($noNeedMemberConfirm || $noNeedGuestsConfirm) {
@@ -120,12 +128,8 @@ class WpdiscuzHelperEmail implements WpDiscuzConstants {
120
  $post = get_post($comment->comment_post_ID);
121
  $postAuthor = get_userdata($post->post_author);
122
 
123
- if ($emailData['email'] == $postAuthor->user_email) {
124
- if (get_option('moderation_notify') && !$comment->comment_approved) {
125
- return;
126
- } else if (get_option('comments_notify') && $comment->comment_approved) {
127
- return;
128
- }
129
  }
130
  $sendMail = apply_filters('wpdiscuz_email_notification', true, $emailData, $comment);
131
  if ($sendMail) {
@@ -494,7 +498,7 @@ class WpdiscuzHelperEmail implements WpDiscuzConstants {
494
  );
495
 
496
  foreach ($followersData as $followerData) {
497
- if (($followerData['follower_email'] == $postAuthor->user_email) && (($moderationNotify && !$comment->comment_approved) || ($commentsNotify && $comment->comment_approved))) {
498
  return;
499
  }
500
  if (strpos($message, '[COMMENT_AUTHOR]') !== false) {
16
 
17
  public function addSubscription() {
18
  global $wp_rewrite;
19
+ $success = 0;
20
+ $httpReferer = filter_input(INPUT_POST, '_wp_http_referer');
21
+ if (!current_user_can('moderate_comments') && $key = trim($this->optionsSerialized->antispamKey)) {
22
+ if (!isset($_POST['ahk']) || (!($ahk = trim($_POST['ahk'])) || $key != $ahk)) {
23
+ $httpReferer .= $wp_rewrite->using_permalinks() ? "?wpdiscuzUrlAnchor&subscriptionSuccess=$success&subscriptionID=0#wc_unsubscribe_message" : "&wpdiscuzUrlAnchor&subscriptionSuccess=$success#wc_unsubscribe_message";
24
+ wp_redirect($httpReferer);
25
+ exit();
26
+ }
27
+ }
28
  $currentUser = WpdiscuzHelper::getCurrentUser();
29
  $subscribeFormNonce = filter_input(INPUT_POST, 'wpdiscuz_subscribe_form_nonce');
 
30
  $subscriptionType = filter_input(INPUT_POST, 'wpdiscuzSubscriptionType');
31
  $postId = filter_input(INPUT_POST, 'wpdiscuzSubscriptionPostId');
32
  $showSubscriptionBarAgreement = filter_input(INPUT_POST, 'show_subscription_agreement', FILTER_SANITIZE_NUMBER_INT);
39
  if (!$currentUser->exists() && $form->isShowSubscriptionBarAgreement() && !$showSubscriptionBarAgreement && ($subscriptionType == WpdiscuzCore::SUBSCRIPTION_POST || $subscriptionType == WpdiscuzCore::SUBSCRIPTION_ALL_COMMENT)) {
40
  $email = '';
41
  }
42
+ $addSubscription = apply_filters('wpdiscuz_before_subscription_added', true);
43
+ if ($addSubscription && wp_verify_nonce($subscribeFormNonce, 'wpdiscuz_subscribe_form_nonce_action') && $email && filter_var($email, FILTER_VALIDATE_EMAIL) !== false && in_array($subscriptionType, array(self::SUBSCRIPTION_POST, self::SUBSCRIPTION_ALL_COMMENT)) && $postId) {
44
  $noNeedMemberConfirm = ($currentUser->ID && $this->optionsSerialized->disableMemberConfirm);
45
  $noNeedGuestsConfirm = (!$currentUser->ID && $this->optionsSerialized->disableGuestsConfirm);
46
  if ($noNeedMemberConfirm || $noNeedGuestsConfirm) {
128
  $post = get_post($comment->comment_post_ID);
129
  $postAuthor = get_userdata($post->post_author);
130
 
131
+ if ($emailData['email'] == $postAuthor->user_email && ((get_option('moderation_notify') && $comment->comment_approved !== '1') || (get_option('comments_notify') && $comment->comment_approved === '1'))) {
132
+ return;
 
 
 
 
133
  }
134
  $sendMail = apply_filters('wpdiscuz_email_notification', true, $emailData, $comment);
135
  if ($sendMail) {
498
  );
499
 
500
  foreach ($followersData as $followerData) {
501
+ if (($followerData['follower_email'] == $postAuthor->user_email) && (($moderationNotify && $comment->comment_approved === '0') || ($commentsNotify && $comment->comment_approved === '1'))) {
502
  return;
503
  }
504
  if (strpos($message, '[COMMENT_AUTHOR]') !== false) {
utils/class.WpdiscuzHelperOptimization.php CHANGED
@@ -71,12 +71,14 @@ class WpdiscuzHelperOptimization implements WpDiscuzConstants {
71
  * @param type $commentId the current comment id
72
  * @return type comment
73
  */
74
- public function getCommentRoot($commentId) {
75
  $comment = get_comment($commentId);
76
- if ($comment && $comment->comment_parent) {
77
- return $this->getCommentRoot($comment->comment_parent);
78
- } else {
79
- return $comment;
 
 
80
  }
81
  }
82
 
71
  * @param type $commentId the current comment id
72
  * @return type comment
73
  */
74
+ public function getCommentRoot($commentId, $commentStatusIn) {
75
  $comment = get_comment($commentId);
76
+ if (in_array($comment->comment_approved, $commentStatusIn)) {
77
+ if ($comment && $comment->comment_parent) {
78
+ return $this->getCommentRoot($comment->comment_parent, $commentStatusIn);
79
+ } else {
80
+ return $comment;
81
+ }
82
  }
83
  }
84
 
utils/layouts/activity/activity-page.php CHANGED
@@ -33,7 +33,7 @@ if ($action && $currentUserEmail) {
33
  $pCount = intval($allComments / $perPage);
34
  $pageCount = ($allComments % $perPage == 0) ? $pCount : $pCount + 1;
35
  foreach ($items as $item) {
36
- include 'item.php';
37
  }
38
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
39
  ?>
33
  $pCount = intval($allComments / $perPage);
34
  $pageCount = ($allComments % $perPage == 0) ? $pCount : $pCount + 1;
35
  foreach ($items as $item) {
36
+ include WPDISCUZ_DIR_PATH . '/utils/layouts/activity/item.php';
37
  }
38
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
39
  ?>
utils/layouts/activity/content.php CHANGED
@@ -22,7 +22,7 @@ if ($items && is_array($items)) {
22
  $pageCount = ($itemsCount % $perPage == 0) ? $pCount : $pCount + 1;
23
  $page = 0;
24
  foreach ($items as $item) {
25
- include 'item.php';
26
  }
27
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
28
  ?>
22
  $pageCount = ($itemsCount % $perPage == 0) ? $pCount : $pCount + 1;
23
  $page = 0;
24
  foreach ($items as $item) {
25
+ include WPDISCUZ_DIR_PATH . '/utils/layouts/activity/item.php';
26
  }
27
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
28
  ?>
utils/layouts/follows/content.php CHANGED
@@ -18,7 +18,7 @@ if ($items && is_array($items)) {
18
  $fPostId = $item->post_id;
19
  $fKey = $item->activation_key;
20
  $postedDate = $this->getDate($item->follow_date);
21
- include 'item.php';
22
  }
23
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
24
  ?>
18
  $fPostId = $item->post_id;
19
  $fKey = $item->activation_key;
20
  $postedDate = $this->getDate($item->follow_date);
21
+ include WPDISCUZ_DIR_PATH . '/utils/layouts/follows/item.php';
22
  }
23
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
24
  ?>
utils/layouts/follows/follows-page.php CHANGED
@@ -22,7 +22,7 @@ if ($action && $currentUser && $currentUser->ID) {
22
  $fPostId = $item->post_id;
23
  $fKey = $item->activation_key;
24
  $postedDate = $this->getDate($item->follow_date);
25
- include 'item.php';
26
  }
27
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
28
  ?>
22
  $fPostId = $item->post_id;
23
  $fKey = $item->activation_key;
24
  $postedDate = $this->getDate($item->follow_date);
25
+ include WPDISCUZ_DIR_PATH . '/utils/layouts/follows/item.php';
26
  }
27
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
28
  ?>
utils/layouts/subscriptions/content.php CHANGED
@@ -38,7 +38,7 @@ if ($items && is_array($items)) {
38
  }
39
 
40
  if ($object && !is_wp_error($object)) {
41
- include 'item.php';
42
  }
43
  }
44
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
38
  }
39
 
40
  if ($object && !is_wp_error($object)) {
41
+ include WPDISCUZ_DIR_PATH . '/utils/layouts/subscriptions/item.php';
42
  }
43
  }
44
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
utils/layouts/subscriptions/subscriptions-page.php CHANGED
@@ -49,7 +49,7 @@ if ($action && $currentUserEmail) {
49
  }
50
 
51
  if ($object && !is_wp_error($object)) {
52
- include 'item.php';
53
  }
54
  }
55
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';
49
  }
50
 
51
  if ($object && !is_wp_error($object)) {
52
+ include WPDISCUZ_DIR_PATH . '/utils/layouts/subscriptions/item.php';
53
  }
54
  }
55
  include WPDISCUZ_DIR_PATH . '/utils/layouts/pagination.php';