Yasr – Yet Another Stars Rating - Version 1.3.5

Version Description

  • TWEAKED: READ CAREFULLY: this is the first step of an important yasr database change: the main goal is to switch from yasr_votes table to wordpress default post_meta. A database backup is strongly suggested.
  • NEW FEATURE: new widget that shows the last 5 recent ratings.
Download this release

Release Info

Developer Dudo
Plugin Icon 128x128 Yasr – Yet Another Stars Rating
Version 1.3.5
Comparing to
See all releases

Code changes from version 1.3.4 to 1.3.5

css/yasr.css CHANGED
@@ -203,6 +203,29 @@ div.bigstars .rateit-selected
203
  text-align: center;
204
  }
205
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
206
  /*** Progress bar, this class are used in
207
  yasr_pro_comment_reviews_stats shortcode too***/
208
 
203
  text-align: center;
204
  }
205
 
206
+
207
+
208
+ /*** Widgets ***/
209
+
210
+ .yasr-widget-recent-ratings-table {
211
+
212
+ border: none;
213
+
214
+ }
215
+
216
+ .yasr-widget-recent-ratings-td {
217
+
218
+ border: none;
219
+
220
+ }
221
+
222
+ .yasr-widget-recent-ratings-text {
223
+
224
+ font-weight: bold;
225
+
226
+ }
227
+
228
+
229
  /*** Progress bar, this class are used in
230
  yasr_pro_comment_reviews_stats shortcode too***/
231
 
lib/yasr-ajax-functions.php CHANGED
@@ -49,57 +49,31 @@ if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // E
49
  die( 'Security check' );
50
  }
51
 
 
 
 
52
  if ($rating > 5) {
53
 
54
  $rating = 5;
55
 
56
  }
57
 
 
58
  do_action('yasr_action_on_overall_rating', $post_id, $rating);
59
 
60
- global $wpdb;
61
 
62
- //If update works means that visitor already rated this post
63
- $update_result=$wpdb->update(
64
- YASR_VOTES_TABLE,
65
- array (
66
- 'overall_rating' => $rating,
67
- ),
68
- array('post_id' => $post_id),
69
- array('%s', '%d')
70
- );
71
 
72
- //If update result fails this is a new post or post has no visitor ratings
73
- if(!$update_result) {
74
 
75
- $replace_result=$wpdb->replace(
76
- YASR_VOTES_TABLE,
77
- array (
78
- 'post_id' => $post_id,
79
- 'overall_rating' => $rating,
80
- 'review_type' => YASR_ITEMTYPE //default review type in a new post
81
- ),
82
- array('%d', '%s', '%s')
83
- );
84
 
85
- $snippet_type = yasr_get_snippet_type();
86
-
87
- //If there is not sinppet type, can happen when an user choose the snippet but doesn't use overall rating
88
- if (!$snippet_type) {
89
-
90
- $wpdb->replace(
91
- YASR_VOTES_TABLE,
92
- array (
93
- 'review_type' => YASR_ITEMTYPE //default review type in a new post
94
- ),
95
- array('%s')
96
- );
97
-
98
- }
99
-
100
- } // End if(!$update_result)
101
-
102
- if ($update_result || $replace_result) {
103
 
104
  $transient_name = 'yasr_overall_rating_' . $post_id;
105
 
@@ -116,7 +90,8 @@ if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // E
116
 
117
  }
118
 
119
- die(); // this is required to return a proper result
 
120
  }
121
 
122
 
@@ -142,6 +117,12 @@ if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // E
142
  wp_die( __( 'You do not have sufficient permissions to access this page.', 'yet-another-stars-rating' ) );
143
  }
144
 
 
 
 
 
 
 
145
  if ($reviewtype === "1") {
146
 
147
  $reviewtype = 'Product';
@@ -166,43 +147,19 @@ if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // E
166
 
167
  }
168
 
169
- if ( ! wp_verify_nonce( $nonce, 'yasr_nonce_review_type' ) ) {
170
- die( 'Security check' );
171
- }
172
-
173
- global $wpdb;
174
 
175
- //If update works means that there is already a row for this post
176
- $review_type = $wpdb->update(
177
- YASR_VOTES_TABLE,
178
- array (
179
- 'review_type' => $reviewtype //data
180
- ),
181
- array('post_id' => $post_id), //where
182
- array('%s'),
183
- array('%d')
184
- );
185
 
186
- //if fail there is no row so make new one
187
- if($review_type === 0) {
188
 
189
- $review_type = $wpdb->replace(
190
- YASR_VOTES_TABLE,
191
- array (
192
- 'post_id' => $post_id,
193
- 'review_type' => $reviewtype
194
- ),
195
- array('%d', '%s')
196
- );
197
 
198
- }
199
 
200
  if($review_type) {
201
  _e("Type Saved", "yet-another-stars-rating");
202
  }
203
- else {
204
- _e("There was an error while trying to insert the review type. Please report it", "yet-another-stars-rating");
205
- }
206
 
207
  die();
208
 
49
  die( 'Security check' );
50
  }
51
 
52
+ $post_id = (int)$post_id;
53
+ $rating = (float)$rating;
54
+
55
  if ($rating > 5) {
56
 
57
  $rating = 5;
58
 
59
  }
60
 
61
+ //Put an action to hook into
62
  do_action('yasr_action_on_overall_rating', $post_id, $rating);
63
 
64
+ $update_result = update_post_meta($post_id, 'yasr_overall_rating', $rating );
65
 
66
+ //if update_post_meta returns an integer means this is a new post
67
+ //so we're going to insert the default YASR_ITEMTYPE
68
+ if (is_int($update_result)) {
 
 
 
 
 
 
69
 
70
+ add_post_meta($post_id, 'yasr_review_type', YASR_ITEMTYPE);
 
71
 
72
+ }
 
 
 
 
 
 
 
 
73
 
74
+ //this will not work on error or
75
+ //if the value is the same in the db
76
+ if ($update_result) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  $transient_name = 'yasr_overall_rating_' . $post_id;
79
 
90
 
91
  }
92
 
93
+ die(); // this is required to return a proper result
94
+
95
  }
96
 
97
 
117
  wp_die( __( 'You do not have sufficient permissions to access this page.', 'yet-another-stars-rating' ) );
118
  }
119
 
120
+ if ( ! wp_verify_nonce( $nonce, 'yasr_nonce_review_type' ) ) {
121
+ die( 'Security check' );
122
+ }
123
+
124
+ $post_id = (int)$post_id;
125
+
126
  if ($reviewtype === "1") {
127
 
128
  $reviewtype = 'Product';
147
 
148
  }
149
 
150
+ else {
 
 
 
 
151
 
152
+ die();
 
 
 
 
 
 
 
 
 
153
 
154
+ }
 
155
 
156
+ global $wpdb;
 
 
 
 
 
 
 
157
 
158
+ $review_type = update_post_meta($post_id, 'yasr_review_type', $reviewtype);
159
 
160
  if($review_type) {
161
  _e("Type Saved", "yet-another-stars-rating");
162
  }
 
 
 
163
 
164
  die();
165
 
lib/yasr-db-functions.php CHANGED
@@ -156,6 +156,8 @@ function yasr_get_overall_rating($post_id=FALSE, $create_transient=TRUE) {
156
 
157
  }
158
 
 
 
159
  $overall_rating = FALSE;
160
 
161
  $transient_name = 'yasr_overall_rating_' . $post_id;
@@ -172,7 +174,7 @@ function yasr_get_overall_rating($post_id=FALSE, $create_transient=TRUE) {
172
  //get value from db
173
  else {
174
 
175
- $overall_rating=$wpdb->get_var($wpdb->prepare("SELECT overall_rating FROM " . YASR_VOTES_TABLE . " WHERE post_id=%d", $post_id));
176
 
177
  }
178
 
@@ -204,12 +206,11 @@ function yasr_get_snippet_type() {
204
 
205
  else {
206
 
207
- $result=$wpdb->get_results($wpdb->prepare("SELECT review_type FROM " . YASR_VOTES_TABLE . " WHERE post_id=%d", $post_id));
208
 
209
  if($result) {
210
- foreach ($result as $snippet) {
211
- $snippet_type = trim($snippet->review_type);
212
- }
213
 
214
  if ($snippet_type != 'Product' && $snippet_type != 'Place' && $snippet_type != 'Recipe' && $snippet_type != 'Other') {
215
 
@@ -564,7 +565,6 @@ add_action( 'plugins_loaded', 'add_action_dashboard_widget_log' );
564
 
565
  function yasr_users_dashboard_widget_callback () {
566
 
567
-
568
  $limit = 8; //max number of row to echo
569
 
570
  //Get current user id: don't need to check if is >0 cause user is logged in here
156
 
157
  }
158
 
159
+ $post_id = (int)$post_id;
160
+
161
  $overall_rating = FALSE;
162
 
163
  $transient_name = 'yasr_overall_rating_' . $post_id;
174
  //get value from db
175
  else {
176
 
177
+ $overall_rating = get_post_meta($post_id, 'yasr_overall_rating', TRUE);
178
 
179
  }
180
 
206
 
207
  else {
208
 
209
+ $result = get_post_meta($post_id, 'yasr_review_type', TRUE);
210
 
211
  if($result) {
212
+
213
+ $snippet_type = trim($result);
 
214
 
215
  if ($snippet_type != 'Product' && $snippet_type != 'Place' && $snippet_type != 'Recipe' && $snippet_type != 'Other') {
216
 
565
 
566
  function yasr_users_dashboard_widget_callback () {
567
 
 
568
  $limit = 8; //max number of row to echo
569
 
570
  //Get current user id: don't need to check if is >0 cause user is logged in here
lib/yasr-widgets.php CHANGED
@@ -186,10 +186,12 @@ class Yasr_Overall_Rating_Widget extends WP_Widget {
186
  } // class Yasr Overall Rating widget
187
 
188
 
 
 
189
 
190
  add_action( 'widgets_init', 'yasr_visitor_votes_widget' );
191
 
192
- // register Yasr Overall Rating widget
193
  function yasr_visitor_votes_widget() {
194
  register_widget( 'Yasr_Visitor_Votes_Widget' );
195
  }
@@ -378,7 +380,173 @@ class Yasr_Visitor_Votes_Widget extends WP_Widget {
378
  return $instance;
379
  }
380
 
381
- } // class Yasr Overall Rating widget
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
 
 
383
 
384
  ?>
186
  } // class Yasr Overall Rating widget
187
 
188
 
189
+ ////////////////////////////////////////////////////////
190
+
191
 
192
  add_action( 'widgets_init', 'yasr_visitor_votes_widget' );
193
 
194
+ // register Yasr Visitor Votes widget
195
  function yasr_visitor_votes_widget() {
196
  register_widget( 'Yasr_Visitor_Votes_Widget' );
197
  }
380
  return $instance;
381
  }
382
 
383
+ } // class Yasr Visitor Votes widget
384
+
385
+
386
+ /////////////////////////////////////////////////////////
387
+
388
+
389
+
390
+ add_action( 'widgets_init', 'yasr_recent_ratings_widget' );
391
+
392
+ // register recent ratings widget
393
+ function yasr_recent_ratings_widget() {
394
+ register_widget( 'Yasr_Recent_Ratings_Widget' );
395
+ }
396
+
397
+ class Yasr_Recent_Ratings_Widget extends WP_Widget {
398
+
399
+ /**
400
+ * Register widget with WordPress.
401
+ */
402
+ function __construct() {
403
+
404
+ parent::__construct(
405
+ 'yasr_recent_ratings_widget', // Base ID
406
+ __( 'Yasr Recent Ratings', 'yet-another-stars-rating' ), // Name
407
+ array(
408
+ 'description' => __( 'Show the 5 most recent rated posts', 'yet-another-stars-rating' ),
409
+ 'readonly' => 'no',
410
+ 'size' => 'large'
411
+ ) // Args
412
+ );
413
+
414
+ }
415
+
416
+ /**
417
+ * Front-end display of widget.
418
+ *
419
+ * @see WP_Widget::widget()
420
+ *
421
+ * @param array $args Widget arguments.
422
+ * @param array $instance Saved values from database.
423
+ */
424
+
425
+ public function widget( $args, $instance ) {
426
+
427
+ echo $args['before_widget'];
428
+
429
+ if ( ! empty( $instance['title'] ) ) {
430
+ echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
431
+ }
432
+
433
+ global $wpdb;
434
+
435
+ $log_result = $wpdb->get_results ("SELECT post_id, vote, user_id FROM ". YASR_LOG_TABLE . " ORDER BY date DESC LIMIT 5");
436
+
437
+ if ($log_result) {
438
+
439
+
440
+ $widget_recent_ratings = "<table class=\"yasr-widget-recent-ratings-table\">";
441
+
442
+ foreach ($log_result as $result) {
443
+
444
+ $user = get_user_by( 'id', $result->user_id );
445
+
446
+ //If ! user means that the vote are anonymous
447
+ if ($user == FALSE) {
448
+
449
+ $user = (object) array('user_login');
450
+ $user->user_login = __('anonymous');
451
+
452
+ }
453
+
454
+ $title_post = get_the_title( $result->post_id );
455
+ $link = get_permalink( $result->post_id );
456
+ $vote = round ($result->vote);
457
+
458
+ $widget_recent_ratings .= "<tr>
459
+ <td width=\"40%\" class=\"yasr-widget-recent-ratings-td\">";
460
+
461
+ $widget_recent_ratings .= sprintf(__('Vote %s from %s on %s', 'yet-another-stars-rating'), '<span class="yasr-widget-recent-ratings-text">'. $vote . '</span>', '<span class="yasr-widget-recent-ratings-text">' . $user->user_login . '</span>', '<span class="yasr-widget-recent-ratings-text">' . $title_post . '</span>' );
462
+
463
+ $widget_recent_ratings .= "</td>
464
+ </tr>";
465
+
466
+
467
+ } //End foreach
468
+
469
+ $widget_recent_ratings .= "</table>";
470
+
471
+ }
472
+
473
+
474
+ echo $widget_recent_ratings;
475
+
476
+ echo $args['after_widget'];
477
+
478
+ }
479
+
480
+
481
+ /**
482
+ * Back-end widget form.
483
+ *
484
+ * @see WP_Widget::form()
485
+ *
486
+ * @param array $instance Previously saved values from database.
487
+ */
488
+
489
+ public function form( $instance ) {
490
+
491
+ if (!empty($instance['title'])) {
492
+
493
+ $title = $instance['title'];
494
+
495
+ }
496
+
497
+ else {
498
+
499
+ $title = __( 'Recent Ratings', 'yet-another-stars-rating' );
500
+
501
+ }
502
+
503
+ ?>
504
+
505
+ <p>
506
+ <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
507
+ <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
508
+ </p>
509
+
510
+ <?php
511
+
512
+ }
513
+
514
+ /**
515
+ * Sanitize widget form values as they are saved.
516
+ *
517
+ * @see WP_Widget::update()
518
+ *
519
+ * @param array $new_instance Values just sent to be saved.
520
+ * @param array $old_instance Previously saved values from database.
521
+ *
522
+ * @return array Updated safe values to be saved.
523
+ */
524
+ public function update( $new_instance, $old_instance ) {
525
+
526
+ $instance = $old_instance;
527
+
528
+ if (!$instance) {
529
+
530
+ $instance = array();
531
+
532
+ }
533
+
534
+ if (!empty($new_instance['title'])) {
535
+
536
+ $instance['title'] = strip_tags($new_instance['title']);
537
+
538
+ }
539
+
540
+ else {
541
+
542
+ $instance['title'] = '';
543
+
544
+ }
545
+
546
+
547
+ return $instance;
548
+ }
549
 
550
+ } // class Yasr Visitor Votes widget
551
 
552
  ?>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: 5 star, admin, administrator, AJAX, five-star, javascript, jquery, post r
4
  Requires at least: 4.3.0
5
  Contributors: Dudo
6
  Tested up to: 4.6
7
- Stable tag: 1.3.4
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  Yet Another Stars Rating is a simple plugin which allows you and / or your visitor to rate a post or element. Ideal for review's website
@@ -113,6 +113,11 @@ Of course not: you can easily add it on the visual editor just by clicking the "
113
 
114
  The full changelog can be found in the plugin's directory. Recent entries:
115
 
 
 
 
 
 
116
  = 1.3.4 =
117
  * TWEAKED: minor changes
118
 
4
  Requires at least: 4.3.0
5
  Contributors: Dudo
6
  Tested up to: 4.6
7
+ Stable tag: 1.3.5
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
10
  Yet Another Stars Rating is a simple plugin which allows you and / or your visitor to rate a post or element. Ideal for review's website
113
 
114
  The full changelog can be found in the plugin's directory. Recent entries:
115
 
116
+ = 1.3.5 =
117
+ * TWEAKED: READ CAREFULLY: this is the first step of an important yasr database change: the main goal is to switch from yasr_votes table to wordpress default post_meta.
118
+ A database backup is strongly suggested.
119
+ * NEW FEATURE: new widget that shows the last 5 recent ratings.
120
+
121
  = 1.3.4 =
122
  * TWEAKED: minor changes
123
 
yet-another-stars-rating.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Yet Another Stars Rating
4
  * Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
5
  * Description: Yet Another Stars Rating turn your WordPress into a complete review website.
6
- * Version: 1.3.4
7
  * Author: Dario Curvino
8
  * Author URI: https://yetanotherstarsrating.com/
9
  * Text Domain: yet-another-stars-rating
@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
31
 
32
  if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // Exit if accessed directly
33
 
34
- define('YASR_VERSION_NUM', '1.3.4');
35
 
36
  //Plugin relative path
37
  define( "YASR_ABSOLUTE_PATH", dirname(__FILE__) );
@@ -225,7 +225,6 @@ require (YASR_ABSOLUTE_PATH . '/lib/yasr-shortcode-functions.php');
225
 
226
  require (YASR_ABSOLUTE_PATH . '/lib/yasr-widgets.php');
227
 
228
-
229
  global $wpdb;
230
 
231
  define ("YASR_VOTES_TABLE", $wpdb->prefix . 'yasr_votes');
@@ -281,6 +280,39 @@ function yasr_update_version() {
281
  global $yasr_stored_options;
282
 
283
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
284
  //Remove end Sept 2016
285
  if ($yasr_version_installed && $yasr_version_installed < '1.2.2') {
286
 
3
  * Plugin Name: Yet Another Stars Rating
4
  * Plugin URI: http://wordpress.org/plugins/yet-another-stars-rating/
5
  * Description: Yet Another Stars Rating turn your WordPress into a complete review website.
6
+ * Version: 1.3.5
7
  * Author: Dario Curvino
8
  * Author URI: https://yetanotherstarsrating.com/
9
  * Text Domain: yet-another-stars-rating
31
 
32
  if ( ! defined( 'ABSPATH' ) ) exit('You\'re not allowed to see this page'); // Exit if accessed directly
33
 
34
+ define('YASR_VERSION_NUM', '1.3.5');
35
 
36
  //Plugin relative path
37
  define( "YASR_ABSOLUTE_PATH", dirname(__FILE__) );
225
 
226
  require (YASR_ABSOLUTE_PATH . '/lib/yasr-widgets.php');
227
 
 
228
  global $wpdb;
229
 
230
  define ("YASR_VOTES_TABLE", $wpdb->prefix . 'yasr_votes');
280
  global $yasr_stored_options;
281
 
282
 
283
+ //Remove end March 2017
284
+ //This is a very important update: yasr_votes table will not be used anymore, using post meta instead
285
+ //
286
+
287
+ if ($yasr_version_installed && $yasr_version_installed < '1.3.5') {
288
+
289
+ $overall_rating_array=$wpdb->get_results("SELECT post_id, overall_rating, review_type
290
+ FROM " . YASR_VOTES_TABLE ."
291
+ WHERE overall_rating >0
292
+ OR review_type IS NOT NULL
293
+ ORDER BY post_id ASC");
294
+
295
+ foreach ($overall_rating_array as $rating) {
296
+
297
+ //add post meta only if overall rating is > 0
298
+ if($rating->overall_rating > 0) {
299
+
300
+ add_post_meta($rating->post_id, 'yasr_overall_rating', $rating->overall_rating, TRUE);
301
+
302
+ }
303
+
304
+ //add review type only if is not empty
305
+ if($rating->review_type != '') {
306
+
307
+ add_post_meta($rating->post_id, 'yasr_review_type', $rating->review_type, TRUE);
308
+
309
+ }
310
+
311
+ }
312
+
313
+ }
314
+
315
+
316
  //Remove end Sept 2016
317
  if ($yasr_version_installed && $yasr_version_installed < '1.2.2') {
318