PluginProbe ʕ •ᴥ•ʔ
Post Views Counter / 1.0.9
Post Views Counter v1.0.9
1.7.13 1.7.12 1.7.11 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.2 1.3.2.1 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.7.0 1.7.1 1.7.10 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.7.8 1.7.9
post-views-counter / includes / widgets.php
post-views-counter / includes Last commit date
columns.php 11 years ago counter.php 11 years ago cron.php 11 years ago frontend.php 11 years ago functions.php 11 years ago query.php 11 years ago settings.php 11 years ago update.php 11 years ago widgets.php 11 years ago
widgets.php
193 lines
1 <?php
2 if ( ! defined( 'ABSPATH' ) )
3 exit;
4
5 new Post_Views_Counter_Widgets();
6
7 class Post_Views_Counter_Widgets {
8
9 public function __construct() {
10 // actions
11 add_action( 'widgets_init', array( &$this, 'register_widgets' ) );
12 }
13
14 /**
15 * Register PVC widget
16 */
17 public function register_widgets() {
18 register_widget( 'Post_Views_Counter_List_Widget' );
19 }
20
21 }
22
23 class Post_Views_Counter_List_Widget extends WP_Widget {
24
25 private $pvc_options;
26 private $pvc_defaults;
27 private $pvc_post_types;
28 private $pvc_order_types;
29 private $pvc_image_sizes;
30
31 public function __construct() {
32 parent::__construct(
33 'Post_Views_Counter_List_Widget', __( 'Most Viewed Posts', 'post-views-counter' ), array(
34 'description' => __( 'Displays a list of the most viewed posts', 'post-views-counter' )
35 )
36 );
37
38 $this->pvc_options = array_merge(
39 array( 'general' => get_option( 'events_maker_general' ) )
40 );
41
42 $this->pvc_defaults = array(
43 'title' => __( 'Most Viewed Posts', 'post-views-counter' ),
44 'number_of_posts' => 5,
45 'thumbnail_size' => 'thumbnail',
46 'post_types' => array(),
47 'order' => 'desc',
48 'show_post_views' => true,
49 'show_post_thumbnail' => false,
50 'show_post_excerpt' => false,
51 'no_posts_message' => __( 'No Posts found', 'post-views-counter' )
52 );
53
54 $this->pvc_order_types = array(
55 'asc' => __( 'Ascending', 'post-views-counter' ),
56 'desc' => __( 'Descending', 'post-views-counter' )
57 );
58
59 $this->pvc_image_sizes = array_merge( array( 'full' ), get_intermediate_image_sizes() );
60
61 // sort image sizes by name, ascending
62 sort( $this->pvc_image_sizes, SORT_STRING );
63
64 add_action( 'wp_loaded', array( &$this, 'load_post_types' ) );
65 }
66
67 /**
68 * Get selected post types
69 */
70 public function load_post_types() {
71 $this->pvc_post_types = Post_Views_Counter()->get_instance( 'settings' )->post_types;
72 }
73
74 /**
75 * Display widget function
76 */
77 public function widget( $args, $instance ) {
78 $instance['title'] = apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base );
79
80 $html = $args['before_widget'] . ( ! empty( $instance['title'] ) ? $args['before_title'] . $instance['title'] . $args['after_title'] : '');
81 $html .= pvc_most_viewed_posts( $instance, false );
82 $html .= $args['after_widget'];
83
84 echo $html;
85 }
86
87 /**
88 * Admin widget function
89 */
90 public function form( $instance ) {
91 $html = '
92 <p>
93 <label for="' . $this->get_field_id( 'title' ) . '">' . __( 'Title', 'post-views-counter' ) . ':</label>
94 <input id="' . $this->get_field_id( 'title' ) . '" class="widefat" name="' . $this->get_field_name( 'title' ) . '" type="text" value="' . esc_attr( isset( $instance['title'] ) ? $instance['title'] : $this->pvc_defaults['title'] ) . '" />
95 </p>
96 <p>
97 <label>' . __( 'Post Types', 'post-views-counter' ) . ':</label><br />';
98
99 foreach ( $this->pvc_post_types as $post_type => $post_type_name ) {
100 $html .= '
101 <input id="' . $this->get_field_id( 'post_types' ) . '-' . $post_type . '" type="checkbox" name="' . $this->get_field_name( 'post_types' ) . '[]" value="' . $post_type . '" ' . checked( ( ! isset( $instance['post_types'] ) ? true : in_array( $post_type, $instance['post_types'], true ) ), true, false ) . '><label for="' . $this->get_field_id( 'post_types' ) . '-' . $post_type . '">' . esc_html( $post_type_name ) . '</label>';
102 }
103
104 $show_post_thumbnail = (isset( $instance['show_post_thumbnail'] ) ? $instance['show_post_thumbnail'] : $this->pvc_defaults['show_post_thumbnail']);
105
106 $html .= '
107 </select>
108 </p>
109 <p>
110 <label for="' . $this->get_field_id( 'number_of_posts' ) . '">' . __( 'Number of posts to show', 'post-views-counter' ) . ':</label>
111 <input id="' . $this->get_field_id( 'number_of_posts' ) . '" name="' . $this->get_field_name( 'number_of_posts' ) . '" type="text" size="3" value="' . esc_attr( isset( $instance['number_of_posts'] ) ? $instance['number_of_posts'] : $this->pvc_defaults['number_of_posts'] ) . '" />
112 </p>
113 <p>
114 <label for="' . $this->get_field_id( 'no_posts_message' ) . '">' . __( 'No posts message', 'post-views-counter' ) . ':</label>
115 <input id="' . $this->get_field_id( 'no_posts_message' ) . '" class="widefat" type="text" name="' . $this->get_field_name( 'no_posts_message' ) . '" value="' . esc_attr( isset( $instance['no_posts_message'] ) ? $instance['no_posts_message'] : $this->pvc_defaults['no_posts_message'] ) . '" />
116 </p>
117 <p>
118 <label for="' . $this->get_field_id( 'order' ) . '">' . __( 'Order', 'post-views-counter' ) . ':</label>
119 <select id="' . $this->get_field_id( 'order' ) . '" name="' . $this->get_field_name( 'order' ) . '">';
120
121 foreach ( $this->pvc_order_types as $id => $order ) {
122 $html .= '
123 <option value="' . esc_attr( $id ) . '" ' . selected( $id, (isset( $instance['order'] ) ? $instance['order'] : $this->pvc_defaults['order'] ), false ) . '>' . $order . '</option>';
124 }
125
126 $html .= '
127 </select>
128 </p>
129 <p>
130 <input id="' . $this->get_field_id( 'show_post_views' ) . '" type="checkbox" name="' . $this->get_field_name( 'show_post_views' ) . '" ' . checked( true, (isset( $instance['show_post_views'] ) ? $instance['show_post_views'] : $this->pvc_defaults['show_post_views'] ), false ) . ' /> <label for="' . $this->get_field_id( 'show_post_views' ) . '">' . __( 'Display post views?', 'post-views-counter' ) . '</label>
131 <br />
132 <input id="' . $this->get_field_id( 'show_post_excerpt' ) . '" type="checkbox" name="' . $this->get_field_name( 'show_post_excerpt' ) . '" ' . checked( true, (isset( $instance['show_post_excerpt'] ) ? $instance['show_post_excerpt'] : $this->pvc_defaults['show_post_excerpt'] ), false ) . ' /> <label for="' . $this->get_field_id( 'show_post_excerpt' ) . '">' . __( 'Display post excerpt?', 'post-views-counter' ) . '</label>
133 <br />
134 <input id="' . $this->get_field_id( 'show_post_thumbnail' ) . '" class="em-show-event-thumbnail" type="checkbox" name="' . $this->get_field_name( 'show_post_thumbnail' ) . '" ' . checked( true, $show_post_thumbnail, false ) . ' /> <label for="' . $this->get_field_id( 'show_post_thumbnail' ) . '">' . __( 'Display post thumbnail?', 'post-views-counter' ) . '</label>
135 </p>
136 <p class="em-event-thumbnail-size"' . ($show_post_thumbnail ? '' : ' style="display: none;"') . '>
137 <label for="' . $this->get_field_id( 'thumbnail_size' ) . '">' . __( 'Thumbnail size', 'post-views-counter' ) . ':</label>
138 <select id="' . $this->get_field_id( 'thumbnail_size' ) . '" name="' . $this->get_field_name( 'thumbnail_size' ) . '">';
139
140 $size_type = (isset( $instance['thumbnail_size'] ) ? $instance['thumbnail_size'] : $this->pvc_defaults['thumbnail_size']);
141
142 foreach ( $this->pvc_image_sizes as $size ) {
143 $html .= '
144 <option value="' . esc_attr( $size ) . '" ' . selected( $size, $size_type, false ) . '>' . $size . '</option>';
145 }
146
147 $html .= '
148 </select>
149 </p>';
150
151 echo $html;
152 }
153
154 /**
155 * Save widget function
156 */
157 public function update( $new_instance, $old_instance ) {
158 // number of posts
159 $old_instance['number_of_posts'] = (int) (isset( $new_instance['number_of_posts'] ) ? $new_instance['number_of_posts'] : $this->pvc_defaults['number_of_posts']);
160
161 // order
162 $old_instance['order'] = (isset( $new_instance['order'] ) && in_array( $new_instance['order'], array_keys( $this->pvc_order_types ), true ) ? $new_instance['order'] : $this->pvc_defaults['order']);
163
164 // thumbnail size
165 $old_instance['thumbnail_size'] = (isset( $new_instance['thumbnail_size'] ) && in_array( $new_instance['thumbnail_size'], $this->pvc_image_sizes, true ) ? $new_instance['thumbnail_size'] : $this->pvc_defaults['thumbnail_size']);
166
167 // booleans
168 $old_instance['show_post_views'] = (isset( $new_instance['show_post_views'] ) ? true : false);
169 $old_instance['show_post_thumbnail'] = (isset( $new_instance['show_post_thumbnail'] ) ? true : false);
170 $old_instance['show_post_excerpt'] = (isset( $new_instance['show_post_excerpt'] ) ? true : false);
171
172 // texts
173 $old_instance['title'] = sanitize_text_field( isset( $new_instance['title'] ) ? $new_instance['title'] : $this->pvc_defaults['title'] );
174 $old_instance['no_posts_message'] = sanitize_text_field( isset( $new_instance['no_posts_message'] ) ? $new_instance['no_posts_message'] : $this->pvc_defaults['no_posts_message'] );
175
176 // post types
177 if ( isset( $new_instance['post_types'] ) ) {
178 $post_types = array();
179
180 foreach ( $new_instance['post_types'] as $post_type ) {
181 if ( isset( $this->pvc_post_types[$post_type] ) )
182 $post_types[] = $post_type;
183 }
184
185 $old_instance['post_types'] = array_unique( $post_types );
186 } else
187 $old_instance['post_types'] = array( 'post' );
188
189 return $old_instance;
190 }
191
192 }
193