Version Description
Download this release
Release Info
Developer | mitchoyoshitaka |
Plugin | Yet Another Related Posts Plugin (YARPP) |
Version | 3.5.3b2 |
Comparing to | |
See all releases |
Code changes from version 3.5.3b1 to 3.5.3b2
- cache-postmeta.php +3 -6
- cache-tables.php +4 -10
- class-cache.php +36 -37
- class-core.php +18 -9
- readme.txt +5 -1
- template-metabox.php +1 -1
- yarpp.php +2 -2
cache-postmeta.php
CHANGED
@@ -152,14 +152,11 @@ class YARPP_Cache_Postmeta extends YARPP_Cache {
|
|
152 |
}
|
153 |
}
|
154 |
|
155 |
-
// @return YARPP_NO_RELATED | YARPP_RELATED
|
156 |
-
|
|
|
157 |
global $wpdb;
|
158 |
|
159 |
-
// $reference_ID must be numeric
|
160 |
-
if ( !$reference_ID = absint($reference_ID) )
|
161 |
-
return YARPP_NOT_CACHED;
|
162 |
-
|
163 |
$original_related = $this->related($reference_ID);
|
164 |
$related = $wpdb->get_results($this->sql($reference_ID), ARRAY_A);
|
165 |
$new_related = wp_list_pluck( $related, 'ID' );
|
152 |
}
|
153 |
}
|
154 |
|
155 |
+
// @return YARPP_NO_RELATED | YARPP_RELATED
|
156 |
+
// @used by enforce
|
157 |
+
protected function update($reference_ID) {
|
158 |
global $wpdb;
|
159 |
|
|
|
|
|
|
|
|
|
160 |
$original_related = $this->related($reference_ID);
|
161 |
$related = $wpdb->get_results($this->sql($reference_ID), ARRAY_A);
|
162 |
$new_related = wp_list_pluck( $related, 'ID' );
|
cache-tables.php
CHANGED
@@ -186,7 +186,7 @@ class YARPP_Cache_Tables extends YARPP_Cache {
|
|
186 |
public function clear( $reference_IDs ) {
|
187 |
global $wpdb;
|
188 |
|
189 |
-
$reference_IDs = wp_parse_id_list( $
|
190 |
|
191 |
if ( !count($reference_IDs) )
|
192 |
return;
|
@@ -198,14 +198,11 @@ class YARPP_Cache_Tables extends YARPP_Cache {
|
|
198 |
wp_cache_delete( 'is_cached_' . $id, 'yarpp' );
|
199 |
}
|
200 |
|
201 |
-
// @return YARPP_RELATED | YARPP_NO_RELATED
|
202 |
-
|
|
|
203 |
global $wpdb;
|
204 |
|
205 |
-
// $reference_ID must be numeric
|
206 |
-
if ( !$reference_ID = absint($reference_ID) )
|
207 |
-
return YARPP_NOT_CACHED;
|
208 |
-
|
209 |
$original_related = (array) @$this->related($reference_ID);
|
210 |
|
211 |
if ( count($original_related) ) {
|
@@ -231,9 +228,6 @@ class YARPP_Cache_Tables extends YARPP_Cache {
|
|
231 |
} else {
|
232 |
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " (reference_ID,ID,score) values ($reference_ID,0,0) on duplicate key update date = now()");
|
233 |
|
234 |
-
//if (!$wpdb->rows_affected)
|
235 |
-
// return YARPP_NOT_CACHED;
|
236 |
-
|
237 |
// Clear the caches of those which are no longer related.
|
238 |
if ( count($original_related) )
|
239 |
$this->clear($original_related);
|
186 |
public function clear( $reference_IDs ) {
|
187 |
global $wpdb;
|
188 |
|
189 |
+
$reference_IDs = wp_parse_id_list( $reference_IDs );
|
190 |
|
191 |
if ( !count($reference_IDs) )
|
192 |
return;
|
198 |
wp_cache_delete( 'is_cached_' . $id, 'yarpp' );
|
199 |
}
|
200 |
|
201 |
+
// @return YARPP_RELATED | YARPP_NO_RELATED
|
202 |
+
// @used by enforce
|
203 |
+
protected function update($reference_ID) {
|
204 |
global $wpdb;
|
205 |
|
|
|
|
|
|
|
|
|
206 |
$original_related = (array) @$this->related($reference_ID);
|
207 |
|
208 |
if ( count($original_related) ) {
|
228 |
} else {
|
229 |
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " (reference_ID,ID,score) values ($reference_ID,0,0) on duplicate key update date = now()");
|
230 |
|
|
|
|
|
|
|
231 |
// Clear the caches of those which are no longer related.
|
232 |
if ( count($original_related) )
|
233 |
$this->clear($original_related);
|
class-cache.php
CHANGED
@@ -39,7 +39,11 @@ abstract class YARPP_Cache {
|
|
39 |
// Note: return value changed in 3.4
|
40 |
// return YARPP_NO_RELATED | YARPP_RELATED | YARPP_DONT_RUN | false if no good input
|
41 |
function enforce( $reference_ID, $force = false ) {
|
42 |
-
|
|
|
|
|
|
|
|
|
43 |
return false;
|
44 |
|
45 |
$status = $this->is_cached($reference_ID);
|
@@ -50,12 +54,9 @@ abstract class YARPP_Cache {
|
|
50 |
return YARPP_DONT_RUN;
|
51 |
|
52 |
// If not cached, process now:
|
53 |
-
if ( YARPP_NOT_CACHED == $status || $force )
|
54 |
-
$status = $this->update($reference_ID);
|
55 |
-
//
|
56 |
-
if ( YARPP_NOT_CACHED === $status )
|
57 |
-
return YARPP_NO_RELATED;
|
58 |
-
}
|
59 |
|
60 |
// There are no related posts
|
61 |
if ( YARPP_NO_RELATED === $status )
|
@@ -77,42 +78,43 @@ abstract class YARPP_Cache {
|
|
77 |
* POST STATUS INTERACTIONS
|
78 |
*/
|
79 |
|
80 |
-
function save_post( $post_ID, $post ) {
|
81 |
-
global $wpdb;
|
82 |
-
|
83 |
-
// @since 3.2: don't compute cache during import
|
84 |
-
// @since 3.4: don't compute on revisions
|
85 |
-
if (defined('WP_IMPORTING') || wp_is_post_revision($post_ID))
|
86 |
-
return;
|
87 |
-
|
88 |
-
// @since 3.4: simply clear the cache on save; don't recompute.
|
89 |
-
$this->clear((int) $post_ID);
|
90 |
-
}
|
91 |
-
|
92 |
// Clear the cache for this entry and for all posts which are "related" to it.
|
93 |
// New in 3.2: This is called when a post is deleted.
|
94 |
function delete_post( $post_ID ) {
|
95 |
// Clear the cache for this post.
|
96 |
$this->clear((int) $post_ID);
|
97 |
|
98 |
-
// Find all "peers" which list this post as a related post
|
99 |
-
$peers = $this->related(null, (int) $post_ID)
|
100 |
-
|
101 |
-
$this->clear($peers);
|
102 |
}
|
103 |
|
104 |
// New in 3.2.1: handle various post_status transitions
|
105 |
function transition_post_status( $new_status, $old_status, $post ) {
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
$this->clear($related);
|
115 |
}
|
|
|
|
|
|
|
116 |
}
|
117 |
|
118 |
function set_score_override_flag( $q ) {
|
@@ -576,14 +578,11 @@ class YARPP_Cache_Bypass extends YARPP_Cache {
|
|
576 |
remove_filter('posts_request',array(&$this,'demo_request_filter'));
|
577 |
}
|
578 |
|
579 |
-
// @return YARPP_NO_RELATED | YARPP_RELATED
|
580 |
-
|
|
|
581 |
global $wpdb;
|
582 |
|
583 |
-
// $reference_ID must be numeric
|
584 |
-
if ( !$reference_ID = absint($reference_ID) )
|
585 |
-
return YARPP_NOT_CACHED;
|
586 |
-
|
587 |
return YARPP_RELATED;
|
588 |
}
|
589 |
|
39 |
// Note: return value changed in 3.4
|
40 |
// return YARPP_NO_RELATED | YARPP_RELATED | YARPP_DONT_RUN | false if no good input
|
41 |
function enforce( $reference_ID, $force = false ) {
|
42 |
+
// @since 3.5.3: don't compute on revisions
|
43 |
+
if ( $the_post = wp_is_post_revision($reference_ID) )
|
44 |
+
$reference_ID = $the_post;
|
45 |
+
|
46 |
+
if ( !is_int( $reference_ID ) )
|
47 |
return false;
|
48 |
|
49 |
$status = $this->is_cached($reference_ID);
|
54 |
return YARPP_DONT_RUN;
|
55 |
|
56 |
// If not cached, process now:
|
57 |
+
if ( YARPP_NOT_CACHED == $status || $force )
|
58 |
+
$status = $this->update((int) $reference_ID);
|
59 |
+
// status now will be YARPP_NO_RELATED | YARPP_RELATED
|
|
|
|
|
|
|
60 |
|
61 |
// There are no related posts
|
62 |
if ( YARPP_NO_RELATED === $status )
|
78 |
* POST STATUS INTERACTIONS
|
79 |
*/
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
// Clear the cache for this entry and for all posts which are "related" to it.
|
82 |
// New in 3.2: This is called when a post is deleted.
|
83 |
function delete_post( $post_ID ) {
|
84 |
// Clear the cache for this post.
|
85 |
$this->clear((int) $post_ID);
|
86 |
|
87 |
+
// Find all "peers" which list this post as a related post and clear their caches
|
88 |
+
if ( $peers = $this->related(null, (int) $post_ID) )
|
89 |
+
$this->clear($peers);
|
|
|
90 |
}
|
91 |
|
92 |
// New in 3.2.1: handle various post_status transitions
|
93 |
function transition_post_status( $new_status, $old_status, $post ) {
|
94 |
+
$post_ID = $post->ID;
|
95 |
+
|
96 |
+
// @since 3.4: don't compute on revisions
|
97 |
+
// @since 3.5: compute on the parent instead
|
98 |
+
if ( $the_post = wp_is_post_revision($post_ID) )
|
99 |
+
$post_ID = $the_post;
|
100 |
+
|
101 |
+
// unpublish
|
102 |
+
if ( $old_status == 'publish' && $new_status != 'publish' ) {
|
103 |
+
// Find all "peers" which list this post as a related post and clear their caches
|
104 |
+
if ( $peers = $this->related(null, (int) $post_ID) )
|
105 |
+
$this->clear($peers);
|
106 |
+
}
|
107 |
+
|
108 |
+
// publish
|
109 |
+
if ( $old_status != 'publish' && $new_status == 'publish' ) {
|
110 |
+
// find everything which is related to this post, and clear them, so that this
|
111 |
+
// post might show up as related to them.
|
112 |
+
if ( $related = $this->related($post_ID, null) )
|
113 |
$this->clear($related);
|
114 |
}
|
115 |
+
|
116 |
+
// @since 3.4: simply clear the cache on save; don't recompute.
|
117 |
+
$this->clear((int) $post_ID);
|
118 |
}
|
119 |
|
120 |
function set_score_override_flag( $q ) {
|
578 |
remove_filter('posts_request',array(&$this,'demo_request_filter'));
|
579 |
}
|
580 |
|
581 |
+
// @return YARPP_NO_RELATED | YARPP_RELATED
|
582 |
+
// @used by enforce
|
583 |
+
protected function update($reference_ID) {
|
584 |
global $wpdb;
|
585 |
|
|
|
|
|
|
|
|
|
586 |
return YARPP_RELATED;
|
587 |
}
|
588 |
|
class-core.php
CHANGED
@@ -32,11 +32,10 @@ class YARPP {
|
|
32 |
|
33 |
register_activation_hook( __FILE__, array($this, 'activate') );
|
34 |
|
35 |
-
// update cache on save
|
36 |
-
add_action( 'save_post', array($this->cache, 'save_post'), 10, 2 );
|
37 |
// new in 3.2: update cache on delete
|
38 |
add_action( 'delete_post', array($this->cache, 'delete_post'), 10, 1 );
|
39 |
// new in 3.2.1: handle post_status transitions
|
|
|
40 |
add_action( 'transition_post_status', array($this->cache, 'transition_post_status'), 10, 3);
|
41 |
|
42 |
// automatic display hooks:
|
@@ -512,12 +511,16 @@ class YARPP {
|
|
512 |
|
513 |
$this->upgrade_check();
|
514 |
|
515 |
-
$reference_ID = ( null === $reference_ID || false === $reference_ID ) ?
|
516 |
-
get_the_ID() : absint($reference_ID);
|
517 |
-
|
518 |
// if we're already in a YARPP loop, stop now.
|
519 |
if ( $this->cache->is_yarpp_time() || $this->cache_bypass->is_yarpp_time() )
|
520 |
return false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
521 |
|
522 |
$this->setup_active_cache( $args );
|
523 |
|
@@ -598,6 +601,9 @@ class YARPP {
|
|
598 |
$this->upgrade_check();
|
599 |
|
600 |
$reference_ID = ( null === $reference_ID ) ? get_the_ID() : absint($reference_ID);
|
|
|
|
|
|
|
601 |
|
602 |
// if we're already in a YARPP loop, stop now.
|
603 |
if ( $this->cache->is_yarpp_time() || $this->cache_bypass->is_yarpp_time() )
|
@@ -636,12 +642,15 @@ class YARPP {
|
|
636 |
function related_exist($reference_ID = null, $args = array()) {
|
637 |
$this->upgrade_check();
|
638 |
|
639 |
-
$reference_ID = ( null === $reference_ID ) ? get_the_ID() : absint($reference_ID);
|
640 |
-
|
641 |
// if we're already in a YARPP loop, stop now.
|
642 |
if ( $this->cache->is_yarpp_time() || $this->cache_bypass->is_yarpp_time() )
|
643 |
return false;
|
644 |
|
|
|
|
|
|
|
|
|
|
|
645 |
$this->setup_active_cache( $args );
|
646 |
|
647 |
$cache_status = $this->active_cache->enforce($reference_ID);
|
@@ -819,8 +828,8 @@ class YARPP {
|
|
819 |
if (is_wp_error($remote))
|
820 |
return false;
|
821 |
|
822 |
-
$result = unserialize($remote['body'])
|
823 |
-
|
824 |
}
|
825 |
return $result;
|
826 |
}
|
32 |
|
33 |
register_activation_hook( __FILE__, array($this, 'activate') );
|
34 |
|
|
|
|
|
35 |
// new in 3.2: update cache on delete
|
36 |
add_action( 'delete_post', array($this->cache, 'delete_post'), 10, 1 );
|
37 |
// new in 3.2.1: handle post_status transitions
|
38 |
+
// new in 3.5.3: use transition_post_status instead of save_post hook
|
39 |
add_action( 'transition_post_status', array($this->cache, 'transition_post_status'), 10, 3);
|
40 |
|
41 |
// automatic display hooks:
|
511 |
|
512 |
$this->upgrade_check();
|
513 |
|
|
|
|
|
|
|
514 |
// if we're already in a YARPP loop, stop now.
|
515 |
if ( $this->cache->is_yarpp_time() || $this->cache_bypass->is_yarpp_time() )
|
516 |
return false;
|
517 |
+
|
518 |
+
$reference_ID = ( null === $reference_ID || false === $reference_ID ) ?
|
519 |
+
get_the_ID() : absint($reference_ID);
|
520 |
+
|
521 |
+
// @since 3.5.3: don't compute on revisions
|
522 |
+
if ( $the_post = wp_is_post_revision($reference_ID) )
|
523 |
+
$reference_ID = $the_post;
|
524 |
|
525 |
$this->setup_active_cache( $args );
|
526 |
|
601 |
$this->upgrade_check();
|
602 |
|
603 |
$reference_ID = ( null === $reference_ID ) ? get_the_ID() : absint($reference_ID);
|
604 |
+
// @since 3.5.3: don't compute on revisions
|
605 |
+
if ( $the_post = wp_is_post_revision($reference_ID) )
|
606 |
+
$reference_ID = $the_post;
|
607 |
|
608 |
// if we're already in a YARPP loop, stop now.
|
609 |
if ( $this->cache->is_yarpp_time() || $this->cache_bypass->is_yarpp_time() )
|
642 |
function related_exist($reference_ID = null, $args = array()) {
|
643 |
$this->upgrade_check();
|
644 |
|
|
|
|
|
645 |
// if we're already in a YARPP loop, stop now.
|
646 |
if ( $this->cache->is_yarpp_time() || $this->cache_bypass->is_yarpp_time() )
|
647 |
return false;
|
648 |
|
649 |
+
$reference_ID = ( null === $reference_ID ) ? get_the_ID() : absint($reference_ID);
|
650 |
+
// @since 3.5.3: don't compute on revisions
|
651 |
+
if ( $the_post = wp_is_post_revision($reference_ID) )
|
652 |
+
$reference_ID = $the_post;
|
653 |
+
|
654 |
$this->setup_active_cache( $args );
|
655 |
|
656 |
$cache_status = $this->active_cache->enforce($reference_ID);
|
828 |
if (is_wp_error($remote))
|
829 |
return false;
|
830 |
|
831 |
+
if ( $result = @unserialize($remote['body']) )
|
832 |
+
set_transient('yarpp_version_info', $result, 60*60*12);
|
833 |
}
|
834 |
return $result;
|
835 |
}
|
readme.txt
CHANGED
@@ -233,9 +233,13 @@ If you are a bilingual speaker of English and another language and an avid user
|
|
233 |
|
234 |
= 3.5.3 =
|
235 |
|
236 |
-
* Ensure
|
|
|
237 |
* Code cleanup:
|
238 |
* [Bugfix](https://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-latin1-instead-of-utf-8?replies=3): tables should be created using WordPress charset settings
|
|
|
|
|
|
|
239 |
|
240 |
= 3.5.2 =
|
241 |
* [Bugfix](http://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-bug-found-with-solution): fix an unfortunate typo which caused "no related posts" on many environments with non-MyISAM tables
|
233 |
|
234 |
= 3.5.3 =
|
235 |
|
236 |
+
* Ensure YARPP functions do not operate on post revisions
|
237 |
+
* Removed one way in which it would incorrectly return "no related posts"
|
238 |
* Code cleanup:
|
239 |
* [Bugfix](https://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-latin1-instead-of-utf-8?replies=3): tables should be created using WordPress charset settings
|
240 |
+
* YARPP_Cache_*::update methods are now protected
|
241 |
+
* Simplified some post status transition handling
|
242 |
+
* Ensure that `delete_post` hook receives relevant post ID information
|
243 |
|
244 |
= 3.5.2 =
|
245 |
* [Bugfix](http://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-bug-found-with-solution): fix an unfortunate typo which caused "no related posts" on many environments with non-MyISAM tables
|
template-metabox.php
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?php
|
2 |
global $yarpp;
|
3 |
|
4 |
-
$yarpp->cache->enforce($reference_ID, false); // enforce the cache, but don't force it
|
5 |
|
6 |
if ($yarpp->debug) {
|
7 |
$keywords = $yarpp->cache->get_keywords($reference_ID);
|
1 |
<?php
|
2 |
global $yarpp;
|
3 |
|
4 |
+
$yarpp->cache->enforce((int) $reference_ID, false); // enforce the cache, but don't force it
|
5 |
|
6 |
if ($yarpp->debug) {
|
7 |
$keywords = $yarpp->cache->get_keywords($reference_ID);
|
yarpp.php
CHANGED
@@ -3,13 +3,13 @@
|
|
3 |
Plugin Name: Yet Another Related Posts Plugin
|
4 |
Plugin URI: http://yarpp.org/
|
5 |
Description: Returns a list of related entries based on a unique algorithm for display on your blog and RSS feeds. Now with custom post type support!
|
6 |
-
Version: 3.5.
|
7 |
Author: mitcho (Michael Yoshitaka Erlewine)
|
8 |
Author URI: http://mitcho.com/
|
9 |
Donate link: http://tinyurl.com/donatetomitcho
|
10 |
*/
|
11 |
|
12 |
-
define('YARPP_VERSION', '3.5.
|
13 |
define('YARPP_DIR', dirname(__FILE__));
|
14 |
define('YARPP_NO_RELATED', ':(');
|
15 |
define('YARPP_RELATED', ':)');
|
3 |
Plugin Name: Yet Another Related Posts Plugin
|
4 |
Plugin URI: http://yarpp.org/
|
5 |
Description: Returns a list of related entries based on a unique algorithm for display on your blog and RSS feeds. Now with custom post type support!
|
6 |
+
Version: 3.5.3b2
|
7 |
Author: mitcho (Michael Yoshitaka Erlewine)
|
8 |
Author URI: http://mitcho.com/
|
9 |
Donate link: http://tinyurl.com/donatetomitcho
|
10 |
*/
|
11 |
|
12 |
+
define('YARPP_VERSION', '3.5.3b2');
|
13 |
define('YARPP_DIR', dirname(__FILE__));
|
14 |
define('YARPP_NO_RELATED', ':(');
|
15 |
define('YARPP_RELATED', ':)');
|