WP Product Review Lite - Version 3.7.0

Version Description

  • 2019-07-04
Download this release

Release Info

Developer codeinwp
Plugin Icon WP Product Review Lite
Version 3.7.0
Comparing to
See all releases

Code changes from version 3.6.1 to 3.7.0

Files changed (45) hide show
  1. CHANGELOG.md +7 -0
  2. assets/css/comments.css +52 -0
  3. assets/css/rating-amp.css +20 -132
  4. assets/css/style2.css +1 -1
  5. assets/css/{upsell.css → support.css} +0 -0
  6. assets/js/main.js +37 -27
  7. includes/admin/class-wppr-admin.php +38 -19
  8. includes/admin/class-wppr-global-settings.php +23 -0
  9. includes/admin/helpers/class-wppr-html-fields.php +36 -0
  10. includes/admin/layouts/support-tab.php +14 -0
  11. includes/admin/layouts/support-tpl.php +43 -0
  12. includes/admin/layouts/{upsell-tpl.php → upsell-tab.php} +0 -7
  13. includes/admin/models/class-wppr-schema-model.php +1 -1
  14. includes/class-wppr.php +3 -1
  15. includes/functions.php +66 -40
  16. includes/public/class-wppr-public.php +95 -28
  17. includes/public/layouts/comment-rating-slider-tpl.php +24 -0
  18. includes/public/layouts/comment-rating-star-tpl.php +27 -0
  19. includes/public/layouts/default.php +1 -1
  20. includes/public/layouts/style1.php +1 -1
  21. includes/public/layouts/widget/default.php +1 -1
  22. package-lock.json +126 -147
  23. readme.md +14 -8
  24. readme.txt +33 -8
  25. screenshot-1.png +0 -0
  26. screenshot-2.png +0 -0
  27. screenshot-3.png +0 -0
  28. screenshot-4.png +0 -0
  29. screenshot-5.png +0 -0
  30. screenshot-6.png +0 -0
  31. screenshot-7.png +0 -0
  32. themeisle-hash.json +1 -1
  33. vendor/autoload.php +1 -1
  34. vendor/autoload_52.php +1 -1
  35. vendor/codeinwp/themeisle-sdk/CHANGELOG.md +24 -0
  36. vendor/codeinwp/themeisle-sdk/load.php +1 -1
  37. vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php +2 -2
  38. vendor/codeinwp/themeisle-sdk/src/Modules/Endpoint.php +1 -1
  39. vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php +1 -22
  40. vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php +2 -2
  41. vendor/codeinwp/themeisle-sdk/src/Product.php +7 -0
  42. vendor/composer/autoload_real.php +5 -5
  43. vendor/composer/autoload_real_52.php +3 -3
  44. vendor/composer/installed.json +6 -6
  45. wp-product-review.php +3 -2
CHANGELOG.md CHANGED
@@ -1,4 +1,11 @@
1
 
 
 
 
 
 
 
 
2
  ### v3.6.1 - 2019-05-22
3
  **Changes:**
4
  * Fix error in structured data
1
 
2
+ ### v3.7.0 - 2019-07-04
3
+ **Changes:**
4
+ * Add rating scale out of 5
5
+ * Add star rating
6
+ * Fix UI for AMP requests
7
+ * Added filter to disable comments per review
8
+
9
  ### v3.6.1 - 2019-05-22
10
  **Changes:**
11
  * Fix error in structured data
assets/css/comments.css CHANGED
@@ -148,3 +148,55 @@
148
  margin: 0 0 20px 0;
149
  }
150
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  margin: 0 0 20px 0;
149
  }
150
  }
151
+
152
+
153
+ #wppr-comment-rating-stars .wppr-comment-rating-star {
154
+ width: 20%;
155
+ }
156
+ #wppr-comment-rating-stars .wppr-comment-rating-star > input { display: none; }
157
+ #wppr-comment-rating-stars .wppr-comment-rating-star > label:before {
158
+ margin: 5px;
159
+ font-size: 1.25em;
160
+ font-family: dashicons;
161
+ display: inline-block;
162
+ content: "\f155";
163
+ }
164
+
165
+ #wppr-comment-rating-stars .wppr-comment-rating-star > .half:before {
166
+ content: "\f459";
167
+ position: absolute;
168
+ }
169
+
170
+ #wppr-comment-rating-stars .wppr-comment-rating-star.rtl > .half:before {
171
+ -webkit-transform: rotateY(180deg);
172
+ -moz-transform: rotateY(180deg);
173
+ -o-transform: rotateY(180deg);
174
+ -ms-transform: rotateY(180deg);
175
+ transform: rotateY(180deg);
176
+ }
177
+
178
+ #wppr-comment-rating-stars .wppr-comment-rating-star > label {
179
+ color: #ddd;
180
+ float: right;
181
+ }
182
+
183
+ #wppr-comment-rating-stars .wppr-comment-rating-star.rtl > label {
184
+ float: left;
185
+ }
186
+
187
+ /***** CSS Magic to Highlight Stars on Hover *****/
188
+
189
+ #wppr-comment-rating-stars .wppr-comment-rating-star > input:checked ~ label, /* show gold star when clicked */
190
+ #wppr-comment-rating-stars .wppr-comment-rating-star:not(:checked) > label:hover, /* hover current star */
191
+ #wppr-comment-rating-stars .wppr-comment-rating-star:not(:checked) > label:hover ~ label {
192
+ color: #FFD700;
193
+ cursor: pointer;
194
+ } /* hover previous stars in list */
195
+
196
+ #wppr-comment-rating-stars .wppr-comment-rating-star > input:checked + label:hover, /* hover current star when changing rating */
197
+ #wppr-comment-rating-stars .wppr-comment-rating-star > input:checked ~ label:hover,
198
+ #wppr-comment-rating-stars .wppr-comment-rating-star > label:hover ~ input:checked ~ label, /* lighten current selection */
199
+ #wppr-comment-rating-stars .wppr-comment-rating-star > input:checked ~ label:hover ~ label {
200
+ color: #FFED85;
201
+ cursor: pointer;
202
+ }
assets/css/rating-amp.css CHANGED
@@ -1,135 +1,3 @@
1
- .wppr-c100.wppr-p100 .wppr-bar {
2
- -webkit-transform: rotate(360deg);
3
- -ms-transform: rotate(360deg);
4
- transform: rotate(360deg);
5
- }
6
-
7
- .wppr-c100.wppr-p80 .wppr-bar,
8
- .wppr-c100.wppr-p81 .wppr-bar,
9
- .wppr-c100.wppr-p82 .wppr-bar,
10
- .wppr-c100.wppr-p83 .wppr-bar,
11
- .wppr-c100.wppr-p84 .wppr-bar,
12
- .wppr-c100.wppr-p85 .wppr-bar,
13
- .wppr-c100.wppr-p86 .wppr-bar,
14
- .wppr-c100.wppr-p87 .wppr-bar,
15
- .wppr-c100.wppr-p88 .wppr-bar,
16
- .wppr-c100.wppr-p89 .wppr-bar,
17
- .wppr-c100.wppr-p90 .wppr-bar,
18
- .wppr-c100.wppr-p91 .wppr-bar,
19
- .wppr-c100.wppr-p92 .wppr-bar,
20
- .wppr-c100.wppr-p93 .wppr-bar,
21
- .wppr-c100.wppr-p94 .wppr-bar,
22
- .wppr-c100.wppr-p95 .wppr-bar,
23
- .wppr-c100.wppr-p96 .wppr-bar,
24
- .wppr-c100.wppr-p97 .wppr-bar,
25
- .wppr-c100.wppr-p98 .wppr-bar,
26
- .wppr-c100.wppr-p99 .wppr-bar {
27
- -webkit-transform: rotate(324deg);
28
- -ms-transform: rotate(324deg);
29
- transform: rotate(324deg);
30
- }
31
-
32
- .wppr-c100.wppr-p60 .wppr-bar,
33
- .wppr-c100.wppr-p62 .wppr-bar,
34
- .wppr-c100.wppr-p61 .wppr-bar,
35
- .wppr-c100.wppr-p63 .wppr-bar,
36
- .wppr-c100.wppr-p64 .wppr-bar,
37
- .wppr-c100.wppr-p65 .wppr-bar,
38
- .wppr-c100.wppr-p66 .wppr-bar,
39
- .wppr-c100.wppr-p67 .wppr-bar,
40
- .wppr-c100.wppr-p68 .wppr-bar,
41
- .wppr-c100.wppr-p69 .wppr-bar,
42
- .wppr-c100.wppr-p70 .wppr-bar,
43
- .wppr-c100.wppr-p71 .wppr-bar,
44
- .wppr-c100.wppr-p71 .wppr-bar,
45
- .wppr-c100.wppr-p72 .wppr-bar,
46
- .wppr-c100.wppr-p74 .wppr-bar,
47
- .wppr-c100.wppr-p75 .wppr-bar,
48
- .wppr-c100.wppr-p76 .wppr-bar,
49
- .wppr-c100.wppr-p77 .wppr-bar,
50
- .wppr-c100.wppr-p78 .wppr-bar,
51
- .wppr-c100.wppr-p79 .wppr-bar {
52
- -webkit-transform: rotate(252deg);
53
- -ms-transform: rotate(252deg);
54
- transform: rotate(252deg);
55
- }
56
-
57
- .wppr-c100.wppr-p40 .wppr-bar,
58
- .wppr-c100.wppr-p41 .wppr-bar,
59
- .wppr-c100.wppr-p42 .wppr-bar,
60
- .wppr-c100.wppr-p43 .wppr-bar,
61
- .wppr-c100.wppr-p44 .wppr-bar,
62
- .wppr-c100.wppr-p45 .wppr-bar,
63
- .wppr-c100.wppr-p46 .wppr-bar,
64
- .wppr-c100.wppr-p47 .wppr-bar,
65
- .wppr-c100.wppr-p48 .wppr-bar,
66
- .wppr-c100.wppr-p49 .wppr-bar,
67
- .wppr-c100.wppr-p50 .wppr-bar,
68
- .wppr-c100.wppr-p51 .wppr-bar,
69
- .wppr-c100.wppr-p52 .wppr-bar,
70
- .wppr-c100.wppr-p53 .wppr-bar,
71
- .wppr-c100.wppr-p54 .wppr-bar,
72
- .wppr-c100.wppr-p55 .wppr-bar,
73
- .wppr-c100.wppr-p56 .wppr-bar,
74
- .wppr-c100.wppr-p57 .wppr-bar,
75
- .wppr-c100.wppr-p58 .wppr-bar,
76
- .wppr-c100.wppr-p59 .wppr-bar {
77
- -webkit-transform: rotate(180deg);
78
- -ms-transform: rotate(180deg);
79
- transform: rotate(180deg);
80
- }
81
-
82
- .wppr-c100.wppr-p20 .wppr-bar,
83
- .wppr-c100.wppr-p21 .wppr-bar,
84
- .wppr-c100.wppr-p22 .wppr-bar,
85
- .wppr-c100.wppr-p23 .wppr-bar,
86
- .wppr-c100.wppr-p24 .wppr-bar,
87
- .wppr-c100.wppr-p25 .wppr-bar,
88
- .wppr-c100.wppr-p26 .wppr-bar,
89
- .wppr-c100.wppr-p27 .wppr-bar,
90
- .wppr-c100.wppr-p28 .wppr-bar,
91
- .wppr-c100.wppr-p29 .wppr-bar,
92
- .wppr-c100.wppr-p30 .wppr-bar,
93
- .wppr-c100.wppr-p31 .wppr-bar,
94
- .wppr-c100.wppr-p32 .wppr-bar,
95
- .wppr-c100.wppr-p33 .wppr-bar,
96
- .wppr-c100.wppr-p34 .wppr-bar,
97
- .wppr-c100.wppr-p35 .wppr-bar,
98
- .wppr-c100.wppr-p36 .wppr-bar,
99
- .wppr-c100.wppr-p37 .wppr-bar,
100
- .wppr-c100.wppr-p38 .wppr-bar,
101
- .wppr-c100.wppr-p39 .wppr-bar {
102
- -webkit-transform: rotate(108deg);
103
- -ms-transform: rotate(108deg);
104
- transform: rotate(108deg);
105
- }
106
-
107
- .wppr-c100.wppr-p1 .wppr-bar,
108
- .wppr-c100.wppr-p2 .wppr-bar,
109
- .wppr-c100.wppr-p3 .wppr-bar,
110
- .wppr-c100.wppr-p4 .wppr-bar,
111
- .wppr-c100.wppr-p5 .wppr-bar,
112
- .wppr-c100.wppr-p6 .wppr-bar,
113
- .wppr-c100.wppr-p7 .wppr-bar,
114
- .wppr-c100.wppr-p6 .wppr-bar,
115
- .wppr-c100.wppr-p7 .wppr-bar,
116
- .wppr-c100.wppr-p8 .wppr-bar,
117
- .wppr-c100.wppr-p9 .wppr-bar,
118
- .wppr-c100.wppr-p10 .wppr-bar,
119
- .wppr-c100.wppr-p11 .wppr-bar,
120
- .wppr-c100.wppr-p12 .wppr-bar,
121
- .wppr-c100.wppr-p13 .wppr-bar,
122
- .wppr-c100.wppr-p14 .wppr-bar,
123
- .wppr-c100.wppr-p15 .wppr-bar,
124
- .wppr-c100.wppr-p16 .wppr-bar,
125
- .wppr-c100.wppr-p17 .wppr-bar,
126
- .wppr-c100.wppr-p18 .wppr-bar,
127
- .wppr-c100.wppr-p19 .wppr-bar {
128
- -webkit-transform: rotate(36deg);
129
- -ms-transform: rotate(36deg);
130
- transform: rotate(36deg);
131
- }
132
-
133
  .wppr-inline-pie-chart {
134
  position: relative;
135
  width: 120px;
@@ -145,3 +13,23 @@
145
  width: 150px;
146
  height: 150px;
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  .wppr-inline-pie-chart {
2
  position: relative;
3
  width: 120px;
13
  width: 150px;
14
  height: 150px;
15
  }
16
+
17
+
18
+ .wppr-template ul li:before {
19
+ width: auto !important;
20
+ position: initial !important;
21
+ background: none !important;
22
+ }
23
+
24
+ .wppr-template ul li, .wppr-template ol li {
25
+ position: initial !important;
26
+ list-style-type: disc;
27
+ background: none !important;
28
+ }
29
+
30
+ #review-statistics .review-wu-bars ul.wppr-weak li.colored,
31
+ #review-statistics .review-wu-bars ul.wppr-not-bad li.colored,
32
+ #review-statistics .review-wu-bars ul.wppr-good li.colored,
33
+ #review-statistics .review-wu-bars ul.wppr-very-good li.colored {
34
+ background: none !important;
35
+ }
assets/css/style2.css CHANGED
@@ -197,7 +197,7 @@ Template 2
197
  }
198
 
199
  .wppr-template-2 .wppr-review-option-rating li:before {
200
- content: "\f005";
201
  }
202
 
203
  .wppr-template-2.rtl .affiliate-button a span {
197
  }
198
 
199
  .wppr-template-2 .wppr-review-option-rating li:before {
200
+ content: "\f155";
201
  }
202
 
203
  .wppr-template-2.rtl .affiliate-button a span {
assets/css/{upsell.css → support.css} RENAMED
File without changes
assets/js/main.js CHANGED
@@ -2,33 +2,43 @@
2
  /**
3
  * Main JavaScript File
4
  */
5
- jQuery(document).ready(function ($) {
6
 
7
- $(".wppr-comment-meta-slider").each(function () {
8
- var min = 0;
9
- var max = 100;
10
- if($(this).parent(".wppr-comment-form-meta").hasClass('rtl')){
11
- min = -100;
12
- max = 0;
13
- }
14
- var comm_meta_input = $(this).parent(".wppr-comment-form-meta").children("input");
15
- $(this).slider({
16
- min: min,
17
- max: max,
18
- value: 0,
19
- slide: function (event, ui) {
20
- $(comm_meta_input).val(Math.abs(ui.value) / 10);
21
- }
22
- });
23
- });
 
 
 
 
 
 
 
 
 
24
 
25
- // Check if review image width is bigger than height.
26
- if ( $( '.wppr-template-2' ).length > 0 ) {
27
- var reviewImage = $( '.wppr-review-product-image' );
28
- if ( reviewImage.length > 0 ) {
29
- if ( reviewImage.find('img').width() > reviewImage.find('img').height() ) {
30
- reviewImage.addClass('wppr-review-product-image-full');
31
- }
32
- }
 
33
  }
34
- });
 
2
  /**
3
  * Main JavaScript File
4
  */
 
5
 
6
+ (function($, wppr_config){
7
+
8
+ $(document).ready(function(){
9
+ initAll();
10
+ });
11
+
12
+ function initAll(){
13
+ $(".wppr-comment-meta-slider").each(function () {
14
+ var min = 0;
15
+ var max = 100;
16
+ var step = wppr_config.scale / 2;
17
+ if($(this).parent(".wppr-comment-form-meta").hasClass('rtl')){
18
+ min = -100;
19
+ max = 0;
20
+ }
21
+ var comm_meta_input = $(this).parent(".wppr-comment-form-meta").children("input");
22
+ $(this).slider({
23
+ min: min,
24
+ max: max,
25
+ value: 0,
26
+ step: step,
27
+ slide: function (event, ui) {
28
+ $(comm_meta_input).val(Math.abs(ui.value) / wppr_config.scale);
29
+ }
30
+ });
31
+ });
32
 
33
+ // Check if review image width is bigger than height.
34
+ if ( $( '.wppr-template-2' ).length > 0 ) {
35
+ var reviewImage = $( '.wppr-review-product-image' );
36
+ if ( reviewImage.length > 0 ) {
37
+ if ( reviewImage.find('img').width() > reviewImage.find('img').height() ) {
38
+ reviewImage.addClass('wppr-review-product-image-full');
39
+ }
40
+ }
41
+ }
42
  }
43
+
44
+ })(jQuery, wppr_config);
includes/admin/class-wppr-admin.php CHANGED
@@ -82,10 +82,12 @@ class WPPR_Admin {
82
  wp_enqueue_style( $this->plugin_name . '-dashboard-css', WPPR_URL . '/assets/css/dashboard_styles.css', array(), $this->version );
83
  wp_enqueue_style( $this->plugin_name . '-admin-css', WPPR_URL . '/assets/css/admin.css', array(), $this->version );
84
  // fall-through
85
- case 'product-review_page_wppr_pro_upsell':
86
- wp_enqueue_style( $this->plugin_name . '-upsell-css', WPPR_URL . '/assets/css/upsell.css', array(), $this->version );
87
  break;
88
  case 'post.php':
 
 
89
  $wp_scripts = wp_scripts();
90
  wp_enqueue_style( $this->plugin_name . '-jquery-ui', sprintf( '//ajax.googleapis.com/ajax/libs/jqueryui/%s/themes/smoothness/jquery-ui.css', $wp_scripts->registered['jquery-ui-core']->ver ), array(), $this->version );
91
  break;
@@ -119,6 +121,8 @@ class WPPR_Admin {
119
  wp_enqueue_script( $this->plugin_name . '-admin-js', WPPR_URL . '/assets/js/admin.js', array( 'jquery', 'wp-color-picker' ), $this->version );
120
  break;
121
  case 'post.php':
 
 
122
  wp_enqueue_script( $this->plugin_name . '-post', WPPR_URL . '/assets/js/post.js', array( 'jquery-ui-accordion' ), $this->version );
123
  break;
124
  }
@@ -145,20 +149,18 @@ class WPPR_Admin {
145
  'dashicons-star-half',
146
  '99.87414'
147
  );
148
- if ( ! defined( 'WPPR_PRO_VERSION' ) ) {
149
- add_submenu_page(
150
- 'wppr',
151
- __( 'More Features', 'wp-product-review' ),
152
- __( 'More Features ', 'wp-product-review' ) . '<span class="dashicons
153
- dashicons-star-filled" style="vertical-align:-5px; padding-left:2px; color:#FFCA54;"></span>',
154
- 'manage_options',
155
- 'wppr_pro_upsell',
156
- array(
157
- $this,
158
- 'page_upsell',
159
- )
160
- );
161
- }
162
  }
163
 
164
  /**
@@ -174,14 +176,14 @@ class WPPR_Admin {
174
  }
175
 
176
  /**
177
- * Method to render up-sell page.
178
  *
179
  * @since 3.0.0
180
  * @access public
181
  */
182
- public function page_upsell() {
183
  $render = new WPPR_Admin_Render_Controller( $this->plugin_name, $this->version );
184
- $render->retrive_template( 'upsell' );
185
  }
186
 
187
  /**
@@ -550,4 +552,21 @@ class WPPR_Admin {
550
  add_image_size( 'wppr-widget', 50, 50 );
551
  }
552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  }
82
  wp_enqueue_style( $this->plugin_name . '-dashboard-css', WPPR_URL . '/assets/css/dashboard_styles.css', array(), $this->version );
83
  wp_enqueue_style( $this->plugin_name . '-admin-css', WPPR_URL . '/assets/css/admin.css', array(), $this->version );
84
  // fall-through
85
+ case 'product-review_page_wppr-support':
86
+ wp_enqueue_style( $this->plugin_name . '-upsell-css', WPPR_URL . '/assets/css/support.css', array(), $this->version );
87
  break;
88
  case 'post.php':
89
+ // fall through.
90
+ case 'post-new.php':
91
  $wp_scripts = wp_scripts();
92
  wp_enqueue_style( $this->plugin_name . '-jquery-ui', sprintf( '//ajax.googleapis.com/ajax/libs/jqueryui/%s/themes/smoothness/jquery-ui.css', $wp_scripts->registered['jquery-ui-core']->ver ), array(), $this->version );
93
  break;
121
  wp_enqueue_script( $this->plugin_name . '-admin-js', WPPR_URL . '/assets/js/admin.js', array( 'jquery', 'wp-color-picker' ), $this->version );
122
  break;
123
  case 'post.php':
124
+ // fall through.
125
+ case 'post-new.php':
126
  wp_enqueue_script( $this->plugin_name . '-post', WPPR_URL . '/assets/js/post.js', array( 'jquery-ui-accordion' ), $this->version );
127
  break;
128
  }
149
  'dashicons-star-half',
150
  '99.87414'
151
  );
152
+
153
+ add_submenu_page(
154
+ 'wppr',
155
+ __( 'Support', 'wp-product-review' ),
156
+ __( 'Support', 'wp-product-review' ) . '<span class="dashicons dashicons-editor-help more-features-icon" style="width: 17px; height: 17px; margin-left: 4px; color: #ffca54; font-size: 17px; vertical-align: -3px;"></span>',
157
+ 'manage_options',
158
+ 'wppr-support',
159
+ array(
160
+ $this,
161
+ 'render_support',
162
+ )
163
+ );
 
 
164
  }
165
 
166
  /**
176
  }
177
 
178
  /**
179
+ * Method to render support page.
180
  *
181
  * @since 3.0.0
182
  * @access public
183
  */
184
+ public function render_support() {
185
  $render = new WPPR_Admin_Render_Controller( $this->plugin_name, $this->version );
186
+ $render->retrive_template( 'support' );
187
  }
188
 
189
  /**
552
  add_image_size( 'wppr-widget', 50, 50 );
553
  }
554
 
555
+ /**
556
+ * On activation of the plugin
557
+ *
558
+ * @access public
559
+ */
560
+ public function on_activation( $plugin ) {
561
+ if ( defined( 'TI_UNIT_TESTING' ) ) {
562
+ return;
563
+ }
564
+
565
+ if ( $plugin === WPPR_BASENAME ) {
566
+ wp_redirect( admin_url( 'admin.php?page=wppr-support&tab=help#shortcode' ) );
567
+ exit();
568
+ }
569
+ }
570
+
571
+
572
  }
includes/admin/class-wppr-global-settings.php CHANGED
@@ -100,6 +100,29 @@ class WPPR_Global_Settings {
100
  'disabled' => ! self::enable_user_comments(),
101
  'default' => 'no',
102
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  'cwppos_infl_userreview' => array(
104
  'id' => 'comment_influence',
105
  'name' => __( 'Visitor Review Influence', 'wp-product-review' ),
100
  'disabled' => ! self::enable_user_comments(),
101
  'default' => 'no',
102
  ),
103
+ 'wppr_use_5_rating_scale' => array(
104
+ 'id' => 'use_5_rating_scale',
105
+ 'name' => __( 'Rating scale', 'wp-product-review' ),
106
+ 'description' => __( 'On what scale should reviews be rated?', 'wp-product-review' ),
107
+ 'type' => 'select',
108
+ 'default' => '10',
109
+ 'options' => array(
110
+ '5' => __( 'On 5', 'wp-product-review' ),
111
+ '10' => __( 'On 10', 'wp-product-review' ),
112
+ ),
113
+ ),
114
+ 'wppr_comment_rating' => array(
115
+ 'id' => 'comment_rating',
116
+ 'name' => __( 'Comment rating style', 'wp-product-review' ),
117
+ 'description' => __( 'What type of rating style would you like to use?', 'wp-product-review' ),
118
+ 'type' => 'select',
119
+ 'default' => 'slider',
120
+ 'options' => array(
121
+ 'slider' => __( 'Slider', 'wp-product-review' ),
122
+ 'star' => __( 'Star', 'wp-product-review' ),
123
+ ),
124
+ 'disabled' => ! self::enable_user_comments(),
125
+ ),
126
  'cwppos_infl_userreview' => array(
127
  'id' => 'comment_influence',
128
  'name' => __( 'Visitor Review Influence', 'wp-product-review' ),
includes/admin/helpers/class-wppr-html-fields.php CHANGED
@@ -341,4 +341,40 @@ class WPPR_Html_Fields {
341
  return apply_filters( 'wppr_field', $output, $args );
342
  }
343
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
344
  }
341
  return apply_filters( 'wppr_field', $output, $args );
342
  }
343
 
344
+ /**
345
+ * Render a textarea string.
346
+ *
347
+ * @since ?
348
+ * @access public
349
+ * @param array $args The settings of the input.
350
+ * @return string
351
+ */
352
+ public function textarea( $args ) {
353
+ $defaults = $this->define_defaults(
354
+ array(
355
+ 'class' => 'wppr-text-area',
356
+ )
357
+ );
358
+ $args = wp_parse_args( $args, $defaults );
359
+ $class = $this->validate_class( $args['class'] );
360
+ $disabled = '';
361
+ if ( $args['disabled'] ) {
362
+ $disabled = ' disabled="disabled"';
363
+ }
364
+ if ( is_null( $args['id'] ) ) {
365
+ $args['id'] = $args['name'];
366
+ }
367
+ if ( $args['value'] === null ) {
368
+ $args['value'] = $args['default'];
369
+ }
370
+ $rows = isset( $args['rows'] ) ? $args['rows'] : 3;
371
+ $cols = isset( $args['cols'] ) ? $args['cols'] : 50;
372
+ $output = '<textarea ' . $disabled . ' name="' . esc_attr( $args['name'] ) . '" id="' . esc_attr( $args['id'] ) . '" class="' . $class . '" placeholder="' . esc_attr( $args['placeholder'] ) . '" rows=' . $rows . ' cols=' . $cols . ' />' . esc_textarea( $args['value'] ) . '</textarea>';
373
+
374
+ if ( isset( $args['desc'] ) ) {
375
+ $output .= '<p class="desc">' . $args['desc'] . '</p>';
376
+ }
377
+
378
+ return apply_filters( 'wppr_field', $output, $args );
379
+ }
380
  }
includes/admin/layouts/support-tab.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="pro-feature">
2
+ <div class="pro-feature-inner">
3
+ <div class="pro-feature-features">
4
+ <h2>Welcome to WP Product Review</h2>
5
+ <p>WPPR makes it easy to create review posts in WordPress. We recommend watching this Getting started video, and then try the plugin for yourself by enabling the review post option in the settings menu - start configuring the plugin <a href="<?php echo admin_url( '/admin.php?page=wppr' ); ?>">here</a></p>
6
+ <p>You can also read our guide on how to set up and create your first review. Read our documentation <a href="https://docs.themeisle.com/category/754-wp-product-review" target="_new">here</a>.</p>
7
+ </div>
8
+ <div class="pro-feature-image">
9
+ <iframe width="603" height="508" src="https://www.youtube.com/embed/vEBgeIYY8UM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
10
+ </div>
11
+ <div class="clear"></div>
12
+ </div>
13
+ </div>
14
+ <div class="clear"></div>
includes/admin/layouts/support-tpl.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wppr-admin" class="wppr-settings">
2
+
3
+ <?php include WPPR_PATH . '/includes/admin/layouts/header-part.php'; ?>
4
+
5
+ <?php
6
+ $active_tab = isset( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 'help';
7
+ $show_more = ! defined( 'WPPR_PRO_VERSION' );
8
+ ?>
9
+
10
+ <h2 class="nav-tab-wrapper">
11
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=wppr-support&tab=help' ) ); ?>"
12
+ class="nav-tab <?php echo $active_tab === 'help' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Support', 'wp-product-review' ); ?></a>
13
+ <?php
14
+ if ( $show_more ) {
15
+ ?>
16
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=wppr-support&tab=more' ) ); ?>"
17
+ class="nav-tab <?php echo $active_tab === 'more' ? 'nav-tab-active' : ''; ?>"><?php _e( 'More Features', 'wp-product-review' ); ?></a>
18
+ <?php
19
+ }
20
+ ?>
21
+ </h2>
22
+
23
+ <div class="wppr-features-content">
24
+ <div class="wppr-feature">
25
+ <div class="wppr-feature-features">
26
+ <?php
27
+ switch ( $active_tab ) {
28
+ case 'help':
29
+ include WPPR_PATH . '/includes/admin/layouts/support-tab.php';
30
+ break;
31
+ case 'more':
32
+ if ( $show_more ) {
33
+ include WPPR_PATH . '/includes/admin/layouts/upsell-tab.php';
34
+ }
35
+ break;
36
+ }
37
+ ?>
38
+ <div class="clear"></div>
39
+ </div>
40
+ </div>
41
+ </div>
42
+
43
+ </div>
includes/admin/layouts/{upsell-tpl.php → upsell-tab.php} RENAMED
@@ -10,11 +10,6 @@
10
  */
11
 
12
  ?>
13
- <div id="wppr-admin">
14
-
15
- <?php
16
- include WPPR_PATH . '/includes/admin/layouts/header-part.php';
17
- ?>
18
 
19
  <div class="pro-feature">
20
  <div class="pro-feature-inner">
@@ -78,5 +73,3 @@
78
  <div class="clear"></div>
79
  </div>
80
  </div>
81
- <div class="clear"></div>
82
- </div>
10
  */
11
 
12
  ?>
 
 
 
 
 
13
 
14
  <div class="pro-feature">
15
  <div class="pro-feature-inner">
73
  <div class="clear"></div>
74
  </div>
75
  </div>
 
 
includes/admin/models/class-wppr-schema-model.php CHANGED
@@ -67,6 +67,7 @@ class WPPR_Schema_Model extends WPPR_Model_Abstract {
67
  // good for testing.
68
  // set_time_limit( 0 );
69
  $this->data_types_allowed = apply_filters( 'wppr_schema_data_types_allowed', array( 'schema:Text', 'schema:URL', 'schema:Date', 'schema:Number', 'schema:Boolean', 'schema:DateTime', 'schema:Time', 'schema:Integer', 'schema:Float', 'schema:False', 'schema:True', 'schema:QuantitativeValue', 'schema:Distance' ), $things );
 
70
  $types = get_transient( 'wppr_schema_types_' . md5( json_encode( $things ) ) );
71
  if ( $types ) {
72
  $this->types = $types;
@@ -74,7 +75,6 @@ class WPPR_Schema_Model extends WPPR_Model_Abstract {
74
  }
75
 
76
  $types = array();
77
- $things = apply_filters( 'wppr_schema_things', $things );
78
  $categories = array();
79
  foreach ( $things as $parent => $type ) {
80
  foreach ( $type as $t ) {
67
  // good for testing.
68
  // set_time_limit( 0 );
69
  $this->data_types_allowed = apply_filters( 'wppr_schema_data_types_allowed', array( 'schema:Text', 'schema:URL', 'schema:Date', 'schema:Number', 'schema:Boolean', 'schema:DateTime', 'schema:Time', 'schema:Integer', 'schema:Float', 'schema:False', 'schema:True', 'schema:QuantitativeValue', 'schema:Distance' ), $things );
70
+ $things = apply_filters( 'wppr_schema_things', $things );
71
  $types = get_transient( 'wppr_schema_types_' . md5( json_encode( $things ) ) );
72
  if ( $types ) {
73
  $this->types = $types;
75
  }
76
 
77
  $types = array();
 
78
  $categories = array();
79
  foreach ( $things as $parent => $type ) {
80
  foreach ( $type as $t ) {
includes/class-wppr.php CHANGED
@@ -67,7 +67,7 @@ class WPPR {
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
- $this->version = '3.6.1';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
@@ -140,6 +140,7 @@ class WPPR {
140
  $this->loader->add_action( 'wppr_settings_section_upsell', $plugin_admin, 'settings_section_upsell', 10, 1 );
141
  $this->loader->add_action( 'after_setup_theme', $plugin_admin, 'add_image_size' );
142
  $this->loader->add_action( 'wp_ajax_get_categories', $plugin_admin, 'get_categories' );
 
143
 
144
  $plugin_editor = new WPPR_Editor( $this->get_plugin_name(), $this->get_version() );
145
  $this->loader->add_action( 'add_meta_boxes', $plugin_editor, 'set_editor' );
@@ -208,6 +209,7 @@ class WPPR {
208
 
209
  $this->loader->add_filter( 'wppr_rating_circle_bar_styles', $plugin_public, 'rating_circle_bar_styles', 10, 2 );
210
  $this->loader->add_filter( 'wppr_rating_circle_fill_styles', $plugin_public, 'rating_circle_fill_styles', 10, 2 );
 
211
  }
212
 
213
  /**
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
+ $this->version = '3.7.0';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
140
  $this->loader->add_action( 'wppr_settings_section_upsell', $plugin_admin, 'settings_section_upsell', 10, 1 );
141
  $this->loader->add_action( 'after_setup_theme', $plugin_admin, 'add_image_size' );
142
  $this->loader->add_action( 'wp_ajax_get_categories', $plugin_admin, 'get_categories' );
143
+ $this->loader->add_action( 'activated_plugin', $plugin_admin, 'on_activation', 10, 1 );
144
 
145
  $plugin_editor = new WPPR_Editor( $this->get_plugin_name(), $this->get_version() );
146
  $this->loader->add_action( 'add_meta_boxes', $plugin_editor, 'set_editor' );
209
 
210
  $this->loader->add_filter( 'wppr_rating_circle_bar_styles', $plugin_public, 'rating_circle_bar_styles', 10, 2 );
211
  $this->loader->add_filter( 'wppr_rating_circle_fill_styles', $plugin_public, 'rating_circle_fill_styles', 10, 2 );
212
+ $this->loader->add_action( 'wppr_load_template_css', $plugin_public, 'load_template_css', 10, 1 );
213
  }
214
 
215
  /**
includes/functions.php CHANGED
@@ -31,7 +31,6 @@ if ( ! function_exists( 'wppr_display_rating_stars' ) ) {
31
  */
32
  function wppr_display_rating_stars( $template, $review_object, $include_author = true ) {
33
  $review_rating = $review_object->get_rating();
34
- $rating_10 = round( $review_rating, 0 ) / 10;
35
  $rating_5 = round( $review_rating / 20, PHP_ROUND_HALF_UP );
36
  ?>
37
  <div class="wppr-review-stars <?php echo is_rtl() ? 'rtl' : ''; ?>" style="direction: <?php echo is_rtl() ? 'rtl' : ''; ?>">
@@ -132,15 +131,33 @@ if ( ! function_exists( 'wppr_default_get_rating' ) ) {
132
  /**
133
  * Display the rating of the given type.
134
  */
135
- function wppr_layout_get_rating( $review_object, $type, $template, $div_class = '', $include_author = false ) {
136
- $rating = round( $review_object->get_rating() );
137
- $rating_10 = round( $review_object->get_rating(), 0 ) / 10;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
 
139
  switch ( $type ) {
140
  case 'donut':
141
  ?>
142
- <div class="<?php echo $div_class; ?>">
143
- <div class="review-wu-grade-content">
144
  <div class="wppr-c100 wppr-p<?php echo esc_attr( $rating ) . ' ' . esc_attr( $review_object->get_rating_class() ); ?>">
145
  <span><?php echo esc_html( $rating_10 ); ?></span>
146
  <div class="wppr-slice">
@@ -273,35 +290,44 @@ if ( ! function_exists( 'wppr_layout_get_options_ratings' ) ) {
273
  * Display the option ratings.
274
  */
275
  function wppr_layout_get_options_ratings( $review_object, $type ) {
 
 
 
 
 
 
 
 
 
276
  switch ( $type ) {
277
  case 'dashes':
278
  ?>
279
  <div class="review-wu-bars">
280
  <?php
281
  foreach ( $review_object->get_options() as $option ) {
282
- $class_ul = $review_object->get_rating_class( $option['value'] ) . apply_filters( 'wppr_option_custom_icon', '' );
283
- ?>
284
  <div class="rev-option" data-value="<?php echo $option['value']; ?>">
285
  <div class="cwpr_clearfix">
286
  <span>
287
  <h3><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></h3>
288
  </span>
289
- <span><?php echo esc_html( number_format( ( $option['value'] / 10 ), 1 ) ); ?>/10</span>
290
  </div>
291
  <ul class="cwpr_clearfix <?php echo $class_ul; ?>">
292
- <?php
293
- $rating = round( $option['value'] / 10 );
294
- $start_from = is_rtl() ? ( 11 - $rating ) : 1;
295
- $stop_at = is_rtl() ? 10 : $rating;
296
- for ( $i = 1; $i <= 10; $i ++ ) {
297
- ?>
298
  <li <?php echo $i >= $start_from && $i <= $stop_at ? ' class="colored"' : ''; ?>></li>
299
  <?php
300
- }
301
  ?>
302
  </ul>
303
  </div>
304
- <?php
305
  }
306
  ?>
307
  </div>
@@ -312,26 +338,26 @@ if ( ! function_exists( 'wppr_layout_get_options_ratings' ) ) {
312
  <div class="wppr-review-grade-options <?php echo is_rtl() ? 'rtl' : ''; ?>">
313
  <?php
314
  foreach ( $review_object->get_options() as $option ) {
315
- $review_option_rating = $option['value'];
316
- ?>
317
  <div class="wppr-review-grade-option">
318
  <div class="wppr-review-grade-option-header">
319
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
320
- <span><?php echo esc_html( number_format( ( $review_option_rating / 10 ), 1 ) ); ?></span>
321
  </div>
322
  <div class="wppr-review-grade-option-rating wppr-default <?php echo $review_object->get_rating_class( $review_option_rating ); ?> <?php echo is_rtl() ? 'rtl' : ''; ?>">
323
  <span class="<?php echo $review_object->get_rating_class( $review_option_rating ); ?>" style="
324
- <?php
325
- /**
326
- * Adds min-width for amp support.
327
- */
328
- echo 'width:' . esc_attr( is_rtl() ? ( 100 - $review_option_rating ) : $review_option_rating ) . '%; ';
329
- echo esc_attr( apply_filters( 'wppr_review_option_rating_css', '', $review_option_rating ) );
330
- ?>
331
  "></span>
332
  </div>
333
  </div><!-- end .wppr-review-grade-option -->
334
- <?php
335
  }
336
  ?>
337
  </div><!-- end .wppr-review-grade-options -->
@@ -342,26 +368,26 @@ if ( ! function_exists( 'wppr_layout_get_options_ratings' ) ) {
342
  <div class="wppr-review-options">
343
  <?php
344
  foreach ( $review_object->get_options() as $option ) {
345
- $review_option_rating = $option['value'];
346
- ?>
347
  <div class="wppr-review-option">
348
  <div class="wppr-review-option-header">
349
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
350
  </div>
351
  <ul class="wppr-review-option-rating <?php echo apply_filters( 'wppr_option_custom_icon', '' ); ?>">
352
- <?php
353
- $rating = round( $option['value'] / 10 );
354
- $start_from = is_rtl() ? ( 11 - $rating ) : 1;
355
- $stop_at = is_rtl() ? 10 : $rating;
356
- for ( $i = 1; $i <= 10; $i ++ ) {
357
- ?>
358
  <li class="<?php echo $i >= $start_from && $i <= $stop_at ? $review_object->get_rating_class( $option['value'] ) : ' wppr-default'; ?>"></li>
359
- <?php
360
- }
361
- ?>
362
  </ul>
363
  </div><!-- end .wppr-review-option -->
364
- <?php
365
  }
366
  ?>
367
  </div><!-- end .wppr-review-options -->
31
  */
32
  function wppr_display_rating_stars( $template, $review_object, $include_author = true ) {
33
  $review_rating = $review_object->get_rating();
 
34
  $rating_5 = round( $review_rating / 20, PHP_ROUND_HALF_UP );
35
  ?>
36
  <div class="wppr-review-stars <?php echo is_rtl() ? 'rtl' : ''; ?>" style="direction: <?php echo is_rtl() ? 'rtl' : ''; ?>">
131
  /**
132
  * Display the rating of the given type.
133
  */
134
+ function wppr_layout_get_rating( $review_object, $type, $template, $div_classes = '', $include_author = false ) {
135
+ $review_rating = $review_object->get_rating();
136
+ $rating = round( $review_rating );
137
+
138
+ $scale = $review_object->wppr_get_option( 'wppr_use_5_rating_scale' );
139
+ if ( empty( $scale ) ) {
140
+ $scale = 10;
141
+ }
142
+ // for scale of 10 divide by 10 and for scale of 5 divide by 20.
143
+ $scale = 10 * ( 10 / $scale );
144
+ $rating_10 = round( $review_rating, 0 ) / $scale;
145
+
146
+ $div_class1 = $div_class2 = '';
147
+ if ( is_array( $div_classes ) ) {
148
+ $div_class1 = array_shift( $div_classes );
149
+ if ( is_array( $div_classes ) ) {
150
+ $div_class2 = array_shift( $div_classes );
151
+ }
152
+ } else {
153
+ $div_class1 = $div_classes;
154
+ }
155
 
156
  switch ( $type ) {
157
  case 'donut':
158
  ?>
159
+ <div class="<?php echo $div_class1; ?>">
160
+ <div class="review-wu-grade-content <?php echo $div_class2; ?>">
161
  <div class="wppr-c100 wppr-p<?php echo esc_attr( $rating ) . ' ' . esc_attr( $review_object->get_rating_class() ); ?>">
162
  <span><?php echo esc_html( $rating_10 ); ?></span>
163
  <div class="wppr-slice">
290
  * Display the option ratings.
291
  */
292
  function wppr_layout_get_options_ratings( $review_object, $type ) {
293
+ $scale = $review_object->wppr_get_option( 'wppr_use_5_rating_scale' );
294
+ if ( empty( $scale ) ) {
295
+ $scale = 10;
296
+ }
297
+ $display = round( $scale );
298
+
299
+ // for scale of 10 divide by 10 and for scale of 5 divide by 20.
300
+ $scale = 10 * ( 10 / $scale );
301
+
302
  switch ( $type ) {
303
  case 'dashes':
304
  ?>
305
  <div class="review-wu-bars">
306
  <?php
307
  foreach ( $review_object->get_options() as $option ) {
308
+ $class_ul = $review_object->get_rating_class( $option['value'] ) . apply_filters( 'wppr_option_custom_icon', '' );
309
+ ?>
310
  <div class="rev-option" data-value="<?php echo $option['value']; ?>">
311
  <div class="cwpr_clearfix">
312
  <span>
313
  <h3><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></h3>
314
  </span>
315
+ <span><?php echo esc_html( number_format( ( $option['value'] / $scale ), 1 ) ); ?>/<?php echo $display; ?></span>
316
  </div>
317
  <ul class="cwpr_clearfix <?php echo $class_ul; ?>">
318
+ <?php
319
+ $rating = round( $option['value'] / $scale );
320
+ $start_from = is_rtl() ? ( $display + 1 - $rating ) : 1;
321
+ $stop_at = is_rtl() ? $display : $rating;
322
+ for ( $i = 1; $i <= $display; $i ++ ) {
323
+ ?>
324
  <li <?php echo $i >= $start_from && $i <= $stop_at ? ' class="colored"' : ''; ?>></li>
325
  <?php
326
+ }
327
  ?>
328
  </ul>
329
  </div>
330
+ <?php
331
  }
332
  ?>
333
  </div>
338
  <div class="wppr-review-grade-options <?php echo is_rtl() ? 'rtl' : ''; ?>">
339
  <?php
340
  foreach ( $review_object->get_options() as $option ) {
341
+ $review_option_rating = $option['value'];
342
+ ?>
343
  <div class="wppr-review-grade-option">
344
  <div class="wppr-review-grade-option-header">
345
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
346
+ <span><?php echo esc_html( number_format( ( $review_option_rating / $scale ), 1 ) ); ?></span>
347
  </div>
348
  <div class="wppr-review-grade-option-rating wppr-default <?php echo $review_object->get_rating_class( $review_option_rating ); ?> <?php echo is_rtl() ? 'rtl' : ''; ?>">
349
  <span class="<?php echo $review_object->get_rating_class( $review_option_rating ); ?>" style="
350
+ <?php
351
+ /**
352
+ * Adds min-width for amp support.
353
+ */
354
+ echo 'width:' . esc_attr( is_rtl() ? ( 100 - $review_option_rating ) : $review_option_rating ) . '%; ';
355
+ echo esc_attr( apply_filters( 'wppr_review_option_rating_css', '', $review_option_rating ) );
356
+ ?>
357
  "></span>
358
  </div>
359
  </div><!-- end .wppr-review-grade-option -->
360
+ <?php
361
  }
362
  ?>
363
  </div><!-- end .wppr-review-grade-options -->
368
  <div class="wppr-review-options">
369
  <?php
370
  foreach ( $review_object->get_options() as $option ) {
371
+ $review_option_rating = $option['value'];
372
+ ?>
373
  <div class="wppr-review-option">
374
  <div class="wppr-review-option-header">
375
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
376
  </div>
377
  <ul class="wppr-review-option-rating <?php echo apply_filters( 'wppr_option_custom_icon', '' ); ?>">
378
+ <?php
379
+ $rating = round( $option['value'] / $scale );
380
+ $start_from = is_rtl() ? ( $display + 1 - $rating ) : 1;
381
+ $stop_at = is_rtl() ? $display : $rating;
382
+ for ( $i = 1; $i <= $display; $i ++ ) {
383
+ ?>
384
  <li class="<?php echo $i >= $start_from && $i <= $stop_at ? $review_object->get_rating_class( $option['value'] ) : ' wppr-default'; ?>"></li>
385
+ <?php
386
+ }
387
+ ?>
388
  </ul>
389
  </div><!-- end .wppr-review-option -->
390
+ <?php
391
  }
392
  ?>
393
  </div><!-- end .wppr-review-options -->
includes/public/class-wppr-public.php CHANGED
@@ -105,6 +105,12 @@ class Wppr_Public {
105
  }
106
 
107
  if ( $review->wppr_get_option( 'cwppos_show_userreview' ) === 'yes' ) {
 
 
 
 
 
 
108
  wp_enqueue_script( 'jquery-ui-slider' );
109
  wp_enqueue_script( 'jquery-touch-punch' );
110
  wp_enqueue_script(
@@ -116,10 +122,23 @@ class Wppr_Public {
116
  $this->version,
117
  true
118
  );
 
 
119
  wp_enqueue_style( $this->plugin_name . 'jqueryui', WPPR_URL . '/assets/css/jquery-ui.css', array(), $this->version );
120
  wp_enqueue_style( $this->plugin_name . 'comments', WPPR_URL . '/assets/css/comments.css', array(), $this->version );
121
  }
122
 
 
 
 
 
 
 
 
 
 
 
 
123
  wp_enqueue_style( $this->plugin_name . '-' . $review->get_template() . '-stylesheet', WPPR_URL . '/assets/css/' . $review->get_template() . '.css', array(), $this->version );
124
  wp_enqueue_style(
125
  $this->plugin_name . '-percentage-circle',
@@ -163,13 +182,12 @@ class Wppr_Public {
163
  return;
164
  }
165
 
166
- /**
167
- * Remove any custom icon.
168
- */
169
- add_filter( 'wppr_option_custom_icon', '__return_empty_string', 99 );
170
- add_action( 'amp_post_template_head', array( $this, 'wppr_amp_add_fa' ), 999 );
171
-
172
  $model = new WPPR_Query_Model();
 
 
 
 
 
173
  if ( 'yes' === $model->wppr_get_option( 'wppr_amp' ) ) {
174
  add_filter( 'wppr_review_option_rating_css', array( $this, 'amp_width_support' ), 99, 2 );
175
  add_action( 'amp_post_template_css', array( $this, 'amp_styles' ), 999 );
@@ -440,6 +458,16 @@ class Wppr_Public {
440
  }
441
  ';
442
 
 
 
 
 
 
 
 
 
 
 
443
  return $style;
444
  }
445
 
@@ -502,19 +530,19 @@ class Wppr_Public {
502
  if ( $this->review->wppr_get_option( 'cwppos_show_userreview' ) !== 'yes' ) {
503
  return '';
504
  }
505
- $options = $this->review->get_options();
506
- $option_names = wp_list_pluck( $options, 'name' );
507
- $sliders = array();
508
- foreach ( $option_names as $k => $value ) {
509
- $sliders[] =
510
- '<div class="wppr-comment-form-meta ' . ( is_rtl() ? 'rtl' : '' ) . '">
511
- <label for="wppr-slider-option-' . $k . '">' . $value . '</label>
512
- <input type="text" id="wppr-slider-option-' . $k . '" class="meta_option_input" value="" name="wppr-slider-option-' . $k . '" readonly="readonly">
513
- <div class="wppr-comment-meta-slider"></div>
514
- <div class="cwpr_clearfix"></div>
515
- </div>';
 
516
  }
517
- echo '<div id="wppr-slider-comment">' . implode( '', $sliders ) . '<div class="cwpr_clearfix"></div></div>';
518
 
519
  }
520
 
@@ -551,13 +579,27 @@ class Wppr_Public {
551
  if ( ! $valid_review ) {
552
  return;
553
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
554
  foreach ( $option_names as $k => $value ) {
555
  if ( isset( $_POST[ 'wppr-slider-option-' . $k ] ) ) {
556
-
557
  $option_value = wp_filter_nohtml_kses( $_POST[ 'wppr-slider-option-' . $k ] );
558
- $option_value = empty( $value ) ? 0 : $option_value;
559
  update_comment_meta( $comment_id, 'meta_option_' . $k, $option_value );
560
-
561
  }
562
  }
563
  $review->update_comments_rating();
@@ -584,17 +626,31 @@ class Wppr_Public {
584
 
585
  global $comment;
586
 
 
 
 
 
587
  $options = $this->review->get_comment_options( $comment->comment_ID );
588
  if ( empty( $options ) ) {
589
  return $text;
590
  }
 
 
 
 
 
 
 
591
  $return = '';
592
  $return .= '<div class="user-comments-grades">';
593
  foreach ( $options as $k => $option ) {
594
- $int_grade = intval( $option['value'] * 10 );
 
 
 
595
  $return .= '<div class="comment-meta-option">
596
  <p class="comment-meta-option-name">' . $option['name'] . '</p>
597
- <p class="comment-meta-option-grade">' . $option['value'] . '</p>
598
  <div class="cwpr_clearfix"></div>
599
  <div class="comment-meta-grade-bar ' . $this->review->get_rating_class( $int_grade ) . '">
600
  <div class="comment-meta-grade" style="width: ' . $int_grade . '%"></div>
@@ -623,11 +679,11 @@ class Wppr_Public {
623
  * AMP styles for WPPR review amp page.
624
  */
625
  public function amp_styles() {
626
-
627
  if ( empty( $this->review ) ) {
628
  return;
629
  }
630
  $template_style = $this->review->get_template();
 
631
  $amp_cache_key = '_wppr_amp_css_' . str_replace( '.', '_', $this->version ) . '_' . $template_style;
632
  $output = get_transient( $amp_cache_key );
633
  if ( empty( $output ) ) {
@@ -646,8 +702,9 @@ class Wppr_Public {
646
  if ( $wp_filesystem->is_readable( WPPR_PATH . '/assets/css/' . $template_style . '.css' ) ) {
647
  $output .= $wp_filesystem->get_contents( WPPR_PATH . '/assets/css/' . $template_style . '.css' );
648
  }
649
- $output .= $wp_filesystem->get_contents( WPPR_PATH . '/assets/css/rating-amp.css' );
650
  $output .= $this->generate_styles();
 
 
651
  $output = $this->minify_amp_css( $output );
652
 
653
  set_transient( $amp_cache_key, $output, HOUR_IN_SECONDS );
@@ -701,10 +758,20 @@ class Wppr_Public {
701
  }
702
 
703
  /**
704
- * Adding Font Awesome at the header for AMP.
705
  */
706
- public function wppr_amp_add_fa() {
707
- echo '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">';
 
 
 
 
 
 
 
 
 
 
708
  }
709
 
710
  /**
105
  }
106
 
107
  if ( $review->wppr_get_option( 'cwppos_show_userreview' ) === 'yes' ) {
108
+ $scale = $review->wppr_get_option( 'wppr_use_5_rating_scale' );
109
+ if ( empty( $scale ) ) {
110
+ $scale = 10;
111
+ }
112
+ $scale = 10 * ( 10 / $scale );
113
+
114
  wp_enqueue_script( 'jquery-ui-slider' );
115
  wp_enqueue_script( 'jquery-touch-punch' );
116
  wp_enqueue_script(
122
  $this->version,
123
  true
124
  );
125
+ wp_localize_script( $this->plugin_name . '-frontpage-js', 'wppr_config', array( 'scale' => $scale ) );
126
+
127
  wp_enqueue_style( $this->plugin_name . 'jqueryui', WPPR_URL . '/assets/css/jquery-ui.css', array(), $this->version );
128
  wp_enqueue_style( $this->plugin_name . 'comments', WPPR_URL . '/assets/css/comments.css', array(), $this->version );
129
  }
130
 
131
+ $this->load_template_css( $review );
132
+ }
133
+
134
+ /**
135
+ * Loads the CSS corresponding to the template.
136
+ */
137
+ function load_template_css( $review = null ) {
138
+ if ( empty( $review ) ) {
139
+ $review = $this->review;
140
+ }
141
+
142
  wp_enqueue_style( $this->plugin_name . '-' . $review->get_template() . '-stylesheet', WPPR_URL . '/assets/css/' . $review->get_template() . '.css', array(), $this->version );
143
  wp_enqueue_style(
144
  $this->plugin_name . '-percentage-circle',
182
  return;
183
  }
184
 
 
 
 
 
 
 
185
  $model = new WPPR_Query_Model();
186
+
187
+ $icon = $model->wppr_get_option( 'cwppos_change_bar_icon' );
188
+
189
+ add_action( 'amp_post_template_head', array( $this, 'wppr_amp_add_styles' ), 999 );
190
+
191
  if ( 'yes' === $model->wppr_get_option( 'wppr_amp' ) ) {
192
  add_filter( 'wppr_review_option_rating_css', array( $this, 'amp_width_support' ), 99, 2 );
193
  add_action( 'amp_post_template_css', array( $this, 'amp_styles' ), 999 );
458
  }
459
  ';
460
 
461
+ $scale = $review->wppr_get_option( 'wppr_use_5_rating_scale' );
462
+ // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
463
+ if ( 5 == $scale ) {
464
+ // change the styles to accommodate fewer icons (out of 5) in the same space.
465
+ $style .= '
466
+ #review-statistics .review-wu-bars ul li {
467
+ width: 18%;
468
+ }';
469
+ }
470
+
471
  return $style;
472
  }
473
 
530
  if ( $this->review->wppr_get_option( 'cwppos_show_userreview' ) !== 'yes' ) {
531
  return '';
532
  }
533
+
534
+ if ( apply_filters( 'wppr_disable_comments', false, $this->review ) ) {
535
+ return '';
536
+ }
537
+
538
+ switch ( $this->review->wppr_get_option( 'wppr_comment_rating' ) ) {
539
+ case 'star':
540
+ include_once WPPR_PATH . '/includes/public/layouts/comment-rating-star-tpl.php';
541
+ break;
542
+ default:
543
+ include_once WPPR_PATH . '/includes/public/layouts/comment-rating-slider-tpl.php';
544
+ break;
545
  }
 
546
 
547
  }
548
 
579
  if ( ! $valid_review ) {
580
  return;
581
  }
582
+
583
+ $scale = $review->wppr_get_option( 'wppr_use_5_rating_scale' );
584
+ if ( empty( $scale ) ) {
585
+ $scale = 10;
586
+ }
587
+
588
+ // for scale of 10 multiply by 1 and for scale of 5 multiply by 2. Store the comment rating as out-of-10 always.
589
+ $multiplier = ( 10 / $scale );
590
+
591
+ switch ( $review->wppr_get_option( 'wppr_comment_rating' ) ) {
592
+ case 'star':
593
+ // 5 stars means 1, 1.5, 2, 2.5 ... this means always multiply by 2. Store the comment rating as out-of-10 always.
594
+ $multiplier = 2;
595
+ break;
596
+ }
597
+
598
  foreach ( $option_names as $k => $value ) {
599
  if ( isset( $_POST[ 'wppr-slider-option-' . $k ] ) ) {
 
600
  $option_value = wp_filter_nohtml_kses( $_POST[ 'wppr-slider-option-' . $k ] );
601
+ $option_value = $multiplier * ( empty( $value ) ? 0 : $option_value );
602
  update_comment_meta( $comment_id, 'meta_option_' . $k, $option_value );
 
603
  }
604
  }
605
  $review->update_comments_rating();
626
 
627
  global $comment;
628
 
629
+ if ( ! $comment ) {
630
+ return $text;
631
+ }
632
+
633
  $options = $this->review->get_comment_options( $comment->comment_ID );
634
  if ( empty( $options ) ) {
635
  return $text;
636
  }
637
+
638
+ // in what scale to display the ratings?
639
+ $display = $this->review->wppr_get_option( 'wppr_use_5_rating_scale' );
640
+ if ( empty( $display ) ) {
641
+ $display = 10;
642
+ }
643
+
644
  $return = '';
645
  $return .= '<div class="user-comments-grades">';
646
  foreach ( $options as $k => $option ) {
647
+ $value = $option['value'];
648
+ $int_grade = intval( $value * 10 );
649
+ // decrease the value to the display-scale from scale 10.
650
+ $value = round( floatval( $value / ( 10 / $display ) ), 2 );
651
  $return .= '<div class="comment-meta-option">
652
  <p class="comment-meta-option-name">' . $option['name'] . '</p>
653
+ <p class="comment-meta-option-grade">' . $value . '</p>
654
  <div class="cwpr_clearfix"></div>
655
  <div class="comment-meta-grade-bar ' . $this->review->get_rating_class( $int_grade ) . '">
656
  <div class="comment-meta-grade" style="width: ' . $int_grade . '%"></div>
679
  * AMP styles for WPPR review amp page.
680
  */
681
  public function amp_styles() {
 
682
  if ( empty( $this->review ) ) {
683
  return;
684
  }
685
  $template_style = $this->review->get_template();
686
+
687
  $amp_cache_key = '_wppr_amp_css_' . str_replace( '.', '_', $this->version ) . '_' . $template_style;
688
  $output = get_transient( $amp_cache_key );
689
  if ( empty( $output ) ) {
702
  if ( $wp_filesystem->is_readable( WPPR_PATH . '/assets/css/' . $template_style . '.css' ) ) {
703
  $output .= $wp_filesystem->get_contents( WPPR_PATH . '/assets/css/' . $template_style . '.css' );
704
  }
 
705
  $output .= $this->generate_styles();
706
+ $output .= $wp_filesystem->get_contents( WPPR_PATH . '/assets/css/rating-amp.css' );
707
+ $output = apply_filters( 'wppr_global_style', $output );
708
  $output = $this->minify_amp_css( $output );
709
 
710
  set_transient( $amp_cache_key, $output, HOUR_IN_SECONDS );
758
  }
759
 
760
  /**
761
+ * Adding FontAwesome/Dashicons at the header for AMP.
762
  */
763
+ public function wppr_amp_add_styles() {
764
+ $model = new WPPR_Query_Model();
765
+
766
+ $icon = $model->wppr_get_option( 'cwppos_change_bar_icon' );
767
+
768
+ // new free and old pro after removing fontawesome with an font awesome icon selected.
769
+ if ( ! empty( $icon ) ) {
770
+ if ( defined( 'WPPR_PRO_VERSION' ) && version_compare( WPPR_PRO_VERSION, '2.4', '<' ) && 'style1' !== $this->review->get_template() ) {
771
+ echo '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">';
772
+ }
773
+ echo '<link rel="stylesheet" href="' . site_url( '/wp-includes/css/dashicons.min.css' ) . '"">';
774
+ }
775
  }
776
 
777
  /**
includes/public/layouts/comment-rating-slider-tpl.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $options = $this->review->get_options();
3
+ $option_names = wp_list_pluck( $options, 'name' );
4
+ $sliders = array();
5
+
6
+ foreach ( $option_names as $k => $value ) {
7
+ $sliders[] =
8
+ '<div class="wppr-comment-form-meta ' . ( is_rtl() ? 'rtl' : '' ) . '">
9
+ <label for="wppr-slider-option-' . $k . '">' . $value . '</label>
10
+ <input type="text" id="wppr-slider-option-' . $k . '" class="meta_option_input" value="" name="wppr-slider-option-' . $k . '" readonly="readonly">
11
+ <div class="wppr-comment-meta-slider"></div>
12
+ <div class="cwpr_clearfix"></div>
13
+ </div>';
14
+ }
15
+
16
+ $scale = $this->review->wppr_get_option( 'wppr_use_5_rating_scale' );
17
+ if ( empty( $scale ) ) {
18
+ $scale = 10;
19
+ }
20
+
21
+ echo '<input type="hidden" name="wppr-scale" value="' . $scale . '">';
22
+ echo '<div id="wppr-slider-comment">' . implode( '', $sliders ) . '<div class="cwpr_clearfix"></div></div>';
23
+
24
+
includes/public/layouts/comment-rating-star-tpl.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="wppr-comment-rating-stars">
2
+ <?php
3
+ $options = $this->review->get_options();
4
+ $option_names = wp_list_pluck( $options, 'name' );
5
+
6
+ foreach ( $option_names as $k => $name ) {
7
+ ?>
8
+ <div class="wppr-comment-form-meta">
9
+ <label for="wppr-star-option-<?php echo $k; ?>"><?php echo $name; ?></label>
10
+ <div class="wppr-comment-rating-star <?php echo ( is_rtl() ? 'rtl' : '' ); ?> ">
11
+ <?php
12
+ $type = 'half';
13
+ for ( $x = 10; $x > 0; $x-- ) {
14
+ $value = round( $x / 2, 2 );
15
+ $type = $type === 'full' ? 'half' : 'full';
16
+ ?>
17
+ <input type="radio" id="star<?php echo $x; ?><?php echo $k; ?>" name="wppr-slider-option-<?php echo $k; ?>" value="<?php echo $value; ?>" />
18
+ <label class="<?php echo $type; ?>" for="star<?php echo $x; ?><?php echo $k; ?>"></label>
19
+ <?php
20
+ }
21
+ ?>
22
+ </div>
23
+ </div>
24
+ <?php
25
+ }
26
+ ?>
27
+ </div>
includes/public/layouts/default.php CHANGED
@@ -31,7 +31,7 @@ $cons = $review_object->get_cons();
31
  <?php wppr_layout_get_image( $review_object, 'wppr-default-img', 'photo photo-wrapup wppr-product-image' ); ?>
32
  </div>
33
 
34
- <?php wppr_layout_get_rating( $review_object, 'donut', 'default', 'review-wu-grade' ); ?>
35
  </div><!-- end .review-wu-left-top -->
36
 
37
  <?php wppr_layout_get_options_ratings( $review_object, 'dashes' ); ?>
31
  <?php wppr_layout_get_image( $review_object, 'wppr-default-img', 'photo photo-wrapup wppr-product-image' ); ?>
32
  </div>
33
 
34
+ <?php wppr_layout_get_rating( $review_object, 'donut', 'default', array( 'review-wu-grade' ) ); ?>
35
  </div><!-- end .review-wu-left-top -->
36
 
37
  <?php wppr_layout_get_options_ratings( $review_object, 'dashes' ); ?>
includes/public/layouts/style1.php CHANGED
@@ -21,7 +21,7 @@
21
 
22
  <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
23
 
24
- <?php wppr_layout_get_rating( $review_object, 'stars', 'style1', false ); ?>
25
 
26
  <div class="wppr-review-grade">
27
  <div class="wppr-review-grade-number">
21
 
22
  <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
23
 
24
+ <?php wppr_layout_get_rating( $review_object, 'stars', 'style1', '', false ); ?>
25
 
26
  <div class="wppr-review-grade">
27
  <div class="wppr-review-grade-number">
includes/public/layouts/widget/default.php CHANGED
@@ -52,7 +52,7 @@ foreach ( $results as $review ) :
52
  $review_class = $review_object->get_rating_class();
53
  if ( ! empty( $review_score ) ) {
54
  ?>
55
- <?php wppr_layout_get_rating( $review_object, 'donut', 'style1-widget', 'review-grade-widget wppr-col' ); ?>
56
 
57
  <?php } ?>
58
  </li>
52
  $review_class = $review_object->get_rating_class();
53
  if ( ! empty( $review_score ) ) {
54
  ?>
55
+ <?php wppr_layout_get_rating( $review_object, 'donut', 'style1-widget', array( 'review-grade-widget wppr-col' ) ); ?>
56
 
57
  <?php } ?>
58
  </li>
package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "wp-product-review",
3
- "version": "3.6.1",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
@@ -134,7 +134,7 @@
134
  "dev": true,
135
  "requires": {
136
  "glob": "7.0.6",
137
- "graceful-fs": "4.1.15",
138
  "lazystream": "1.0.0",
139
  "lodash": "4.17.11",
140
  "normalize-path": "2.1.1",
@@ -265,16 +265,17 @@
265
  "dev": true
266
  },
267
  "autoprefixer": {
268
- "version": "9.5.1",
269
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.5.1.tgz",
270
- "integrity": "sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==",
271
  "dev": true,
272
  "requires": {
273
- "browserslist": "4.6.0",
274
- "caniuse-lite": "1.0.30000971",
 
275
  "normalize-range": "0.1.2",
276
  "num2fraction": "1.2.2",
277
- "postcss": "7.0.16",
278
  "postcss-value-parser": "3.3.1"
279
  }
280
  },
@@ -307,7 +308,7 @@
307
  "component-emitter": "1.3.0",
308
  "define-property": "1.0.0",
309
  "isobject": "3.0.1",
310
- "mixin-deep": "1.3.1",
311
  "pascalcase": "0.1.1"
312
  },
313
  "dependencies": {
@@ -623,13 +624,13 @@
623
  "dev": true,
624
  "optional": true,
625
  "requires": {
626
- "inherits": "2.0.3"
627
  }
628
  },
629
  "bluebird": {
630
- "version": "3.5.4",
631
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz",
632
- "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==",
633
  "dev": true
634
  },
635
  "body": {
@@ -690,14 +691,14 @@
690
  }
691
  },
692
  "browserslist": {
693
- "version": "4.6.0",
694
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.0.tgz",
695
- "integrity": "sha512-Jk0YFwXBuMOOol8n6FhgkDzn3mY9PYLYGk29zybF05SbRTsMgPqmTNeQQhOghCxq5oFqAXE3u4sYddr4C0uRhg==",
696
  "dev": true,
697
  "requires": {
698
- "caniuse-lite": "1.0.30000971",
699
- "electron-to-chromium": "1.3.136",
700
- "node-releases": "1.1.20"
701
  }
702
  },
703
  "buffer": {
@@ -755,9 +756,9 @@
755
  "get-value": "2.0.6",
756
  "has-value": "1.0.0",
757
  "isobject": "3.0.1",
758
- "set-value": "2.0.0",
759
  "to-object-path": "0.3.0",
760
- "union-value": "1.0.0",
761
  "unset-value": "1.0.0"
762
  }
763
  },
@@ -767,7 +768,7 @@
767
  "integrity": "sha1-HFQaoQilAQb2ML3Zj+HeyLoTP1E=",
768
  "dev": true,
769
  "requires": {
770
- "graceful-fs": "4.1.15",
771
  "mkdirp": "0.5.1",
772
  "object-assign": "4.1.1",
773
  "rimraf": "2.6.3"
@@ -821,9 +822,9 @@
821
  }
822
  },
823
  "caniuse-lite": {
824
- "version": "1.0.30000971",
825
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000971.tgz",
826
- "integrity": "sha512-TQFYFhRS0O5rdsmSbF1Wn+16latXYsQJat66f7S7lizXW1PVpWJeZw9wqqVLIjuxDRz7s7xRUj13QCfd8hKn6g==",
827
  "dev": true
828
  },
829
  "caseless": {
@@ -856,9 +857,9 @@
856
  }
857
  },
858
  "chownr": {
859
- "version": "1.1.1",
860
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
861
- "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
862
  "dev": true,
863
  "optional": true
864
  },
@@ -903,7 +904,7 @@
903
  "requires": {
904
  "fs.realpath": "1.0.0",
905
  "inflight": "1.0.6",
906
- "inherits": "2.0.3",
907
  "minimatch": "3.0.4",
908
  "once": "1.4.0",
909
  "path-is-absolute": "1.0.1"
@@ -1359,7 +1360,7 @@
1359
  "decompress-tarbz2": "4.1.1",
1360
  "decompress-targz": "4.1.1",
1361
  "decompress-unzip": "4.0.1",
1362
- "graceful-fs": "4.1.15",
1363
  "make-dir": "1.3.0",
1364
  "pify": "2.3.0",
1365
  "strip-dirs": "2.1.0"
@@ -1677,9 +1678,9 @@
1677
  "dev": true
1678
  },
1679
  "electron-to-chromium": {
1680
- "version": "1.3.136",
1681
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.136.tgz",
1682
- "integrity": "sha512-xHkYkbEi4kI+2w5v6yBGCQTRXL7N0PWscygTFZu/1bArnPSo2WR9xjdw4m06RR4J5PncrWJcuOVv+MAG2mK5JQ==",
1683
  "dev": true
1684
  },
1685
  "encoding": {
@@ -2045,7 +2046,7 @@
2045
  "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
2046
  "dev": true,
2047
  "requires": {
2048
- "websocket-driver": "0.7.0"
2049
  }
2050
  },
2051
  "fd-slicer": {
@@ -2165,7 +2166,7 @@
2165
  "dev": true,
2166
  "requires": {
2167
  "inflight": "1.0.6",
2168
- "inherits": "2.0.3",
2169
  "minimatch": "3.0.4",
2170
  "once": "1.4.0",
2171
  "path-is-absolute": "1.0.1"
@@ -2212,7 +2213,7 @@
2212
  "dev": true,
2213
  "optional": true,
2214
  "requires": {
2215
- "inherits": "2.0.3",
2216
  "readable-stream": "2.3.6"
2217
  }
2218
  },
@@ -2228,7 +2229,7 @@
2228
  "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
2229
  "dev": true,
2230
  "requires": {
2231
- "graceful-fs": "4.1.15",
2232
  "jsonfile": "4.0.0",
2233
  "universalify": "0.1.2"
2234
  }
@@ -2245,8 +2246,8 @@
2245
  "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
2246
  "dev": true,
2247
  "requires": {
2248
- "graceful-fs": "4.1.15",
2249
- "inherits": "2.0.3",
2250
  "mkdirp": "0.5.1",
2251
  "rimraf": "2.6.3"
2252
  }
@@ -2331,17 +2332,17 @@
2331
  "dev": true,
2332
  "requires": {
2333
  "encoding": "0.1.12",
2334
- "readable-stream": "3.3.0",
2335
  "safe-buffer": "5.1.2"
2336
  },
2337
  "dependencies": {
2338
  "readable-stream": {
2339
- "version": "3.3.0",
2340
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
2341
- "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
2342
  "dev": true,
2343
  "requires": {
2344
- "inherits": "2.0.3",
2345
  "string_decoder": "1.1.1",
2346
  "util-deprecate": "1.0.2"
2347
  }
@@ -2429,7 +2430,7 @@
2429
  "requires": {
2430
  "fs.realpath": "1.0.0",
2431
  "inflight": "1.0.6",
2432
- "inherits": "2.0.3",
2433
  "minimatch": "3.0.4",
2434
  "once": "1.4.0",
2435
  "path-is-absolute": "1.0.1"
@@ -2485,7 +2486,7 @@
2485
  "requires": {
2486
  "fs.realpath": "1.0.0",
2487
  "inflight": "1.0.6",
2488
- "inherits": "2.0.3",
2489
  "minimatch": "3.0.4",
2490
  "once": "1.4.0",
2491
  "path-is-absolute": "1.0.1"
@@ -2524,7 +2525,7 @@
2524
  "requires": {
2525
  "fs.realpath": "1.0.0",
2526
  "inflight": "1.0.6",
2527
- "inherits": "2.0.3",
2528
  "minimatch": "3.0.4",
2529
  "once": "1.4.0",
2530
  "path-is-absolute": "1.0.1"
@@ -2562,9 +2563,9 @@
2562
  }
2563
  },
2564
  "graceful-fs": {
2565
- "version": "4.1.15",
2566
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
2567
- "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
2568
  "dev": true
2569
  },
2570
  "graceful-readlink": {
@@ -2940,7 +2941,7 @@
2940
  "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
2941
  "dev": true,
2942
  "requires": {
2943
- "inherits": "2.0.3",
2944
  "minimatch": "0.3.0"
2945
  }
2946
  },
@@ -3159,7 +3160,7 @@
3159
  "version": "github:codeinwp/grunt-plugin-fleet#922540b800fafe8a89d60e82699afb8073c1b7c2",
3160
  "dev": true,
3161
  "requires": {
3162
- "autoprefixer": "9.5.1",
3163
  "grunt": "1.0.4",
3164
  "grunt-cachebuster": "0.1.7",
3165
  "grunt-checktextdomain": "1.0.1",
@@ -3178,11 +3179,11 @@
3178
  "grunt-rsync": "3.0.0",
3179
  "grunt-sync": "0.8.1",
3180
  "grunt-text-replace": "0.4.0",
3181
- "grunt-version": "1.3.0",
3182
  "grunt-wp-css": "0.2.1",
3183
  "grunt-wp-i18n": "1.0.3",
3184
  "grunt-wp-readme-to-markdown": "2.0.1",
3185
- "ignore": "5.1.1",
3186
  "time-grunt": "1.4.0"
3187
  }
3188
  },
@@ -3238,7 +3239,7 @@
3238
  "requires": {
3239
  "fs.realpath": "1.0.0",
3240
  "inflight": "1.0.6",
3241
- "inherits": "2.0.3",
3242
  "minimatch": "3.0.4",
3243
  "once": "1.4.0",
3244
  "path-is-absolute": "1.0.1"
@@ -3253,19 +3254,19 @@
3253
  "dev": true
3254
  },
3255
  "grunt-version": {
3256
- "version": "1.3.0",
3257
- "resolved": "https://registry.npmjs.org/grunt-version/-/grunt-version-1.3.0.tgz",
3258
- "integrity": "sha512-sHXaI20enfemESU2r/mrJd8eEFr8qSJSwzzIyau2IaxKwez0ojr5wg93x74K7PqSBKmVxumJ6TTscvGIfygRbA==",
3259
  "dev": true,
3260
  "requires": {
3261
  "grunt": "1.0.4",
3262
- "semver": "4.3.6"
3263
  },
3264
  "dependencies": {
3265
  "semver": {
3266
- "version": "4.3.6",
3267
- "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
3268
- "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
3269
  "dev": true
3270
  }
3271
  }
@@ -3463,7 +3464,7 @@
3463
  "dev": true,
3464
  "requires": {
3465
  "core-util-is": "1.0.2",
3466
- "inherits": "2.0.3",
3467
  "isarray": "0.0.1",
3468
  "string_decoder": "0.10.31"
3469
  }
@@ -3484,9 +3485,9 @@
3484
  "optional": true
3485
  },
3486
  "http-parser-js": {
3487
- "version": "0.5.0",
3488
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz",
3489
- "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==",
3490
  "dev": true
3491
  },
3492
  "http-signature": {
@@ -3516,9 +3517,9 @@
3516
  "dev": true
3517
  },
3518
  "ignore": {
3519
- "version": "5.1.1",
3520
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.1.tgz",
3521
- "integrity": "sha512-DWjnQIFLenVrwyRCKZT+7a7/U4Cqgar4WG8V++K3hw+lrW1hc/SIwdiGmtxKCVACmHULTuGeBbHJmbwW7/sAvA==",
3522
  "dev": true
3523
  },
3524
  "iltorb": {
@@ -3636,9 +3637,9 @@
3636
  "dev": true
3637
  },
3638
  "inherits": {
3639
- "version": "2.0.3",
3640
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
3641
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
3642
  "dev": true
3643
  },
3644
  "ini": {
@@ -4038,7 +4039,7 @@
4038
  "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
4039
  "dev": true,
4040
  "requires": {
4041
- "graceful-fs": "4.1.15"
4042
  }
4043
  },
4044
  "jsprim": {
@@ -4111,7 +4112,7 @@
4111
  "dev": true,
4112
  "requires": {
4113
  "inflight": "1.0.6",
4114
- "inherits": "2.0.3",
4115
  "minimatch": "3.0.4",
4116
  "once": "1.4.0",
4117
  "path-is-absolute": "1.0.1"
@@ -4153,7 +4154,7 @@
4153
  "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
4154
  "dev": true,
4155
  "requires": {
4156
- "graceful-fs": "4.1.15",
4157
  "parse-json": "2.2.0",
4158
  "pify": "2.3.0",
4159
  "pinkie-promise": "2.0.1",
@@ -4374,9 +4375,9 @@
4374
  "dev": true
4375
  },
4376
  "mixin-deep": {
4377
- "version": "1.3.1",
4378
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
4379
- "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
4380
  "dev": true,
4381
  "requires": {
4382
  "for-in": "1.0.2",
@@ -4462,9 +4463,9 @@
4462
  "dev": true
4463
  },
4464
  "node-abi": {
4465
- "version": "2.8.0",
4466
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.8.0.tgz",
4467
- "integrity": "sha512-1/aa2clS0pue0HjckL62CsbhWWU35HARvBDXcJtYKbYR7LnIutmpxmXbuDMV9kEviD2lP/wACOgWmmwljghHyQ==",
4468
  "dev": true,
4469
  "optional": true,
4470
  "requires": {
@@ -4480,7 +4481,7 @@
4480
  "requires": {
4481
  "fstream": "1.0.12",
4482
  "glob": "7.0.6",
4483
- "graceful-fs": "4.1.15",
4484
  "mkdirp": "0.5.1",
4485
  "nopt": "3.0.6",
4486
  "npmlog": "4.1.2",
@@ -4502,9 +4503,9 @@
4502
  }
4503
  },
4504
  "node-releases": {
4505
- "version": "1.1.20",
4506
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.20.tgz",
4507
- "integrity": "sha512-YnC3NemTLgzOkQTmR4+0yl/7pIsXZcfWXoquNp0Dql03GQ+CYURhnjUDFsSJxpX/Q9nw8lAjLFdnACQoKs6h5w==",
4508
  "dev": true,
4509
  "requires": {
4510
  "semver": "5.7.0"
@@ -4522,7 +4523,7 @@
4522
  "integrity": "sha512-YMzMcsjXbGYDB9vHyb289CYXAGmXhcNLbeTlOnWgPNkZd9xrovcbRd7cQyKd9BQHOjS7Nw8WCbJ7nvtR7rc0rg==",
4523
  "dev": true,
4524
  "requires": {
4525
- "bluebird": "3.5.4",
4526
  "gettext-parser": "3.1.1",
4527
  "glob": "7.0.6",
4528
  "lodash": "4.17.11",
@@ -4554,7 +4555,7 @@
4554
  "dev": true,
4555
  "requires": {
4556
  "hosted-git-info": "2.7.1",
4557
- "resolve": "1.11.0",
4558
  "semver": "5.7.0",
4559
  "validate-npm-package-license": "3.0.4"
4560
  }
@@ -4939,7 +4940,7 @@
4939
  "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
4940
  "dev": true,
4941
  "requires": {
4942
- "graceful-fs": "4.1.15",
4943
  "pify": "2.3.0",
4944
  "pinkie-promise": "2.0.1"
4945
  }
@@ -5002,9 +5003,9 @@
5002
  "dev": true
5003
  },
5004
  "postcss": {
5005
- "version": "7.0.16",
5006
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.16.tgz",
5007
- "integrity": "sha512-MOo8zNSlIqh22Uaa3drkdIAgUGEL+AD1ESiSdmElLUmE2uVDo1QloiT/IfW9qRw8Gw+Y/w69UVMGwbufMSftxA==",
5008
  "dev": true,
5009
  "requires": {
5010
  "chalk": "2.4.2",
@@ -5041,7 +5042,7 @@
5041
  "github-from-package": "0.0.0",
5042
  "minimist": "1.2.0",
5043
  "mkdirp": "0.5.1",
5044
- "node-abi": "2.8.0",
5045
  "noop-logger": "0.1.1",
5046
  "npmlog": "4.1.2",
5047
  "os-homedir": "1.0.2",
@@ -5095,9 +5096,9 @@
5095
  }
5096
  },
5097
  "process-nextick-args": {
5098
- "version": "2.0.0",
5099
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
5100
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
5101
  "dev": true
5102
  },
5103
  "proto-list": {
@@ -5113,9 +5114,9 @@
5113
  "dev": true
5114
  },
5115
  "psl": {
5116
- "version": "1.1.31",
5117
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz",
5118
- "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==",
5119
  "dev": true
5120
  },
5121
  "pump": {
@@ -5219,9 +5220,9 @@
5219
  "dev": true,
5220
  "requires": {
5221
  "core-util-is": "1.0.2",
5222
- "inherits": "2.0.3",
5223
  "isarray": "1.0.0",
5224
- "process-nextick-args": "2.0.0",
5225
  "safe-buffer": "5.1.2",
5226
  "string_decoder": "1.1.1",
5227
  "util-deprecate": "1.0.2"
@@ -5330,9 +5331,9 @@
5330
  }
5331
  },
5332
  "resolve": {
5333
- "version": "1.11.0",
5334
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
5335
- "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
5336
  "dev": true,
5337
  "requires": {
5338
  "path-parse": "1.0.6"
@@ -5377,7 +5378,7 @@
5377
  "requires": {
5378
  "fs.realpath": "1.0.0",
5379
  "inflight": "1.0.6",
5380
- "inherits": "2.0.3",
5381
  "minimatch": "3.0.4",
5382
  "once": "1.4.0",
5383
  "path-is-absolute": "1.0.1"
@@ -5419,7 +5420,7 @@
5419
  "dev": true,
5420
  "requires": {
5421
  "editions": "1.3.4",
5422
- "graceful-fs": "4.1.15"
5423
  }
5424
  },
5425
  "safer-buffer": {
@@ -5474,9 +5475,9 @@
5474
  "dev": true
5475
  },
5476
  "set-value": {
5477
- "version": "2.0.0",
5478
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
5479
- "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
5480
  "dev": true,
5481
  "requires": {
5482
  "extend-shallow": "2.0.1",
@@ -5982,7 +5983,7 @@
5982
  "requires": {
5983
  "block-stream": "0.0.9",
5984
  "fstream": "1.0.12",
5985
- "inherits": "2.0.3"
5986
  }
5987
  },
5988
  "tar-fs": {
@@ -5992,7 +5993,7 @@
5992
  "dev": true,
5993
  "optional": true,
5994
  "requires": {
5995
- "chownr": "1.1.1",
5996
  "mkdirp": "0.5.1",
5997
  "pump": "1.0.3",
5998
  "tar-stream": "1.6.2"
@@ -6128,13 +6129,13 @@
6128
  "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
6129
  "dev": true,
6130
  "requires": {
6131
- "ms": "2.1.1"
6132
  }
6133
  },
6134
  "ms": {
6135
- "version": "2.1.1",
6136
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
6137
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
6138
  "dev": true
6139
  }
6140
  }
@@ -6202,7 +6203,7 @@
6202
  "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
6203
  "dev": true,
6204
  "requires": {
6205
- "psl": "1.1.31",
6206
  "punycode": "1.4.1"
6207
  },
6208
  "dependencies": {
@@ -6292,38 +6293,15 @@
6292
  }
6293
  },
6294
  "union-value": {
6295
- "version": "1.0.0",
6296
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
6297
- "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
6298
  "dev": true,
6299
  "requires": {
6300
  "arr-union": "3.1.0",
6301
  "get-value": "2.0.6",
6302
  "is-extendable": "0.1.1",
6303
- "set-value": "0.4.3"
6304
- },
6305
- "dependencies": {
6306
- "extend-shallow": {
6307
- "version": "2.0.1",
6308
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
6309
- "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
6310
- "dev": true,
6311
- "requires": {
6312
- "is-extendable": "0.1.1"
6313
- }
6314
- },
6315
- "set-value": {
6316
- "version": "0.4.3",
6317
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
6318
- "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
6319
- "dev": true,
6320
- "requires": {
6321
- "extend-shallow": "2.0.1",
6322
- "is-extendable": "0.1.1",
6323
- "is-plain-object": "2.0.4",
6324
- "to-object-path": "0.3.0"
6325
- }
6326
- }
6327
  }
6328
  },
6329
  "universalify": {
@@ -6484,7 +6462,7 @@
6484
  "integrity": "sha1-VQb0MRchvMYYx9jboUQYh1AwcHM=",
6485
  "dev": true,
6486
  "requires": {
6487
- "inherits": "2.0.3",
6488
  "minimatch": "0.2.14"
6489
  }
6490
  },
@@ -6522,12 +6500,13 @@
6522
  "dev": true
6523
  },
6524
  "websocket-driver": {
6525
- "version": "0.7.0",
6526
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
6527
- "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
6528
  "dev": true,
6529
  "requires": {
6530
- "http-parser-js": "0.5.0",
 
6531
  "websocket-extensions": "0.1.3"
6532
  }
6533
  },
1
  {
2
  "name": "wp-product-review",
3
+ "version": "3.7.0",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
134
  "dev": true,
135
  "requires": {
136
  "glob": "7.0.6",
137
+ "graceful-fs": "4.2.0",
138
  "lazystream": "1.0.0",
139
  "lodash": "4.17.11",
140
  "normalize-path": "2.1.1",
265
  "dev": true
266
  },
267
  "autoprefixer": {
268
+ "version": "9.6.0",
269
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.0.tgz",
270
+ "integrity": "sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ==",
271
  "dev": true,
272
  "requires": {
273
+ "browserslist": "4.6.3",
274
+ "caniuse-lite": "1.0.30000979",
275
+ "chalk": "2.4.2",
276
  "normalize-range": "0.1.2",
277
  "num2fraction": "1.2.2",
278
+ "postcss": "7.0.17",
279
  "postcss-value-parser": "3.3.1"
280
  }
281
  },
308
  "component-emitter": "1.3.0",
309
  "define-property": "1.0.0",
310
  "isobject": "3.0.1",
311
+ "mixin-deep": "1.3.2",
312
  "pascalcase": "0.1.1"
313
  },
314
  "dependencies": {
624
  "dev": true,
625
  "optional": true,
626
  "requires": {
627
+ "inherits": "2.0.4"
628
  }
629
  },
630
  "bluebird": {
631
+ "version": "3.5.5",
632
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
633
+ "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
634
  "dev": true
635
  },
636
  "body": {
691
  }
692
  },
693
  "browserslist": {
694
+ "version": "4.6.3",
695
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.3.tgz",
696
+ "integrity": "sha512-CNBqTCq22RKM8wKJNowcqihHJ4SkI8CGeK7KOR9tPboXUuS5Zk5lQgzzTbs4oxD8x+6HUshZUa2OyNI9lR93bQ==",
697
  "dev": true,
698
  "requires": {
699
+ "caniuse-lite": "1.0.30000979",
700
+ "electron-to-chromium": "1.3.186",
701
+ "node-releases": "1.1.25"
702
  }
703
  },
704
  "buffer": {
756
  "get-value": "2.0.6",
757
  "has-value": "1.0.0",
758
  "isobject": "3.0.1",
759
+ "set-value": "2.0.1",
760
  "to-object-path": "0.3.0",
761
+ "union-value": "1.0.1",
762
  "unset-value": "1.0.0"
763
  }
764
  },
768
  "integrity": "sha1-HFQaoQilAQb2ML3Zj+HeyLoTP1E=",
769
  "dev": true,
770
  "requires": {
771
+ "graceful-fs": "4.2.0",
772
  "mkdirp": "0.5.1",
773
  "object-assign": "4.1.1",
774
  "rimraf": "2.6.3"
822
  }
823
  },
824
  "caniuse-lite": {
825
+ "version": "1.0.30000979",
826
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000979.tgz",
827
+ "integrity": "sha512-gcu45yfq3B7Y+WB05fOMfr0EiSlq+1u+m6rPHyJli/Wy3PVQNGaU7VA4bZE5qw+AU2UVOBR/N5g1bzADUqdvFw==",
828
  "dev": true
829
  },
830
  "caseless": {
857
  }
858
  },
859
  "chownr": {
860
+ "version": "1.1.2",
861
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
862
+ "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
863
  "dev": true,
864
  "optional": true
865
  },
904
  "requires": {
905
  "fs.realpath": "1.0.0",
906
  "inflight": "1.0.6",
907
+ "inherits": "2.0.4",
908
  "minimatch": "3.0.4",
909
  "once": "1.4.0",
910
  "path-is-absolute": "1.0.1"
1360
  "decompress-tarbz2": "4.1.1",
1361
  "decompress-targz": "4.1.1",
1362
  "decompress-unzip": "4.0.1",
1363
+ "graceful-fs": "4.2.0",
1364
  "make-dir": "1.3.0",
1365
  "pify": "2.3.0",
1366
  "strip-dirs": "2.1.0"
1678
  "dev": true
1679
  },
1680
  "electron-to-chromium": {
1681
+ "version": "1.3.186",
1682
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.186.tgz",
1683
+ "integrity": "sha512-lRyyEUDKenKv/EBVFgfDZDYTDdoAZhzuE+inMUP79+22NDPAA2Ox+f3AShILIjPoUIqRGwvPNbzFcyU8km8g4A==",
1684
  "dev": true
1685
  },
1686
  "encoding": {
2046
  "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
2047
  "dev": true,
2048
  "requires": {
2049
+ "websocket-driver": "0.7.3"
2050
  }
2051
  },
2052
  "fd-slicer": {
2166
  "dev": true,
2167
  "requires": {
2168
  "inflight": "1.0.6",
2169
+ "inherits": "2.0.4",
2170
  "minimatch": "3.0.4",
2171
  "once": "1.4.0",
2172
  "path-is-absolute": "1.0.1"
2213
  "dev": true,
2214
  "optional": true,
2215
  "requires": {
2216
+ "inherits": "2.0.4",
2217
  "readable-stream": "2.3.6"
2218
  }
2219
  },
2229
  "integrity": "sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA==",
2230
  "dev": true,
2231
  "requires": {
2232
+ "graceful-fs": "4.2.0",
2233
  "jsonfile": "4.0.0",
2234
  "universalify": "0.1.2"
2235
  }
2246
  "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
2247
  "dev": true,
2248
  "requires": {
2249
+ "graceful-fs": "4.2.0",
2250
+ "inherits": "2.0.4",
2251
  "mkdirp": "0.5.1",
2252
  "rimraf": "2.6.3"
2253
  }
2332
  "dev": true,
2333
  "requires": {
2334
  "encoding": "0.1.12",
2335
+ "readable-stream": "3.4.0",
2336
  "safe-buffer": "5.1.2"
2337
  },
2338
  "dependencies": {
2339
  "readable-stream": {
2340
+ "version": "3.4.0",
2341
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
2342
+ "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
2343
  "dev": true,
2344
  "requires": {
2345
+ "inherits": "2.0.4",
2346
  "string_decoder": "1.1.1",
2347
  "util-deprecate": "1.0.2"
2348
  }
2430
  "requires": {
2431
  "fs.realpath": "1.0.0",
2432
  "inflight": "1.0.6",
2433
+ "inherits": "2.0.4",
2434
  "minimatch": "3.0.4",
2435
  "once": "1.4.0",
2436
  "path-is-absolute": "1.0.1"
2486
  "requires": {
2487
  "fs.realpath": "1.0.0",
2488
  "inflight": "1.0.6",
2489
+ "inherits": "2.0.4",
2490
  "minimatch": "3.0.4",
2491
  "once": "1.4.0",
2492
  "path-is-absolute": "1.0.1"
2525
  "requires": {
2526
  "fs.realpath": "1.0.0",
2527
  "inflight": "1.0.6",
2528
+ "inherits": "2.0.4",
2529
  "minimatch": "3.0.4",
2530
  "once": "1.4.0",
2531
  "path-is-absolute": "1.0.1"
2563
  }
2564
  },
2565
  "graceful-fs": {
2566
+ "version": "4.2.0",
2567
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
2568
+ "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
2569
  "dev": true
2570
  },
2571
  "graceful-readlink": {
2941
  "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
2942
  "dev": true,
2943
  "requires": {
2944
+ "inherits": "2.0.4",
2945
  "minimatch": "0.3.0"
2946
  }
2947
  },
3160
  "version": "github:codeinwp/grunt-plugin-fleet#922540b800fafe8a89d60e82699afb8073c1b7c2",
3161
  "dev": true,
3162
  "requires": {
3163
+ "autoprefixer": "9.6.0",
3164
  "grunt": "1.0.4",
3165
  "grunt-cachebuster": "0.1.7",
3166
  "grunt-checktextdomain": "1.0.1",
3179
  "grunt-rsync": "3.0.0",
3180
  "grunt-sync": "0.8.1",
3181
  "grunt-text-replace": "0.4.0",
3182
+ "grunt-version": "1.3.1",
3183
  "grunt-wp-css": "0.2.1",
3184
  "grunt-wp-i18n": "1.0.3",
3185
  "grunt-wp-readme-to-markdown": "2.0.1",
3186
+ "ignore": "5.1.2",
3187
  "time-grunt": "1.4.0"
3188
  }
3189
  },
3239
  "requires": {
3240
  "fs.realpath": "1.0.0",
3241
  "inflight": "1.0.6",
3242
+ "inherits": "2.0.4",
3243
  "minimatch": "3.0.4",
3244
  "once": "1.4.0",
3245
  "path-is-absolute": "1.0.1"
3254
  "dev": true
3255
  },
3256
  "grunt-version": {
3257
+ "version": "1.3.1",
3258
+ "resolved": "https://registry.npmjs.org/grunt-version/-/grunt-version-1.3.1.tgz",
3259
+ "integrity": "sha512-EIx829NfFSAG3EbBKTAH15rj5SutSnjdZwVr80qWrmuVU4vOqP1S8RB3ghzetBYSiNBozKMNS+zeA6+jhmshUw==",
3260
  "dev": true,
3261
  "requires": {
3262
  "grunt": "1.0.4",
3263
+ "semver": "6.2.0"
3264
  },
3265
  "dependencies": {
3266
  "semver": {
3267
+ "version": "6.2.0",
3268
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz",
3269
+ "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==",
3270
  "dev": true
3271
  }
3272
  }
3464
  "dev": true,
3465
  "requires": {
3466
  "core-util-is": "1.0.2",
3467
+ "inherits": "2.0.4",
3468
  "isarray": "0.0.1",
3469
  "string_decoder": "0.10.31"
3470
  }
3485
  "optional": true
3486
  },
3487
  "http-parser-js": {
3488
+ "version": "0.4.10",
3489
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
3490
+ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
3491
  "dev": true
3492
  },
3493
  "http-signature": {
3517
  "dev": true
3518
  },
3519
  "ignore": {
3520
+ "version": "5.1.2",
3521
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.2.tgz",
3522
+ "integrity": "sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ==",
3523
  "dev": true
3524
  },
3525
  "iltorb": {
3637
  "dev": true
3638
  },
3639
  "inherits": {
3640
+ "version": "2.0.4",
3641
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
3642
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
3643
  "dev": true
3644
  },
3645
  "ini": {
4039
  "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
4040
  "dev": true,
4041
  "requires": {
4042
+ "graceful-fs": "4.2.0"
4043
  }
4044
  },
4045
  "jsprim": {
4112
  "dev": true,
4113
  "requires": {
4114
  "inflight": "1.0.6",
4115
+ "inherits": "2.0.4",
4116
  "minimatch": "3.0.4",
4117
  "once": "1.4.0",
4118
  "path-is-absolute": "1.0.1"
4154
  "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
4155
  "dev": true,
4156
  "requires": {
4157
+ "graceful-fs": "4.2.0",
4158
  "parse-json": "2.2.0",
4159
  "pify": "2.3.0",
4160
  "pinkie-promise": "2.0.1",
4375
  "dev": true
4376
  },
4377
  "mixin-deep": {
4378
+ "version": "1.3.2",
4379
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
4380
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
4381
  "dev": true,
4382
  "requires": {
4383
  "for-in": "1.0.2",
4463
  "dev": true
4464
  },
4465
  "node-abi": {
4466
+ "version": "2.9.0",
4467
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.9.0.tgz",
4468
+ "integrity": "sha512-jmEOvv0eanWjhX8dX1pmjb7oJl1U1oR4FOh0b2GnvALwSYoOdU7sj+kLDSAyjo4pfC9aj/IxkloxdLJQhSSQBA==",
4469
  "dev": true,
4470
  "optional": true,
4471
  "requires": {
4481
  "requires": {
4482
  "fstream": "1.0.12",
4483
  "glob": "7.0.6",
4484
+ "graceful-fs": "4.2.0",
4485
  "mkdirp": "0.5.1",
4486
  "nopt": "3.0.6",
4487
  "npmlog": "4.1.2",
4503
  }
4504
  },
4505
  "node-releases": {
4506
+ "version": "1.1.25",
4507
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.25.tgz",
4508
+ "integrity": "sha512-fI5BXuk83lKEoZDdH3gRhtsNgh05/wZacuXkgbiYkceE7+QIMXOg98n9ZV7mz27B+kFHnqHcUpscZZlGRSmTpQ==",
4509
  "dev": true,
4510
  "requires": {
4511
  "semver": "5.7.0"
4523
  "integrity": "sha512-YMzMcsjXbGYDB9vHyb289CYXAGmXhcNLbeTlOnWgPNkZd9xrovcbRd7cQyKd9BQHOjS7Nw8WCbJ7nvtR7rc0rg==",
4524
  "dev": true,
4525
  "requires": {
4526
+ "bluebird": "3.5.5",
4527
  "gettext-parser": "3.1.1",
4528
  "glob": "7.0.6",
4529
  "lodash": "4.17.11",
4555
  "dev": true,
4556
  "requires": {
4557
  "hosted-git-info": "2.7.1",
4558
+ "resolve": "1.11.1",
4559
  "semver": "5.7.0",
4560
  "validate-npm-package-license": "3.0.4"
4561
  }
4940
  "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
4941
  "dev": true,
4942
  "requires": {
4943
+ "graceful-fs": "4.2.0",
4944
  "pify": "2.3.0",
4945
  "pinkie-promise": "2.0.1"
4946
  }
5003
  "dev": true
5004
  },
5005
  "postcss": {
5006
+ "version": "7.0.17",
5007
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz",
5008
+ "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==",
5009
  "dev": true,
5010
  "requires": {
5011
  "chalk": "2.4.2",
5042
  "github-from-package": "0.0.0",
5043
  "minimist": "1.2.0",
5044
  "mkdirp": "0.5.1",
5045
+ "node-abi": "2.9.0",
5046
  "noop-logger": "0.1.1",
5047
  "npmlog": "4.1.2",
5048
  "os-homedir": "1.0.2",
5096
  }
5097
  },
5098
  "process-nextick-args": {
5099
+ "version": "2.0.1",
5100
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
5101
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
5102
  "dev": true
5103
  },
5104
  "proto-list": {
5114
  "dev": true
5115
  },
5116
  "psl": {
5117
+ "version": "1.2.0",
5118
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
5119
+ "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==",
5120
  "dev": true
5121
  },
5122
  "pump": {
5220
  "dev": true,
5221
  "requires": {
5222
  "core-util-is": "1.0.2",
5223
+ "inherits": "2.0.4",
5224
  "isarray": "1.0.0",
5225
+ "process-nextick-args": "2.0.1",
5226
  "safe-buffer": "5.1.2",
5227
  "string_decoder": "1.1.1",
5228
  "util-deprecate": "1.0.2"
5331
  }
5332
  },
5333
  "resolve": {
5334
+ "version": "1.11.1",
5335
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz",
5336
+ "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==",
5337
  "dev": true,
5338
  "requires": {
5339
  "path-parse": "1.0.6"
5378
  "requires": {
5379
  "fs.realpath": "1.0.0",
5380
  "inflight": "1.0.6",
5381
+ "inherits": "2.0.4",
5382
  "minimatch": "3.0.4",
5383
  "once": "1.4.0",
5384
  "path-is-absolute": "1.0.1"
5420
  "dev": true,
5421
  "requires": {
5422
  "editions": "1.3.4",
5423
+ "graceful-fs": "4.2.0"
5424
  }
5425
  },
5426
  "safer-buffer": {
5475
  "dev": true
5476
  },
5477
  "set-value": {
5478
+ "version": "2.0.1",
5479
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
5480
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
5481
  "dev": true,
5482
  "requires": {
5483
  "extend-shallow": "2.0.1",
5983
  "requires": {
5984
  "block-stream": "0.0.9",
5985
  "fstream": "1.0.12",
5986
+ "inherits": "2.0.4"
5987
  }
5988
  },
5989
  "tar-fs": {
5993
  "dev": true,
5994
  "optional": true,
5995
  "requires": {
5996
+ "chownr": "1.1.2",
5997
  "mkdirp": "0.5.1",
5998
  "pump": "1.0.3",
5999
  "tar-stream": "1.6.2"
6129
  "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
6130
  "dev": true,
6131
  "requires": {
6132
+ "ms": "2.1.2"
6133
  }
6134
  },
6135
  "ms": {
6136
+ "version": "2.1.2",
6137
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
6138
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
6139
  "dev": true
6140
  }
6141
  }
6203
  "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
6204
  "dev": true,
6205
  "requires": {
6206
+ "psl": "1.2.0",
6207
  "punycode": "1.4.1"
6208
  },
6209
  "dependencies": {
6293
  }
6294
  },
6295
  "union-value": {
6296
+ "version": "1.0.1",
6297
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
6298
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
6299
  "dev": true,
6300
  "requires": {
6301
  "arr-union": "3.1.0",
6302
  "get-value": "2.0.6",
6303
  "is-extendable": "0.1.1",
6304
+ "set-value": "2.0.1"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6305
  }
6306
  },
6307
  "universalify": {
6462
  "integrity": "sha1-VQb0MRchvMYYx9jboUQYh1AwcHM=",
6463
  "dev": true,
6464
  "requires": {
6465
+ "inherits": "2.0.4",
6466
  "minimatch": "0.2.14"
6467
  }
6468
  },
6500
  "dev": true
6501
  },
6502
  "websocket-driver": {
6503
+ "version": "0.7.3",
6504
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
6505
+ "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
6506
  "dev": true,
6507
  "requires": {
6508
+ "http-parser-js": "0.4.10",
6509
+ "safe-buffer": "5.1.2",
6510
  "websocket-extensions": "0.1.3"
6511
  }
6512
  },
readme.md CHANGED
@@ -39,7 +39,7 @@ Easily turn your basic posts into in-depth reviews with ratings, pros and cons,
39
 
40
  If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="http://www.codeinwp.com/blog/15-best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
41
 
42
- = See how WP Product Review can integrate with your website =
43
 
44
  * [Default review](https://demo.themeisle.com/wp-product-review/sample-review/)
45
  * [Custom icons ratings](https://demo.themeisle.com/wp-product-review/custom-icons/)
@@ -61,12 +61,15 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
61
  - Add specific user review options to wordpress comments
62
  - Add rich snippet ( schema ) to your posts
63
 
64
- ### Translations ###
 
 
 
 
 
 
65
 
66
- * sk_SK translation by Patrik Žec (PATWIST) of http://patwist.com
67
- * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
- ## Changelog ##
70
  ### 3.6.1 - 2019-05-22 ###
71
 
72
  * Fix error in structured data
@@ -763,9 +766,12 @@ https://themeisle.com/contact
763
  ## Screenshots ##
764
 
765
  1. Screenshot 1 Wrap-up review widget that is added at the end of the posts
766
- 2. Screenshot 2 User Review Options added to wp comments
767
- 3. Screenshot 3 Fully configurable theme options
768
- 4. Screenshot 4 Rich Snippets displayed in Google
 
 
 
769
 
770
  for more you can check out
771
 
39
 
40
  If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="http://www.codeinwp.com/blog/15-best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
41
 
42
+ = See how WP Product Review PRO can integrate with your website =
43
 
44
  * [Default review](https://demo.themeisle.com/wp-product-review/sample-review/)
45
  * [Custom icons ratings](https://demo.themeisle.com/wp-product-review/custom-icons/)
61
  - Add specific user review options to wordpress comments
62
  - Add rich snippet ( schema ) to your posts
63
 
64
+ ## Changelog ##
65
+ ### 3.7.0 - 2019-07-04 ###
66
+
67
+ * Add rating scale out of 5
68
+ * Add star rating
69
+ * Fix UI for AMP requests
70
+ * Added filter to disable comments per review
71
 
 
 
72
 
 
73
  ### 3.6.1 - 2019-05-22 ###
74
 
75
  * Fix error in structured data
766
  ## Screenshots ##
767
 
768
  1. Screenshot 1 Wrap-up review widget that is added at the end of the posts
769
+ 2. Screenshot 2 Review comment on a scale of 5 with slider rating
770
+ 3. Screenshot 3 Review comment on a scale of 10 with slider rating
771
+ 4. Screenshot 4 Review comment with star rating
772
+ 5. Screenshot 5 Settings configuration screen
773
+ 6. Screenshot 6 Rich Snippets displayed in Google
774
+ 7. Screenshot 7 How ratings appear as comments
775
 
776
  for more you can check out
777
 
readme.txt CHANGED
@@ -39,7 +39,7 @@ Easily turn your basic posts into in-depth reviews with ratings, pros and cons,
39
 
40
  If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="http://www.codeinwp.com/blog/15-best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
41
 
42
- = See how WP Product Review can integrate with your website =
43
 
44
  * [Default review](https://demo.themeisle.com/wp-product-review/sample-review/)
45
  * [Custom icons ratings](https://demo.themeisle.com/wp-product-review/custom-icons/)
@@ -61,12 +61,15 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
61
  - Add specific user review options to wordpress comments
62
  - Add rich snippet ( schema ) to your posts
63
 
64
- = Translations =
 
 
 
 
 
 
65
 
66
- * sk_SK translation by Patrik Žec (PATWIST) of http://patwist.com
67
- * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
- == Changelog ==
70
  = 3.6.1 - 2019-05-22 =
71
 
72
  * Fix error in structured data
@@ -562,6 +565,7 @@ Alternatively you can also follow the following steps to install the WP Product
562
 
563
 
564
 
 
565
  = How to activate user reviews =
566
 
567
  By default user reviews are disabled since not all the themes are compatible with this option due to different designs for the comment box. You can easily activate them from General Settings
@@ -755,6 +759,24 @@ https://themeisle.com/contact
755
  = How to change the widget image size in WP Product Review =
756
  [https://docs.themeisle.com/article/1056-how-to-change-the-widget-image-size-in-wp-product-review](https://docs.themeisle.com/article/1056-how-to-change-the-widget-image-size-in-wp-product-review)
757
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
758
  == Upgrade Notice ==
759
 
760
  = 3.0 =
@@ -763,9 +785,12 @@ https://themeisle.com/contact
763
  == Screenshots ==
764
 
765
  1. Screenshot 1 Wrap-up review widget that is added at the end of the posts
766
- 2. Screenshot 2 User Review Options added to wp comments
767
- 3. Screenshot 3 Fully configurable theme options
768
- 4. Screenshot 4 Rich Snippets displayed in Google
 
 
 
769
 
770
  for more you can check out
771
 
39
 
40
  If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-wordpress-hosting/" rel="nofollow">fastest WordPress hosting</a> or which <a href="http://www.codeinwp.com/blog/15-best-wordpress-review-themes/" rel="nofollow">review themes</a> are playing nice with WP Product review, checkout our blog.
41
 
42
+ = See how WP Product Review PRO can integrate with your website =
43
 
44
  * [Default review](https://demo.themeisle.com/wp-product-review/sample-review/)
45
  * [Custom icons ratings](https://demo.themeisle.com/wp-product-review/custom-icons/)
61
  - Add specific user review options to wordpress comments
62
  - Add rich snippet ( schema ) to your posts
63
 
64
+ == Changelog ==
65
+ = 3.7.0 - 2019-07-04 =
66
+
67
+ * Add rating scale out of 5
68
+ * Add star rating
69
+ * Fix UI for AMP requests
70
+ * Added filter to disable comments per review
71
 
 
 
72
 
 
73
  = 3.6.1 - 2019-05-22 =
74
 
75
  * Fix error in structured data
565
 
566
 
567
 
568
+
569
  = How to activate user reviews =
570
 
571
  By default user reviews are disabled since not all the themes are compatible with this option due to different designs for the comment box. You can easily activate them from General Settings
759
  = How to change the widget image size in WP Product Review =
760
  [https://docs.themeisle.com/article/1056-how-to-change-the-widget-image-size-in-wp-product-review](https://docs.themeisle.com/article/1056-how-to-change-the-widget-image-size-in-wp-product-review)
761
 
762
+ = How to make Comment Review option work in any theme =
763
+ [https://docs.themeisle.com/article/54-why-comment-review-option-is-not-working-with-my-theme](https://docs.themeisle.com/article/54-why-comment-review-option-is-not-working-with-my-theme)
764
+
765
+ = Enable user reviews in WP Product Review =
766
+ [https://docs.themeisle.com/article/759-enable-user-reviews-in-wp-product-revie](https://docs.themeisle.com/article/759-enable-user-reviews-in-wp-product-revie)
767
+
768
+ = How to remove Pros/Cons list in WP Product Review =
769
+ [https://docs.themeisle.com/article/762-how-to-remove-pros-cons-list-in-wp-product-review](https://docs.themeisle.com/article/762-how-to-remove-pros-cons-list-in-wp-product-review)
770
+
771
+ = How the before/after/manual review box placement option works =
772
+ [https://docs.themeisle.com/article/865-how-the-before-after-manual-review-box-placement-works](https://docs.themeisle.com/article/865-how-the-before-after-manual-review-box-placement-works)
773
+
774
+ = How to display both the product title and image in the review comparison table =
775
+ [https://docs.themeisle.com/article/981-how-to-display-product-title-and-image-both-in-review-table](https://docs.themeisle.com/article/981-how-to-display-product-title-and-image-both-in-review-table)
776
+
777
+ = Add specific "Service" types for schema.org in WP Product Review =
778
+ [https://docs.themeisle.com/article/1071-add-specific-service-types-for-schema-org](https://docs.themeisle.com/article/1071-add-specific-service-types-for-schema-org)
779
+
780
  == Upgrade Notice ==
781
 
782
  = 3.0 =
785
  == Screenshots ==
786
 
787
  1. Screenshot 1 Wrap-up review widget that is added at the end of the posts
788
+ 2. Screenshot 2 Review comment on a scale of 5 with slider rating
789
+ 3. Screenshot 3 Review comment on a scale of 10 with slider rating
790
+ 4. Screenshot 4 Review comment with star rating
791
+ 5. Screenshot 5 Settings configuration screen
792
+ 6. Screenshot 6 Rich Snippets displayed in Google
793
+ 7. Screenshot 7 How ratings appear as comments
794
 
795
  for more you can check out
796
 
screenshot-1.png ADDED
Binary file
screenshot-2.png ADDED
Binary file
screenshot-3.png ADDED
Binary file
screenshot-4.png ADDED
Binary file
screenshot-5.png ADDED
Binary file
screenshot-6.png ADDED
Binary file
screenshot-7.png ADDED
Binary file
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"class-wppr-autoloader.php":"c7f7f3dd52445edb5f7367ba7b31281f","class-wppr-recursive-filter.php":"6c74b0e7c04529d797ae9689d9a44c8d","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"2f9ac9eb01e5fbc6676feb62d8c1da66"}
1
+ {"class-wppr-autoloader.php":"c7f7f3dd52445edb5f7367ba7b31281f","class-wppr-recursive-filter.php":"6c74b0e7c04529d797ae9689d9a44c8d","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"cac22bd899167a33eff54b7ee5e24063"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitd92b26667373154eae939dd431e7cf9e::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit352003e57eff9edfc8e33fa4e5fb60d8::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInite59a58ce7cf5d08b22a8dfd7581012eb::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit3dc8fdc09d7bd4b63c06d840df5e9715::getLoader();
vendor/codeinwp/themeisle-sdk/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ## [3.0.6](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.5...v3.0.6) (2019-05-21)
2
 
3
 
1
+ ## [3.0.9](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.8...v3.0.9) (2019-06-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * adds new icon for dashboard widget ([de78068](https://github.com/Codeinwp/themeisle-sdk/commit/de78068))
7
+ * anchor element on license activation message which should link to the license field, fix [#57](https://github.com/Codeinwp/themeisle-sdk/issues/57) ([2e78856](https://github.com/Codeinwp/themeisle-sdk/commit/2e78856))
8
+ * change uninstall feedback logo with new version, fix [#58](https://github.com/Codeinwp/themeisle-sdk/issues/58) ([2554a4f](https://github.com/Codeinwp/themeisle-sdk/commit/2554a4f))
9
+ * remove soon to expire notice, fix https://github.com/Codeinwp/themeisle/issues/752 ([a126225](https://github.com/Codeinwp/themeisle-sdk/commit/a126225))
10
+
11
+ ## [3.0.8](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.7...v3.0.8) (2019-05-28)
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * undefined class on diff module which should check the class on global namespace ([df6bb12](https://github.com/Codeinwp/themeisle-sdk/commit/df6bb12))
17
+
18
+ ## [3.0.7](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.6...v3.0.7) (2019-05-27)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * change store url with the new domain ([6bdbe1e](https://github.com/Codeinwp/themeisle-sdk/commit/6bdbe1e))
24
+
25
  ## [3.0.6](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.5...v3.0.6) (2019-05-21)
26
 
27
 
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  return;
15
  }
16
  // Current SDK version and path.
17
- $themeisle_sdk_version = '3.0.6';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
14
  return;
15
  }
16
  // Current SDK version and path.
17
+ $themeisle_sdk_version = '3.0.9';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php CHANGED
@@ -127,10 +127,10 @@ class Dashboard_Widget extends Abstract_Module {
127
  }
128
 
129
  #themeisle h2.hndle {
130
- background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA3Ny4xMiA3Ny4xMiI+PHRpdGxlPkFzc2V0IDM8L3RpdGxlPjxwYXRoIGQ9Ik03NS43Niw0Ny42cS0xLjUsNi40Ni00LjA3LDkuMjZBMzYuMjIsMzYuMjIsMCwwLDEsNjMuMjYsNjNhNTEsNTEsMCwwLDEtOS43OSw0LjZoLS4xNXY0LjgyQTQuNjYsNC42NiwwLDAsMSw1Miw3NS43Niw0LjA3LDQuMDcsMCwwLDEsNDksNzcuMTJhNCw0LDAsMCwxLTIuMTgtLjYxQTQuOTQsNC45NCwwLDAsMSw0NS4xOSw3NWE0LjQyLDQuNDIsMCwwLDEtNy41NCwwLDQuOTQsNC45NCwwLDAsMS0xLjU4LDEuNSwzLjc1LDMuNzUsMCwwLDEtMiwuNjFBNC4yNyw0LjI3LDAsMCwxLDMwLjI3LDc1YTQuOTQsNC45NCwwLDAsMS0xLjU4LDEuNSw0LDQsMCwwLDEtMi4xOC42MSwzLjkzLDMuOTMsMCwwLDEtMy4xNi0xLjQzLDUuMyw1LjMsMCwwLDEtMS4yMS0zLjU0LDEzLjgxLDEzLjgxLDAsMCwxLTguNTgsMywxMy4yMywxMy4yMywwLDAsMS05LTMuNDdBMTguMjEsMTguMjEsMCwwLDAsOSw3MC43OWExNC4yNiwxNC4yNiwwLDAsMS03LjgzLTUuNDIsMTYuMTIsMTYuMTIsMCwwLDAsNS4xOS4wNywxMi44OSwxMi44OSwwLDAsMCw0LjktMS43M1EzLjE1LDU1LjQzLDEuMDUsNTAuNDZhMTgsMTgsMCwwLDEtMS02LjkzQTQwLDQwLDAsMCwxLDEuMjEsMzQsMjYuNTksMjYuNTksMCwwLDEsNS4yNywyNC4xUTguNDQsMTkuNDMsMTMsMTkuNDNhMy40MSwzLjQxLDAsMCwxLDMuNDcsMi4yNmMuNi0uOCwxLjItMS41NiwxLjgxLTIuMjZsLjQ1LS40NS43NS0uNzUsMS4wNS0xLjgxYTM1LjIsMzUuMiwwLDAsMSwyLjExLTMuMzIsMjguNTcsMjguNTcsMCwwLDEsOS4xMi03LjY4QTIzLjQsMjMuNCwwLDAsMSw0Mi45MywyLjU2YTIyLjIyLDIyLjIyLDAsMCwxLDIuNzEuMTVBOC4xNiw4LjE2LDAsMCwxLDUxLjgxLDAsOC42OSw4LjY5LDAsMCwxLDU4LDIuNDFhMS41MSwxLjUxLDAsMCwxLC4xNS42OGMwLC4yNS0uNTUuOTMtMS42NiwybC0uMy4zYTkuNjksOS42OSwwLDAsMSwxLjU4LjgzYy41NS4zNS44My42NS44My45YTEuNjIsMS42MiwwLDAsMS0uNiwxbC0uMTUuMTVxNi43OCw2LDguNTgsMTYuMjdBMy4zLDMuMywwLDAsMSw2OSwyMy4zNWE2LjQ4LDYuNDgsMCwwLDEsNC4yMiwyLjFxMy45MiwzLjMyLDMuOTIsMTEuOUE0Mi4wNSw0Mi4wNSwwLDAsMSw3NS43Niw0Ny42Wk01My42Miw1NC4wN2EyNCwyNCwwLDAsMS0xNCw0LjUyQTIxLjQxLDIxLjQxLDAsMCwxLDI3LDU0LjY3LDI0LjI4LDI0LjI4LDAsMCwxLDE4LjUzLDQ1YTI5LDI5LDAsMCwxLTMtMTMsMzEuNzgsMzEuNzgsMCwwLDEsLjkxLTcuNTNBMzIuMTcsMzIuMTcsMCwwLDAsMTEuOSw0MS4yN2EzMy41LDMzLjUsMCwwLDAsMi43OSwxMy40LDI5LjEsMjkuMSwwLDAsMCw3LjksMTAuODUsNC42OCw0LjY4LDAsMCwxLDEuNjYtMS44OCw0LjE3LDQuMTcsMCwwLDEsNC40NC0uMDgsNC41LDQuNSwwLDAsMSwxLjU4LDEuNjZBNC4yLDQuMiwwLDAsMSwzNCw2M2EzLjgzLDMuODMsMCwwLDEsMiwuNiw0LjUsNC41LDAsMCwxLDEuNTgsMS42Niw0LjI3LDQuMjcsMCwwLDEsNy41NCwwLDQuNSw0LjUsMCwwLDEsMS41OC0xLjY2LDQuMTcsNC4xNywwLDAsMSw0LjQ0LjA4LDMuODYsMy44NiwwLDAsMSwxLjUxLDEuNzMsMzAuMTcsMzAuMTcsMCwwLDAsNy42OC05Ljk0LDMxLjE4LDMxLjE4LDAsMCwwLDMuMTYtMTIuMzVBMjguMzksMjguMzksMCwwLDEsNTMuNjIsNTQuMDdaTTI4Ljc3LDY1LjM3YTMuMSwzLjEsMCwwLDAtNC4zNywwLDMuMDYsMy4wNiwwLDAsMC0uOSwyLjI2djQuODJhMy4zMiwzLjMyLDAsMCwwLC45LDIuMzMsMi45MywyLjkzLDAsMCwwLDQuMzcsMCwzLjMyLDMuMzIsMCwwLDAsLjktMi4zM1Y2Ny42M0EzLjA2LDMuMDYsMCwwLDAsMjguNzcsNjUuMzdabS45LTQ4YTQuMjQsNC4yNCwwLDAsMCwzLjQ3LDEuNzMsNC40NSw0LjQ1LDAsMCwwLDMuNTQtMS43Myw2LDYsMCwwLDAsMS40My0zLjkyLDUuNyw1LjcsMCwwLDAtMS40My0zLjg0QTQuNTMsNC41MywwLDAsMCwzMy4xNCw4YTQuMzEsNC4zMSwwLDAsMC0zLjQ3LDEuNjYsNS43OSw1Ljc5LDAsMCwwLTEuMzUsMy43N0E2LjMzLDYuMzMsMCwwLDAsMjkuNjcsMTcuNFptNi40OCw0OGEzLjEsMy4xLDAsMCwwLTQuMzcsMCwzLjA2LDMuMDYsMCwwLDAtLjksMi4yNnY0LjgyYTMuMzIsMy4zMiwwLDAsMCwuOSwyLjMzLDIuOTMsMi45MywwLDAsMCw0LjM3LDAsMy4zMiwzLjMyLDAsMCwwLC45LTIuMzNWNjcuNjNBMy4wNiwzLjA2LDAsMCwwLDM2LjE1LDY1LjM3Wm0tNC4wNy01NC4zYTIuMzcsMi4zNywwLDAsMSwyLTEsMi4xNywyLjE3LDAsMCwxLDEuODgsMSw0LjEsNC4xLDAsMCwxLDAsNC41MiwyLjE3LDIuMTcsMCwwLDEtMS44OCwxLDIuMzcsMi4zNywwLDAsMS0yLTEsMy43MiwzLjcyLDAsMCwxLS43NS0yLjM0QTMuNDksMy40OSwwLDAsMSwzMi4wOCwxMS4wN1ptNSw5LjQxYTIwLjYxLDIwLjYxLDAsMCwwLTMuNTQsMTIuMjgsMTcuMTUsMTcuMTUsMCwwLDAsNC4wNywxMSwxMi40MywxMi40MywwLDAsMCw5Ljg3LDQuNDUsMTUuMywxNS4zLDAsMCwwLDktMywxMywxMywwLDAsMCwuNi0zLjMycTAtMy4zMi0zLjE2LTMuMzFhOC41OCw4LjU4LDAsMCwwLTIsLjNxLTcuODMsMS41LTExLjU5LS4zLTQuNTMtMi4xMi00LjUyLTkuMzRBMzcuOTIsMzcuOTIsMCwwLDEsMzcuMDUsMjAuNDhaTTYxLjQ1LDE3QTEyLjg0LDEyLjg0LDAsMCwwLDUxLjIxLDEyLjJhMTUuMTEsMTUuMTEsMCwwLDAtNi40LDEuNDMsMTcuODMsMTcuODMsMCwwLDAtNS41LDRxLTYuMTgsMjAuNjQsNi4xOCwyMC42NEEyNC43NSwyNC43NSwwLDAsMCw0OSwzNy44MWEzOC45MiwzOC45MiwwLDAsMSw0LjgyLS40NmMxLjgxLDAsMy4wNi40NiwzLjc3LDEuMzZxMS4zNSwxLjUuNzUsNS4xMmEyMS43MiwyMS43MiwwLDAsMCw1LTcuMTVBMjEuMzgsMjEuMzgsMCwwLDAsNjUuMDcsMjgsMTcuNDQsMTcuNDQsMCwwLDAsNjEuNDUsMTdaTTQzLjYsNjUuMzdhMi43MiwyLjcyLDAsMCwwLTIuMS0uOSwzLDMsMCwwLDAtMi4xOS45LDMuMDYsMy4wNiwwLDAsMC0uOSwyLjI2djQuODJhMy4zMiwzLjMyLDAsMCwwLC45LDIuMzMsMi44NCwyLjg0LDAsMCwwLDIuMTksMSwyLjYxLDIuNjEsMCwwLDAsMi4xLTEsMy40NSwzLjQ1LDAsMCwwLC44My0yLjMzVjY3LjYzQTMuMTcsMy4xNywwLDAsMCw0My42LDY1LjM3Wm03LjQ2LDBhMywzLDAsMCwwLTIuMTgtLjksMi43MywyLjczLDAsMCwwLTIuMTEuOSwzLjE3LDMuMTcsMCwwLDAtLjgzLDIuMjZ2NC44MmEzLjQ1LDMuNDUsMCwwLDAsLjgzLDIuMzMsMi42MSwyLjYxLDAsMCwwLDIuMTEsMSwyLjgzLDIuODMsMCwwLDAsMi4xOC0xLDMuMzIsMy4zMiwwLDAsMCwuOS0yLjMzVjY3LjYzQTMuMDYsMy4wNiwwLDAsMCw1MS4wNiw2NS4zN1oiLz48L3N2Zz4=');
131
  background-repeat: no-repeat;
132
  background-position: 92% 50%;
133
- background-size: 30px;
134
  }
135
 
136
  #themeisle .inside {
127
  }
128
 
129
  #themeisle h2.hndle {
130
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABbCAMAAADncTNAAAAAtFBMVEVHcEyAgIB/f3+xsbGgoaGBgYGCgoKKioqAgIC1tbW5ubnFx8iAgIDU1taBgYGCgoKAgIC0tLXW19jW2NiAgIC3uLiBgYHLzMy4uLhycnLW19d/f3/T1NW0tLTX19mVlZWvr6+BgYHl5eWKiottbW5JSUnW2Nm5ubnh4eHT1NWVlZVjY2N4eHh9fX6pqqq+v79PT0/39/fu7u7Nzc7Z2ttYWFgBAQHDw8P////JysoZGRk0NTZqJc/sAAAAIXRSTlMA0FL7/oEnEPL6eibivm9gwJya76/enFq2CXI+2lFAyM8GATmPAAADj0lEQVR4Xu2YaW/iOhSGAwRCWDosnXa6znjJvm8svf//f12TuARyhiR2pfnUR6gSEnr0+uT4xK7yRb755pvhHePli5K7Bfpkuhoq8ozRJdMH+WWha6Z3sqYparCSLRJqspjImVbANJU03cNMMpofAwQZCGsmpQYyFvVM0Q00OQ9koMl5IPcCoro+RA1Dt2Ea9n9eZ0+YHJLkgIlkDywQx00wCTyaReiKH8LbNU9ybJOdkchV6QFxyCFLbVvdfaREqgUWg/tx2UbqIcK2Hex2TdGLwFTjIj3XP3YfCZFsb23KRZn/3263oymSFI0/a5S4PqUBjoBIJBDjeEhCN0wxQSRybIxtJ3K5SGzuE/vAwIQc8ZmMMJFAIM4oikZItfEFtorGgoE43FObwqHU68OtPCnOz8KZ2Jbl5LgkSW0Tc7YyIz/EFWmS4jMbiZU5mJOmKRaJpKGGyLZtDJh3iyaNUu/3+xyKnrtFL71EG+FTiMpENhQtxUQ8kSOXCIr2tnCNhg/gTX0SHYFp0t7TCwQZ7U841yoHrW6rtGroUwTWVnLMssxx+H4bgZcSOFf5MYx0Ae8FghomMDyC2EBNImBywPkNTDNqGLQpIg2TjUNU8tBy9DQMo0DAZF16rAi7vJAtFTIYFAHUc6hIRW6OuOhJgaCSwmDEAYK4oa7ro+qIEyJU/US7KTJKPNSFT9tFgVFBu0SF1y7yjX4masRA9Da7EFGj28R/BkQz6xGIOurkx38T/bKs9Uk8aIiMwm/Jw0VP1yLrJwt13xAxvABBgsK4KWLov35DkRF7ZaqgzuZ7MQ8MOntmVYyAqKTwaICKqvSUFnVccMN5sziEP/5+xGDTahbH5Q3ZB76zr8fI+nJtvUUU3t3ml5GKviK/npCg3CGodnuJ4JVkfRFJYGVDBZrqKnn9RLf+CzDTS5PaN5J38+auzX4ykU4Qoj0rdKfcYs5ijfo9OL/uRUgZyQr7NCWtWwiUSLc4arfJa7lpszTA1OJZAQ8w8dXFrR5YHzCWSnS3pZ18tOi4Ps4vl/c7i/6qomjRecN+UubrPyPGn/VEMU3T0UFHkaPzpgjxmJsnjmrtionlMDZiog0TsY/DPtn8SXtlBvbtxKtwopy7lqW3smQO+yoGE1Uu55GJ3pmI8ygoejZNnqj0vnIRCyTKfLstRdtStGQi09myUsvwvlkuzSUXbV+Xz5ryBebV33fln/A/moud69FZiEYAAAAASUVORK5CYII=');
131
  background-repeat: no-repeat;
132
  background-position: 92% 50%;
133
+ background-size: 25px;
134
  }
135
 
136
  #themeisle .inside {
vendor/codeinwp/themeisle-sdk/src/Modules/Endpoint.php CHANGED
@@ -273,7 +273,7 @@ class Endpoint extends Abstract_Module {
273
 
274
  // fetch the calculated hashes.
275
  if ( ! $wp_filesystem->is_readable( $path . '/' . self::HASH_FILE ) ) {
276
- return new WP_Error( 'themeisle_sdk_hash_not_found', sprintf( '%s not found', self::HASH_FILE ) );
277
  }
278
 
279
  $hashes = json_decode( $wp_filesystem->get_contents( $path . '/' . self::HASH_FILE ), true );
273
 
274
  // fetch the calculated hashes.
275
  if ( ! $wp_filesystem->is_readable( $path . '/' . self::HASH_FILE ) ) {
276
+ return new \WP_Error( 'themeisle_sdk_hash_not_found', sprintf( '%s not found', self::HASH_FILE ) );
277
  }
278
 
279
  $hashes = json_decode( $wp_filesystem->get_contents( $path . '/' . self::HASH_FILE ), true );
vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php CHANGED
@@ -169,7 +169,6 @@ class Licenser extends Abstract_Module {
169
  $status = $this->get_license_status();
170
  $no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to upgrade your plan in order to use %s on more websites. Please ask the %s Staff for more details.' );
171
  $no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s, please add your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a href="%s">here</a>. ' );
172
- $expiration_string = apply_filters( $this->product->get_key() . '_lc_expiration_string', 'Your license is about to expire for %s. You can go to %s and renew it ' );
173
 
174
  // No activations left for this license.
175
  if ( 'valid' != $status && $this->check_activation() ) {
@@ -195,7 +194,7 @@ class Licenser extends Abstract_Module {
195
  ?>
196
  <div class="error">
197
  <p>
198
- <strong><?php echo sprintf( $no_valid_string, $this->product->get_name() . ' ' . $this->product->get_type(), $this->get_api_url(), admin_url( 'options-general.php' ) . '#' . $this->product->get_key() ); ?> </strong>
199
  </p>
200
  </div>
201
  <?php
@@ -203,26 +202,6 @@ class Licenser extends Abstract_Module {
203
  return false;
204
  }
205
 
206
- // Expired and soon to expire license.
207
- if ( 'valid' == $status && $this->check_expiration() ) {
208
- ?>
209
- <div class="update-nag">
210
- <p>
211
- <strong>
212
- <?php
213
- echo sprintf(
214
- $expiration_string,
215
- $this->product->get_name() . ' ' . $this->product->get_type(),
216
- '<a href="' . $this->renew_url() . '" target="_blank">' . $this->get_distributor_name() . '</a>'
217
- );
218
- ?>
219
- </strong>
220
- </p>
221
- </div>
222
- <?php
223
- return false;
224
- }
225
-
226
  return true;
227
  }
228
 
169
  $status = $this->get_license_status();
170
  $no_activations_string = apply_filters( $this->product->get_key() . '_lc_no_activations_string', 'No activations left for %s !!!. You need to upgrade your plan in order to use %s on more websites. Please ask the %s Staff for more details.' );
171
  $no_valid_string = apply_filters( $this->product->get_key() . '_lc_no_valid_string', 'In order to benefit from updates and support for %s, please add your license code from your <a href="%s" target="_blank">purchase history</a> and validate it <a href="%s">here</a>. ' );
 
172
 
173
  // No activations left for this license.
174
  if ( 'valid' != $status && $this->check_activation() ) {
194
  ?>
195
  <div class="error">
196
  <p>
197
+ <strong><?php echo sprintf( $no_valid_string, $this->product->get_name() . ' ' . $this->product->get_type(), $this->get_api_url(), admin_url( 'options-general.php' ) . '#' . $this->product->get_key() . '_license' ); ?> </strong>
198
  </p>
199
  </div>
200
  <?php
202
  return false;
203
  }
204
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  return true;
206
  }
207
 
vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php CHANGED
@@ -154,7 +154,7 @@ class Uninstall_Feedback extends Abstract_Module {
154
  $suffix = Product::THEME_TYPE === $type ? 'theme-install-php' : 'plugins-php';
155
  $icon = esc_attr( apply_filters( $this->product->get_slug() . '_uninstall_feedback_icon', '' ) );
156
  if ( empty( $icon ) ) {
157
- $icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQyIDc5LjE2MDkyNCwgMjAxNy8wNy8xMy0wMTowNjozOSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNkVDM0M4RkYxMzMxMUU3OEMyMkQ0NTIxRTVEQ0ZBRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNkVDM0M5MEYxMzMxMUU3OEMyMkQ0NTIxRTVEQ0ZBRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM2RUMzQzhERjEzMzExRTc4QzIyRDQ1MjFFNURDRkFGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM2RUMzQzhFRjEzMzExRTc4QzIyRDQ1MjFFNURDRkFGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KBNOswAAFtFJREFUeNrkWwmUXVWV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';
158
  }
159
  ?>
160
  <style type="text/css" id="<?php echo $key; ?>ti-deactivate-css">
@@ -171,7 +171,7 @@ class Uninstall_Feedback extends Abstract_Module {
171
  }
172
 
173
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
174
- background: url('<?php echo $icon; ?>') 40px 30px no-repeat;
175
  border: none;
176
  box-sizing: border-box;
177
  color: #373e40;
154
  $suffix = Product::THEME_TYPE === $type ? 'theme-install-php' : 'plugins-php';
155
  $icon = esc_attr( apply_filters( $this->product->get_slug() . '_uninstall_feedback_icon', '' ) );
156
  if ( empty( $icon ) ) {
157
+ $icon = 'data:image/png;base64,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';
158
  }
159
  ?>
160
  <style type="text/css" id="<?php echo $key; ?>ti-deactivate-css">
171
  }
172
 
173
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #TB_title {
174
+ background: url('<?php echo $icon; ?>') 23px 0px no-repeat;
175
  border: none;
176
  box-sizing: border-box;
177
  color: #373e40;
vendor/codeinwp/themeisle-sdk/src/Product.php CHANGED
@@ -200,6 +200,7 @@ class Product {
200
  public function get_key() {
201
  return $this->key;
202
  }
 
203
  /**
204
  * Check if the product is either theme or plugin.
205
  *
@@ -342,6 +343,11 @@ class Product {
342
  * @return string The store url.
343
  */
344
  public function get_store_url() {
 
 
 
 
 
345
  return $this->store_url;
346
  }
347
 
@@ -362,6 +368,7 @@ class Product {
362
  public function get_file() {
363
  return $this->file;
364
  }
 
365
  /**
366
  * Returns the pro slug, if available.
367
  *
200
  public function get_key() {
201
  return $this->key;
202
  }
203
+
204
  /**
205
  * Check if the product is either theme or plugin.
206
  *
343
  * @return string The store url.
344
  */
345
  public function get_store_url() {
346
+
347
+ if ( strpos( $this->store_url, '/themeisle.com' ) !== false ) {
348
+ return 'https://store.themeisle.com';
349
+ }
350
+
351
  return $this->store_url;
352
  }
353
 
368
  public function get_file() {
369
  return $this->file;
370
  }
371
+
372
  /**
373
  * Returns the pro slug, if available.
374
  *
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitd92b26667373154eae939dd431e7cf9e
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitd92b26667373154eae939dd431e7cf9e
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitd92b26667373154eae939dd431e7cf9e', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitd92b26667373154eae939dd431e7cf9e', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInitd92b26667373154eae939dd431e7cf9e
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequired92b26667373154eae939dd431e7cf9e($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequired92b26667373154eae939dd431e7cf9e($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit352003e57eff9edfc8e33fa4e5fb60d8
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit352003e57eff9edfc8e33fa4e5fb60d8', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit352003e57eff9edfc8e33fa4e5fb60d8', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequire352003e57eff9edfc8e33fa4e5fb60d8($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequire352003e57eff9edfc8e33fa4e5fb60d8($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInite59a58ce7cf5d08b22a8dfd7581012eb {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInite59a58ce7cf5d08b22a8dfd7581012eb {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInite59a58ce7cf5d08b22a8dfd7581012eb', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInite59a58ce7cf5d08b22a8dfd7581012eb', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit3dc8fdc09d7bd4b63c06d840df5e9715 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit3dc8fdc09d7bd4b63c06d840df5e9715', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit3dc8fdc09d7bd4b63c06d840df5e9715', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -34,17 +34,17 @@
34
  },
35
  {
36
  "name": "codeinwp/themeisle-sdk",
37
- "version": "3.0.6",
38
- "version_normalized": "3.0.6.0",
39
  "source": {
40
  "type": "git",
41
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
42
- "reference": "cde61ab54f93495f0c5b7901cc5072f320f969ff"
43
  },
44
  "dist": {
45
  "type": "zip",
46
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/cde61ab54f93495f0c5b7901cc5072f320f969ff",
47
- "reference": "cde61ab54f93495f0c5b7901cc5072f320f969ff",
48
  "shasum": ""
49
  },
50
  "require-dev": {
@@ -52,7 +52,7 @@
52
  "squizlabs/php_codesniffer": "^3.1",
53
  "wp-coding-standards/wpcs": "^1.0.0"
54
  },
55
- "time": "2019-05-21 11:49:48",
56
  "type": "library",
57
  "installation-source": "dist",
58
  "notification-url": "https://packagist.org/downloads/",
34
  },
35
  {
36
  "name": "codeinwp/themeisle-sdk",
37
+ "version": "3.0.9",
38
+ "version_normalized": "3.0.9.0",
39
  "source": {
40
  "type": "git",
41
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
42
+ "reference": "259e2afb33bd523f9807e04ace921f8690350a31"
43
  },
44
  "dist": {
45
  "type": "zip",
46
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/259e2afb33bd523f9807e04ace921f8690350a31",
47
+ "reference": "259e2afb33bd523f9807e04ace921f8690350a31",
48
  "shasum": ""
49
  },
50
  "require-dev": {
52
  "squizlabs/php_codesniffer": "^3.1",
53
  "wp-coding-standards/wpcs": "^1.0.0"
54
  },
55
+ "time": "2019-06-26 14:38:00",
56
  "type": "library",
57
  "installation-source": "dist",
58
  "notification-url": "https://packagist.org/downloads/",
wp-product-review.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: WP Product Review Lite
16
  * Plugin URI: https://themeisle.com/plugins/wp-product-review/
17
  * Description: The highest rated and most complete review plugin, now with rich snippets support. Easily turn your basic posts into in-depth reviews.
18
- * Version: 3.6.1
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
@@ -67,12 +67,13 @@ register_deactivation_hook( __FILE__, 'deactivate_wppr' );
67
  */
68
  function run_wppr() {
69
 
70
- define( 'WPPR_LITE_VERSION', '3.6.1' );
71
  define( 'WPPR_PATH', dirname( __FILE__ ) );
72
  define( 'WPPR_SLUG', 'wppr' );
73
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );
74
  define( 'WPPR_URL', untrailingslashit( plugins_url( '/', __FILE__ ) ) );
75
  define( 'WPPR_CACHE_DISABLED', false );
 
76
 
77
  $plugin = new WPPR();
78
  $plugin->run();
15
  * Plugin Name: WP Product Review Lite
16
  * Plugin URI: https://themeisle.com/plugins/wp-product-review/
17
  * Description: The highest rated and most complete review plugin, now with rich snippets support. Easily turn your basic posts into in-depth reviews.
18
+ * Version: 3.7.0
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
67
  */
68
  function run_wppr() {
69
 
70
+ define( 'WPPR_LITE_VERSION', '3.7.0' );
71
  define( 'WPPR_PATH', dirname( __FILE__ ) );
72
  define( 'WPPR_SLUG', 'wppr' );
73
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );
74
  define( 'WPPR_URL', untrailingslashit( plugins_url( '/', __FILE__ ) ) );
75
  define( 'WPPR_CACHE_DISABLED', false );
76
+ define( 'WPPR_BASENAME', plugin_basename( __FILE__ ) );
77
 
78
  $plugin = new WPPR();
79
  $plugin->run();