From f1894af6c65a187e782a03087e451068a4f9f4d7 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 29 Aug 2011 11:38:01 +0100 Subject: [PATCH] recent reviews widget --- widgets/widget-recent_products.php | 2 +- widgets/widget-recent_reviews.php | 128 +++++++++++++++++++++++++++++ widgets/widgets-init.php | 2 + 3 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 widgets/widget-recent_reviews.php diff --git a/widgets/widget-recent_products.php b/widgets/widget-recent_products.php index 802998c7857..0ee4ae99b50 100644 --- a/widgets/widget-recent_products.php +++ b/widgets/widget-recent_products.php @@ -20,7 +20,7 @@ class WooCommerce_Widget_Recent_Products extends WP_Widget { /* Widget variable settings. */ $this->woo_widget_cssclass = 'widget_recent_products'; - $this->woo_widget_description = __( 'Display a list of your most recent products on your site..', 'woothemes' ); + $this->woo_widget_description = __( 'Display a list of your most recent products on your site.', 'woothemes' ); $this->woo_widget_idbase = 'woocommerce_recent_products'; $this->woo_widget_name = __('WooCommerce Recent Products', 'woothemes' ); diff --git a/widgets/widget-recent_reviews.php b/widgets/widget-recent_reviews.php new file mode 100644 index 00000000000..0c943dc11b4 --- /dev/null +++ b/widgets/widget-recent_reviews.php @@ -0,0 +1,128 @@ +woo_widget_cssclass = 'widget_recent_reviews'; + $this->woo_widget_description = __( 'Display a list of your most recent reviews on your site.', 'woothemes' ); + $this->woo_widget_idbase = 'woocommerce_recent_reviews'; + $this->woo_widget_name = __('WooCommerce Recent Reviews', 'woothemes' ); + + /* Widget settings. */ + $widget_ops = array( 'classname' => $this->woo_widget_cssclass, 'description' => $this->woo_widget_description ); + + /* Create the widget. */ + $this->WP_Widget('recent_reviews', $this->woo_widget_name, $widget_ops); + + add_action( 'save_post', array(&$this, 'flush_widget_cache') ); + add_action( 'deleted_post', array(&$this, 'flush_widget_cache') ); + add_action( 'switch_theme', array(&$this, 'flush_widget_cache') ); + } + + /** @see WP_Widget::widget */ + function widget( $args, $instance ) { + global $comments, $comment; + + /*$cache = wp_cache_get('widget_recent_reviews', 'widget'); + + if ( ! is_array( $cache ) ) + $cache = array(); + + if ( isset( $cache[$args['widget_id']] ) ) { + echo $cache[$args['widget_id']]; + return; + }*/ + + ob_start(); + extract($args); + + $title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Reviews', 'woothemes') : $instance['title'], $instance, $this->id_base); + if ( ! $number = absint( $instance['number'] ) ) $number = 5; + + $comments = get_comments( array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ); + + if ( $comments ) : + echo $before_widget; + if ( $title ) echo $before_title . $title . $after_title; + echo ''; + echo $after_widget; + endif; + + if (isset($args['widget_id']) && isset($cache[$args['widget_id']])) $cache[$args['widget_id']] = ob_get_flush(); + wp_cache_set('widget_recent_reviews', $cache, 'widget'); + } + + /** @see WP_Widget::update */ + function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['title'] = strip_tags($new_instance['title']); + $instance['number'] = (int) $new_instance['number']; + + $this->flush_widget_cache(); + + $alloptions = wp_cache_get( 'alloptions', 'options' ); + if ( isset($alloptions['widget_recent_reviews']) ) delete_option('widget_recent_reviews'); + + return $instance; + } + + function flush_widget_cache() { + wp_cache_delete('widget_recent_reviews', 'widget'); + } + + /** @see WP_Widget::form */ + function form( $instance ) { + $title = isset($instance['title']) ? esc_attr($instance['title']) : ''; + if ( !isset($instance['number']) || !$number = (int) $instance['number'] ) $number = 5; +?> +

+

+ +

+

+