SHOW:
|
|
- or go back to the newest paste.
1 | <?php /* | |
2 | - | Plugin Name: Related Posts Thumbnails |
2 | + | Plugin Name: Related Posts Thumbnails B (copy) |
3 | Plugin URI: http://wordpress.shaldybina.com/plugins/related-posts-thumbnails/ | |
4 | Description: Showing related posts thumbnails under the post. | |
5 | Version: 1.3.1 | |
6 | Author: Maria Shaldybina | |
7 | Author URI: http://shaldybina.com/ | |
8 | */ | |
9 | /* Copyright 2010 Maria I Shaldybina | |
10 | ||
11 | This program is free software; you can redistribute it and/or modify | |
12 | it under the terms of the GNU General Public License as published by | |
13 | the Free Software Foundation; either version 2 of the License, or | |
14 | (at your option) any later version. | |
15 | ||
16 | This program is distributed in the hope that it will be useful, | |
17 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 | GNU General Public License for more details. | |
20 | */ | |
21 | - | class RelatedPostsThumbnails { |
21 | + | class RelatedPostsThumbnailsB { |
22 | /* Default values. PHP 4 compatible */ | |
23 | var $single_only = '1'; | |
24 | var $auto = '1'; | |
25 | var $top_text = '<h3>Related posts:</h3>'; | |
26 | var $number = 3; | |
27 | var $relation = 'categories'; | |
28 | var $poststhname = 'thumbnail'; | |
29 | var $background = '#FFFFFF'; | |
30 | var $hoverbackground = '#EEEEEF'; | |
31 | var $border_color = '#DDDDDD'; | |
32 | var $font_color = '#333333'; | |
33 | var $font_family = 'Arial'; | |
34 | var $font_size = '12'; | |
35 | var $text_length = '100'; | |
36 | var $excerpt_length = '0'; | |
37 | var $custom_field = ''; | |
38 | var $custom_height = '100'; | |
39 | var $custom_width = '100'; | |
40 | var $text_block_height = '75'; | |
41 | var $thsource = 'post-thumbnails'; | |
42 | var $categories_all = '1'; | |
43 | var $devmode = '0'; | |
44 | var $output_style = 'div'; | |
45 | var $post_types = array('post'); | |
46 | var $custom_taxonomies = array(); | |
47 | ||
48 | - | function RelatedPostsThumbnails() { // initialization |
48 | + | function RelatedPostsThumbnailsB() { // initialization |
49 | load_plugin_textdomain( 'related-posts-thumbnails', false, basename( dirname( __FILE__ ) ) . '/locale' ); | |
50 | $this->default_image = WP_PLUGIN_URL . '/related-posts-thumbnails/img/default.png'; | |
51 | if ( get_option( 'relpoststhb_auto', $this->auto ) ) | |
52 | add_filter( 'the_content', array( $this, 'auto_show' ) ); | |
53 | add_action( 'admin_menu', array( $this, 'admin_menu' ) ); | |
54 | add_shortcode( 'related-posts-thumbnails' , array( $this, 'get_html' ) ); | |
55 | $this->wp_version = get_bloginfo('version'); | |
56 | } | |
57 | ||
58 | function auto_show( $content ) { // Automatically displaying related posts under post body | |
59 | return $content . $this->get_html( true ); | |
60 | } | |
61 | ||
62 | function get_html( $show_top = false ) { // Getting related posts HTML | |
63 | if ( $this->is_relpoststhb_show() ) | |
64 | return $this->get_thumbnails( $show_top ); | |
65 | return ''; | |
66 | } | |
67 | ||
68 | function get_thumbnails( $show_top = false ) { // Retrieve Related Posts HTML for output | |
69 | $output = ''; | |
70 | $debug = 'Developer mode initialisation; Version: 1.2.9;'; | |
71 | $time = microtime(true); | |
72 | $posts_number = get_option( 'relpoststhb_number', $this->number ); | |
73 | if ( $posts_number <= 0 ) // return nothing if this parameter was set to <= 0 | |
74 | return $this->finish_process( $output, $debug . 'Posts number is 0;', $time ); | |
75 | $id = get_the_ID(); | |
76 | $relation = get_option( 'relpoststhb_relation', $this->relation ); | |
77 | $poststhname = get_option( 'relpoststhb_poststhname', $this->poststhname ); | |
78 | $text_length = get_option( 'relpoststhb_textlength', $this->text_length ); | |
79 | $excerpt_length = get_option( 'relpoststhb_excerptlength', $this->excerpt_length ); | |
80 | $thsource = get_option( 'relpoststhb_thsource', $this->thsource ); | |
81 | $categories_show_all = get_option( 'relpoststhb_show_categoriesall', get_option( 'relpoststhb_categoriesall', $this->categories_all ) ); | |
82 | $onlywiththumbs = ( current_theme_supports( 'post-thumbnails' ) && $thsource == 'post-thumbnails' ) ? get_option( 'relpoststhb_onlywiththumbs', false) : false; | |
83 | $post_type = get_post_type(); | |
84 | ||
85 | global $wpdb; | |
86 | ||
87 | /* Get taxonomy terms */ | |
88 | $debug .= "Relation: $relation; All categories: $categories_show_all;"; | |
89 | $use_filter = ( $categories_show_all != '1' || $relation != 'no' ); | |
90 | ||
91 | if ( $use_filter ) { | |
92 | $query_objects = "SELECT distinct object_id FROM $wpdb->term_relationships WHERE 1=1 "; | |
93 | ||
94 | if ( $relation != 'no' ) { /* Get object terms */ | |
95 | if ( $relation == 'categories' ) | |
96 | $taxonomy = array( 'category' ); | |
97 | elseif ( $relation == 'tags' ) | |
98 | $taxonomy = array( 'post_tag' ); | |
99 | elseif ( $relation == 'custom') { | |
100 | $taxonomy = get_option( 'relpoststhb_custom_taxonomies', $this->custom_taxonomies ); | |
101 | } | |
102 | else { | |
103 | $taxonomy = array( 'category', 'post_tag' ); | |
104 | } | |
105 | $object_terms = wp_get_object_terms( $id, $taxonomy, array( 'fields' => 'ids' ) ); | |
106 | if ( empty( $object_terms ) || !is_array( $object_terms ) ) // no terms to get taxonomy | |
107 | return $this->finish_process( $output, $debug . 'No taxonomy terms to get posts;', $time ); | |
108 | ||
109 | $query = "SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id in ('". implode( "', '", $object_terms ) . "')"; | |
110 | $object_taxonomy = $wpdb->get_results( $query ); | |
111 | $object_taxonomy_a = array(); | |
112 | if ( count( $object_taxonomy ) > 0 ) { | |
113 | foreach ( $object_taxonomy as $item ) | |
114 | $object_taxonomy_a[] = $item->term_taxonomy_id; | |
115 | } | |
116 | $query_objects .= " AND term_taxonomy_id IN ('". implode( "', '", $object_taxonomy_a ) . "') "; | |
117 | } | |
118 | ||
119 | if ( $categories_show_all != '1' ) { /* Get filter terms */ | |
120 | $select_terms = get_option( 'relpoststhb_show_categories', | |
121 | get_option( 'relpoststhb_categories' ) ); | |
122 | if ( empty( $select_terms ) || !is_array( $select_terms ) ) // if no categories were specified intentionally return nothing | |
123 | return $this->finish_process( $output, $debug . 'No categories were selected;', $time ); | |
124 | ||
125 | $query = "SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id in ('". implode( "', '", $select_terms ) . "')"; | |
126 | $taxonomy = $wpdb->get_results( $query ); | |
127 | $filter_taxonomy_a = array(); | |
128 | if ( count( $taxonomy ) > 0 ) { | |
129 | foreach ($taxonomy as $item) | |
130 | $filter_taxonomy_a[] = $item->term_taxonomy_id; | |
131 | } | |
132 | if ($relation != 'no') { | |
133 | $query_objects .= " AND object_id IN (SELECT distinct object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id IN ('". implode( "', '", $filter_taxonomy_a ) . "') )"; | |
134 | } | |
135 | else { | |
136 | $query_objects .= " AND term_taxonomy_id IN ('". implode( "', '", $filter_taxonomy_a ) . "')"; | |
137 | } | |
138 | } | |
139 | ||
140 | $relationships = $wpdb->get_results( $query_objects ); | |
141 | $related_objects = array(); | |
142 | if ( count( $relationships ) > 0 ) { | |
143 | foreach ($relationships as $item) | |
144 | $related_objects[] = $item->object_id; | |
145 | } | |
146 | } | |
147 | ||
148 | $query = "SELECT distinct ID FROM $wpdb->posts "; | |
149 | $where = " WHERE post_type = '" . $post_type . "' AND post_status = 'publish' AND ID<>" . $id; // not the current post | |
150 | $startdate = get_option( 'relpoststhb_startdate' ); | |
151 | if ( !empty( $startdate ) && preg_match( '/^\d\d\d\d-\d\d-\d\d$/', $startdate ) ) { // If startdate was set | |
152 | $debug .= "Startdate: $startdate;"; | |
153 | $where .= " AND post_date >= '" . $startdate . "'"; | |
154 | } | |
155 | if ( $use_filter ) { | |
156 | $where .= " AND ID IN ('". implode( "', '", $related_objects ) . "')"; | |
157 | } | |
158 | $join = ""; | |
159 | if ( $onlywiththumbs ) { | |
160 | $debug .= "Only with thumbnails;"; | |
161 | $join = " INNER JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id)"; | |
162 | $where .= " AND $wpdb->postmeta.meta_key = '_thumbnail_id'"; | |
163 | } | |
164 | ||
165 | $order = " ORDER BY rand() LIMIT " . $posts_number; | |
166 | $random_posts = $wpdb->get_results( $query . $join . $where . $order ); | |
167 | ||
168 | /* Get posts by their IDs */ | |
169 | if ( !is_array( $random_posts ) || count( $random_posts ) < 1 ) { | |
170 | return $this->finish_process( $output, $debug . 'No posts matching relationships criteria;', $time ); | |
171 | } | |
172 | ||
173 | $posts_in = array(); | |
174 | foreach ($random_posts as $random_post) | |
175 | $posts_in[] = $random_post->ID; | |
176 | $query = "SELECT ID, post_content, post_excerpt, post_title FROM $wpdb->posts WHERE ID IN ('". implode( "', '", $posts_in ) . "')"; | |
177 | $posts = $wpdb->get_results( $query ); | |
178 | if ( ! ( is_array( $posts ) && count( $posts ) > 0 ) ) { // no posts | |
179 | $debug .= 'No posts found;'; | |
180 | return $this->finish_process( $output, $debug, $time ); | |
181 | } | |
182 | else | |
183 | $debug .= 'Found ' . count( $posts ) . ' posts;'; | |
184 | ||
185 | /* Calculating sizes */ | |
186 | if ( $thsource == 'custom-field' ) { | |
187 | $debug .= 'Custom sizes;'; | |
188 | $width = get_option( 'relpoststhb_customwidth', $this->custom_width ); | |
189 | $height = get_option( 'relpoststhb_customheight', $this->custom_height ); | |
190 | } | |
191 | else { // post-thumbnails source | |
192 | if ( $poststhname == 'thumbnail' || $poststhname == 'medium' || $poststhname == 'large' ) { // get thumbnail size for basic sizes | |
193 | $debug .= 'Basic sizes;'; | |
194 | $width = get_option( "{$poststhname}_size_w" ); | |
195 | $height = get_option( "{$poststhname}_size_h" ); | |
196 | } | |
197 | elseif ( current_theme_supports( 'post-thumbnails' ) ) { // get sizes for theme supported thumbnails | |
198 | global $_wp_additional_image_sizes; | |
199 | if ( isset( $_wp_additional_image_sizes[ $poststhname ] ) ) { | |
200 | $debug .= 'Additional sizes;'; | |
201 | $width = $_wp_additional_image_sizes[ $poststhname ][ 'width' ]; | |
202 | $height = $_wp_additional_image_sizes[ $poststhname ][ 'height' ]; | |
203 | } | |
204 | else | |
205 | $debug .= 'No additional sizes;'; | |
206 | } | |
207 | } | |
208 | // displaying square if one size is not cropping | |
209 | if ( $height == 9999 ) | |
210 | $height = $width; | |
211 | if ( $width == 9999 ) | |
212 | $width = $height; | |
213 | // theme is not supporting but settings were not changed | |
214 | if ( empty( $width ) ) { | |
215 | $debug .= 'Using default width;'; | |
216 | $width = get_option( "thumbnail_size_w" ); | |
217 | } | |
218 | if ( empty( $height ) ) { | |
219 | $debug .= 'Using default height;'; | |
220 | $height = get_option( "thumbnail_size_h" ); | |
221 | } | |
222 | $debug .= 'Got sizes '.$width.'x'.$height.';'; | |
223 | // rendering related posts HTML | |
224 | if ( $show_top ) | |
225 | $output .= stripslashes( get_option( 'relpoststhb_top_text', $this->top_text ) ); | |
226 | $relpoststhb_output_style = get_option( 'relpoststhb_output_style', $this->output_style ); | |
227 | $relpoststhb_cleanhtml = get_option( 'relpoststhb_cleanhtml', 0 ); | |
228 | $text_height = get_option( 'relpoststhb_textblockheight', $this->text_block_height ); | |
229 | if ($relpoststhb_output_style == 'list') { | |
230 | $output .= '<ul id="related_posts_thumbnails"'; | |
231 | if (!$relpoststhb_cleanhtml) | |
232 | $output .= ' style="list-style-type:none; list-style-position: inside; padding: 0; margin:0"'; | |
233 | $output .= '>'; | |
234 | } | |
235 | else | |
236 | $output .= '<div style="clear: both"></div><div style="border: 0pt none ; margin: 0pt; padding: 0pt;">'; | |
237 | foreach( $posts as $post ) { | |
238 | $image = ''; | |
239 | $url = ''; | |
240 | if ( $thsource == 'custom-field' ) { | |
241 | $debug .= 'Using custom field;'; | |
242 | $url = $basic_url = get_post_meta( $post->ID, get_option( 'relpoststhb_customfield', $this->custom_field ), true ); | |
243 | if (strpos($url, '/wp-content') !== false) | |
244 | $url = substr($url, strpos($url, '/wp-content')); | |
245 | $theme_resize_url = get_option( 'relpoststhb_theme_resize_url', '' ); | |
246 | if ( !empty( $theme_resize_url ) ) | |
247 | $url = $theme_resize_url . '?src=' . $url . '&w=' . $width . '&h=' . $height . '&zc=1&q=90'; | |
248 | } | |
249 | else { | |
250 | $from_post_body = true; | |
251 | if ( current_theme_supports( 'post-thumbnails' ) ) { // using built in Wordpress feature | |
252 | $post_thumbnail_id = get_post_thumbnail_id( $post->ID ); | |
253 | $debug .= 'Post-thumbnails enabled in theme;'; | |
254 | if ( !( empty( $post_thumbnail_id ) || $post_thumbnail_id === false ) ) { // post has thumbnail | |
255 | $debug .= 'Post has thumbnail '.$post_thumbnail_id.';'; | |
256 | $debug .= 'Postthname: '.$poststhname.';'; | |
257 | $image = wp_get_attachment_image_src( $post_thumbnail_id, $poststhname ); | |
258 | $url = $image[0]; | |
259 | $from_post_body = false; | |
260 | } | |
261 | else | |
262 | $debug .= 'Post has no thumbnail;'; | |
263 | } | |
264 | if ( $from_post_body ) { // Theme does not support post-thumbnails, or post does not have assigned thumbnail | |
265 | $debug .= 'Getting image from post body;'; | |
266 | $wud = wp_upload_dir(); | |
267 | preg_match_all( '|<img.*?src=[\'"](' . $wud['baseurl'] . '.*?)[\'"].*?>|i', $post->post_content, $matches ); // searching for the first uploaded image in text | |
268 | if ( isset( $matches ) ) $image = $matches[1][0]; | |
269 | else | |
270 | $debug .= 'No image was found;'; | |
271 | if ( strlen( trim( $image ) ) > 0 ) { | |
272 | $image_sizes = @getimagesize( $image ); | |
273 | if ( $image_sizes === false ) | |
274 | $debug .= 'Unable to determine parsed image size'; | |
275 | if ( $image_sizes !== false && isset( $image_sizes[0] ) && $image_sizes[0] == $width ) { // if this image is the same size as we need | |
276 | $debug .= 'Image used is the required size;'; | |
277 | $url = $image; | |
278 | } | |
279 | else { // if not, search for resized thumbnail according to Wordpress thumbnails naming function | |
280 | $debug .= 'Changing image according to Wordpress standards;'; | |
281 | $url = preg_replace( '/(-[0-9]+x[0-9]+)?(\.[^\.]*)$/', '-' . $width . 'x' . $height . '$2', $image ); | |
282 | } | |
283 | } | |
284 | else | |
285 | $debug .= 'Found wrong formatted image: '.$image.';'; | |
286 | } | |
287 | $basic_url = $url; | |
288 | } | |
289 | ||
290 | if ( strpos( $url, '/' ) === 0 ) { | |
291 | $debug .= 'Relative url: ' . $url . ';'; | |
292 | $url = $basic_url = get_bloginfo( 'url' ) . $url; | |
293 | } | |
294 | ||
295 | $debug .= 'Image URL: '.$url.';'; | |
296 | if ( empty( $basic_url ) ) { // parsed URL is empty or no file if can check | |
297 | $debug .= 'Image is empty or no file. Using default image;'; | |
298 | $url = get_option( 'relpoststhb_default_image', $this->default_image ); | |
299 | } | |
300 | ||
301 | $title = $this->process_text_cut( $post->post_title, $text_length ); | |
302 | $post_excerpt = ( empty( $post->post_excerpt ) ) ? $post->post_content : $post->post_excerpt; | |
303 | $excerpt = $this->process_text_cut( $post_excerpt, $excerpt_length ); | |
304 | ||
305 | if ( !empty( $title ) && !empty( $excerpt ) ) { | |
306 | $title = '<b>' . $title . '</b>'; | |
307 | $excerpt = '<br/>' . $excerpt; | |
308 | } | |
309 | ||
310 | $debug .= 'Using title with size ' . $text_length . '. Using excerpt with size ' . $excerpt_length . ';'; | |
311 | if ($relpoststhb_output_style == 'list') { | |
312 | $link = get_permalink( $post->ID ); | |
313 | $fontface = str_replace('"', "'", stripslashes( get_option( 'relpoststhb_fontfamily', $this->font_family ) ) ); | |
314 | $output .= '<li '; | |
315 | if ( !$relpoststhb_cleanhtml ) | |
316 | $output .= ' style="float: left; padding: 0; margin:0; padding: 5px; display: block; border-right: 1px solid ' . get_option( 'relpoststhb_bordercolor', $this->border_color ) . '; background-color: ' . get_option( 'relpoststhb_background', $this->background ) . '" onmouseout="this.style.backgroundColor=\'' . get_option( 'relpoststhb_background', $this->background ) . '\'" onmouseover="this.style.backgroundColor=\'' . get_option( 'relpoststhb_hoverbackground', $this->hoverbackground ) . '\'"'; | |
317 | $output .= '>'; | |
318 | $output .= '<a href="' . $link . '" ><img alt="' . $title . '" src="' . $url . '" width="' . $width . '" height="' . $height . '" '; | |
319 | if ( !$relpoststhb_cleanhtml ) | |
320 | $output .= 'style="padding: 0px; margin: 0px; border: 0pt none;"'; | |
321 | $output .= '/></a>'; | |
322 | if ($text_height != '0') | |
323 | { | |
324 | $output .= '<a href="' . $link . '"'; | |
325 | if ( !$relpoststhb_cleanhtml ) | |
326 | $output .= ' style="display: block; width: ' . $width . 'px; overflow: hidden;height: ' . $text_height . 'px; font-family: ' . $fontface . '; font-style: normal; font-variant: normal; font-weight: normal; font-size: ' . get_option( 'relpoststhb_fontsize', $this->font_size ) . 'px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: ' . get_option( 'relpoststhb_fontcolor', $this->font_color ) . ';text-decoration: none;"'; | |
327 | $output .= '><span>' . $title . $excerpt . '</span></a></li>'; | |
328 | } | |
329 | } | |
330 | else { | |
331 | $output .= '<a onmouseout="this.style.backgroundColor=\'' . get_option( 'relpoststhb_background', $this->background ) . '\'" onmouseover="this.style.backgroundColor=\'' . get_option( 'relpoststhb_hoverbackground', $this->hoverbackground ) . '\'" style="background-color: ' . get_option( 'relpoststhb_background', $this->background ) . '; border-right: 1px solid ' . get_option( 'relpoststhb_bordercolor', $this->border_color ) . '; border-bottom: medium none; margin: 0pt; padding: 6px; display: block; float: left; text-decoration: none; text-align: left; cursor: pointer;" href="' . get_permalink( $post->ID ) . '">'; | |
332 | $output .= '<div style="border: 0pt none ; margin: 0pt; padding: 0pt; width: ' . $width . 'px; height: ' . ( $height + $text_height ) . 'px;">'; | |
333 | $output .= '<div style="border: 0pt none ; margin: 0pt; padding: 0pt; background: transparent url(' . $url . ') no-repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: ' . $width . 'px; height: ' . $height . 'px;"></div>'; | |
334 | $output .= '<div style="border: 0pt none; margin: 3px 0pt 0pt; padding: 0pt; font-family: ' . $fontface . '; font-style: normal; font-variant: normal; font-weight: normal; font-size: ' . get_option( 'relpoststhb_fontsize', $this->font_size ) . 'px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; color: ' . get_option( 'relpoststhb_fontcolor', $this->font_color ) . ';">' . $title . $excerpt . '</div>'; | |
335 | $output .= '</div>'; | |
336 | $output .= '</a>'; | |
337 | } | |
338 | ||
339 | } // end foreach | |
340 | if ($relpoststhb_output_style == 'list') | |
341 | $output .= '</ul>'; | |
342 | else | |
343 | $output .= '</div>'; | |
344 | $output .= '<div style="clear: both"></div>'; | |
345 | return $this->finish_process( $output, $debug, $time ); | |
346 | } | |
347 | ||
348 | function finish_process( $output, $debug, $time ) { | |
349 | $devmode = get_option( 'relpoststhb_devmode', $this->devmode ); | |
350 | if ( $devmode ) { | |
351 | $time = microtime(true) - $time; | |
352 | $debug .= "Plugin execution time: $time sec;"; | |
353 | $output .= '<!-- '.$debug.' -->'; | |
354 | } | |
355 | return $output; | |
356 | } | |
357 | ||
358 | function process_text_cut( $text, $length ) { | |
359 | if ($length == 0) | |
360 | return ''; | |
361 | else { | |
362 | $text = htmlspecialchars( strip_tags( strip_shortcodes( $text ) ) ); | |
363 | if ( function_exists('mb_strlen') ) { | |
364 | return ( ( mb_strlen( $text ) > $length ) ? mb_substr( $text, 0, $length) . '...' : $text ); | |
365 | } | |
366 | else { | |
367 | return ( ( strlen( $text ) > $length ) ? substr( $text, 0, $length) . '...' : $text ); | |
368 | } | |
369 | } | |
370 | } | |
371 | ||
372 | function is_relpoststhb_show() { // Checking display options | |
373 | if ( !is_single() && get_option( 'relpoststhb_single_only', $this->single_only ) ) { // single only | |
374 | return false; | |
375 | } | |
376 | /* Check post type */ | |
377 | $post_types = get_option( 'relpoststhb_post_types', $this->post_types ); | |
378 | $post_type = get_post_type(); | |
379 | if ( !in_array($post_type, $post_types) ) { | |
380 | return false; | |
381 | } | |
382 | /* Check categories */ | |
383 | $id = get_the_ID(); | |
384 | $categories_all = get_option( 'relpoststhb_categoriesall', $this->categories_all ); | |
385 | if ( $categories_all != '1') { // only specific categories were selected | |
386 | $post_categories = wp_get_object_terms( $id, array( 'category' ), array( 'fields' => 'ids' ) ); | |
387 | $relpoststhb_categories = get_option( 'relpoststhb_categories' ); | |
388 | if ( !is_array( $relpoststhb_categories ) || !is_array( $post_categories ) ) // no categories were selcted or post doesn't belong to any | |
389 | return false; | |
390 | $common_categories = array_intersect( $relpoststhb_categories, $post_categories ); | |
391 | if ( empty( $common_categories ) ) // post doesn't belong to specified categories | |
392 | return false; | |
393 | } | |
394 | return true; | |
395 | } | |
396 | ||
397 | function admin_menu() { | |
398 | $page = add_options_page( __( 'Related Posts Thumbnails', 'related-posts-thumbnails' ), __( 'Related Posts Thumbs', 'related-posts-thumbnails' ), 'administrator', 'related-posts-thumbnails', array( $this, 'admin_interface' ) ); | |
399 | } | |
400 | ||
401 | function admin_interface() { // Admin interface | |
402 | if ( isset($_POST['action']) && ($_POST['action'] == 'update') ) { | |
403 | if ( !current_user_can( 'manage_options' ) ) { | |
404 | wp_die( __( 'No access', 'related-posts-thumbnails' ) ); | |
405 | } | |
406 | check_admin_referer( 'related-posts-thumbnails' ); | |
407 | $validation = true; | |
408 | if ( !empty($_POST['relpoststhb_year']) || !empty($_POST['relpoststhb_month']) || !empty($_POST['relpoststhb_year']) ) { // check date | |
409 | $set_date = sprintf( '%04d-%02d-%02d', $_POST['relpoststhb_year'], $_POST['relpoststhb_month'], $_POST['relpoststhb_day'] ); | |
410 | if ( checkdate( intval($_POST['relpoststhb_month']), intval($_POST['relpoststhb_day']), intval($_POST['relpoststhb_year']) ) === false ) { | |
411 | $validation = false; | |
412 | $error = __( 'Wrong date', 'related-posts-thumbnails' ) . ': ' . sprintf( '%d/%d/%d', $_POST['relpoststhb_month'], $_POST['relpoststhb_day'], $_POST['relpoststhb_year'] ); | |
413 | } | |
414 | } | |
415 | else { | |
416 | $set_date = ''; | |
417 | } | |
418 | if ( $validation ) { | |
419 | update_option( 'relpoststhb_single_only', $_POST['relpoststhb_single_only'] ); | |
420 | update_option( 'relpoststhb_post_types', $_POST['relpoststhb_post_types'] ); | |
421 | update_option( 'relpoststhb_onlywiththumbs', $_POST['onlywiththumbs'] ); | |
422 | update_option( 'relpoststhb_output_style', $_POST['relpoststhb_output_style'] ); | |
423 | update_option( 'relpoststhb_cleanhtml', $_POST['relpoststhb_cleanhtml'] ); | |
424 | update_option( 'relpoststhb_auto', $_POST['relpoststhb_auto'] ); | |
425 | update_option( 'relpoststhb_top_text', $_POST['relpoststhb_top_text'] ); | |
426 | update_option( 'relpoststhb_number', $_POST['relpoststhb_number'] ); | |
427 | update_option( 'relpoststhb_relation', $_POST['relpoststhb_relation'] ); | |
428 | update_option( 'relpoststhb_default_image', $_POST['relpoststhb_default_image'] ); | |
429 | update_option( 'relpoststhb_poststhname', $_POST['relpoststhb_poststhname'] ); | |
430 | update_option( 'relpoststhb_background', $_POST['relpoststhb_background'] ); | |
431 | update_option( 'relpoststhb_hoverbackground', $_POST['relpoststhb_hoverbackground'] ); | |
432 | update_option( 'relpoststhb_bordercolor', $_POST['relpoststhb_bordercolor'] ); | |
433 | update_option( 'relpoststhb_fontcolor', $_POST['relpoststhb_fontcolor'] ); | |
434 | update_option( 'relpoststhb_fontsize', $_POST['relpoststhb_fontsize'] ); | |
435 | update_option( 'relpoststhb_fontfamily', $_POST['relpoststhb_fontfamily'] ); | |
436 | update_option( 'relpoststhb_textlength', $_POST['relpoststhb_textlength'] ); | |
437 | update_option( 'relpoststhb_excerptlength', $_POST['relpoststhb_excerptlength'] ); | |
438 | update_option( 'relpoststhb_thsource', $_POST['relpoststhb_thsource'] ); | |
439 | update_option( 'relpoststhb_customfield', $_POST['relpoststhb_customfield'] ); | |
440 | update_option( 'relpoststhb_theme_resize_url', $_POST['relpoststhb_theme_resize_url'] ); | |
441 | update_option( 'relpoststhb_customwidth', $_POST['relpoststhb_customwidth'] ); | |
442 | update_option( 'relpoststhb_customheight', $_POST['relpoststhb_customheight'] ); | |
443 | update_option( 'relpoststhb_textblockheight', $_POST['relpoststhb_textblockheight'] ); | |
444 | update_option( 'relpoststhb_categoriesall', $_POST['relpoststhb_categoriesall'] ); | |
445 | update_option( 'relpoststhb_categories', $_POST['relpoststhb_categories'] ); | |
446 | update_option( 'relpoststhb_show_categoriesall', $_POST['relpoststhb_show_categoriesall'] ); | |
447 | update_option( 'relpoststhb_show_categories', $_POST['relpoststhb_show_categories'] ); | |
448 | update_option( 'relpoststhb_devmode', $_POST['relpoststhb_devmode'] ); | |
449 | update_option( 'relpoststhb_startdate', $set_date ); | |
450 | update_option( 'relpoststhb_custom_taxonomies', $_POST['relpoststhb_custom_taxonomies'] ); | |
451 | echo "<div class='updated fade'><p>" . __( 'Settings updated', 'related-posts-thumbnails' ) ."</p></div>"; | |
452 | } | |
453 | else { | |
454 | echo "<div class='error fade'><p>" . __( 'Settings update failed', 'related-posts-thumbnails' ) . '. '. $error . "</p></div>"; | |
455 | } | |
456 | } | |
457 | $available_sizes = array( 'thumbnail' => 'thumbnail', 'medium' => 'medium' ); | |
458 | if ( current_theme_supports( 'post-thumbnails' ) ) { | |
459 | global $_wp_additional_image_sizes; | |
460 | if ( is_array($_wp_additional_image_sizes ) ) { | |
461 | $available_sizes = array_merge( $available_sizes, $_wp_additional_image_sizes ); | |
462 | } | |
463 | } | |
464 | $relpoststhb_single_only = get_option( 'relpoststhb_single_only', $this->single_only ); | |
465 | $relpoststhb_auto = get_option( 'relpoststhb_auto', $this->auto ); | |
466 | $relpoststhb_cleanhtml = get_option( 'relpoststhb_cleanhtml', 0 ); | |
467 | $relpoststhb_relation = get_option( 'relpoststhb_relation', $this->relation ); | |
468 | $relpoststhb_thsource = get_option( 'relpoststhb_thsource', $this->thsource ); | |
469 | $relpoststhb_devmode = get_option( 'relpoststhb_devmode', $this->devmode ); | |
470 | $relpoststhb_categoriesall = get_option( 'relpoststhb_categoriesall', $this->categories_all ); | |
471 | $relpoststhb_categories = get_option( 'relpoststhb_categories' ); | |
472 | $relpoststhb_show_categories = get_option( 'relpoststhb_show_categories', get_option( 'relpoststhb_categories' ) ); | |
473 | $relpoststhb_show_categoriesall = get_option( 'relpoststhb_show_categoriesall', $relpoststhb_categoriesall ); | |
474 | $onlywiththumbs = get_option( 'relpoststhb_onlywiththumbs', false ); | |
475 | $relpoststhb_startdate = explode( '-', get_option( 'relpoststhb_startdate' ) ); | |
476 | $relpoststhb_output_style = get_option( 'relpoststhb_output_style', $this->output_style ); | |
477 | $thsources = array( 'post-thumbnails' => __('Post thumbnails', 'related_posts_thumbnails'), 'custom-field' => __('Custom field', 'related_posts_thumbnails') ); | |
478 | $categories = get_categories(); | |
479 | if ($this->wp_version >= 3) | |
480 | { | |
481 | $post_types = get_post_types( array( 'public' => 1 ) ); | |
482 | } | |
483 | else | |
484 | { | |
485 | $post_types = get_post_types(); | |
486 | } | |
487 | $relpoststhb_post_types = get_option( 'relpoststhb_post_types', $this->post_types ); | |
488 | $output_styles = array('div' => __( 'Blocks', 'related-posts-thumbnails' ), 'list' => __( 'List', 'related-posts-thumbnails' ) ); | |
489 | $relation_options = array('categories' => __('Categories', 'related-posts-thumbnails'), 'tags' => __('Tags', 'related-posts-thumbnails'), 'both' => __('Categories and Tags', 'related-posts-thumbnails'), 'no' => __('Random', 'related-posts-thumbnails'), 'custom' => __('Custom', 'related-posts-thumbnails') ); | |
490 | if ($this->wp_version >= 3) | |
491 | { | |
492 | $custom_taxonomies = get_taxonomies( array('public' => 1) ); | |
493 | $relpoststhb_custom_taxonomies = get_option( 'relpoststhb_custom_taxonomies', $this->custom_taxonomies ); | |
494 | if (!is_array($relpoststhb_custom_taxonomies)) | |
495 | $relpoststhb_custom_taxonomies = array(); | |
496 | } | |
497 | else | |
498 | { | |
499 | $relation_options['custom'] .= ' '. __('(This option is available for WP v3+ only)', 'related_posts_thumbnails'); | |
500 | } | |
501 | ?> | |
502 | <script type="text/javascript"> | |
503 | jQuery(document).ready(function($) { | |
504 | $(".select_all").click(function(){ | |
505 | if (this.checked) { | |
506 | $(this).parent().find("div.select_specific").hide(); | |
507 | } | |
508 | else { | |
509 | $(this).parent().find("div.select_specific").show(); | |
510 | } | |
511 | }); | |
512 | $('#relpoststhb_thsource').change(function(){ | |
513 | if (this.value == 'post-thumbnails') { | |
514 | $('#relpoststh-post-thumbnails').show(); | |
515 | $('#relpoststh-custom-field').hide(); | |
516 | } | |
517 | else { | |
518 | $('#relpoststh-post-thumbnails').hide(); | |
519 | $('#relpoststh-custom-field').show(); | |
520 | } | |
521 | }); | |
522 | $('#relpoststhb_output_style').change(function(){ | |
523 | if (this.value == 'list') { | |
524 | $('#relpoststhb_cleanhtml').show(); | |
525 | } | |
526 | else { | |
527 | $('#relpoststhb_cleanhtml').hide(); | |
528 | } | |
529 | }); | |
530 | $("input[name='relpoststhb_relation']").change(function(){ | |
531 | if ($("input[name='relpoststhb_relation']:checked").val() == 'custom') { | |
532 | $('#custom_taxonomies').show(); | |
533 | } | |
534 | else { | |
535 | $('#custom_taxonomies').hide(); | |
536 | } | |
537 | }); | |
538 | }); | |
539 | </script> | |
540 | <div class="wrap"> | |
541 | <div class="icon32" id="icon-options-general"><br></div> | |
542 | <h2><?php _e( 'Related Posts Thumbnails Settings', 'related-posts-thumbnails' ); ?></h2> | |
543 | <form action="?page=related-posts-thumbnails" method="POST"> | |
544 | <input type="hidden" name="action" value="update" /> | |
545 | <?php wp_nonce_field( 'related-posts-thumbnails' ); ?> | |
546 | <div class="metabox-holder"> | |
547 | <div class="postbox"> | |
548 | <h3><?php _e( 'General Display Options', 'related-posts-thumbnails' ); ?>:</h3> | |
549 | <table class="form-table"> | |
550 | <tr valign="top"> | |
551 | <th scope="row"><?php _e( 'Automatically append to the post content', 'related-posts-thumbnails' ); ?>:</th> | |
552 | <td> | |
553 | <input type="checkbox" name="relpoststhb_auto" id="relpoststhb_auto" value="1" <?php if ( $relpoststhb_auto ) echo 'checked="checked"'; ?>/> | |
554 | <label for="relpoststhb_auto"><?php _e( 'Or use <b><?php get_related_posts_thumbnails(); ?></b> in the Loop', 'related-posts-thumbnails' ); ?></label><br /> | |
555 | </td> | |
556 | </tr> | |
557 | <tr valign="top"> | |
558 | <th scope="row"><?php _e( 'Developer mode', 'related-posts-thumbnails' ); ?>:</th> | |
559 | <td> | |
560 | <input type="checkbox" name="relpoststhb_devmode" id="relpoststhb_devmode" value="1" <?php if ( $relpoststhb_devmode ) echo 'checked="checked"'; ?>/> | |
561 | <label for="relpoststhb_devmode"><?php _e( 'This will add debugging information in HTML source', 'related-posts-thumbnails' ); ?></label><br /> | |
562 | </td> | |
563 | </tr> | |
564 | <tr valign="top"> | |
565 | <th scope="row"><?php _e( 'Page type', 'related-posts-thumbnails' ); ?>:</th> | |
566 | <td> | |
567 | <input type="checkbox" name="relpoststhb_single_only" id="relpoststhb_single_only" value="1" <?php if ( $relpoststhb_single_only ) echo 'checked="checked"'; ?>/> | |
568 | <label for="relpoststhb_single_only"><?php _e( 'Show on single posts only', 'related-posts-thumbnails' ); ?></label><br /> | |
569 | </td> | |
570 | </tr> | |
571 | <tr valign="top"> | |
572 | <th scope="row"><?php _e( 'Post types', 'related-posts-thumbnails' ); ?>:</th> | |
573 | <td> | |
574 | <?php if ( is_array($post_types) && count($post_types) ): ?> | |
575 | <?php foreach ($post_types as $post_type): ?> | |
576 | <input type="checkbox" name="relpoststhb_post_types[]" id="pt_<?php echo $post_type; ?>" value="<?php echo $post_type; ?>" <?php if ( in_array( $post_type, $relpoststhb_post_types ) ) echo 'checked="checked"'; ?>/> | |
577 | <label for="pt_<?php echo $post_type; ?>"><?php echo $post_type; ?></label> | |
578 | <?php endforeach; ?> | |
579 | <?php endif; ?> | |
580 | </td> | |
581 | </tr> | |
582 | <tr valign="top"> | |
583 | <th scope="row"><?php _e( 'Categories on which related thumbnails will appear', 'related-posts-thumbnails' ); ?>:</th> | |
584 | <td> | |
585 | <?php $this->display_categories_list( $relpoststhb_categoriesall, $categories, $relpoststhb_categories, 'relpoststhb_categoriesall', 'relpoststhb_categories' ); ?> | |
586 | </td> | |
587 | </tr> | |
588 | <tr valign="top"> | |
589 | <th scope="row"><?php _e( 'Categories that will appear in related thumbnails', 'related-posts-thumbnails' ); ?>:</th> | |
590 | <td> | |
591 | <?php $this->display_categories_list( $relpoststhb_show_categoriesall, $categories, $relpoststhb_show_categories, 'relpoststhb_show_categoriesall', 'relpoststhb_show_categories' ); ?> | |
592 | </td> | |
593 | </tr> | |
594 | <tr> | |
595 | <th scope="row"><?php _e( 'Include only posts after', 'related-posts-thumbnails' ); ?>:</th> | |
596 | <td> | |
597 | <?php _e( 'Year', 'related-posts-thumbnails' ); ?>: <input type="text" name="relpoststhb_year" size="4" value="<?php if (isset($relpoststhb_startdate[0])) echo $relpoststhb_startdate[0]; ?>"> <?php _e( 'Month', 'related-posts-thumbnails' ); ?>: <input type="text" name="relpoststhb_month" size="2" value="<?php if (isset($relpoststhb_startdate[1])) echo $relpoststhb_startdate[1]; ?>"> <?php _e( 'Day', 'related-posts-thumbnails' ); ?>: <input type="text" name="relpoststhb_day" size="2" value="<?php if (isset($relpoststhb_startdate[2])) echo $relpoststhb_startdate[2]; ?>"> <label for="relpoststhb_excerptlength"><?php _e( 'Leave empty for all posts dates', 'related-posts-thumbnails' ); ?></label><br /> | |
598 | </td> | |
599 | </tr> | |
600 | <tr> | |
601 | <th scope="row"><?php _e( 'Top text', 'related-posts-thumbnails' ); ?>:</th> | |
602 | <td> | |
603 | <input type="text" name="relpoststhb_top_text" value="<?php echo stripslashes( htmlspecialchars( get_option( 'relpoststhb_top_text', $this->top_text ) ) ); ?>" size="50"/> | |
604 | </td> | |
605 | </tr> | |
606 | <tr> | |
607 | <th scope="row"><?php _e( 'Number of similar posts to display', 'related-posts-thumbnails' ); ?>:</th> | |
608 | <td> | |
609 | <input type="text" name="relpoststhb_number" value="<?php echo get_option( 'relpoststhb_number', $this->number ); ?>" size="2"/> | |
610 | </td> | |
611 | </tr> | |
612 | <tr> | |
613 | <th scope="row"><?php _e( 'Default image URL', 'related-posts-thumbnails' ); ?>:</th> | |
614 | <td> | |
615 | <input type="text" name="relpoststhb_default_image" value="<?php echo get_option('relpoststhb_default_image', $this->default_image );?>" size="50"/> | |
616 | </td> | |
617 | </tr> | |
618 | <tr> | |
619 | <th scope="row"><?php _e( 'Thumbnails source', 'related-posts-thumbnails' ); ?>:</th> | |
620 | <td> | |
621 | <select name="relpoststhb_thsource" id="relpoststhb_thsource"> | |
622 | <?php foreach ( $thsources as $name => $title ) : ?> | |
623 | <option value="<?php echo $name; ?>" <?php if ( $relpoststhb_thsource == $name ) echo 'selected'; ?>><?php echo $title; ?></option> | |
624 | <?php endforeach; ?> | |
625 | </select> | |
626 | </td> | |
627 | </tr> | |
628 | </table> | |
629 | </div> | |
630 | <div class="postbox" id="relpoststh-post-thumbnails" <?php if ( $relpoststhb_thsource != 'post-thumbnails' ) : ?> style="display:none" <?php endif; ?>> | |
631 | <h3><?php _e( 'Thumbnails source', 'related-posts-thumbnails' ); ?>:</h3> | |
632 | <table class="form-table"> | |
633 | <tr valign="top"> | |
634 | <th scope="row"><?php _e( 'Post-thumbnails name', 'related-posts-thumbnails' ); ?>:</th> | |
635 | <td> | |
636 | <select name="relpoststhb_poststhname"> | |
637 | <?php foreach ( $available_sizes as $size_name => $size ) : ?> | |
638 | <option <?php if ( $size_name == get_option('relpoststhb_poststhname', $this->poststhname) ) echo 'selected'; ?>><?php echo $size_name; ?></option> | |
639 | <?php endforeach; ?> | |
640 | </select> | |
641 | <?php if ( !current_theme_supports( 'post-thumbnails' ) ) : ?> | |
642 | (<?php _e( 'Your theme has to support post-thumbnails to have more choices', 'related-posts-thumbnails' ); ?>) | |
643 | <?php endif; ?> | |
644 | </td> | |
645 | </tr> | |
646 | <?php if ( current_theme_supports( 'post-thumbnails' ) ): ?> | |
647 | <tr> | |
648 | <th scope="row"><?php _e( 'Show posts only with thumbnails', 'related-posts-thumbnails' ); ?>:</th> | |
649 | <td> | |
650 | <input type="checkbox" name="onlywiththumbs" id="onlywiththumbs" value="1" <?php if ( $onlywiththumbs ) echo 'checked="checked"'; ?>/> | |
651 | <label for="onlywiththumbs"><?php _e( 'Only posts with assigned Featured Image', 'related-posts-thumbnails' ); ?></label><br /> | |
652 | </td> | |
653 | </tr> | |
654 | <?php endif; ?> | |
655 | </table> | |
656 | </div> | |
657 | <div class="postbox" id="relpoststh-custom-field" <?php if ( $relpoststhb_thsource != 'custom-field' ) : ?> style="display:none" <?php endif; ?>> | |
658 | <h3><?php _e( 'Thumbnails source', 'related-posts-thumbnails' ); ?>:</h3> | |
659 | <table class="form-table"> | |
660 | <tr valign="top"> | |
661 | <th scope="row"><?php _e( 'Custom field name', 'related-posts-thumbnails' ); ?>:</th> | |
662 | <td> | |
663 | <input type="text" name="relpoststhb_customfield" value="<?php echo get_option('relpoststhb_customfield', $this->custom_field );?>" size="50"/> | |
664 | </td> | |
665 | </tr> | |
666 | <tr valign="top"> | |
667 | <th scope="row"><?php _e( 'Size', 'related-posts-thumbnails' ); ?>:</th> | |
668 | <td> | |
669 | <?php _e( 'Width', 'related-posts-thumbnails' ); ?>: <input type="text" name="relpoststhb_customwidth" value="<?php echo get_option('relpoststhb_customwidth', $this->custom_width );?>" size="3"/>px x | |
670 | <?php _e( 'Height', 'related-posts-thumbnails' ); ?>: <input type="text" name="relpoststhb_customheight" value="<?php echo get_option('relpoststhb_customheight', $this->custom_height );?>" size="3"/>px | |
671 | </td> | |
672 | </tr> | |
673 | <tr valign="top"> | |
674 | <th scope="row"><?php _e( 'Theme resize url', 'related-posts-thumbnails' ); ?>:</th> | |
675 | <td> | |
676 | <input type="text" name="relpoststhb_theme_resize_url" value="<?php echo get_option('relpoststhb_theme_resize_url', '' );?>" size="50"/> | |
677 | (<?php _e( 'If your theme resizes images, enter URL to its resizing PHP file', 'related-posts-thumbnails' ); ?>) | |
678 | </td> | |
679 | </tr> | |
680 | </table> | |
681 | </div> | |
682 | <div class="postbox"> | |
683 | <h3><?php _e( 'Style options', 'related-posts-thumbnails' ); ?>:</h3> | |
684 | <table class="form-table"> | |
685 | <tr> | |
686 | <th scope="row"><?php _e( 'Output style', 'related-posts-thumbnails' ); ?>:</th> | |
687 | <td> | |
688 | <select name="relpoststhb_output_style" id="relpoststhb_output_style"> | |
689 | <?php foreach ( $output_styles as $name => $title ) : ?> | |
690 | <option value="<?php echo $name; ?>" <?php if ( $relpoststhb_output_style == $name ) echo 'selected'; ?>><?php echo $title; ?></option> | |
691 | <?php endforeach; ?> | |
692 | </select> | |
693 | <span id="relpoststhb_cleanhtml" style="display: <?php if ($relpoststhb_output_style == 'list') echo 'inline'; else echo 'none';?>;"><?php _e( 'Turn off plugin styles', 'related-posts-thumbnails' ); ?> <input type="checkbox" name="relpoststhb_cleanhtml" <?php if ( $relpoststhb_cleanhtml ) echo 'checked="checked"'; ?> /></span> | |
694 | </td> | |
695 | </tr> | |
696 | <tr valign="top"> | |
697 | <th scope="row"><?php _e( 'Background color', 'related-posts-thumbnails' ); ?>:</th> | |
698 | <td> | |
699 | <input type="text" name="relpoststhb_background" value="<?php echo get_option( 'relpoststhb_background', $this->background ); ?>" size="7"/> | |
700 | </td> | |
701 | </tr> | |
702 | <tr valign="top"> | |
703 | <th scope="row"><?php _e( 'Background color on mouse over', 'related-posts-thumbnails' ); ?>:</th> | |
704 | <td> | |
705 | <input type="text" name="relpoststhb_hoverbackground" value="<?php echo get_option( 'relpoststhb_hoverbackground', $this->hoverbackground ); ?>" size="7"/> | |
706 | </td> | |
707 | </tr> | |
708 | <tr valign="top"> | |
709 | <th scope="row"><?php _e( 'Border color', 'related-posts-thumbnails' ); ?>:</th> | |
710 | <td> | |
711 | <input type="text" name="relpoststhb_bordercolor" value="<?php echo get_option( 'relpoststhb_bordercolor', $this->border_color )?>" size="7"/> | |
712 | </td> | |
713 | </tr> | |
714 | <tr valign="top"> | |
715 | <th scope="row"><?php _e( 'Font color', 'related-posts-thumbnails' ); ?>:</th> | |
716 | <td> | |
717 | <input type="text" name="relpoststhb_fontcolor" value="<?php echo get_option( 'relpoststhb_fontcolor', $this->font_color ); ?>" size="7"/> | |
718 | </td> | |
719 | </tr> | |
720 | <tr valign="top"> | |
721 | <th scope="row"><?php _e( 'Font family', 'related-posts-thumbnails' ); ?>:</th> | |
722 | <td> | |
723 | <input type="text" name="relpoststhb_fontfamily" value="<?php echo stripslashes( htmlspecialchars( get_option( 'relpoststhb_fontfamily', $this->font_family ) ) ); ?>" size="50"/> | |
724 | </td> | |
725 | </tr> | |
726 | <tr valign="top"> | |
727 | <th scope="row"><?php _e( 'Font size', 'related-posts-thumbnails' ); ?>:</th> | |
728 | <td> | |
729 | <input type="text" name="relpoststhb_fontsize" value="<?php echo get_option( 'relpoststhb_fontsize', $this->font_size )?>" size="7"/> | |
730 | </td> | |
731 | </tr> | |
732 | <tr valign="top"> | |
733 | <th scope="row"><?php _e( 'Text maximum length', 'related-posts-thumbnails' ); ?>:</th> | |
734 | <td> | |
735 | <input type="text" name="relpoststhb_textlength" value="<?php echo get_option( 'relpoststhb_textlength', $this->text_length )?>" size="7"/> | |
736 | <label for="relpoststhb_textlength"><?php _e( 'Set 0 for no title', 'related-posts-thumbnails' ); ?></label><br /> | |
737 | </td> | |
738 | </tr> | |
739 | <tr valign="top"> | |
740 | <th scope="row"><?php _e( 'Excerpt maximum length', 'related-posts-thumbnails' ); ?>:</th> | |
741 | <td> | |
742 | <input type="text" name="relpoststhb_excerptlength" value="<?php echo get_option( 'relpoststhb_excerptlength', $this->excerpt_length )?>" size="7"/> | |
743 | <label for="relpoststhb_excerptlength"><?php _e( 'Set 0 for no excerpt', 'related-posts-thumbnails' ); ?></label><br /> | |
744 | </td> | |
745 | </tr> | |
746 | <tr valign="top"> | |
747 | <th scope="row"><?php _e( 'Text block height', 'related-posts-thumbnails' ); ?>:</th> | |
748 | <td> | |
749 | <input type="text" name="relpoststhb_textblockheight" value="<?php echo get_option( 'relpoststhb_textblockheight', $this->text_block_height )?>" size="7"/> px | |
750 | </td> | |
751 | </tr> | |
752 | </table> | |
753 | </div> | |
754 | <div class="postbox"> | |
755 | <h3><?php _e( 'Relation Builder Options', 'related-posts-thumbnails' ); ?>:</h3> | |
756 | <table class="form-table"> | |
757 | <tr valign="top"> | |
758 | <th scope="row"><?php _e( 'Relation based on', 'related-posts-thumbnails' ); ?>:</th> | |
759 | <td> | |
760 | <?php if (is_array($relation_options) && count($relation_options)): ?> | |
761 | <?php foreach ($relation_options as $ro_key => $ro_name): ?> | |
762 | <input type="radio" name="relpoststhb_relation" id="relpoststhb_relation_<?php echo $ro_key; ?>" value="<?php echo $ro_key; ?>" <?php if ( $relpoststhb_relation == $ro_key ) echo 'checked="checked"'; ?>/> | |
763 | <label for="relpoststhb_relation_<?php echo $ro_key; ?>"><?php echo $ro_name; ?></label><br /> | |
764 | <?php endforeach; ?> | |
765 | <?php endif; ?> | |
766 | <div id="custom_taxonomies" style="display: <?php if ($relpoststhb_relation == 'custom') echo 'inline'; else echo 'none';?>;"> | |
767 | <?php if (is_array($custom_taxonomies) && count($custom_taxonomies)): ?> | |
768 | <?php foreach ($custom_taxonomies as $custom_taxonomy): ?> | |
769 | <input type="checkbox" name="relpoststhb_custom_taxonomies[]" id="ct_<?php echo $custom_taxonomy; ?>" value="<?php echo $custom_taxonomy; ?>" <?php if ( in_array( $custom_taxonomy, $relpoststhb_custom_taxonomies ) ) echo 'checked="checked"'; ?>/> | |
770 | <label for="ct_<?php echo $custom_taxonomy; ?>"><?php echo $custom_taxonomy; ?></label> | |
771 | <?php endforeach; ?> | |
772 | <?php endif; ?> | |
773 | </div> | |
774 | </td> | |
775 | </tr> | |
776 | </table> | |
777 | </div> | |
778 | <input name="Submit" value="<?php _e( 'Save Changes', 'related-posts-thumbnails' ); ?>" type="submit"> | |
779 | </div> | |
780 | </form> | |
781 | </div> | |
782 | <p style="margin-top: 40px;"><small><?php _e('If you experience some problems with this plugin please let me know about it on <a href="http://wordpress.shaldybina.com/plugins/related-posts-thumbnails/">Plugin\'s homepage</a>. If you think this plugin is awesome please vote on <a href="http://wordpress.org/extend/plugins/related-posts-thumbnails/">Wordpress plugin page</a>. Thanks!', 'related-posts-thumbnails' ); ?></small></p> | |
783 | <?php | |
784 | } | |
785 | ||
786 | function display_categories_list( $categoriesall, $categories, $selected_categories, $all_name, $specific_name ) { | |
787 | ?> | |
788 | <input id="<?php echo $all_name; ?>" class="select_all" type="checkbox" name="<?php echo $all_name; ?>" value="1" <?php if ( $categoriesall == '1' ) echo 'checked="checked"'; ?>/> | |
789 | <label for="<?php echo $all_name; ?>"><?php _e( 'All', 'related-posts-thumbnails' ); ?></label> | |
790 | <div class="select_specific" <?php if ( $categoriesall == '1' ) : ?> style="display:none" <?php endif; ?>> | |
791 | <?php foreach ( $categories as $category ) : ?> | |
792 | <input type="checkbox" name="<?php echo $specific_name; ?>[]" id="<?php echo $specific_name; ?>_<?php echo $category->category_nicename; ?>" value="<?php echo $category->cat_ID; ?>" <?php if ( in_array( $category->cat_ID, (array)$selected_categories ) ) echo 'checked="checked"'; ?>/> | |
793 | <label for="<?php echo $specific_name; ?>_<?php echo $category->category_nicename; ?>"><?php echo $category->cat_name; ?></label><br /> | |
794 | <?php endforeach; ?> | |
795 | </div> | |
796 | <?php | |
797 | } | |
798 | } | |
799 | ||
800 | - | add_action( 'init', 'related_posts_thumbnails' ); |
800 | + | add_action( 'init', 'related_posts_thumbnailsB' ); |
801 | ||
802 | - | function related_posts_thumbnails() { |
802 | + | function related_posts_thumbnailsB() { |
803 | - | global $related_posts_thumbnails; |
803 | + | global $related_posts_thumbnailsB; |
804 | - | $related_posts_thumbnails = new RelatedPostsThumbnails(); |
804 | + | $related_posts_thumbnailsB = new RelatedPostsThumbnailsB(); |
805 | } | |
806 | ||
807 | - | function get_related_posts_thumbnails() |
807 | + | function get_related_posts_thumbnailsB() |
808 | { | |
809 | - | global $related_posts_thumbnails; |
809 | + | global $related_posts_thumbnailsB; |
810 | - | echo $related_posts_thumbnails->get_html(); |
810 | + | echo $related_posts_thumbnailsB->get_html(); |
811 | } | |
812 | ||
813 | /** | |
814 | * Related Posts Widget, will be displayed on post page | |
815 | */ | |
816 | - | class RelatedPostsThumbnailsWidget extends WP_Widget { |
816 | + | class RelatedPostsThumbnailsWidgetB extends WP_Widget { |
817 | - | function RelatedPostsThumbnailsWidget() { |
817 | + | function RelatedPostsThumbnailsWidgetB() { |
818 | - | parent::WP_Widget(false, $name = 'Related Posts Thumbnails'); |
818 | + | parent::WP_Widget(false, $name = 'Related Posts Thumbnails B'); |
819 | } | |
820 | ||
821 | function widget($args, $instance) { | |
822 | if ( is_single() && !is_page() ) { // display on post page only | |
823 | extract( $args ); | |
824 | $title = apply_filters('widget_title', $instance['title']); | |
825 | echo $before_widget; | |
826 | if ( $title ) | |
827 | echo $before_title . $title . $after_title; | |
828 | get_related_posts_thumbnails(); | |
829 | echo $after_widget; | |
830 | } | |
831 | } | |
832 | ||
833 | function update($new_instance, $old_instance) { | |
834 | $instance = $old_instance; | |
835 | $instance['title'] = strip_tags($new_instance['title']); | |
836 | return $instance; | |
837 | } | |
838 | ||
839 | function form($instance) { | |
840 | $title = esc_attr($instance['title']); | |
841 | ?> | |
842 | <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></label></p> | |
843 | <?php | |
844 | } | |
845 | ||
846 | } // class RelatedPostsThumbnailsWidget | |
847 | ||
848 | - | add_action( 'widgets_init', create_function( '', 'return register_widget("RelatedPostsThumbnailsWidget");' ) ); |
848 | + | add_action( 'widgets_init', create_function( '', 'return register_widget("RelatedPostsThumbnailsWidgetB");' ) ); |
849 | ?> |