WP Product Review Lite - Version 3.4.6

Version Description

  • 2018-07-12
Download this release

Release Info

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

Code changes from version 3.4.5 to 3.4.6

CHANGELOG.md CHANGED
@@ -1,4 +1,11 @@
1
 
 
 
 
 
 
 
 
2
  ### v3.4.5 - 2018-06-18
3
  **Changes:**
4
  * Fixed problem with product price alignment on the first template
1
 
2
+ ### v3.4.6 - 2018-07-12
3
+ **Changes:**
4
+ * Added RTL compatibility
5
+ * Allow overriding the Products Templates from the theme with a custom /wppr/ folder
6
+ * Fixed problem with missing alt texts
7
+ * Fixed problem with product image notice overlapping the featured image control
8
+
9
  ### v3.4.5 - 2018-06-18
10
  **Changes:**
11
  * Fixed problem with product price alignment on the first template
assets/css/cwppos-widget-style1.css CHANGED
@@ -26,6 +26,10 @@
26
  line-height: 18px;
27
  }
28
 
 
 
 
 
29
  .clear {
30
  clear: both;
31
  }
@@ -67,3 +71,12 @@
67
  .wppr-prodlist .wppr-prodrow .wppr-prodrowright .bttn:hover {
68
  opacity: 0.8;
69
  }
 
 
 
 
 
 
 
 
 
26
  line-height: 18px;
27
  }
28
 
29
+ .wppr-prodlist .wppr-prodrow .wppr-prodrowright .wppr-rating div {
30
+ min-width: 20%;
31
+ }
32
+
33
  .clear {
34
  clear: both;
35
  }
71
  .wppr-prodlist .wppr-prodrow .wppr-prodrowright .bttn:hover {
72
  opacity: 0.8;
73
  }
74
+
75
+ .wppr-prodlist .wppr-prodrow .wppr-prodrowright .wppr-review-stars.rtl .wppr-review-stars-grade i.fa-star-half-o {
76
+ transform: rotateY(180deg);
77
+ }
78
+
79
+ .wppr-prodlist .wppr-prodrow .wppr-prodrowright .wppr-review-stars .wppr-review-stars-grade {
80
+ color: #ff7e00;
81
+ }
82
+
assets/css/default.css CHANGED
@@ -152,7 +152,6 @@
152
  }
153
 
154
  #review-statistics .review-wu-bars span {
155
- float: right;
156
  line-height: 2;
157
  text-align: right;
158
  }
@@ -390,6 +389,38 @@
390
  list-style: none !important;
391
  }
392
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
393
  @media (max-width: 440px) {
394
  #review-statistics .review-wrap-up .review-wu-left {
395
  width: 100%;
152
  }
153
 
154
  #review-statistics .review-wu-bars span {
 
155
  line-height: 2;
156
  text-align: right;
157
  }
389
  list-style: none !important;
390
  }
391
 
392
+ .wppr-template-default #review-statistics .review-wrap-up .review-wu-content .review-wu-left .review-wu-bars .rev-option span:first-of-type {
393
+ float: left;
394
+ }
395
+
396
+ .wppr-template-default #review-statistics .review-wrap-up .review-wu-content .review-wu-left .review-wu-bars .rev-option span:last-of-type {
397
+ float: right;
398
+ }
399
+
400
+ .wppr-template-default.rtl #review-statistics .review-wrap-up .cwpr-review-top span:first-of-type {
401
+ float: right;
402
+ }
403
+
404
+ .wppr-template-default.rtl #review-statistics .review-wrap-up .cwpr-review-top span:last-of-type {
405
+ float: left;
406
+ }
407
+
408
+ .wppr-template-default.rtl #review-statistics .review-wrap-up .review-wu-content .review-wu-left .review-wu-bars .rev-option span:first-of-type {
409
+ float: right;
410
+ }
411
+
412
+ .wppr-template-default.rtl #review-statistics .review-wrap-up .review-wu-content .review-wu-left .review-wu-bars .rev-option span:last-of-type {
413
+ float: left;
414
+ }
415
+
416
+ .wppr-template-default.rtl .affiliate-button a span {
417
+ margin-right: -10px;
418
+ padding-right: 20px;
419
+ margin-left: auto;
420
+ padding-left: auto;
421
+ }
422
+
423
+
424
  @media (max-width: 440px) {
425
  #review-statistics .review-wrap-up .review-wu-left {
426
  width: 100%;
assets/css/editor.css CHANGED
@@ -43,8 +43,7 @@ h4 {
43
  }
44
 
45
  .wppr-review-section small {
46
- display: inline-block;
47
- width: 100%;
48
  padding-bottom: 10px;
49
  padding-left: 144px;
50
  }
43
  }
44
 
45
  .wppr-review-section small {
46
+ display: block;
 
47
  padding-bottom: 10px;
48
  padding-left: 144px;
49
  }
assets/css/rating.css DELETED
@@ -1,599 +0,0 @@
1
- .wppr-c100.wppr-p1 .wppr-bar {
2
- -webkit-transform: rotate(3.6deg);
3
- -ms-transform: rotate(3.6deg);
4
- transform: rotate(3.6deg);
5
- }
6
-
7
- .wppr-c100.wppr-p2 .wppr-bar {
8
- -webkit-transform: rotate(7.2deg);
9
- -ms-transform: rotate(7.2deg);
10
- transform: rotate(7.2deg);
11
- }
12
-
13
- .wppr-c100.wppr-p3 .wppr-bar {
14
- -webkit-transform: rotate(10.8deg);
15
- -ms-transform: rotate(10.8deg);
16
- transform: rotate(10.8deg);
17
- }
18
-
19
- .wppr-c100.wppr-p4 .wppr-bar {
20
- -webkit-transform: rotate(14.4deg);
21
- -ms-transform: rotate(14.4deg);
22
- transform: rotate(14.4deg);
23
- }
24
-
25
- .wppr-c100.wppr-p5 .wppr-bar {
26
- -webkit-transform: rotate(18deg);
27
- -ms-transform: rotate(18deg);
28
- transform: rotate(18deg);
29
- }
30
-
31
- .wppr-c100.wppr-p6 .wppr-bar {
32
- -webkit-transform: rotate(21.6deg);
33
- -ms-transform: rotate(21.6deg);
34
- transform: rotate(21.6deg);
35
- }
36
-
37
- .wppr-c100.wppr-p7 .wppr-bar {
38
- -webkit-transform: rotate(25.2deg);
39
- -ms-transform: rotate(25.2deg);
40
- transform: rotate(25.2deg);
41
- }
42
-
43
- .wppr-c100.wppr-p8 .wppr-bar {
44
- -webkit-transform: rotate(28.8deg);
45
- -ms-transform: rotate(28.8deg);
46
- transform: rotate(28.8deg);
47
- }
48
-
49
- .wppr-c100.wppr-p9 .wppr-bar {
50
- -webkit-transform: rotate(32.4deg);
51
- -ms-transform: rotate(32.4deg);
52
- transform: rotate(32.4deg);
53
- }
54
-
55
- .wppr-c100.wppr-p10 .wppr-bar {
56
- -webkit-transform: rotate(36deg);
57
- -ms-transform: rotate(36deg);
58
- transform: rotate(36deg);
59
- }
60
-
61
- .wppr-c100.wppr-p11 .wppr-bar {
62
- -webkit-transform: rotate(39.6deg);
63
- -ms-transform: rotate(39.6deg);
64
- transform: rotate(39.6deg);
65
- }
66
-
67
- .wppr-c100.wppr-p12 .wppr-bar {
68
- -webkit-transform: rotate(43.2deg);
69
- -ms-transform: rotate(43.2deg);
70
- transform: rotate(43.2deg);
71
- }
72
-
73
- .wppr-c100.wppr-p13 .wppr-bar {
74
- -webkit-transform: rotate(46.8deg);
75
- -ms-transform: rotate(46.8deg);
76
- transform: rotate(46.8deg);
77
- }
78
-
79
- .wppr-c100.wppr-p14 .wppr-bar {
80
- -webkit-transform: rotate(50.4deg);
81
- -ms-transform: rotate(50.4deg);
82
- transform: rotate(50.4deg);
83
- }
84
-
85
- .wppr-c100.wppr-p15 .wppr-bar {
86
- -webkit-transform: rotate(54deg);
87
- -ms-transform: rotate(54deg);
88
- transform: rotate(54deg);
89
- }
90
-
91
- .wppr-c100.wppr-p16 .wppr-bar {
92
- -webkit-transform: rotate(57.6deg);
93
- -ms-transform: rotate(57.6deg);
94
- transform: rotate(57.6deg);
95
- }
96
-
97
- .wppr-c100.wppr-p17 .wppr-bar {
98
- -webkit-transform: rotate(61.2deg);
99
- -ms-transform: rotate(61.2deg);
100
- transform: rotate(61.2deg);
101
- }
102
-
103
- .wppr-c100.wppr-p18 .wppr-bar {
104
- -webkit-transform: rotate(64.8deg);
105
- -ms-transform: rotate(64.8deg);
106
- transform: rotate(64.8deg);
107
- }
108
-
109
- .wppr-c100.wppr-p19 .wppr-bar {
110
- -webkit-transform: rotate(68.4deg);
111
- -ms-transform: rotate(68.4deg);
112
- transform: rotate(68.4deg);
113
- }
114
-
115
- .wppr-c100.wppr-p20 .wppr-bar {
116
- -webkit-transform: rotate(72deg);
117
- -ms-transform: rotate(72deg);
118
- transform: rotate(72deg);
119
- }
120
-
121
- .wppr-c100.wppr-p21 .wppr-bar {
122
- -webkit-transform: rotate(75.6deg);
123
- -ms-transform: rotate(75.6deg);
124
- transform: rotate(75.6deg);
125
- }
126
-
127
- .wppr-c100.wppr-p22 .wppr-bar {
128
- -webkit-transform: rotate(79.2deg);
129
- -ms-transform: rotate(79.2deg);
130
- transform: rotate(79.2deg);
131
- }
132
-
133
- .wppr-c100.wppr-p23 .wppr-bar {
134
- -webkit-transform: rotate(82.8deg);
135
- -ms-transform: rotate(82.8deg);
136
- transform: rotate(82.8deg);
137
- }
138
-
139
- .wppr-c100.wppr-p24 .wppr-bar {
140
- -webkit-transform: rotate(86.4deg);
141
- -ms-transform: rotate(86.4deg);
142
- transform: rotate(86.4deg);
143
- }
144
-
145
- .wppr-c100.wppr-p25 .wppr-bar {
146
- -webkit-transform: rotate(90deg);
147
- -ms-transform: rotate(90deg);
148
- transform: rotate(90deg);
149
- }
150
-
151
- .wppr-c100.wppr-p26 .wppr-bar {
152
- -webkit-transform: rotate(93.6deg);
153
- -ms-transform: rotate(93.6deg);
154
- transform: rotate(93.6deg);
155
- }
156
-
157
- .wppr-c100.wppr-p27 .wppr-bar {
158
- -webkit-transform: rotate(97.2deg);
159
- -ms-transform: rotate(97.2deg);
160
- transform: rotate(97.2deg);
161
- }
162
-
163
- .wppr-c100.wppr-p28 .wppr-bar {
164
- -webkit-transform: rotate(100.8deg);
165
- -ms-transform: rotate(100.8deg);
166
- transform: rotate(100.8deg);
167
- }
168
-
169
- .wppr-c100.wppr-p29 .wppr-bar {
170
- -webkit-transform: rotate(104.4deg);
171
- -ms-transform: rotate(104.4deg);
172
- transform: rotate(104.4deg);
173
- }
174
-
175
- .wppr-c100.wppr-p30 .wppr-bar {
176
- -webkit-transform: rotate(108deg);
177
- -ms-transform: rotate(108deg);
178
- transform: rotate(108deg);
179
- }
180
-
181
- .wppr-c100.wppr-p31 .wppr-bar {
182
- -webkit-transform: rotate(111.6deg);
183
- -ms-transform: rotate(111.6deg);
184
- transform: rotate(111.6deg);
185
- }
186
-
187
- .wppr-c100.wppr-p32 .wppr-bar {
188
- -webkit-transform: rotate(115.2deg);
189
- -ms-transform: rotate(115.2deg);
190
- transform: rotate(115.2deg);
191
- }
192
-
193
- .wppr-c100.wppr-p33 .wppr-bar {
194
- -webkit-transform: rotate(118.8deg);
195
- -ms-transform: rotate(118.8deg);
196
- transform: rotate(118.8deg);
197
- }
198
-
199
- .wppr-c100.wppr-p34 .wppr-bar {
200
- -webkit-transform: rotate(122.4deg);
201
- -ms-transform: rotate(122.4deg);
202
- transform: rotate(122.4deg);
203
- }
204
-
205
- .wppr-c100.wppr-p35 .wppr-bar {
206
- -webkit-transform: rotate(126deg);
207
- -ms-transform: rotate(126deg);
208
- transform: rotate(126deg);
209
- }
210
-
211
- .wppr-c100.wppr-p36 .wppr-bar {
212
- -webkit-transform: rotate(129.6deg);
213
- -ms-transform: rotate(129.6deg);
214
- transform: rotate(129.6deg);
215
- }
216
-
217
- .wppr-c100.wppr-p37 .wppr-bar {
218
- -webkit-transform: rotate(133.2deg);
219
- -ms-transform: rotate(133.2deg);
220
- transform: rotate(133.2deg);
221
- }
222
-
223
- .wppr-c100.wppr-p38 .wppr-bar {
224
- -webkit-transform: rotate(136.8deg);
225
- -ms-transform: rotate(136.8deg);
226
- transform: rotate(136.8deg);
227
- }
228
-
229
- .wppr-c100.wppr-p39 .wppr-bar {
230
- -webkit-transform: rotate(140.4deg);
231
- -ms-transform: rotate(140.4deg);
232
- transform: rotate(140.4deg);
233
- }
234
-
235
- .wppr-c100.wppr-p40 .wppr-bar {
236
- -webkit-transform: rotate(144deg);
237
- -ms-transform: rotate(144deg);
238
- transform: rotate(144deg);
239
- }
240
-
241
- .wppr-c100.wppr-p41 .wppr-bar {
242
- -webkit-transform: rotate(147.6deg);
243
- -ms-transform: rotate(147.6deg);
244
- transform: rotate(147.6deg);
245
- }
246
-
247
- .wppr-c100.wppr-p42 .wppr-bar {
248
- -webkit-transform: rotate(151.2deg);
249
- -ms-transform: rotate(151.2deg);
250
- transform: rotate(151.2deg);
251
- }
252
-
253
- .wppr-c100.wppr-p43 .wppr-bar {
254
- -webkit-transform: rotate(154.8deg);
255
- -ms-transform: rotate(154.8deg);
256
- transform: rotate(154.8deg);
257
- }
258
-
259
- .wppr-c100.wppr-p44 .wppr-bar {
260
- -webkit-transform: rotate(158.4deg);
261
- -ms-transform: rotate(158.4deg);
262
- transform: rotate(158.4deg);
263
- }
264
-
265
- .wppr-c100.wppr-p45 .wppr-bar {
266
- -webkit-transform: rotate(162deg);
267
- -ms-transform: rotate(162deg);
268
- transform: rotate(162deg);
269
- }
270
-
271
- .wppr-c100.wppr-p46 .wppr-bar {
272
- -webkit-transform: rotate(165.6deg);
273
- -ms-transform: rotate(165.6deg);
274
- transform: rotate(165.6deg);
275
- }
276
-
277
- .wppr-c100.wppr-p47 .wppr-bar {
278
- -webkit-transform: rotate(169.2deg);
279
- -ms-transform: rotate(169.2deg);
280
- transform: rotate(169.2deg);
281
- }
282
-
283
- .wppr-c100.wppr-p48 .wppr-bar {
284
- -webkit-transform: rotate(172.8deg);
285
- -ms-transform: rotate(172.8deg);
286
- transform: rotate(172.8deg);
287
- }
288
-
289
- .wppr-c100.wppr-p49 .wppr-bar {
290
- -webkit-transform: rotate(176.4deg);
291
- -ms-transform: rotate(176.4deg);
292
- transform: rotate(176.4deg);
293
- }
294
-
295
- .wppr-c100.wppr-p50 .wppr-bar {
296
- -webkit-transform: rotate(180deg);
297
- -ms-transform: rotate(180deg);
298
- transform: rotate(180deg);
299
- }
300
-
301
- .wppr-c100.wppr-p51 .wppr-bar {
302
- -webkit-transform: rotate(183.6deg);
303
- -ms-transform: rotate(183.6deg);
304
- transform: rotate(183.6deg);
305
- }
306
-
307
- .wppr-c100.wppr-p52 .wppr-bar {
308
- -webkit-transform: rotate(187.2deg);
309
- -ms-transform: rotate(187.2deg);
310
- transform: rotate(187.2deg);
311
- }
312
-
313
- .wppr-c100.wppr-p53 .wppr-bar {
314
- -webkit-transform: rotate(190.8deg);
315
- -ms-transform: rotate(190.8deg);
316
- transform: rotate(190.8deg);
317
- }
318
-
319
- .wppr-c100.wppr-p54 .wppr-bar {
320
- -webkit-transform: rotate(194.4deg);
321
- -ms-transform: rotate(194.4deg);
322
- transform: rotate(194.4deg);
323
- }
324
-
325
- .wppr-c100.wppr-p55 .wppr-bar {
326
- -webkit-transform: rotate(198deg);
327
- -ms-transform: rotate(198deg);
328
- transform: rotate(198deg);
329
- }
330
-
331
- .wppr-c100.wppr-p56 .wppr-bar {
332
- -webkit-transform: rotate(201.6deg);
333
- -ms-transform: rotate(201.6deg);
334
- transform: rotate(201.6deg);
335
- }
336
-
337
- .wppr-c100.wppr-p57 .wppr-bar {
338
- -webkit-transform: rotate(205.2deg);
339
- -ms-transform: rotate(205.2deg);
340
- transform: rotate(205.2deg);
341
- }
342
-
343
- .wppr-c100.wppr-p58 .wppr-bar {
344
- -webkit-transform: rotate(208.8deg);
345
- -ms-transform: rotate(208.8deg);
346
- transform: rotate(208.8deg);
347
- }
348
-
349
- .wppr-c100.wppr-p59 .wppr-bar {
350
- -webkit-transform: rotate(212.4deg);
351
- -ms-transform: rotate(212.4deg);
352
- transform: rotate(212.4deg);
353
- }
354
-
355
- .wppr-c100.wppr-p60 .wppr-bar {
356
- -webkit-transform: rotate(216deg);
357
- -ms-transform: rotate(216deg);
358
- transform: rotate(216deg);
359
- }
360
-
361
- .wppr-c100.wppr-p61 .wppr-bar {
362
- -webkit-transform: rotate(219.6deg);
363
- -ms-transform: rotate(219.6deg);
364
- transform: rotate(219.6deg);
365
- }
366
-
367
- .wppr-c100.wppr-p62 .wppr-bar {
368
- -webkit-transform: rotate(223.2deg);
369
- -ms-transform: rotate(223.2deg);
370
- transform: rotate(223.2deg);
371
- }
372
-
373
- .wppr-c100.wppr-p63 .wppr-bar {
374
- -webkit-transform: rotate(226.8deg);
375
- -ms-transform: rotate(226.8deg);
376
- transform: rotate(226.8deg);
377
- }
378
-
379
- .wppr-c100.wppr-p64 .wppr-bar {
380
- -webkit-transform: rotate(230.4deg);
381
- -ms-transform: rotate(230.4deg);
382
- transform: rotate(230.4deg);
383
- }
384
-
385
- .wppr-c100.wppr-p65 .wppr-bar {
386
- -webkit-transform: rotate(234deg);
387
- -ms-transform: rotate(234deg);
388
- transform: rotate(234deg);
389
- }
390
-
391
- .wppr-c100.wppr-p66 .wppr-bar {
392
- -webkit-transform: rotate(237.6deg);
393
- -ms-transform: rotate(237.6deg);
394
- transform: rotate(237.6deg);
395
- }
396
-
397
- .wppr-c100.wppr-p67 .wppr-bar {
398
- -webkit-transform: rotate(241.2deg);
399
- -ms-transform: rotate(241.2deg);
400
- transform: rotate(241.2deg);
401
- }
402
-
403
- .wppr-c100.wppr-p68 .wppr-bar {
404
- -webkit-transform: rotate(244.8deg);
405
- -ms-transform: rotate(244.8deg);
406
- transform: rotate(244.8deg);
407
- }
408
-
409
- .wppr-c100.wppr-p69 .wppr-bar {
410
- -webkit-transform: rotate(248.4deg);
411
- -ms-transform: rotate(248.4deg);
412
- transform: rotate(248.4deg);
413
- }
414
-
415
- .wppr-c100.wppr-p70 .wppr-bar {
416
- -webkit-transform: rotate(252deg);
417
- -ms-transform: rotate(252deg);
418
- transform: rotate(252deg);
419
- }
420
-
421
- .wppr-c100.wppr-p71 .wppr-bar {
422
- -webkit-transform: rotate(255.6deg);
423
- -ms-transform: rotate(255.6deg);
424
- transform: rotate(255.6deg);
425
- }
426
-
427
- .wppr-c100.wppr-p72 .wppr-bar {
428
- -webkit-transform: rotate(259.2deg);
429
- -ms-transform: rotate(259.2deg);
430
- transform: rotate(259.2deg);
431
- }
432
-
433
- .wppr-c100.wppr-p73 .wppr-bar {
434
- -webkit-transform: rotate(262.8deg);
435
- -ms-transform: rotate(262.8deg);
436
- transform: rotate(262.8deg);
437
- }
438
-
439
- .wppr-c100.wppr-p74 .wppr-bar {
440
- -webkit-transform: rotate(266.4deg);
441
- -ms-transform: rotate(266.4deg);
442
- transform: rotate(266.4deg);
443
- }
444
-
445
- .wppr-c100.wppr-p75 .wppr-bar {
446
- -webkit-transform: rotate(270deg);
447
- -ms-transform: rotate(270deg);
448
- transform: rotate(270deg);
449
- }
450
-
451
- .wppr-c100.wppr-p76 .wppr-bar {
452
- -webkit-transform: rotate(273.6deg);
453
- -ms-transform: rotate(273.6deg);
454
- transform: rotate(273.6deg);
455
- }
456
-
457
- .wppr-c100.wppr-p77 .wppr-bar {
458
- -webkit-transform: rotate(277.2deg);
459
- -ms-transform: rotate(277.2deg);
460
- transform: rotate(277.2deg);
461
- }
462
-
463
- .wppr-c100.wppr-p78 .wppr-bar {
464
- -webkit-transform: rotate(280.8deg);
465
- -ms-transform: rotate(280.8deg);
466
- transform: rotate(280.8deg);
467
- }
468
-
469
- .wppr-c100.wppr-p79 .wppr-bar {
470
- -webkit-transform: rotate(284.4deg);
471
- -ms-transform: rotate(284.4deg);
472
- transform: rotate(284.4deg);
473
- }
474
-
475
- .wppr-c100.wppr-p80 .wppr-bar {
476
- -webkit-transform: rotate(288deg);
477
- -ms-transform: rotate(288deg);
478
- transform: rotate(288deg);
479
- }
480
-
481
- .wppr-c100.wppr-p81 .wppr-bar {
482
- -webkit-transform: rotate(291.6deg);
483
- -ms-transform: rotate(291.6deg);
484
- transform: rotate(291.6deg);
485
- }
486
-
487
- .wppr-c100.wppr-p82 .wppr-bar {
488
- -webkit-transform: rotate(295.2deg);
489
- -ms-transform: rotate(295.2deg);
490
- transform: rotate(295.2deg);
491
- }
492
-
493
- .wppr-c100.wppr-p83 .wppr-bar {
494
- -webkit-transform: rotate(298.8deg);
495
- -ms-transform: rotate(298.8deg);
496
- transform: rotate(298.8deg);
497
- }
498
-
499
- .wppr-c100.wppr-p84 .wppr-bar {
500
- -webkit-transform: rotate(302.4deg);
501
- -ms-transform: rotate(302.4deg);
502
- transform: rotate(302.4deg);
503
- }
504
-
505
- .wppr-c100.wppr-p85 .wppr-bar {
506
- -webkit-transform: rotate(306deg);
507
- -ms-transform: rotate(306deg);
508
- transform: rotate(306deg);
509
- }
510
-
511
- .wppr-c100.wppr-p86 .wppr-bar {
512
- -webkit-transform: rotate(309.6deg);
513
- -ms-transform: rotate(309.6deg);
514
- transform: rotate(309.6deg);
515
- }
516
-
517
- .wppr-c100.wppr-p87 .wppr-bar {
518
- -webkit-transform: rotate(313.2deg);
519
- -ms-transform: rotate(313.2deg);
520
- transform: rotate(313.2deg);
521
- }
522
-
523
- .wppr-c100.wppr-p88 .wppr-bar {
524
- -webkit-transform: rotate(316.8deg);
525
- -ms-transform: rotate(316.8deg);
526
- transform: rotate(316.8deg);
527
- }
528
-
529
- .wppr-c100.wppr-p89 .wppr-bar {
530
- -webkit-transform: rotate(320.4deg);
531
- -ms-transform: rotate(320.4deg);
532
- transform: rotate(320.4deg);
533
- }
534
-
535
- .wppr-c100.wppr-p90 .wppr-bar {
536
- -webkit-transform: rotate(324deg);
537
- -ms-transform: rotate(324deg);
538
- transform: rotate(324deg);
539
- }
540
-
541
- .wppr-c100.wppr-p91 .wppr-bar {
542
- -webkit-transform: rotate(327.6deg);
543
- -ms-transform: rotate(327.6deg);
544
- transform: rotate(327.6deg);
545
- }
546
-
547
- .wppr-c100.wppr-p92 .wppr-bar {
548
- -webkit-transform: rotate(331.2deg);
549
- -ms-transform: rotate(331.2deg);
550
- transform: rotate(331.2deg);
551
- }
552
-
553
- .wppr-c100.wppr-p93 .wppr-bar {
554
- -webkit-transform: rotate(334.8deg);
555
- -ms-transform: rotate(334.8deg);
556
- transform: rotate(334.8deg);
557
- }
558
-
559
- .wppr-c100.wppr-p94 .wppr-bar {
560
- -webkit-transform: rotate(338.4deg);
561
- -ms-transform: rotate(338.4deg);
562
- transform: rotate(338.4deg);
563
- }
564
-
565
- .wppr-c100.wppr-p95 .wppr-bar {
566
- -webkit-transform: rotate(342deg);
567
- -ms-transform: rotate(342deg);
568
- transform: rotate(342deg);
569
- }
570
-
571
- .wppr-c100.wppr-p96 .wppr-bar {
572
- -webkit-transform: rotate(345.6deg);
573
- -ms-transform: rotate(345.6deg);
574
- transform: rotate(345.6deg);
575
- }
576
-
577
- .wppr-c100.wppr-p97 .wppr-bar {
578
- -webkit-transform: rotate(349.2deg);
579
- -ms-transform: rotate(349.2deg);
580
- transform: rotate(349.2deg);
581
- }
582
-
583
- .wppr-c100.wppr-p98 .wppr-bar {
584
- -webkit-transform: rotate(352.8deg);
585
- -ms-transform: rotate(352.8deg);
586
- transform: rotate(352.8deg);
587
- }
588
-
589
- .wppr-c100.wppr-p99 .wppr-bar {
590
- -webkit-transform: rotate(356.4deg);
591
- -ms-transform: rotate(356.4deg);
592
- transform: rotate(356.4deg);
593
- }
594
-
595
- .wppr-c100.wppr-p100 .wppr-bar {
596
- -webkit-transform: rotate(360deg);
597
- -ms-transform: rotate(360deg);
598
- transform: rotate(360deg);
599
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/css/style1.css CHANGED
@@ -14,7 +14,6 @@ Template 1
14
  margin-top: 30px;
15
  }
16
 
17
- .wppr-template-1 .wppr-review-stars,
18
  .wppr-template-1 .wppr-review-grade {
19
  display: table;
20
  width: 100%;
@@ -25,32 +24,19 @@ Template 1
25
  float: left;
26
  position: relative;
27
  font-family: FontAwesome;
28
- }
29
-
30
- .wppr-template-1 .wppr-review-stars-grade,
31
- .wppr-template-1 .wppr-review-stars-grade .wppr-review-full-stars {
32
  font-size: 38px;
33
  -webkit-font-smoothing: antialiased;
34
  line-height: 1;
35
  }
36
 
37
- .wppr-template-1 .wppr-review-stars-grade .wppr-review-full-stars {
38
- display: inline-block;
39
- overflow: hidden;
40
- position: absolute;
41
- z-index: 1;
42
- top: 0;
43
- left: 0;
44
- white-space: nowrap;
45
  }
46
 
47
- .wppr-template-1 .wppr-review-stars-grade:before {
48
- content: "\f006\f006\f006\f006\f006";
49
  }
50
 
51
- .wppr-template-1 .wppr-review-stars-grade .wppr-review-full-stars:before {
52
- content: "\f005\f005\f005\f005\f005";
53
- }
54
 
55
  .wppr-template-1 .wppr-review-stars-author {
56
  display: table-cell;
@@ -60,6 +46,11 @@ Template 1
60
  vertical-align: middle;
61
  }
62
 
 
 
 
 
 
63
  .wppr-template-1 .wppr-review-grade-number,
64
  .wppr-template-1 .wppr-review-grade-options {
65
  display: table-cell;
@@ -80,15 +71,39 @@ Template 1
80
  width: 50%;
81
  }
82
 
 
 
 
 
 
83
  .wppr-template-1 .wppr-review-grade-options {
84
  padding-left: 45px;
85
  }
86
 
 
 
 
 
 
 
87
  .wppr-template-1 .wppr-review-grade-option-header span:last-of-type {
88
  font-weight: 700;
89
  text-align: right;
90
  }
91
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  .wppr-template-1 .wppr-review-grade-option-rating {
93
  display: block;
94
  float: left;
@@ -139,6 +154,17 @@ Template 1
139
  list-style-type: square;
140
  }
141
 
 
 
 
 
 
 
 
 
 
 
 
142
  @media (max-width: 768px) {
143
  .wppr-template-1 .wppr-review-stars {
144
  width: 100%;
@@ -226,6 +252,7 @@ Template 1
226
  display: block;
227
  width: 100%;
228
  text-align: center;
 
229
  }
230
 
231
  .wppr-template-1 .wppr-review-stars .wppr-review-stars-grade,
@@ -240,6 +267,13 @@ Template 1
240
  .wppr-template-1 .wppr-review-grade-option-header span {
241
  text-align: left;
242
  }
 
 
 
 
 
 
 
243
  }
244
 
245
  @-webkit-keyframes animFiller {
14
  margin-top: 30px;
15
  }
16
 
 
17
  .wppr-template-1 .wppr-review-grade {
18
  display: table;
19
  width: 100%;
24
  float: left;
25
  position: relative;
26
  font-family: FontAwesome;
 
 
 
 
27
  font-size: 38px;
28
  -webkit-font-smoothing: antialiased;
29
  line-height: 1;
30
  }
31
 
32
+ .wppr-template-1.rtl .wppr-review-stars-grade {
33
+ float: right;
 
 
 
 
 
 
34
  }
35
 
36
+ .wppr-template-1 .wppr-review-stars.rtl .wppr-review-stars-grade i.fa-star-half-o {
37
+ transform: rotateY(180deg);
38
  }
39
 
 
 
 
40
 
41
  .wppr-template-1 .wppr-review-stars-author {
42
  display: table-cell;
46
  vertical-align: middle;
47
  }
48
 
49
+ .wppr-template-1.rtl .wppr-review-stars-author {
50
+ padding-left: 0px;
51
+ padding-right: 15px;
52
+ }
53
+
54
  .wppr-template-1 .wppr-review-grade-number,
55
  .wppr-template-1 .wppr-review-grade-options {
56
  display: table-cell;
71
  width: 50%;
72
  }
73
 
74
+ .wppr-template-1.rtl .wppr-review-grade-option-header span {
75
+ float: right;
76
+ width: 50%;
77
+ }
78
+
79
  .wppr-template-1 .wppr-review-grade-options {
80
  padding-left: 45px;
81
  }
82
 
83
+ .wppr-template-1 .wppr-review-grade-options.rtl {
84
+ padding-right: 45px;
85
+ padding-left: 0px;
86
+ }
87
+
88
+
89
  .wppr-template-1 .wppr-review-grade-option-header span:last-of-type {
90
  font-weight: 700;
91
  text-align: right;
92
  }
93
 
94
+ .wppr-template-1.rtl .wppr-review-grade-option-header span:last-of-type {
95
+ font-weight: 700;
96
+ text-align: left;
97
+ }
98
+
99
+ .wppr-template-1 .wppr-review-grade-option-header span:first-of-type {
100
+ font-weight: 700;
101
+ text-align: left;
102
+ }
103
+ .wppr-template-1.rtl .wppr-review-grade-option-header span:first-of-type {
104
+ text-align: right;
105
+ }
106
+
107
  .wppr-template-1 .wppr-review-grade-option-rating {
108
  display: block;
109
  float: left;
154
  list-style-type: square;
155
  }
156
 
157
+ .wppr-template-1.rtl .wppr-review-pros-cons ul {
158
+ list-style-position: inside;
159
+ }
160
+
161
+ .wppr-template-1.rtl .affiliate-button a span {
162
+ margin-right: -10px;
163
+ padding-right: 20px;
164
+ margin-left: auto;
165
+ padding-left: auto;
166
+ }
167
+
168
  @media (max-width: 768px) {
169
  .wppr-template-1 .wppr-review-stars {
170
  width: 100%;
252
  display: block;
253
  width: 100%;
254
  text-align: center;
255
+ padding: 0;
256
  }
257
 
258
  .wppr-template-1 .wppr-review-stars .wppr-review-stars-grade,
267
  .wppr-template-1 .wppr-review-grade-option-header span {
268
  text-align: left;
269
  }
270
+
271
+ .wppr-template-1 .wppr-review-product-image {
272
+ float: none;
273
+ margin: auto;
274
+ display: block;
275
+ }
276
+
277
  }
278
 
279
  @-webkit-keyframes animFiller {
assets/css/style2.css CHANGED
@@ -42,11 +42,22 @@ Template 2
42
  padding-right: 30px;
43
  }
44
 
 
 
 
 
 
45
  .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-grade,
46
  .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-image {
47
  float: left;
48
  }
49
 
 
 
 
 
 
 
50
  .wppr-template-2 .wppr-review-pros,
51
  .wppr-template-2 .wppr-review-cons {
52
  width: 50%;
@@ -137,6 +148,11 @@ Template 2
137
  list-style-type: square;
138
  }
139
 
 
 
 
 
 
140
  .wppr-template-2 .wppr-review-options {
141
  float: left;
142
  width: 100%;
@@ -185,6 +201,17 @@ Template 2
185
  content: "\f005";
186
  }
187
 
 
 
 
 
 
 
 
 
 
 
 
188
  @media (max-width: 768px) {
189
  .wppr-template-2 .wppr-review-pros,
190
  .wppr-template-2 .wppr-review-cons {
42
  padding-right: 30px;
43
  }
44
 
45
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating.rtl {
46
+ padding-left: 30px;
47
+ padding-right: 0px;
48
+ }
49
+
50
  .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-grade,
51
  .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-image {
52
  float: left;
53
  }
54
 
55
+ .wppr-template-2.rtl .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-grade,
56
+ .wppr-template-2.rtl .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-image {
57
+ float: right;
58
+ }
59
+
60
+
61
  .wppr-template-2 .wppr-review-pros,
62
  .wppr-template-2 .wppr-review-cons {
63
  width: 50%;
148
  list-style-type: square;
149
  }
150
 
151
+ .wppr-template-2.rtl .wppr-review-pros ul,
152
+ .wppr-template-2.rtl .wppr-review-cons ul {
153
+ list-style-position: inside;
154
+ }
155
+
156
  .wppr-template-2 .wppr-review-options {
157
  float: left;
158
  width: 100%;
201
  content: "\f005";
202
  }
203
 
204
+ .wppr-template-2.rtl .affiliate-button a span {
205
+ margin-right: -10px;
206
+ padding-right: 20px;
207
+ margin-left: auto;
208
+ padding-left: auto;
209
+ }
210
+
211
+ .wppr-template-2.rtl .wppr-review-option-rating {
212
+ float: right;
213
+ }
214
+
215
  @media (max-width: 768px) {
216
  .wppr-template-2 .wppr-review-pros,
217
  .wppr-template-2 .wppr-review-cons {
includes/admin/controllers/class-wppr-admin-render-controller.php CHANGED
@@ -63,6 +63,23 @@ class WPPR_Admin_Render_Controller {
63
  * @param bool|WPPR_Abstract_Model $model Optional pass a model to use in template.
64
  */
65
  public function retrive_template( $name, $model = false ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  if ( file_exists( WPPR_PATH . '/includes/admin/layouts/css/' . $name . '.css' ) ) {
67
  wp_enqueue_style( $this->plugin_name . '-' . $name . '-css', WPPR_URL . '/includes/admin/layouts/css/' . $name . '.css', array(), $this->version );
68
  }
63
  * @param bool|WPPR_Abstract_Model $model Optional pass a model to use in template.
64
  */
65
  public function retrive_template( $name, $model = false ) {
66
+ /*
67
+ Let's check for user templates inside the wppr folder in the theme.
68
+ We expect the following files
69
+ /wppr/<name>.php
70
+ /wppr/<name>.css
71
+ /wppr/<name>.png
72
+ */
73
+ if ( file_exists( get_stylesheet_directory() . '/wppr' ) ) {
74
+ if ( file_exists( get_stylesheet_directory() . '/wppr/' . $name . '.css' ) ) {
75
+ wp_enqueue_style( $this->plugin_name . '-' . $name . '-custom', get_stylesheet_directory_uri() . '/wppr/' . $name . '.css', array(), $this->version );
76
+ }
77
+ if ( file_exists( get_stylesheet_directory() . '/wppr/' . $name . '.php' ) ) {
78
+ include_once( get_stylesheet_directory() . '/wppr/' . $name . '.php' );
79
+ return;
80
+ }
81
+ }
82
+
83
  if ( file_exists( WPPR_PATH . '/includes/admin/layouts/css/' . $name . '.css' ) ) {
84
  wp_enqueue_style( $this->plugin_name . '-' . $name . '-css', WPPR_URL . '/includes/admin/layouts/css/' . $name . '.css', array(), $this->version );
85
  }
includes/admin/layouts/editor-default-tpl.php CHANGED
@@ -75,9 +75,21 @@ $check = $review->is_active() ? 'yes' : 'no';
75
  )
76
  );
77
  ?>
78
- <label for="<?php echo $template_id; ?>"><img
79
- src='<?php echo WPPR_URL . "/assets/img/templates/$template.png"; ?>'
80
- class="wppr-review-template"/></label>
 
 
 
 
 
 
 
 
 
 
 
 
81
  <?php
82
  }
83
  ?>
75
  )
76
  );
77
  ?>
78
+ <label for="<?php echo $template_id; ?>">
79
+ <?php
80
+ $image = null;
81
+ if ( file_exists( WPPR_PATH . "/assets/img/templates/$template.png" ) ) {
82
+ $image = WPPR_URL . "/assets/img/templates/$template.png";
83
+ } elseif ( file_exists( get_stylesheet_directory() . "/wppr/$template.png" ) ) {
84
+ $image = get_stylesheet_directory_uri() . "/wppr/$template.png";
85
+ }
86
+ if ( $image ) {
87
+ ?>
88
+ <img src='<?php echo $image; ?>' class="wppr-review-template"/>
89
+ <?php
90
+ }
91
+ ?>
92
+ </label>
93
  <?php
94
  }
95
  ?>
includes/admin/models/class-wppr-review-model.php CHANGED
@@ -706,6 +706,16 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
706
  return apply_filters( 'wppr_name', $this->name, $this->ID, $this );
707
  }
708
 
 
 
 
 
 
 
 
 
 
 
709
  /**
710
  * Return the review template.
711
  *
@@ -884,6 +894,20 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
884
  return false;
885
  }
886
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
887
  /**
888
  * Return the url of the thumbnail.
889
  *
@@ -892,12 +916,10 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
892
  * @return string
893
  */
894
  public function get_small_thumbnail() {
895
- global $wpdb;
896
  // filter for image size;
897
  $size = apply_filters( 'wppr_review_image_size', 'thumbnail', $this->ID, $this );
898
- $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid=%s", $this->image ) );
899
- $image_id = isset( $attachment[0] ) ? $attachment[0] : '';
900
  $image_thumb = '';
 
901
  if ( ! empty( $image_id ) ) {
902
  $image_thumb = wp_get_attachment_image_src( $image_id, $size );
903
  if ( $size !== 'thumbnail' ) {
@@ -910,6 +932,25 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
910
  return apply_filters( 'wppr_thumb', isset( $image_thumb[0] ) ? $image_thumb[0] : $this->image, $this->ID, $this );
911
  }
912
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
913
  /**
914
  * Return the rating of the review.
915
  *
706
  return apply_filters( 'wppr_name', $this->name, $this->ID, $this );
707
  }
708
 
709
+ /**
710
+ * Filter to display review product name in comparison table
711
+ *
712
+ * @since 3.4.3
713
+ * @access public
714
+ * @return bool
715
+ */
716
+ public function hide_name() {
717
+ return apply_filters( 'wppr_hide_product_name', $this->name, $this->ID, $this );
718
+ }
719
  /**
720
  * Return the review template.
721
  *
894
  return false;
895
  }
896
 
897
+ /**
898
+ * Return the review image ID.
899
+ *
900
+ * @since 3.4.3
901
+ * @access public
902
+ * @return int
903
+ */
904
+ public function get_image_id() {
905
+ global $wpdb;
906
+ $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid=%s", $this->image ) );
907
+ $image_id = isset( $attachment[0] ) ? $attachment[0] : '';
908
+ return $image_id;
909
+ }
910
+
911
  /**
912
  * Return the url of the thumbnail.
913
  *
916
  * @return string
917
  */
918
  public function get_small_thumbnail() {
 
919
  // filter for image size;
920
  $size = apply_filters( 'wppr_review_image_size', 'thumbnail', $this->ID, $this );
 
 
921
  $image_thumb = '';
922
+ $image_id = $this->get_image_id();
923
  if ( ! empty( $image_id ) ) {
924
  $image_thumb = wp_get_attachment_image_src( $image_id, $size );
925
  if ( $size !== 'thumbnail' ) {
932
  return apply_filters( 'wppr_thumb', isset( $image_thumb[0] ) ? $image_thumb[0] : $this->image, $this->ID, $this );
933
  }
934
 
935
+ /**
936
+ * Return the review image's alt text.
937
+ *
938
+ * @since 3.4.3
939
+ * @access public
940
+ * @return string
941
+ */
942
+ public function get_image_alt() {
943
+ $image_id = $this->get_image_id();
944
+ if ( empty( $image_id ) ) {
945
+ return $this->get_name();
946
+ }
947
+ $alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
948
+ if ( empty( $alt ) ) {
949
+ return $this->get_name();
950
+ }
951
+ return $alt;
952
+ }
953
+
954
  /**
955
  * Return the rating of the review.
956
  *
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.4.5';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
@@ -197,6 +197,8 @@ class WPPR {
197
  $this->loader->add_filter( 'the_content', $plugin_public, 'display_on_front' );
198
  }
199
 
 
 
200
  }
201
 
202
  /**
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
+ $this->version = '3.4.6';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
197
  $this->loader->add_filter( 'the_content', $plugin_public, 'display_on_front' );
198
  }
199
 
200
+ $this->loader->add_filter( 'wppr_rating_circle_bar_styles', $plugin_public, 'rating_circle_bar_styles', 10, 2 );
201
+ $this->loader->add_filter( 'wppr_rating_circle_fill_styles', $plugin_public, 'rating_circle_fill_styles', 10, 2 );
202
  }
203
 
204
  /**
includes/functions.php ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * The file that contains global functions.
4
+ *
5
+ * @link https://themeisle.com/
6
+ *
7
+ * @package WPPR
8
+ * @subpackage WPPR/includes
9
+ */
10
+
11
+
12
+ if ( ! function_exists( 'wppr_display_rating' ) ) {
13
+ /**
14
+ * Display the star/icon rating.
15
+ */
16
+ function wppr_display_rating( $template, $review_object ) {
17
+ $icon = apply_filters( 'wppr_option_custom_icon', '' );
18
+ if ( empty( $icon ) ) {
19
+ wppr_display_rating_stars( $template, $review_object, true );
20
+ } else {
21
+ wppr_display_rating_custom_icon( $template, $review_object );
22
+ }
23
+ }
24
+ }
25
+
26
+
27
+ if ( ! function_exists( 'wppr_display_rating_stars' ) ) {
28
+
29
+ /**
30
+ * Display the star rating.
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' : ''; ?>">
38
+ <div class="wppr-review-stars-grade <?php echo $review_object->get_rating_class(); ?>">
39
+ <?php
40
+ $stars = array( 'full' => intval( $rating_5 ), 'half' => $rating_5 > intval( $rating_5 ), 'empty' => 4 - intval( $rating_5 ) );
41
+
42
+ foreach ( $stars as $key => $value ) {
43
+ switch ( $key ) {
44
+ case 'full':
45
+ for ( $i = 0; $i < intval( $rating_5 ); $i++ ) {
46
+ ?>
47
+ <i class="fa fa-star"></i>
48
+ <?php
49
+ }
50
+ break;
51
+ case 'half':
52
+ if ( $rating_5 > intval( $rating_5 ) ) {
53
+ ?>
54
+ <i class="fa fa-star-half-o"></i>
55
+ <?php
56
+ }
57
+ break;
58
+ case 'empty':
59
+ for ( $i = 0; $i < 4 - intval( $rating_5 ); $i++ ) {
60
+ ?>
61
+ <i class="fa fa-star-o"></i>
62
+ <?php
63
+ }
64
+ break;
65
+ }
66
+ }
67
+ ?>
68
+ </div>
69
+ <?php
70
+ if ( $include_author ) {
71
+ ?>
72
+ <span class="wppr-review-stars-author"><?php echo get_the_author() . __( '\'s rating', 'wp-product-review' ); ?></span>
73
+ <?php
74
+ }
75
+ ?>
76
+ </div>
77
+ <?php
78
+ }
79
+ }
80
+
81
+ if ( ! function_exists( 'wppr_display_rating_custom_icon' ) ) {
82
+
83
+ /**
84
+ * Display the custom icon rating.
85
+ */
86
+ function wppr_display_rating_custom_icon( $template, $review_object ) {
87
+ ?>
88
+ <div id="review-statistics">
89
+ <div class="review-wu-bars">
90
+ <ul class="cwpr_clearfix <?php echo ' ' . $review_object->get_rating_class( $review_rating ) . apply_filters( 'wppr_option_custom_icon', '' ); ?>">
91
+ <?php
92
+ for ( $i = 1; $i <= 5; $i ++ ) {
93
+ ?>
94
+ <li <?php echo $i <= round( $review_rating / 20 ) ? ' class="colored"' : ''; ?>></li>
95
+ <?php
96
+ }
97
+ ?>
98
+ </ul>
99
+ </div>
100
+ </div>
101
+ <?php
102
+ }
103
+ }
104
+
105
+
106
+ if ( ! function_exists( 'wppr_default_get_image' ) ) {
107
+
108
+ /**
109
+ * Display the imaage for the default template.
110
+ */
111
+ function wppr_default_get_image( $review_object ) {
112
+ $links = $review_object->get_links();
113
+ $links = array_filter( $links );
114
+ $image_link = reset( $links );
115
+ $lightbox = '';
116
+ if ( $review_object->get_click() == 'image' ) {
117
+ $lightbox = 'data-lightbox="' . esc_url( $review_object->get_small_thumbnail() ) . '"';
118
+ $image_link = $review_object->get_image();
119
+ }
120
+ ?>
121
+ <div class="rev-wu-image">
122
+ <a class="wppr-default-img" href="<?php echo esc_url( $image_link ); ?>" <?php echo $lightbox; ?> rel="nofollow" target="_blank">
123
+ <img
124
+ src="<?php echo esc_attr( $review_object->get_small_thumbnail() ); ?>"
125
+ alt="<?php echo esc_attr( $review_object->get_name() ); ?>"
126
+ class="photo photo-wrapup wppr-product-image"/>
127
+ </a>
128
+ </div><!-- end .rev-wu-image -->
129
+ <?php
130
+ }
131
+ }
132
+
133
+ if ( ! function_exists( 'wppr_default_get_rating' ) ) {
134
+
135
+ /**
136
+ * Display the rating for the default template.
137
+ */
138
+ function wppr_default_get_rating( $review_object ) {
139
+ $rating = round( $review_object->get_rating() );
140
+ $rating_10 = round( $review_object->get_rating(), 0 ) / 10;
141
+ ?>
142
+ <div class="review-wu-grade">
143
+ <div class="review-wu-grade-content">
144
+ <div class="wppr-c100 wppr-p<?php echo esc_attr( $rating ) . ' ' . $review_object->get_rating_class(); ?>">
145
+ <span><?php echo esc_html( $rating_10 ); ?></span>
146
+ <div class="wppr-slice">
147
+ <div class="wppr-bar" style="<?php echo apply_filters( 'wppr_rating_circle_bar_styles', '', $rating ); ?>"></div>
148
+ <div class="wppr-fill" style="<?php echo apply_filters( 'wppr_rating_circle_fill_styles', '', $rating ); ?>"></div>
149
+ </div>
150
+ <div class="wppr-slice-center"></div>
151
+ </div>
152
+ </div>
153
+ </div><!-- end .review-wu-grade -->
154
+ <?php
155
+ }
156
+ }
includes/public/class-wppr-public.php CHANGED
@@ -130,10 +130,6 @@ class Wppr_Public {
130
  $this->plugin_name . '-percentage-circle', WPPR_URL . '/assets/css/circle.css', array(),
131
  $this->version
132
  );
133
- wp_enqueue_style(
134
- $this->plugin_name . '-percentage-circle-rating', WPPR_URL . '/assets/css/rating.css', array(),
135
- $this->version
136
- );
137
  wp_enqueue_style(
138
  $this->plugin_name . '-common', WPPR_URL . '/assets/css/common.css', array(),
139
  $this->version
@@ -180,10 +176,13 @@ class Wppr_Public {
180
  $review = new WPPR_Review_Model();
181
  $conditional_styles = '';
182
  if ( $review->wppr_get_option( 'cwppos_show_icon' ) == 'yes' ) {
 
 
183
  $conditional_styles .= '
184
- div.affiliate-button a span:before, div.affiliate-button a:hover span:before {
185
  font-family: "dashicons";
186
  content: "\f174";
 
187
  }
188
  ';
189
  }
@@ -344,21 +343,46 @@ class Wppr_Public {
344
  * Template specific styles.
345
  */
346
  $style .= '
347
- .wppr-template-1 .wppr-review-grade-option .wppr-very-good,
348
- .wppr-template-2 .wppr-review-rating .wppr-very-good{
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  background: ' . $review->wppr_get_option( 'cwppos_rating_very_good' ) . ';
350
  }
351
- .wppr-template-1 .wppr-review-grade-option .wppr-good,
352
- .wppr-template-2 .wppr-review-rating .wppr-good{
 
 
353
  background: ' . $review->wppr_get_option( 'cwppos_rating_good' ) . ';
354
  }
355
- .wppr-template-1 .wppr-review-grade-option .wppr-not-bad,
356
- .wppr-template-2 .wppr-review-rating .wppr-not-bad{
 
 
357
  background: ' . $review->wppr_get_option( 'cwppos_rating_notbad' ) . ';
358
  }
359
 
360
- .wppr-template-1 .wppr-review-grade-option .wppr-weak,
361
- .wppr-template-2 .wppr-review-rating .wppr-weak{
 
 
362
  background: ' . $review->wppr_get_option( 'cwppos_rating_weak' ) . ';
363
  }
364
  .wppr-template-1 .wppr-review-grade-option .wppr-default,
@@ -670,4 +694,31 @@ class Wppr_Public {
670
  public function wppr_amp_add_fa() {
671
  echo '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">';
672
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
673
  }
130
  $this->plugin_name . '-percentage-circle', WPPR_URL . '/assets/css/circle.css', array(),
131
  $this->version
132
  );
 
 
 
 
133
  wp_enqueue_style(
134
  $this->plugin_name . '-common', WPPR_URL . '/assets/css/common.css', array(),
135
  $this->version
176
  $review = new WPPR_Review_Model();
177
  $conditional_styles = '';
178
  if ( $review->wppr_get_option( 'cwppos_show_icon' ) == 'yes' ) {
179
+ $adverb = is_rtl() ? 'after' : 'before';
180
+ $direction = is_rtl() ? 'left' : 'right';
181
  $conditional_styles .= '
182
+ div.affiliate-button a span:' . $adverb . ', div.affiliate-button a:hover span:' . $adverb . ' {
183
  font-family: "dashicons";
184
  content: "\f174";
185
+ padding-' . $direction . ': 5px
186
  }
187
  ';
188
  }
343
  * Template specific styles.
344
  */
345
  $style .= '
346
+ .wppr-template-1 .wppr-review-grade-option-rating.wppr-very-good.rtl,
347
+ .wppr-template-2 .wppr-review-grade-option-rating.wppr-very-good.rtl {
348
+ background: ' . $review->wppr_get_option( 'cwppos_rating_very_good' ) . ';
349
+ }
350
+ .wppr-template-1 .wppr-review-grade-option-rating.wppr-good.rtl,
351
+ .wppr-template-2 .wppr-review-grade-option-rating.wppr-good.rtl {
352
+ background: ' . $review->wppr_get_option( 'cwppos_rating_good' ) . ';
353
+ }
354
+ .wppr-template-1 .wppr-review-grade-option-rating.wppr-not-bad.rtl,
355
+ .wppr-template-2 .wppr-review-grade-option-rating.wppr-not-bad.rtl {
356
+ background: ' . $review->wppr_get_option( 'cwppos_rating_notbad' ) . ';
357
+ }
358
+ .wppr-template-1 .wppr-review-grade-option-rating.wppr-weak.rtl,
359
+ .wppr-template-2 .wppr-review-grade-option-rating.wppr-weak.rtl {
360
+ background: ' . $review->wppr_get_option( 'cwppos_rating_weak' ) . ';
361
+ }
362
+
363
+ .wppr-template-1 .wppr-review-grade-option .wppr-very-good {
364
+ background: ' . ( is_rtl() ? $review->wppr_get_option( 'cwppos_rating_default' ) : $review->wppr_get_option( 'cwppos_rating_very_good' ) ) . ';
365
+ }
366
+ .wppr-template-2 .wppr-review-rating .wppr-very-good {
367
  background: ' . $review->wppr_get_option( 'cwppos_rating_very_good' ) . ';
368
  }
369
+ .wppr-template-1 .wppr-review-grade-option .wppr-good {
370
+ background: ' . ( is_rtl() ? $review->wppr_get_option( 'cwppos_rating_default' ) : $review->wppr_get_option( 'cwppos_rating_good' ) ) . ';
371
+ }
372
+ .wppr-template-2 .wppr-review-rating .wppr-good {
373
  background: ' . $review->wppr_get_option( 'cwppos_rating_good' ) . ';
374
  }
375
+ .wppr-template-1 .wppr-review-grade-option .wppr-not-bad {
376
+ background: ' . ( is_rtl() ? $review->wppr_get_option( 'cwppos_rating_default' ) : $review->wppr_get_option( 'cwppos_rating_notbad' ) ) . ';
377
+ }
378
+ .wppr-template-2 .wppr-review-rating .wppr-not-bad {
379
  background: ' . $review->wppr_get_option( 'cwppos_rating_notbad' ) . ';
380
  }
381
 
382
+ .wppr-template-1 .wppr-review-grade-option .wppr-weak {
383
+ background: ' . ( is_rtl() ? $review->wppr_get_option( 'cwppos_rating_default' ) : $review->wppr_get_option( 'cwppos_rating_weak' ) ) . ';
384
+ }
385
+ .wppr-template-2 .wppr-review-rating .wppr-weak {
386
  background: ' . $review->wppr_get_option( 'cwppos_rating_weak' ) . ';
387
  }
388
  .wppr-template-1 .wppr-review-grade-option .wppr-default,
694
  public function wppr_amp_add_fa() {
695
  echo '<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">';
696
  }
697
+
698
+ /**
699
+ * Handle RTL for rating circle colored part.
700
+ */
701
+ public function rating_circle_bar_styles( $styles, $rating ) {
702
+ $degress = ( is_rtl() ? ( $rating - 100 ) : $rating ) * 3.6;
703
+ return "
704
+ -webkit-transform: rotate({$degress}deg);
705
+ -ms-transform: rotate({$degress}deg);
706
+ transform: rotate({$degress}deg);
707
+ ";
708
+ }
709
+
710
+ /**
711
+ * Handle RTL for rating circle empty part.
712
+ */
713
+ public function rating_circle_fill_styles( $styles, $rating ) {
714
+ if ( is_rtl() ) {
715
+ return '
716
+ -webkit-transform: rotate(0deg);
717
+ -ms-transform: rotate(0deg);
718
+ transform: rotate(0deg);
719
+ ';
720
+ }
721
+ return $styles;
722
+ }
723
+
724
  }
includes/public/layouts/default.php CHANGED
@@ -12,57 +12,37 @@
12
 
13
  $price_raw = $review_object->get_price_raw();
14
 
15
- $lightbox = '';
16
-
17
  $links = $review_object->get_links();
18
  $multiple_affiliates_class = 'affiliate-button';
19
  $links = array_filter( $links );
20
- $image_link = reset( $links );
21
  if ( count( $links ) > 1 ) {
22
  $multiple_affiliates_class = 'affiliate-button2 affiliate-button';
23
  }
24
- if ( $review_object->get_click() == 'image' ) {
25
- $lightbox = 'data-lightbox="' . esc_url( $review_object->get_small_thumbnail() ) . '"';
26
- $image_link = $review_object->get_image();
27
- }
28
 
29
  $pros = $review_object->get_pros();
30
  $cons = $review_object->get_cons();
 
 
31
 
32
  ?>
33
  <div id="wppr-review-<?php echo $review_object->get_ID(); ?>"
34
- class="wppr-review-container <?php echo( empty( $pros ) ? 'wppr-review-no-pros' : '' ); ?> <?php echo( empty( $cons ) ? 'wppr-review-no-cons' : '' ); ?>">
35
  <section id="review-statistics" class="article-section">
36
  <div class="review-wrap-up cwpr_clearfix">
37
  <div class="cwpr-review-top cwpr_clearfix">
38
- <span><h2 class="cwp-item"><?php echo esc_html( $review_object->get_name() ); ?></h2></span>
39
- <span class="cwp-item-price cwp-item">
40
- <span><?php echo esc_html( empty( $price_raw ) ? '' : $price_raw ); ?></span>
41
  </span>
 
 
42
  </div><!-- end .cwpr-review-top -->
43
  <div class="review-wu-content cwpr_clearfix">
44
  <div class="review-wu-left">
45
  <div class="review-wu-left-top">
46
- <div class="rev-wu-image">
47
- <a class="wppr-default-img" href="<?php echo esc_url( $image_link ); ?>" <?php echo $lightbox; ?> rel="nofollow"
48
- target="_blank"><img
49
- src="<?php echo esc_attr( $review_object->get_small_thumbnail() ); ?>"
50
- alt="<?php echo esc_attr( $review_object->get_name() ); ?>"
51
- class="photo photo-wrapup wppr-product-image"/></a>
52
- </div><!-- end .rev-wu-image -->
53
-
54
- <div class="review-wu-grade">
55
- <div class="review-wu-grade-content">
56
- <div class="wppr-c100 wppr-p<?php echo esc_attr( round( $review_object->get_rating() ) ) . ' ' . $review_object->get_rating_class(); ?>">
57
- <span><?php echo esc_html( round( $review_object->get_rating(), 0 ) / 10 ); ?></span>
58
- <div class="wppr-slice">
59
- <div class="wppr-bar"></div>
60
- <div class="wppr-fill"></div>
61
- </div>
62
- <div class="wppr-slice-center"></div>
63
- </div>
64
- </div>
65
- </div><!-- end .review-wu-grade -->
66
  </div><!-- end .review-wu-left-top -->
67
 
68
  <div class="review-wu-bars">
@@ -73,17 +53,23 @@ $cons = $review_object->get_cons();
73
  <div class="rev-option" data-value="
74
  <?php echo $option['value']; ?>">
75
  <div class="cwpr_clearfix">
76
- <h3><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></h3>
77
- <span><?php echo esc_html( number_format( ( $option['value'] / 10 ), 1 ) ); ?>
78
- /10 </span>
 
79
  </div>
80
  <ul class="cwpr_clearfix
81
  <?php echo ' ' . $review_object->get_rating_class( $option['value'] ) . apply_filters( 'wppr_option_custom_icon', '' ); ?>
82
  ">
83
- <?php for ( $i = 1; $i <= 10; $i ++ ) { ?>
 
 
 
 
 
84
  <li
85
  <?php
86
- echo $i <= round( $option['value'] / 10 ) ? ' class="colored"' : '';
87
  ?>
88
  ></li>
89
  <?php } ?>
12
 
13
  $price_raw = $review_object->get_price_raw();
14
 
 
 
15
  $links = $review_object->get_links();
16
  $multiple_affiliates_class = 'affiliate-button';
17
  $links = array_filter( $links );
 
18
  if ( count( $links ) > 1 ) {
19
  $multiple_affiliates_class = 'affiliate-button2 affiliate-button';
20
  }
 
 
 
 
21
 
22
  $pros = $review_object->get_pros();
23
  $cons = $review_object->get_cons();
24
+ $rating = round( $review_object->get_rating() );
25
+ $rating_10 = round( $review_object->get_rating(), 0 ) / 10;
26
 
27
  ?>
28
  <div id="wppr-review-<?php echo $review_object->get_ID(); ?>"
29
+ class="wppr-template wppr-template-default <?php echo is_rtl() ? 'rtl' : ''; ?> wppr-review-container <?php echo( empty( $pros ) ? 'wppr-review-no-pros' : '' ); ?> <?php echo( empty( $cons ) ? 'wppr-review-no-cons' : '' ); ?>">
30
  <section id="review-statistics" class="article-section">
31
  <div class="review-wrap-up cwpr_clearfix">
32
  <div class="cwpr-review-top cwpr_clearfix">
33
+ <span>
34
+ <h2 class="cwp-item"><?php echo esc_html( $review_object->get_name() ); ?></h2>
 
35
  </span>
36
+ <span class="cwp-item-price cwp-item"></span>
37
+ <span><?php echo esc_html( empty( $price_raw ) ? '' : $price_raw ); ?></span>
38
  </div><!-- end .cwpr-review-top -->
39
  <div class="review-wu-content cwpr_clearfix">
40
  <div class="review-wu-left">
41
  <div class="review-wu-left-top">
42
+ <?php
43
+ wppr_default_get_image( $review_object );
44
+ wppr_default_get_rating( $review_object );
45
+ ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  </div><!-- end .review-wu-left-top -->
47
 
48
  <div class="review-wu-bars">
53
  <div class="rev-option" data-value="
54
  <?php echo $option['value']; ?>">
55
  <div class="cwpr_clearfix">
56
+ <span>
57
+ <h3><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></h3>
58
+ </span>
59
+ <span><?php echo esc_html( number_format( ( $option['value'] / 10 ), 1 ) ); ?>/10</span>
60
  </div>
61
  <ul class="cwpr_clearfix
62
  <?php echo ' ' . $review_object->get_rating_class( $option['value'] ) . apply_filters( 'wppr_option_custom_icon', '' ); ?>
63
  ">
64
+ <?php
65
+ $rating = round( $option['value'] / 10 );
66
+ $start_from = is_rtl() ? ( 11 - $rating ) : 1;
67
+ $stop_at = is_rtl() ? 10 : $rating;
68
+ for ( $i = 1; $i <= 10; $i ++ ) {
69
+ ?>
70
  <li
71
  <?php
72
+ echo $i >= $start_from && $i <= $stop_at ? ' class="colored"' : '';
73
  ?>
74
  ></li>
75
  <?php } ?>
includes/public/layouts/style1.php CHANGED
@@ -9,7 +9,7 @@
9
  * @since 3.0.0
10
  */
11
  ?>
12
- <div class="wppr-template wppr-template-1">
13
 
14
  <?php
15
  // Review info.
@@ -17,6 +17,7 @@
17
  $review_pros = $review_object->get_pros();
18
  $review_cons = $review_object->get_cons();
19
  $review_rating = $review_object->get_rating();
 
20
 
21
  $links = $review_object->get_links();
22
  $multiple_affiliates_class = 'affiliate-button';
@@ -38,34 +39,7 @@
38
  <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
39
 
40
  <?php
41
- $icon = apply_filters( 'wppr_option_custom_icon', '' );
42
- if ( empty( $icon ) ) {
43
- ?>
44
- <div class="wppr-review-stars">
45
- <div class="wppr-review-stars-grade <?php echo $review_object->get_rating_class(); ?>">
46
- <span class="wppr-review-full-stars <?php echo $review_object->get_rating_class(); ?>"
47
- style=" width:<?php echo esc_html( intval( $review_rating ) ); ?>%;"></span>
48
- </div>
49
- <span class="wppr-review-stars-author"><?php echo get_the_author() . __( '\'s rating', 'wp-product-review' ); ?></span>
50
- </div>
51
- <?php
52
- } else {
53
- ?>
54
- <div id="review-statistics"><div class="review-wu-bars">
55
- <ul class="cwpr_clearfix
56
- <?php echo ' ' . $review_object->get_rating_class( $review_rating ) . apply_filters( 'wppr_option_custom_icon', '' ); ?>
57
- ">
58
- <?php for ( $i = 1; $i <= 5; $i ++ ) { ?>
59
- <li
60
- <?php
61
- echo $i <= round( $review_rating / 20 ) ? ' class="colored"' : '';
62
- ?>
63
- ></li>
64
- <?php } ?>
65
- </ul>
66
- </div></div>
67
- <?php
68
- }
69
  ?>
70
 
71
  <div class="wppr-review-grade">
@@ -73,7 +47,7 @@
73
  <span class=" <?php echo $review_object->get_rating_class(); ?> ">
74
  <?php
75
  // Display rating number.
76
- echo esc_html( round( $review_object->get_rating(), 0 ) / 10 );
77
  ?>
78
  </span>
79
  </div>
@@ -85,10 +59,10 @@
85
  <a href="<?php echo esc_url( $review_image_link ); ?>" <?php echo $lightbox; ?>
86
  rel="nofollow" target="_blank" class="wppr-default-img"><img
87
  src="<?php echo esc_attr( $review_image ); ?>"
88
- alt="<?php echo esc_attr( $review_object->get_name() ); ?>" class="wppr-product-image"/></a>
89
  </div>
90
  <?php } ?>
91
- <div class="wppr-review-grade-options">
92
  <?php
93
  foreach ( $review_object->get_options() as $option ) {
94
  $review_option_rating = $option['value'];
@@ -98,13 +72,13 @@
98
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
99
  <span><?php echo esc_html( number_format( ( $review_option_rating / 10 ), 1 ) ); ?></span>
100
  </div>
101
- <div class="wppr-review-grade-option-rating wppr-default">
102
  <span class="<?php echo $review_object->get_rating_class( $review_option_rating ); ?>" style="
103
  <?php
104
  /**
105
  * Adds min-width for amp support.
106
  */
107
- echo 'width:' . esc_attr( $review_option_rating ) . '%; ';
108
  echo esc_attr( apply_filters( 'wppr_review_option_rating_css', '', $review_option_rating ) );
109
  ?>
110
  "></span>
9
  * @since 3.0.0
10
  */
11
  ?>
12
+ <div class="wppr-template wppr-template-1 <?php echo is_rtl() ? 'rtl' : ''; ?>">
13
 
14
  <?php
15
  // Review info.
17
  $review_pros = $review_object->get_pros();
18
  $review_cons = $review_object->get_cons();
19
  $review_rating = $review_object->get_rating();
20
+ $rating_10 = round( $review_rating, 0 ) / 10;
21
 
22
  $links = $review_object->get_links();
23
  $multiple_affiliates_class = 'affiliate-button';
39
  <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
40
 
41
  <?php
42
+ wppr_display_rating( 'style1', $review_object );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
43
  ?>
44
 
45
  <div class="wppr-review-grade">
47
  <span class=" <?php echo $review_object->get_rating_class(); ?> ">
48
  <?php
49
  // Display rating number.
50
+ echo esc_html( $rating_10 );
51
  ?>
52
  </span>
53
  </div>
59
  <a href="<?php echo esc_url( $review_image_link ); ?>" <?php echo $lightbox; ?>
60
  rel="nofollow" target="_blank" class="wppr-default-img"><img
61
  src="<?php echo esc_attr( $review_image ); ?>"
62
+ alt="<?php echo esc_attr( $review_object->get_image_alt() ); ?>" class="wppr-product-image"/></a>
63
  </div>
64
  <?php } ?>
65
+ <div class="wppr-review-grade-options <?php echo is_rtl() ? 'rtl' : ''; ?>">
66
  <?php
67
  foreach ( $review_object->get_options() as $option ) {
68
  $review_option_rating = $option['value'];
72
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
73
  <span><?php echo esc_html( number_format( ( $review_option_rating / 10 ), 1 ) ); ?></span>
74
  </div>
75
+ <div class="wppr-review-grade-option-rating wppr-default <?php echo $review_object->get_rating_class( $review_option_rating ); ?> <?php echo is_rtl() ? 'rtl' : ''; ?>">
76
  <span class="<?php echo $review_object->get_rating_class( $review_option_rating ); ?>" style="
77
  <?php
78
  /**
79
  * Adds min-width for amp support.
80
  */
81
+ echo 'width:' . esc_attr( is_rtl() ? ( 100 - $review_option_rating ) : $review_option_rating ) . '%; ';
82
  echo esc_attr( apply_filters( 'wppr_review_option_rating_css', '', $review_option_rating ) );
83
  ?>
84
  "></span>
includes/public/layouts/style2.php CHANGED
@@ -10,7 +10,7 @@
10
  * @global WPPR_Review_Model $review_object
11
  */
12
  ?>
13
- <div class="wppr-template wppr-template-2">
14
  <?php
15
  // Review info.
16
  $links = $review_object->get_links();
@@ -21,6 +21,8 @@
21
  $review_image = $review_object->get_small_thumbnail();
22
  $review_image_link = reset( $links );
23
 
 
 
24
  $multiple_affiliates_class = 'affiliate-button';
25
 
26
  if ( count( $links ) > 1 ) {
@@ -35,11 +37,11 @@
35
  <div id="wppr-review-<?php echo $review_id; ?>" class="wppr-review-container">
36
  <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
37
  <div class="wppr-review-head<?php echo ( $review_pros && $review_cons ) ? ' wppr-review-with-pros-cons' : ''; ?><?php echo ( $review_image ) ? ' wppr-review-with-image' : ''; ?>">
38
- <div class="wppr-review-rating">
39
- <span class="wppr-review-rating-grade wppr-p<?php echo esc_attr( round( $review_object->get_rating() ) ) . ' ' . $review_object->get_rating_class(); ?>">
40
  <?php
41
  // Display rating number.
42
- echo esc_html( round( $review_object->get_rating(), 0 ) / 10 );
43
  ?>
44
  </span>
45
  <?php
@@ -49,7 +51,7 @@
49
  <a href="<?php echo esc_url( $review_image_link ); ?>" <?php echo $lightbox; ?>
50
  class="wppr-review-product-image wppr-default-img" rel="nofollow" target="_blank"><img
51
  src="<?php echo esc_attr( $review_image ); ?>"
52
- alt="<?php echo esc_attr( $review_object->get_name() ); ?>" class="wppr-product-image"/></a>
53
  <?php } ?>
54
  <div class="clearfix"></div>
55
  <?php
@@ -110,14 +112,19 @@
110
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
111
  </div>
112
  <ul class="wppr-review-option-rating <?php echo apply_filters( 'wppr_option_custom_icon', '' ); ?>">
113
- <?php for ( $i = 1; $i <= 10; $i ++ ) { ?>
114
- <li class="
115
- <?php
116
- echo $i <= round( $option['value'] / 10 ) ? $review_object->get_rating_class( $option['value'] ) : ' wppr-default';
117
- ?>
118
- ">
 
 
 
 
 
119
 
120
- </li>
121
  <?php } ?>
122
  </ul>
123
  </div><!-- end .wppr-review-option -->
10
  * @global WPPR_Review_Model $review_object
11
  */
12
  ?>
13
+ <div class="wppr-template wppr-template-2 <?php echo is_rtl() ? 'rtl' : ''; ?>">
14
  <?php
15
  // Review info.
16
  $links = $review_object->get_links();
21
  $review_image = $review_object->get_small_thumbnail();
22
  $review_image_link = reset( $links );
23
 
24
+ $rating_10 = round( $review_rating, 0 ) / 10;
25
+
26
  $multiple_affiliates_class = 'affiliate-button';
27
 
28
  if ( count( $links ) > 1 ) {
37
  <div id="wppr-review-<?php echo $review_id; ?>" class="wppr-review-container">
38
  <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
39
  <div class="wppr-review-head<?php echo ( $review_pros && $review_cons ) ? ' wppr-review-with-pros-cons' : ''; ?><?php echo ( $review_image ) ? ' wppr-review-with-image' : ''; ?>">
40
+ <div class="wppr-review-rating <?php echo is_rtl() ? 'rtl' : ''; ?>">
41
+ <span class="wppr-review-rating-grade wppr-p<?php echo esc_attr( round( $review_rating ) ) . ' ' . $review_object->get_rating_class(); ?>">
42
  <?php
43
  // Display rating number.
44
+ echo esc_html( $rating_10 );
45
  ?>
46
  </span>
47
  <?php
51
  <a href="<?php echo esc_url( $review_image_link ); ?>" <?php echo $lightbox; ?>
52
  class="wppr-review-product-image wppr-default-img" rel="nofollow" target="_blank"><img
53
  src="<?php echo esc_attr( $review_image ); ?>"
54
+ alt="<?php echo esc_attr( $review_object->get_image_alt() ); ?>" class="wppr-product-image"/></a>
55
  <?php } ?>
56
  <div class="clearfix"></div>
57
  <?php
112
  <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
113
  </div>
114
  <ul class="wppr-review-option-rating <?php echo apply_filters( 'wppr_option_custom_icon', '' ); ?>">
115
+ <?php
116
+ $rating = round( $option['value'] / 10 );
117
+ $start_from = is_rtl() ? ( 11 - $rating ) : 1;
118
+ $stop_at = is_rtl() ? 10 : $rating;
119
+ for ( $i = 1; $i <= 10; $i ++ ) {
120
+ ?>
121
+ <li class="
122
+ <?php
123
+ echo $i >= $start_from && $i <= $stop_at ? $review_object->get_rating_class( $option['value'] ) : ' wppr-default';
124
+ ?>
125
+ ">
126
 
127
+ </li>
128
  <?php } ?>
129
  </ul>
130
  </div><!-- end .wppr-review-option -->
includes/public/layouts/widget/default.php CHANGED
@@ -44,6 +44,9 @@ foreach ( $results as $review ) :
44
 
45
  <?php
46
  $review_score = $review_object->get_rating();
 
 
 
47
  $review_class = $review_object->get_rating_class();
48
  if ( ! empty( $review_score ) ) {
49
  ?>
@@ -51,13 +54,13 @@ foreach ( $results as $review ) :
51
  <div class="review-wu-grade-content">
52
  <div class="wppr-c100
53
  <?php
54
- echo esc_attr( ' wppr-p' . round( $review_score ) ) . ' ' . esc_attr( $review_class );
55
  ?>
56
  ">
57
- <span><?php echo esc_html( round( $review_score, 0 ) / 10 ); ?></span>
58
  <div class="wppr-slice">
59
- <div class="wppr-bar"></div>
60
- <div class="wppr-fill"></div>
61
  </div>
62
  <div class="wppr-slice-center"></div>
63
  </div>
44
 
45
  <?php
46
  $review_score = $review_object->get_rating();
47
+ $rating = round( $review_score );
48
+ $rating_10 = round( $review_score, 0 ) / 10;
49
+
50
  $review_class = $review_object->get_rating_class();
51
  if ( ! empty( $review_score ) ) {
52
  ?>
54
  <div class="review-wu-grade-content">
55
  <div class="wppr-c100
56
  <?php
57
+ echo esc_attr( ' wppr-p' . $rating ) . ' ' . esc_attr( $review_class );
58
  ?>
59
  ">
60
+ <span><?php echo esc_html( $rating_10 ); ?></span>
61
  <div class="wppr-slice">
62
+ <div class="wppr-bar" style="<?php echo apply_filters( 'wppr_rating_circle_bar_styles', '', $rating ); ?>"></div>
63
+ <div class="wppr-fill" style="<?php echo apply_filters( 'wppr_rating_circle_fill_styles', '', $rating ); ?>"></div>
64
  </div>
65
  <div class="wppr-slice-center"></div>
66
  </div>
includes/public/layouts/widget/style 1.php CHANGED
@@ -57,11 +57,7 @@
57
  <div class="clear"></div>
58
  <?php
59
  } else {
60
- ?>
61
- <div class="wppr-rating">
62
- <div style="width:<?php echo $review_score; ?>%;"> <?php echo $review_score; ?></div>
63
- </div>
64
- <?php
65
  }
66
  }
67
  ?>
57
  <div class="clear"></div>
58
  <?php
59
  } else {
60
+ wppr_display_rating_stars( 'style1-widget', $review_object, false );
 
 
 
 
61
  }
62
  }
63
  ?>
package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "wp-product-review",
3
- "version": "3.4.5",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
@@ -228,7 +228,7 @@
228
  "dev": true,
229
  "requires": {
230
  "browserslist": "1.7.7",
231
- "caniuse-db": "1.0.30000856",
232
  "normalize-range": "0.1.2",
233
  "num2fraction": "1.2.2",
234
  "postcss": "5.2.18",
@@ -255,9 +255,9 @@
255
  "dev": true
256
  },
257
  "bcrypt-pbkdf": {
258
- "version": "1.0.1",
259
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
260
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
261
  "dev": true,
262
  "optional": true,
263
  "requires": {
@@ -411,8 +411,8 @@
411
  "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
412
  "dev": true,
413
  "requires": {
414
- "caniuse-db": "1.0.30000856",
415
- "electron-to-chromium": "1.3.48"
416
  }
417
  },
418
  "buffer-alloc": {
@@ -539,9 +539,9 @@
539
  }
540
  },
541
  "caniuse-db": {
542
- "version": "1.0.30000856",
543
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000856.tgz",
544
- "integrity": "sha1-++u5mr4VpWVPx3R+u1MVvf3jNY8=",
545
  "dev": true
546
  },
547
  "capture-stack-trace": {
@@ -1045,7 +1045,7 @@
1045
  "dev": true,
1046
  "optional": true,
1047
  "requires": {
1048
- "mimic-response": "1.0.0"
1049
  }
1050
  },
1051
  "decompress-tar": {
@@ -1175,7 +1175,7 @@
1175
  "strip-dirs": "1.1.1",
1176
  "through2": "2.0.3",
1177
  "vinyl": "1.2.0",
1178
- "yauzl": "2.9.2"
1179
  },
1180
  "dependencies": {
1181
  "through2": {
@@ -1351,9 +1351,9 @@
1351
  "dev": true
1352
  },
1353
  "electron-to-chromium": {
1354
- "version": "1.3.48",
1355
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
1356
- "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=",
1357
  "dev": true
1358
  },
1359
  "encoding": {
@@ -1391,9 +1391,9 @@
1391
  }
1392
  },
1393
  "error-ex": {
1394
- "version": "1.3.1",
1395
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
1396
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
1397
  "dev": true,
1398
  "requires": {
1399
  "is-arrayish": "0.2.1"
@@ -3553,9 +3553,9 @@
3553
  "dev": true
3554
  },
3555
  "hosted-git-info": {
3556
- "version": "2.6.0",
3557
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
3558
- "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
3559
  "dev": true
3560
  },
3561
  "htmlparser2": {
@@ -4037,9 +4037,9 @@
4037
  }
4038
  },
4039
  "js-base64": {
4040
- "version": "2.4.5",
4041
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
4042
- "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ==",
4043
  "dev": true
4044
  },
4045
  "js-yaml": {
@@ -4545,9 +4545,9 @@
4545
  }
4546
  },
4547
  "mimic-response": {
4548
- "version": "1.0.0",
4549
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz",
4550
- "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=",
4551
  "dev": true,
4552
  "optional": true
4553
  },
@@ -4653,9 +4653,9 @@
4653
  "optional": true
4654
  },
4655
  "node-abi": {
4656
- "version": "2.4.1",
4657
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.1.tgz",
4658
- "integrity": "sha512-pUlswqpHQ7zGPI9lGjZ4XDNIEUDbHxsltfIRb7dTnYdhgHWHOcB0MLZKLoCz6UMcGzSPG5wGl1HODZVQAUsH6w==",
4659
  "dev": true,
4660
  "optional": true,
4661
  "requires": {
@@ -4711,7 +4711,7 @@
4711
  "stringstream": "0.0.6",
4712
  "tough-cookie": "2.3.4",
4713
  "tunnel-agent": "0.6.0",
4714
- "uuid": "3.2.1"
4715
  }
4716
  },
4717
  "semver": {
@@ -4757,7 +4757,7 @@
4757
  "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
4758
  "dev": true,
4759
  "requires": {
4760
- "hosted-git-info": "2.6.0",
4761
  "is-builtin-module": "1.0.0",
4762
  "semver": "5.5.0",
4763
  "validate-npm-package-license": "3.0.3"
@@ -4932,7 +4932,7 @@
4932
  "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
4933
  "dev": true,
4934
  "requires": {
4935
- "error-ex": "1.3.1"
4936
  }
4937
  },
4938
  "parse-ms": {
@@ -5029,7 +5029,7 @@
5029
  "dev": true,
5030
  "requires": {
5031
  "chalk": "1.1.3",
5032
- "js-base64": "2.4.5",
5033
  "source-map": "0.5.7",
5034
  "supports-color": "3.2.3"
5035
  },
@@ -5096,14 +5096,14 @@
5096
  "github-from-package": "0.0.0",
5097
  "minimist": "1.2.0",
5098
  "mkdirp": "0.5.1",
5099
- "node-abi": "2.4.1",
5100
  "noop-logger": "0.1.1",
5101
  "npmlog": "4.1.2",
5102
  "os-homedir": "1.0.2",
5103
  "pump": "2.0.1",
5104
  "rc": "1.2.8",
5105
  "simple-get": "2.8.1",
5106
- "tar-fs": "1.16.2",
5107
  "tunnel-agent": "0.6.0",
5108
  "which-pm-runs": "1.0.0"
5109
  },
@@ -5366,7 +5366,7 @@
5366
  "safe-buffer": "5.1.2",
5367
  "tough-cookie": "2.3.4",
5368
  "tunnel-agent": "0.6.0",
5369
- "uuid": "3.2.1"
5370
  },
5371
  "dependencies": {
5372
  "ajv": {
@@ -5712,7 +5712,7 @@
5712
  "requires": {
5713
  "asn1": "0.2.3",
5714
  "assert-plus": "1.0.0",
5715
- "bcrypt-pbkdf": "1.0.1",
5716
  "dashdash": "1.14.1",
5717
  "ecc-jsbn": "0.1.1",
5718
  "getpass": "0.1.7",
@@ -5970,9 +5970,9 @@
5970
  }
5971
  },
5972
  "tar-fs": {
5973
- "version": "1.16.2",
5974
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.2.tgz",
5975
- "integrity": "sha512-LdknWjPEiZC1nOBwhv0JBzfJBGPJar08dZg2rwZe0ZTLQoRGEzgrl7vF3qUEkCHpI/wN9e7RyCuDhMsJUCLPPQ==",
5976
  "dev": true,
5977
  "optional": true,
5978
  "requires": {
@@ -6294,9 +6294,9 @@
6294
  "dev": true
6295
  },
6296
  "uuid": {
6297
- "version": "3.2.1",
6298
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
6299
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
6300
  "dev": true
6301
  },
6302
  "vali-date": {
@@ -6534,9 +6534,9 @@
6534
  "dev": true
6535
  },
6536
  "yauzl": {
6537
- "version": "2.9.2",
6538
- "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.9.2.tgz",
6539
- "integrity": "sha1-T7G8euH8L1cDe1SvasyP4QMcW3c=",
6540
  "dev": true,
6541
  "requires": {
6542
  "buffer-crc32": "0.2.13",
1
  {
2
  "name": "wp-product-review",
3
+ "version": "3.4.6",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
228
  "dev": true,
229
  "requires": {
230
  "browserslist": "1.7.7",
231
+ "caniuse-db": "1.0.30000865",
232
  "normalize-range": "0.1.2",
233
  "num2fraction": "1.2.2",
234
  "postcss": "5.2.18",
255
  "dev": true
256
  },
257
  "bcrypt-pbkdf": {
258
+ "version": "1.0.2",
259
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
260
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
261
  "dev": true,
262
  "optional": true,
263
  "requires": {
411
  "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
412
  "dev": true,
413
  "requires": {
414
+ "caniuse-db": "1.0.30000865",
415
+ "electron-to-chromium": "1.3.52"
416
  }
417
  },
418
  "buffer-alloc": {
539
  }
540
  },
541
  "caniuse-db": {
542
+ "version": "1.0.30000865",
543
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000865.tgz",
544
+ "integrity": "sha1-gv+2TUD3VnYgqsAtOmMgeWiavGs=",
545
  "dev": true
546
  },
547
  "capture-stack-trace": {
1045
  "dev": true,
1046
  "optional": true,
1047
  "requires": {
1048
+ "mimic-response": "1.0.1"
1049
  }
1050
  },
1051
  "decompress-tar": {
1175
  "strip-dirs": "1.1.1",
1176
  "through2": "2.0.3",
1177
  "vinyl": "1.2.0",
1178
+ "yauzl": "2.10.0"
1179
  },
1180
  "dependencies": {
1181
  "through2": {
1351
  "dev": true
1352
  },
1353
  "electron-to-chromium": {
1354
+ "version": "1.3.52",
1355
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.52.tgz",
1356
+ "integrity": "sha1-0tnxJwuko7lnuDHEDvcftNmrXOA=",
1357
  "dev": true
1358
  },
1359
  "encoding": {
1391
  }
1392
  },
1393
  "error-ex": {
1394
+ "version": "1.3.2",
1395
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1396
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1397
  "dev": true,
1398
  "requires": {
1399
  "is-arrayish": "0.2.1"
3553
  "dev": true
3554
  },
3555
  "hosted-git-info": {
3556
+ "version": "2.7.1",
3557
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
3558
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
3559
  "dev": true
3560
  },
3561
  "htmlparser2": {
4037
  }
4038
  },
4039
  "js-base64": {
4040
+ "version": "2.4.6",
4041
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.6.tgz",
4042
+ "integrity": "sha512-O9SR2NVICx6rCqh1qsU91QZ5IoNa+2T1ROJ0OQlfvATKGmnjsAvg3r0E5ufPZ4a95jdKTPXhFWiE/sOZ7a5Rtg==",
4043
  "dev": true
4044
  },
4045
  "js-yaml": {
4545
  }
4546
  },
4547
  "mimic-response": {
4548
+ "version": "1.0.1",
4549
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
4550
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
4551
  "dev": true,
4552
  "optional": true
4553
  },
4653
  "optional": true
4654
  },
4655
  "node-abi": {
4656
+ "version": "2.4.3",
4657
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.4.3.tgz",
4658
+ "integrity": "sha512-b656V5C0628gOOA2kwcpNA/bxdlqYF9FvxJ+qqVX0ctdXNVZpS8J6xEUYir3WAKc7U0BH/NRlSpNbGsy+azjeg==",
4659
  "dev": true,
4660
  "optional": true,
4661
  "requires": {
4711
  "stringstream": "0.0.6",
4712
  "tough-cookie": "2.3.4",
4713
  "tunnel-agent": "0.6.0",
4714
+ "uuid": "3.3.2"
4715
  }
4716
  },
4717
  "semver": {
4757
  "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
4758
  "dev": true,
4759
  "requires": {
4760
+ "hosted-git-info": "2.7.1",
4761
  "is-builtin-module": "1.0.0",
4762
  "semver": "5.5.0",
4763
  "validate-npm-package-license": "3.0.3"
4932
  "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
4933
  "dev": true,
4934
  "requires": {
4935
+ "error-ex": "1.3.2"
4936
  }
4937
  },
4938
  "parse-ms": {
5029
  "dev": true,
5030
  "requires": {
5031
  "chalk": "1.1.3",
5032
+ "js-base64": "2.4.6",
5033
  "source-map": "0.5.7",
5034
  "supports-color": "3.2.3"
5035
  },
5096
  "github-from-package": "0.0.0",
5097
  "minimist": "1.2.0",
5098
  "mkdirp": "0.5.1",
5099
+ "node-abi": "2.4.3",
5100
  "noop-logger": "0.1.1",
5101
  "npmlog": "4.1.2",
5102
  "os-homedir": "1.0.2",
5103
  "pump": "2.0.1",
5104
  "rc": "1.2.8",
5105
  "simple-get": "2.8.1",
5106
+ "tar-fs": "1.16.3",
5107
  "tunnel-agent": "0.6.0",
5108
  "which-pm-runs": "1.0.0"
5109
  },
5366
  "safe-buffer": "5.1.2",
5367
  "tough-cookie": "2.3.4",
5368
  "tunnel-agent": "0.6.0",
5369
+ "uuid": "3.3.2"
5370
  },
5371
  "dependencies": {
5372
  "ajv": {
5712
  "requires": {
5713
  "asn1": "0.2.3",
5714
  "assert-plus": "1.0.0",
5715
+ "bcrypt-pbkdf": "1.0.2",
5716
  "dashdash": "1.14.1",
5717
  "ecc-jsbn": "0.1.1",
5718
  "getpass": "0.1.7",
5970
  }
5971
  },
5972
  "tar-fs": {
5973
+ "version": "1.16.3",
5974
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
5975
+ "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
5976
  "dev": true,
5977
  "optional": true,
5978
  "requires": {
6294
  "dev": true
6295
  },
6296
  "uuid": {
6297
+ "version": "3.3.2",
6298
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
6299
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
6300
  "dev": true
6301
  },
6302
  "vali-date": {
6534
  "dev": true
6535
  },
6536
  "yauzl": {
6537
+ "version": "2.10.0",
6538
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
6539
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
6540
  "dev": true,
6541
  "requires": {
6542
  "buffer-crc32": "0.2.13",
readme.md CHANGED
@@ -67,6 +67,14 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  ## Changelog ##
 
 
 
 
 
 
 
 
70
  ### 3.4.5 - 2018-06-18 ###
71
 
72
  * Fixed problem with product price alignment on the first template
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  ## Changelog ##
70
+ ### 3.4.6 - 2018-07-12 ###
71
+
72
+ * Added RTL compatibility
73
+ * Allow overriding the Products Templates from the theme with a custom /wppr/ folder
74
+ * Fixed problem with missing alt texts
75
+ * Fixed problem with product image notice overlapping the featured image control
76
+
77
+
78
  ### 3.4.5 - 2018-06-18 ###
79
 
80
  * Fixed problem with product price alignment on the first template
readme.txt CHANGED
@@ -67,6 +67,14 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  == Changelog ==
 
 
 
 
 
 
 
 
70
  = 3.4.5 - 2018-06-18 =
71
 
72
  * Fixed problem with product price alignment on the first template
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  == Changelog ==
70
+ = 3.4.6 - 2018-07-12 =
71
+
72
+ * Added RTL compatibility
73
+ * Allow overriding the Products Templates from the theme with a custom /wppr/ folder
74
+ * Fixed problem with missing alt texts
75
+ * Fixed problem with product image notice overlapping the featured image control
76
+
77
+
78
  = 3.4.5 - 2018-06-18 =
79
 
80
  * Fixed problem with product price alignment on the first template
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"class-wppr-autoloader.php":"96be4219e0b4502f5698c5a8b084d108","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"10bc99aa6ebf37613dc34f0b68dc0340"}
1
+ {"class-wppr-autoloader.php":"96be4219e0b4502f5698c5a8b084d108","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"e92300d84b42177528e7d90c307731cf"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit6a37229a118b060fe716f2e6c407d12e::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit0a472b0cc09ccf3ef5e5ef72e22990b0::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit75de9c88e15e2b32e2d7e5a4b13417a2::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit90787c8ff60303a14d6974cecdf995a4::getLoader();
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-licenser.php CHANGED
@@ -579,6 +579,9 @@ if ( ! class_exists( 'ThemeIsle_SDK_Licenser' ) ) :
579
  set_transient( $this->product_key, $update_data, strtotime( '+12 hours' ) );
580
  }
581
  }
 
 
 
582
  if ( version_compare( $this->product->get_version(), $update_data->new_version, '>=' ) ) {
583
  return false;
584
  }
579
  set_transient( $this->product_key, $update_data, strtotime( '+12 hours' ) );
580
  }
581
  }
582
+ if ( ! isset( $update_data->new_version ) ) {
583
+ return false;
584
+ }
585
  if ( version_compare( $this->product->get_version(), $update_data->new_version, '>=' ) ) {
586
  return false;
587
  }
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -11,7 +11,7 @@
11
  */
12
 
13
  // Current SDK version and path.
14
- $themeisle_sdk_version = '2.2.5';
15
  $themeisle_sdk_path = dirname( __FILE__ );
16
 
17
  global $themeisle_sdk_max_version;
11
  */
12
 
13
  // Current SDK version and path.
14
+ $themeisle_sdk_version = '2.2.6';
15
  $themeisle_sdk_path = dirname( __FILE__ );
16
 
17
  global $themeisle_sdk_max_version;
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit6a37229a118b060fe716f2e6c407d12e
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit6a37229a118b060fe716f2e6c407d12e
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit6a37229a118b060fe716f2e6c407d12e', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit6a37229a118b060fe716f2e6c407d12e', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit6a37229a118b060fe716f2e6c407d12e
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire6a37229a118b060fe716f2e6c407d12e($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequire6a37229a118b060fe716f2e6c407d12e($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 ComposerAutoloaderInit0a472b0cc09ccf3ef5e5ef72e22990b0
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit0a472b0cc09ccf3ef5e5ef72e22990b0', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit0a472b0cc09ccf3ef5e5ef72e22990b0', '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
+ composerRequire0a472b0cc09ccf3ef5e5ef72e22990b0($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequire0a472b0cc09ccf3ef5e5ef72e22990b0($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 ComposerAutoloaderInit75de9c88e15e2b32e2d7e5a4b13417a2 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit75de9c88e15e2b32e2d7e5a4b13417a2 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit75de9c88e15e2b32e2d7e5a4b13417a2', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit75de9c88e15e2b32e2d7e5a4b13417a2', '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 ComposerAutoloaderInit90787c8ff60303a14d6974cecdf995a4 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit90787c8ff60303a14d6974cecdf995a4', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit90787c8ff60303a14d6974cecdf995a4', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -6,15 +6,15 @@
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
9
- "reference": "33d470402379047bc430c39ecab9a8a4a850d0d2"
10
  },
11
  "dist": {
12
  "type": "zip",
13
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/33d470402379047bc430c39ecab9a8a4a850d0d2",
14
- "reference": "33d470402379047bc430c39ecab9a8a4a850d0d2",
15
  "shasum": ""
16
  },
17
- "time": "2018-06-06 14:49:32",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
9
+ "reference": "56c6a769b08f0559e5085937e40409fb04b7a166"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/56c6a769b08f0559e5085937e40409fb04b7a166",
14
+ "reference": "56c6a769b08f0559e5085937e40409fb04b7a166",
15
  "shasum": ""
16
  },
17
+ "time": "2018-06-28 13:22:23",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
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.4.5
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
@@ -67,7 +67,7 @@ register_deactivation_hook( __FILE__, 'deactivate_wppr' );
67
  */
68
  function run_wppr() {
69
 
70
- define( 'WPPR_LITE_VERSION', '3.4.5' );
71
  define( 'WPPR_PATH', dirname( __FILE__ ) );
72
  define( 'WPPR_SLUG', 'wppr' );
73
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );
@@ -78,6 +78,7 @@ function run_wppr() {
78
  $plugin->run();
79
 
80
  require( 'includes/legacy.php' );
 
81
  $vendor_file = WPPR_PATH . '/vendor/autoload_52.php';
82
  if ( is_readable( $vendor_file ) ) {
83
  require_once $vendor_file;
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.4.6
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.4.6' );
71
  define( 'WPPR_PATH', dirname( __FILE__ ) );
72
  define( 'WPPR_SLUG', 'wppr' );
73
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );
78
  $plugin->run();
79
 
80
  require( 'includes/legacy.php' );
81
+ require( 'includes/functions.php' );
82
  $vendor_file = WPPR_PATH . '/vendor/autoload_52.php';
83
  if ( is_readable( $vendor_file ) ) {
84
  require_once $vendor_file;