Version Description
Download this release
Release Info
Developer | mitchoyoshitaka |
Plugin | Yet Another Related Posts Plugin (YARPP) |
Version | 3.4b5 |
Comparing to | |
See all releases |
Code changes from version 3.4b4 to 3.4b5
- cache-postmeta.php +9 -6
- cache-tables.php +7 -7
- includes.php +431 -154
- intl.php +0 -58
- keywords.php +0 -134
- magic.php +29 -111
- options-meta-boxes.php +51 -6
- options.js +129 -0
- options.php +29 -149
- readme.txt +6 -2
- services.php +24 -23
- template-builtin.php +4 -3
- template-metabox.php +10 -6
- yarpp-templates/yarpp-template-thumbnail.php +2 -2
- yarpp-templates/yarpp-template-wpml.php +2 -2
- yarpp.php +6 -16
cache-postmeta.php
CHANGED
@@ -6,10 +6,13 @@ define('YARPP_POSTMETA_KEYWORDS_KEY','_yarpp_keywords');
|
|
6 |
define('YARPP_POSTMETA_RELATED_KEY', '_yarpp_related');
|
7 |
|
8 |
class YARPP_Cache_Postmeta {
|
|
|
9 |
// variables used for lookup
|
10 |
private $related_postdata = array();
|
11 |
private $related_IDs = array();
|
|
|
12 |
public $name = "postmeta";
|
|
|
13 |
private $yarpp_time = false;
|
14 |
public $demo_time = false;
|
15 |
public $score_override = false;
|
@@ -18,8 +21,8 @@ class YARPP_Cache_Postmeta {
|
|
18 |
/**
|
19 |
* SETUP/STATUS
|
20 |
*/
|
21 |
-
function
|
22 |
-
|
23 |
add_filter('posts_where',array(&$this,'where_filter'));
|
24 |
add_filter('posts_orderby',array(&$this,'orderby_filter'));
|
25 |
add_filter('posts_fields',array(&$this,'fields_filter'));
|
@@ -165,7 +168,7 @@ class YARPP_Cache_Postmeta {
|
|
165 |
|
166 |
// @return YARPP_NO_RELATED | YARPP_RELATED | YARPP_NOT_CACHED
|
167 |
public function update($reference_ID) {
|
168 |
-
global $wpdb
|
169 |
|
170 |
// $reference_ID must be numeric
|
171 |
if ( !$reference_ID = absint($reference_ID) )
|
@@ -177,7 +180,7 @@ class YARPP_Cache_Postmeta {
|
|
177 |
|
178 |
if ( count($new_related) ) {
|
179 |
update_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, $related);
|
180 |
-
if ($
|
181 |
|
182 |
// Clear the caches of any items which are no longer related or are newly related.
|
183 |
if (count($original_related)) {
|
@@ -240,8 +243,8 @@ class YARPP_Cache_Postmeta {
|
|
240 |
// @return (array) with body and title keywords
|
241 |
private function cache_keywords($ID) {
|
242 |
$keywords = array(
|
243 |
-
'body' =>
|
244 |
-
'title' =>
|
245 |
);
|
246 |
update_post_meta($ID, YARPP_POSTMETA_KEYWORDS_KEY, $keywords);
|
247 |
return $keywords;
|
6 |
define('YARPP_POSTMETA_RELATED_KEY', '_yarpp_related');
|
7 |
|
8 |
class YARPP_Cache_Postmeta {
|
9 |
+
|
10 |
// variables used for lookup
|
11 |
private $related_postdata = array();
|
12 |
private $related_IDs = array();
|
13 |
+
|
14 |
public $name = "postmeta";
|
15 |
+
|
16 |
private $yarpp_time = false;
|
17 |
public $demo_time = false;
|
18 |
public $score_override = false;
|
21 |
/**
|
22 |
* SETUP/STATUS
|
23 |
*/
|
24 |
+
function __construct( &$core ) {
|
25 |
+
parent::__construct( $core );
|
26 |
add_filter('posts_where',array(&$this,'where_filter'));
|
27 |
add_filter('posts_orderby',array(&$this,'orderby_filter'));
|
28 |
add_filter('posts_fields',array(&$this,'fields_filter'));
|
168 |
|
169 |
// @return YARPP_NO_RELATED | YARPP_RELATED | YARPP_NOT_CACHED
|
170 |
public function update($reference_ID) {
|
171 |
+
global $wpdb;
|
172 |
|
173 |
// $reference_ID must be numeric
|
174 |
if ( !$reference_ID = absint($reference_ID) )
|
180 |
|
181 |
if ( count($new_related) ) {
|
182 |
update_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, $related);
|
183 |
+
if ($this->core->debug) echo "<!--YARPP just set the cache for post $reference_ID-->";
|
184 |
|
185 |
// Clear the caches of any items which are no longer related or are newly related.
|
186 |
if (count($original_related)) {
|
243 |
// @return (array) with body and title keywords
|
244 |
private function cache_keywords($ID) {
|
245 |
$keywords = array(
|
246 |
+
'body' => $this->body_keywords($ID),
|
247 |
+
'title' => $this->title_keywords($ID)
|
248 |
);
|
249 |
update_post_meta($ID, YARPP_POSTMETA_KEYWORDS_KEY, $keywords);
|
250 |
return $keywords;
|
cache-tables.php
CHANGED
@@ -5,7 +5,7 @@ $yarpp_storage_class = 'YARPP_Cache_Tables';
|
|
5 |
define('YARPP_TABLES_RELATED_TABLE', 'yarpp_related_cache');
|
6 |
define('YARPP_TABLES_KEYWORDS_TABLE', 'yarpp_keyword_cache');
|
7 |
|
8 |
-
class YARPP_Cache_Tables {
|
9 |
public $name = "custom tables";
|
10 |
private $yarpp_time = false;
|
11 |
public $demo_time = false;
|
@@ -15,8 +15,8 @@ class YARPP_Cache_Tables {
|
|
15 |
/**
|
16 |
* SETUP/STATUS
|
17 |
*/
|
18 |
-
function
|
19 |
-
|
20 |
add_filter('posts_join',array(&$this,'join_filter'));
|
21 |
add_filter('posts_where',array(&$this,'where_filter'));
|
22 |
add_filter('posts_orderby',array(&$this,'orderby_filter'));
|
@@ -192,7 +192,7 @@ class YARPP_Cache_Tables {
|
|
192 |
|
193 |
// @return YARPP_RELATED | YARPP_NO_RELATED | YARPP_NOT_CACHED
|
194 |
public function update($reference_ID) {
|
195 |
-
global $wpdb
|
196 |
|
197 |
// $reference_ID must be numeric
|
198 |
if ( !$reference_ID = absint($reference_ID) )
|
@@ -209,7 +209,7 @@ class YARPP_Cache_Tables {
|
|
209 |
if ( $wpdb->rows_affected ) {
|
210 |
$new_related = $this->related($reference_ID);
|
211 |
|
212 |
-
if ($
|
213 |
|
214 |
// Clear the caches of any items which are no longer related or are newly related.
|
215 |
if (count($original_related)) {
|
@@ -268,8 +268,8 @@ class YARPP_Cache_Tables {
|
|
268 |
// @return (array) with body and title keywords
|
269 |
private function cache_keywords($ID) {
|
270 |
global $wpdb;
|
271 |
-
$body_terms =
|
272 |
-
$title_terms =
|
273 |
|
274 |
if (defined('DB_CHARSET') && DB_CHARSET) {
|
275 |
$wpdb->query('set names '.DB_CHARSET);
|
5 |
define('YARPP_TABLES_RELATED_TABLE', 'yarpp_related_cache');
|
6 |
define('YARPP_TABLES_KEYWORDS_TABLE', 'yarpp_keyword_cache');
|
7 |
|
8 |
+
class YARPP_Cache_Tables extends YARPP_Cache {
|
9 |
public $name = "custom tables";
|
10 |
private $yarpp_time = false;
|
11 |
public $demo_time = false;
|
15 |
/**
|
16 |
* SETUP/STATUS
|
17 |
*/
|
18 |
+
function __construct( &$core ) {
|
19 |
+
parent::__construct( $core );
|
20 |
add_filter('posts_join',array(&$this,'join_filter'));
|
21 |
add_filter('posts_where',array(&$this,'where_filter'));
|
22 |
add_filter('posts_orderby',array(&$this,'orderby_filter'));
|
192 |
|
193 |
// @return YARPP_RELATED | YARPP_NO_RELATED | YARPP_NOT_CACHED
|
194 |
public function update($reference_ID) {
|
195 |
+
global $wpdb;
|
196 |
|
197 |
// $reference_ID must be numeric
|
198 |
if ( !$reference_ID = absint($reference_ID) )
|
209 |
if ( $wpdb->rows_affected ) {
|
210 |
$new_related = $this->related($reference_ID);
|
211 |
|
212 |
+
if ($this->core->debug) echo "<!--YARPP just set the cache for post $reference_ID-->";
|
213 |
|
214 |
// Clear the caches of any items which are no longer related or are newly related.
|
215 |
if (count($original_related)) {
|
268 |
// @return (array) with body and title keywords
|
269 |
private function cache_keywords($ID) {
|
270 |
global $wpdb;
|
271 |
+
$body_terms = $this->body_keywords($ID);
|
272 |
+
$title_terms = $this->title_keywords($ID);
|
273 |
|
274 |
if (defined('DB_CHARSET') && DB_CHARSET) {
|
275 |
$wpdb->query('set names '.DB_CHARSET);
|
includes.php
CHANGED
@@ -1,8 +1,424 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
require_once(YARPP_DIR.'/magic.php');
|
4 |
-
require_once(YARPP_DIR.'/keywords.php');
|
5 |
-
require_once(YARPP_DIR.'/intl.php');
|
6 |
require_once(YARPP_DIR.'/services.php');
|
7 |
|
8 |
if ( !defined('WP_CONTENT_URL') )
|
@@ -41,9 +457,7 @@ $yarpp_value_options = array(
|
|
41 |
'title' => 2,
|
42 |
'body' => 2,
|
43 |
'categories' => 1, // changed default in 3.3
|
44 |
-
'tags' => 2
|
45 |
-
'distags' => '',
|
46 |
-
'discats' => '');
|
47 |
$yarpp_binary_options = array(
|
48 |
'past_only' => true,
|
49 |
'show_excerpt' => false,
|
@@ -61,120 +475,9 @@ $yarpp_binary_options = array(
|
|
61 |
'myisam_override' => false);
|
62 |
// These are options which, when updated, will trigger a clearing of the cache
|
63 |
$yarpp_clear_cache_options = array(
|
64 |
-
'
|
65 |
'tags');
|
66 |
|
67 |
-
function yarpp_enabled() {
|
68 |
-
global $wpdb, $yarpp_cache;
|
69 |
-
if ($yarpp_cache->is_enabled() === false)
|
70 |
-
return false;
|
71 |
-
$indexdata = $wpdb->get_results("show index from $wpdb->posts");
|
72 |
-
foreach ($indexdata as $index) {
|
73 |
-
if ($index->Key_name == 'yarpp_title')
|
74 |
-
return true;
|
75 |
-
}
|
76 |
-
return false;
|
77 |
-
}
|
78 |
-
|
79 |
-
function yarpp_activate() {
|
80 |
-
global $yarpp_version, $wpdb, $yarpp_cache;
|
81 |
-
|
82 |
-
$wpdb->get_results("show index from $wpdb->posts where Key_name='yarpp_title'");
|
83 |
-
if (!$wpdb->num_rows)
|
84 |
-
$wpdb->query("ALTER TABLE $wpdb->posts ADD FULLTEXT `yarpp_title` ( `post_title` )");
|
85 |
-
|
86 |
-
$wpdb->get_results("show index from $wpdb->posts where Key_name='yarpp_content'");
|
87 |
-
if (!$wpdb->num_rows)
|
88 |
-
$wpdb->query("ALTER TABLE $wpdb->posts ADD FULLTEXT `yarpp_content` ( `post_content` )");
|
89 |
-
|
90 |
-
if ( !yarpp_enabled() ) {
|
91 |
-
// If we are still not enabled, run the cache abstraction's setup method.
|
92 |
-
$yarpp_cache->setup();
|
93 |
-
// If we're still not enabled, give up.
|
94 |
-
if ( !yarpp_enabled() )
|
95 |
-
return 0;
|
96 |
-
}
|
97 |
-
|
98 |
-
if ( !get_option('yarpp_version') ) {
|
99 |
-
add_option( 'yarpp_version', YARPP_VERSION );
|
100 |
-
yarpp_version_info(true);
|
101 |
-
} else {
|
102 |
-
yarpp_upgrade_check();
|
103 |
-
}
|
104 |
-
|
105 |
-
return 1;
|
106 |
-
}
|
107 |
-
|
108 |
-
function yarpp_myisam_check() {
|
109 |
-
global $wpdb;
|
110 |
-
$tables = $wpdb->get_results("show table status like '{$wpdb->posts}'");
|
111 |
-
foreach ($tables as $table) {
|
112 |
-
if ($table->Engine == 'MyISAM') return true;
|
113 |
-
else return $table->Engine;
|
114 |
-
}
|
115 |
-
return 'UNKNOWN';
|
116 |
-
}
|
117 |
-
|
118 |
-
function yarpp_upgrade_check() {
|
119 |
-
global $yarpp_cache;
|
120 |
-
|
121 |
-
$last_version = get_option( 'yarpp_version' );
|
122 |
-
if (version_compare(YARPP_VERSION, $last_version) === 0)
|
123 |
-
return;
|
124 |
-
|
125 |
-
if ( $last_version && version_compare('3.4b2', $last_version) > 0 ) {
|
126 |
-
yarpp_upgrade_3_4();
|
127 |
-
}
|
128 |
-
|
129 |
-
$yarpp_cache->upgrade($last_version);
|
130 |
-
|
131 |
-
yarpp_version_info(true);
|
132 |
-
|
133 |
-
update_option('yarpp_version',YARPP_VERSION);
|
134 |
-
}
|
135 |
-
|
136 |
-
function yarpp_upgrade_3_4() {
|
137 |
-
global $wpdb, $yarpp_value_options, $yarpp_binary_options;
|
138 |
-
|
139 |
-
$yarpp_options = array();
|
140 |
-
foreach ( $yarpp_value_options as $key => $default ) {
|
141 |
-
$value = get_option( "yarpp_$key", null );
|
142 |
-
if ( is_null($value) )
|
143 |
-
continue;
|
144 |
-
|
145 |
-
// value options used to be stored with a bajillion slashes...
|
146 |
-
$value = stripslashes(stripslashes($value));
|
147 |
-
// value options used to be stored with a blank space at the end... don't ask.
|
148 |
-
$value = rtrim($value, ' ');
|
149 |
-
|
150 |
-
if ( is_int($default) )
|
151 |
-
$yarpp_options[$key] = absint($value);
|
152 |
-
else
|
153 |
-
$yarpp_options[$key] = $value;
|
154 |
-
}
|
155 |
-
foreach ( $yarpp_binary_options as $key => $default ) {
|
156 |
-
$value = get_option( "yarpp_$key", null );
|
157 |
-
if ( is_null($value) )
|
158 |
-
continue;
|
159 |
-
$yarpp_options[$key] = (boolean) $value;
|
160 |
-
}
|
161 |
-
|
162 |
-
// add the options directly first, then call set_option which will ensure defaults,
|
163 |
-
// in case any new options have been added.
|
164 |
-
update_option( 'yarpp', $yarpp_options );
|
165 |
-
yarpp_set_option( $yarpp_options );
|
166 |
-
|
167 |
-
$option_keys = array_keys( $yarpp_options );
|
168 |
-
// append some keys for options which are long deprecated:
|
169 |
-
$option_keys[] = 'ad_hoc_caching';
|
170 |
-
$option_keys[] = 'excerpt_len';
|
171 |
-
$option_keys[] = 'show_score';
|
172 |
-
if ( count($option_keys) ) {
|
173 |
-
$in = "('yarpp_" . join("', 'yarpp_", $option_keys) . "')";
|
174 |
-
$wpdb->query("delete from {$wpdb->options} where option_name in {$in}");
|
175 |
-
}
|
176 |
-
}
|
177 |
-
|
178 |
function yarpp_admin_menu() {
|
179 |
$hook = add_options_page(__('Related Posts (YARPP)','yarpp'),__('Related Posts (YARPP)','yarpp'), 'manage_options', 'yarpp', 'yarpp_options_page');
|
180 |
add_action("load-$hook",'yarpp_load_thickbox');
|
@@ -190,6 +493,7 @@ function yarpp_admin_enqueue() {
|
|
190 |
if (is_object($current_screen) && $current_screen->id == 'settings_page_yarpp') {
|
191 |
wp_enqueue_script( 'postbox' );
|
192 |
wp_enqueue_style( 'yarpp_options', plugins_url( 'options.css', __FILE__ ), array(), YARPP_VERSION );
|
|
|
193 |
}
|
194 |
}
|
195 |
|
@@ -203,9 +507,7 @@ function yarpp_settings_link($links, $file) {
|
|
203 |
|
204 |
function yarpp_load_thickbox() {
|
205 |
wp_enqueue_script( 'thickbox' );
|
206 |
-
|
207 |
-
wp_enqueue_style( 'thickbox' );
|
208 |
-
}
|
209 |
}
|
210 |
|
211 |
function yarpp_options_page() {
|
@@ -355,14 +657,8 @@ function yarpp_rss_excerpt($content) {
|
|
355 |
if (!defined('LOREMIPSUM'))
|
356 |
define('LOREMIPSUM','Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras tincidunt justo a urna. Ut turpis. Phasellus convallis, odio sit amet cursus convallis, eros orci scelerisque velit, ut sodales neque nisl at ante. Suspendisse metus. Curabitur auctor pede quis mi. Pellentesque lorem justo, condimentum ac, dapibus sit amet, ornare et, erat. Quisque velit. Etiam sodales dui feugiat neque suscipit bibendum. Integer mattis. Nullam et ante non sem commodo malesuada. Pellentesque ultrices fermentum lectus. Maecenas hendrerit neque ac est. Fusce tortor mi, tristique sed, cursus at, pellentesque non, dui. Suspendisse potenti.');
|
357 |
|
358 |
-
function yarpp_excerpt($content,$length) {
|
359 |
-
$content = strip_tags( (string) $content );
|
360 |
-
preg_replace('/([,;.-]+)\s*/','\1 ',$content);
|
361 |
-
return implode(' ',array_slice(preg_split('/\s+/',$content),0,$length)).'...';
|
362 |
-
}
|
363 |
-
|
364 |
function yarpp_set_option($options, $value = null) {
|
365 |
-
global $yarpp_clear_cache_options, $
|
366 |
|
367 |
$current_options = yarpp_get_option();
|
368 |
|
@@ -373,9 +669,10 @@ function yarpp_set_option($options, $value = null) {
|
|
373 |
$new_options = array_merge( $current_options, $options );
|
374 |
|
375 |
// new in 3.1: clear cache when updating certain settings.
|
376 |
-
$new_options_which_require_flush = array_intersect( array_keys(
|
377 |
-
if ( count($new_options_which_require_flush)
|
378 |
-
$
|
|
|
379 |
|
380 |
update_option( 'yarpp', $new_options );
|
381 |
}
|
@@ -386,6 +683,8 @@ function yarpp_get_option($option = null) {
|
|
386 |
$options = get_option( 'yarpp' );
|
387 |
// ensure defaults if not set:
|
388 |
$options = array_merge( $yarpp_value_options, $yarpp_binary_options, $options );
|
|
|
|
|
389 |
|
390 |
if ( is_null( $option ) )
|
391 |
return $options;
|
@@ -394,35 +693,13 @@ function yarpp_get_option($option = null) {
|
|
394 |
return null;
|
395 |
}
|
396 |
|
397 |
-
function yarpp_microtime_float() {
|
398 |
-
list($usec, $sec) = explode(" ", microtime());
|
399 |
-
return ((float)$usec + (float)$sec);
|
400 |
-
}
|
401 |
-
|
402 |
-
// new in 3.3: use PHP serialized format instead of JSON
|
403 |
-
function yarpp_version_info($enforce_cache = false) {
|
404 |
-
if (false === ($result = get_transient('yarpp_version_info')) || $enforce_cache) {
|
405 |
-
$version = YARPP_VERSION;
|
406 |
-
$remote = wp_remote_post("http://mitcho.com/code/yarpp/checkversion.php?format=php&version={$version}");
|
407 |
-
|
408 |
-
if (is_wp_error($remote))
|
409 |
-
return false;
|
410 |
-
|
411 |
-
$result = unserialize($remote['body']);
|
412 |
-
set_transient('yarpp_version_info', $result, 60*60*12);
|
413 |
-
}
|
414 |
-
return $result;
|
415 |
-
}
|
416 |
-
|
417 |
function yarpp_add_metabox() {
|
418 |
-
|
419 |
-
add_meta_box( 'yarpp_relatedposts', __( 'Related Posts' , 'yarpp') . ' <span class="postbox-title-action"><a href="' . esc_url( admin_url('options-general.php?page=yarpp') ) . '" class="edit-box open-box">' . __( 'Configure' ) . '</a></span>', 'yarpp_metabox', 'post', 'normal' );
|
420 |
-
}
|
421 |
}
|
422 |
function yarpp_metabox() {
|
423 |
global $post;
|
424 |
echo '<style>#yarpp_relatedposts h3 .postbox-title-action { right: 30px; top: 5px; position: absolute; padding: 0 }</style><div id="yarpp-related-posts">';
|
425 |
-
if ($post->ID)
|
426 |
yarpp_related(array('post'),array('limit'=>1000),true,false,'metabox');
|
427 |
else
|
428 |
echo "<p>".__("Related entries may be displayed once you save your entry",'yarpp').".</p>";
|
1 |
<?php
|
2 |
|
3 |
+
// new in 3.4: put everything YARPP into an object, expected to be a singleton global $yarpp
|
4 |
+
class YARPP {
|
5 |
+
|
6 |
+
public $debug = false;
|
7 |
+
|
8 |
+
public $cache;
|
9 |
+
private $storage_class;
|
10 |
+
|
11 |
+
function __construct() {
|
12 |
+
require_once(YARPP_DIR . '/cache-' . YARPP_CACHE_TYPE . '.php');
|
13 |
+
$this->storage_class = $yarpp_storage_class;
|
14 |
+
$this->cache = new $this->storage_class( $this );
|
15 |
+
|
16 |
+
// update cache on save
|
17 |
+
add_action('save_post', array($this->cache, 'save_post') );
|
18 |
+
// new in 3.2: update cache on delete
|
19 |
+
add_action('delete_post', array($this->cache, 'delete_post') );
|
20 |
+
// new in 3.2.1: handle post_status transitions
|
21 |
+
add_action('transition_post_status', array($this->cache, 'transition_post_status'), 10, 3);
|
22 |
+
}
|
23 |
+
|
24 |
+
/*
|
25 |
+
* INFRASTRUCTURE
|
26 |
+
*/
|
27 |
+
|
28 |
+
function enabled() {
|
29 |
+
global $wpdb;
|
30 |
+
if ( $this->cache->is_enabled() === false )
|
31 |
+
return false;
|
32 |
+
$indexdata = $wpdb->get_results("show index from $wpdb->posts");
|
33 |
+
foreach ($indexdata as $index) {
|
34 |
+
if ($index->Key_name == 'yarpp_title')
|
35 |
+
return true;
|
36 |
+
}
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
function activate() {
|
41 |
+
global $yarpp_version, $wpdb;
|
42 |
+
|
43 |
+
$wpdb->get_results("show index from $wpdb->posts where Key_name='yarpp_title'");
|
44 |
+
if (!$wpdb->num_rows)
|
45 |
+
$wpdb->query("ALTER TABLE $wpdb->posts ADD FULLTEXT `yarpp_title` ( `post_title` )");
|
46 |
+
|
47 |
+
$wpdb->get_results("show index from $wpdb->posts where Key_name='yarpp_content'");
|
48 |
+
if (!$wpdb->num_rows)
|
49 |
+
$wpdb->query("ALTER TABLE $wpdb->posts ADD FULLTEXT `yarpp_content` ( `post_content` )");
|
50 |
+
|
51 |
+
if ( !$this->enabled() ) {
|
52 |
+
// If we are still not enabled, run the cache abstraction's setup method.
|
53 |
+
$this->cache->setup();
|
54 |
+
// If we're still not enabled, give up.
|
55 |
+
if ( !$this->enabled() )
|
56 |
+
return 0;
|
57 |
+
}
|
58 |
+
|
59 |
+
if ( !get_option('yarpp_version') ) {
|
60 |
+
add_option( 'yarpp_version', YARPP_VERSION );
|
61 |
+
$this->version_info(true);
|
62 |
+
} else {
|
63 |
+
$this->upgrade_check();
|
64 |
+
}
|
65 |
+
|
66 |
+
return 1;
|
67 |
+
}
|
68 |
+
|
69 |
+
function myisam_check() {
|
70 |
+
global $wpdb;
|
71 |
+
$tables = $wpdb->get_results("show table status like '{$wpdb->posts}'");
|
72 |
+
foreach ($tables as $table) {
|
73 |
+
if ($table->Engine == 'MyISAM') return true;
|
74 |
+
else return $table->Engine;
|
75 |
+
}
|
76 |
+
return 'UNKNOWN';
|
77 |
+
}
|
78 |
+
|
79 |
+
function upgrade_check() {
|
80 |
+
$last_version = get_option( 'yarpp_version' );
|
81 |
+
if (version_compare(YARPP_VERSION, $last_version) === 0)
|
82 |
+
return;
|
83 |
+
|
84 |
+
if ( $last_version && version_compare('3.4b2', $last_version) > 0 )
|
85 |
+
$this->upgrade_3_4b2();
|
86 |
+
if ( $last_version && version_compare('3.4b5', $last_version) > 0 )
|
87 |
+
$this->upgrade_3_4b5();
|
88 |
+
|
89 |
+
$this->cache->upgrade($last_version);
|
90 |
+
|
91 |
+
$this->version_info(true);
|
92 |
+
|
93 |
+
update_option('yarpp_version',YARPP_VERSION);
|
94 |
+
}
|
95 |
+
|
96 |
+
function upgrade_3_4b2() {
|
97 |
+
global $wpdb, $yarpp_value_options, $yarpp_binary_options;
|
98 |
+
|
99 |
+
$yarpp_options = array();
|
100 |
+
foreach ( $yarpp_value_options as $key => $default ) {
|
101 |
+
$value = get_option( "yarpp_$key", null );
|
102 |
+
if ( is_null($value) )
|
103 |
+
continue;
|
104 |
+
|
105 |
+
// value options used to be stored with a bajillion slashes...
|
106 |
+
$value = stripslashes(stripslashes($value));
|
107 |
+
// value options used to be stored with a blank space at the end... don't ask.
|
108 |
+
$value = rtrim($value, ' ');
|
109 |
+
|
110 |
+
if ( is_int($default) )
|
111 |
+
$yarpp_options[$key] = absint($value);
|
112 |
+
else
|
113 |
+
$yarpp_options[$key] = $value;
|
114 |
+
}
|
115 |
+
foreach ( $yarpp_binary_options as $key => $default ) {
|
116 |
+
$value = get_option( "yarpp_$key", null );
|
117 |
+
if ( is_null($value) )
|
118 |
+
continue;
|
119 |
+
$yarpp_options[$key] = (boolean) $value;
|
120 |
+
}
|
121 |
+
|
122 |
+
// add the options directly first, then call set_option which will ensure defaults,
|
123 |
+
// in case any new options have been added.
|
124 |
+
update_option( 'yarpp', $yarpp_options );
|
125 |
+
yarpp_set_option( $yarpp_options );
|
126 |
+
|
127 |
+
$option_keys = array_keys( $yarpp_options );
|
128 |
+
// append some keys for options which are long deprecated:
|
129 |
+
$option_keys[] = 'ad_hoc_caching';
|
130 |
+
$option_keys[] = 'excerpt_len';
|
131 |
+
$option_keys[] = 'show_score';
|
132 |
+
if ( count($option_keys) ) {
|
133 |
+
$in = "('yarpp_" . join("', 'yarpp_", $option_keys) . "')";
|
134 |
+
$wpdb->query("delete from {$wpdb->options} where option_name in {$in}");
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
function upgrade_3_4b5() {
|
139 |
+
$options = yarpp_get_option();
|
140 |
+
$options['exclude'] = array(
|
141 |
+
'post_tag' => $options['distags'],
|
142 |
+
'category' => $options['discats']
|
143 |
+
);
|
144 |
+
unset( $options['distags'] );
|
145 |
+
unset( $options['discats'] );
|
146 |
+
update_option( 'yarpp', $options );
|
147 |
+
}
|
148 |
+
|
149 |
+
/*
|
150 |
+
* UTILS
|
151 |
+
*/
|
152 |
+
|
153 |
+
// new in 3.3: use PHP serialized format instead of JSON
|
154 |
+
function version_info( $enforce_cache = false ) {
|
155 |
+
if (false === ($result = get_transient('yarpp_version_info')) || $enforce_cache) {
|
156 |
+
$version = YARPP_VERSION;
|
157 |
+
$remote = wp_remote_post("http://mitcho.com/code/yarpp/checkversion.php?format=php&version={$version}");
|
158 |
+
|
159 |
+
if (is_wp_error($remote))
|
160 |
+
return false;
|
161 |
+
|
162 |
+
$result = unserialize($remote['body']);
|
163 |
+
set_transient('yarpp_version_info', $result, 60*60*12);
|
164 |
+
}
|
165 |
+
return $result;
|
166 |
+
}
|
167 |
+
|
168 |
+
}
|
169 |
+
|
170 |
+
abstract class YARPP_Cache {
|
171 |
+
|
172 |
+
public $core;
|
173 |
+
|
174 |
+
function __construct( &$core ) {
|
175 |
+
$this->core = &$core;
|
176 |
+
$this->name = __($this->name, 'yarpp');
|
177 |
+
}
|
178 |
+
|
179 |
+
// Note: return value changed in 3.4
|
180 |
+
// return YARPP_NO_RELATED | YARPP_RELATED | YARPP_DONT_RUN | false if no good input
|
181 |
+
function enforce($reference_ID, $force = false) {
|
182 |
+
if ( !$reference_ID = absint($reference_ID) )
|
183 |
+
return false;
|
184 |
+
|
185 |
+
$status = $this->is_cached($reference_ID);
|
186 |
+
$status = apply_filters( 'yarpp_cache_enforce_status', $status, $reference_ID );
|
187 |
+
|
188 |
+
// There's a stop signal:
|
189 |
+
if ( YARPP_DONT_RUN === $status )
|
190 |
+
return YARPP_DONT_RUN;
|
191 |
+
|
192 |
+
// If not cached, process now:
|
193 |
+
if ( YARPP_NOT_CACHED == $status || $force ) {
|
194 |
+
$status = $this->update($reference_ID);
|
195 |
+
// if still not cached, there's a problem, but for the time being return NO RELATED
|
196 |
+
if ( YARPP_NOT_CACHED === $status )
|
197 |
+
return YARPP_NO_RELATED;
|
198 |
+
}
|
199 |
+
|
200 |
+
// There are no related posts
|
201 |
+
if ( YARPP_NO_RELATED === $status )
|
202 |
+
return YARPP_NO_RELATED;
|
203 |
+
|
204 |
+
// There are results
|
205 |
+
return YARPP_RELATED;
|
206 |
+
}
|
207 |
+
|
208 |
+
/*
|
209 |
+
* POST STATUS INTERACTIONS
|
210 |
+
*/
|
211 |
+
|
212 |
+
function save_post($post_ID, $force=true) {
|
213 |
+
global $wpdb;
|
214 |
+
|
215 |
+
// new in 3.2: don't compute cache during import
|
216 |
+
if ( defined( 'WP_IMPORTING' ) )
|
217 |
+
return;
|
218 |
+
|
219 |
+
$sql = "select post_parent from $wpdb->posts where ID='$post_ID'";
|
220 |
+
$parent_ID = $wpdb->get_var($sql);
|
221 |
+
|
222 |
+
if ( $parent_ID != $post_ID && $parent_ID )
|
223 |
+
$post_ID = $parent_ID;
|
224 |
+
|
225 |
+
$this->enforce((int) $post_ID, $force);
|
226 |
+
}
|
227 |
+
|
228 |
+
// Clear the cache for this entry and for all posts which are "related" to it.
|
229 |
+
// New in 3.2: This is called when a post is deleted.
|
230 |
+
function delete_post($post_ID) {
|
231 |
+
// Clear the cache for this post.
|
232 |
+
$this->clear($post_ID);
|
233 |
+
|
234 |
+
// Find all "peers" which list this post as a related post.
|
235 |
+
$peers = $this->related(null, $post_ID);
|
236 |
+
// Clear the peers' caches.
|
237 |
+
$this->clear($peers);
|
238 |
+
}
|
239 |
+
|
240 |
+
// New in 3.2.1: handle various post_status transitions
|
241 |
+
function transition_post_status($new_status, $old_status, $post) {
|
242 |
+
switch ($new_status) {
|
243 |
+
case "draft":
|
244 |
+
$this->delete_post($post->ID);
|
245 |
+
break;
|
246 |
+
case "publish":
|
247 |
+
// find everything which is related to this post, and clear them, so that this
|
248 |
+
// post might show up as related to them.
|
249 |
+
$related = $this->related($post->ID, null);
|
250 |
+
$this->clear($related);
|
251 |
+
}
|
252 |
+
}
|
253 |
+
|
254 |
+
/*
|
255 |
+
* KEYWORDS
|
256 |
+
*/
|
257 |
+
|
258 |
+
public function title_keywords($ID,$max = 20) {
|
259 |
+
return $this->extract_keywords(get_the_title($ID),$max);
|
260 |
+
}
|
261 |
+
|
262 |
+
public function body_keywords( $ID, $max = 20 ) {
|
263 |
+
$post = get_post( $ID );
|
264 |
+
if ( empty($post) )
|
265 |
+
return '';
|
266 |
+
$content = $this->apply_filters_if_white( 'the_content', $post->post_content );
|
267 |
+
return $this->extract_keywords( $content, $max );
|
268 |
+
}
|
269 |
+
|
270 |
+
private function extract_keywords($html, $max = 20) {
|
271 |
+
|
272 |
+
$lang = 'en_US';
|
273 |
+
if ( defined('WPLANG') ) {
|
274 |
+
$lang = substr(WPLANG, 0, 2);
|
275 |
+
switch ( $lang ) {
|
276 |
+
case 'de':
|
277 |
+
$lang = 'de_DE';
|
278 |
+
case 'it':
|
279 |
+
$lang = 'it_IT';
|
280 |
+
case 'pl':
|
281 |
+
$lang = 'pl_PL';
|
282 |
+
case 'bg':
|
283 |
+
$lang = 'bg_BG';
|
284 |
+
case 'fr':
|
285 |
+
$lang = 'fr_FR';
|
286 |
+
case 'cs':
|
287 |
+
$lang = 'cs_CZ';
|
288 |
+
case 'nl':
|
289 |
+
$lang = 'nl_NL';
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
$words_file = YARPP_DIR . '/lang/words-' . $lang . '.php';
|
294 |
+
if ( file_exists($words_file) )
|
295 |
+
include( $words_file );
|
296 |
+
if ( !isset($overusedwords) )
|
297 |
+
$overusedwords = array();
|
298 |
+
|
299 |
+
// strip tags and html entities
|
300 |
+
$text = preg_replace('/&(#x[0-9a-f]+|#[0-9]+|[a-zA-Z]+);/', '', strip_tags($html) );
|
301 |
+
|
302 |
+
// 3.2.2: ignore soft hyphens
|
303 |
+
// Requires PHP 5: http://bugs.php.net/bug.php?id=25670
|
304 |
+
$softhyphen = html_entity_decode('­',ENT_NOQUOTES,'UTF-8');
|
305 |
+
$text = str_replace($softhyphen, '', $text);
|
306 |
+
|
307 |
+
$charset = get_option('blog_charset');
|
308 |
+
if ( function_exists('mb_split') && !empty($charset) ) {
|
309 |
+
mb_regex_encoding($charset);
|
310 |
+
$wordlist = mb_split('\s*\W+\s*', mb_strtolower($text, $charset));
|
311 |
+
} else
|
312 |
+
$wordlist = preg_split('%\s*\W+\s*%', strtolower($text));
|
313 |
+
|
314 |
+
// Build an array of the unique words and number of times they occur.
|
315 |
+
$tokens = array_count_values($wordlist);
|
316 |
+
|
317 |
+
// Remove the stop words from the list.
|
318 |
+
$overusedwords = apply_filters( 'yarpp_keywords_overused_words', $overusedwords );
|
319 |
+
if ( is_array($overusedwords) ) {
|
320 |
+
foreach ($overusedwords as $word) {
|
321 |
+
unset($tokens[$word]);
|
322 |
+
}
|
323 |
+
}
|
324 |
+
// Remove words which are only a letter
|
325 |
+
$mb_strlen_exists = function_exists('mb_strlen');
|
326 |
+
foreach (array_keys($tokens) as $word) {
|
327 |
+
if ($mb_strlen_exists)
|
328 |
+
if (mb_strlen($word) < 2) unset($tokens[$word]);
|
329 |
+
else
|
330 |
+
if (strlen($word) < 2) unset($tokens[$word]);
|
331 |
+
}
|
332 |
+
|
333 |
+
arsort($tokens, SORT_NUMERIC);
|
334 |
+
|
335 |
+
$types = array_keys($tokens);
|
336 |
+
|
337 |
+
if (count($types) > $max)
|
338 |
+
$types = array_slice($types, 0, $max);
|
339 |
+
return implode(' ', $types);
|
340 |
+
}
|
341 |
+
|
342 |
+
/* new in 2.0! apply_filters_if_white (previously apply_filters_without) now has a blacklist.
|
343 |
+
* It can be modified via the yarpp_blacklist and yarpp_blackmethods filters.
|
344 |
+
*/
|
345 |
+
/* blacklisted so far:
|
346 |
+
- diggZ-Et
|
347 |
+
- reddZ-Et
|
348 |
+
- dzoneZ-Et
|
349 |
+
- WP-Syntax
|
350 |
+
- Viper's Video Quicktags
|
351 |
+
- WP-CodeBox
|
352 |
+
- WP shortcodes
|
353 |
+
- WP Greet Box
|
354 |
+
//- Tweet This - could not reproduce problem.
|
355 |
+
*/
|
356 |
+
function white( $filter ) {
|
357 |
+
static $blacklist, $blackmethods;
|
358 |
+
|
359 |
+
if ( is_null($blacklist) || is_null($blackmethods) ) {
|
360 |
+
$yarpp_blacklist = array('yarpp_default', 'diggZEt_AddBut', 'reddZEt_AddBut', 'dzoneZEt_AddBut', 'wp_syntax_before_filter', 'wp_syntax_after_filter', 'wp_codebox_before_filter', 'wp_codebox_after_filter', 'do_shortcode');//,'insert_tweet_this'
|
361 |
+
$yarpp_blackmethods = array('addinlinejs', 'replacebbcode', 'filter_content');
|
362 |
+
|
363 |
+
$blacklist = (array) apply_filters( 'yarpp_blacklist', $yarpp_blacklist );
|
364 |
+
$blackmethods = (array) apply_filters( 'yarpp_blackmethods', $yarpp_blackmethods );
|
365 |
+
}
|
366 |
+
|
367 |
+
if ( is_array($filter) && in_array( $filter[1], $blackmethods ) )
|
368 |
+
return false;
|
369 |
+
return !in_array( $filter, $blacklist );
|
370 |
+
}
|
371 |
+
|
372 |
+
/* FYI, apply_filters_if_white was used here to avoid a loop in apply_filters('the_content') > yarpp_default() > yarpp_related() > current_post_keywords() > apply_filters('the_content').*/
|
373 |
+
function apply_filters_if_white($tag, $value) {
|
374 |
+
global $wp_filter, $merged_filters, $wp_current_filter;
|
375 |
+
|
376 |
+
$args = array();
|
377 |
+
|
378 |
+
// Do 'all' actions first
|
379 |
+
if ( isset($wp_filter['all']) ) {
|
380 |
+
$wp_current_filter[] = $tag;
|
381 |
+
$args = func_get_args();
|
382 |
+
_wp_call_all_hook($args);
|
383 |
+
}
|
384 |
+
|
385 |
+
if ( !isset($wp_filter[$tag]) ) {
|
386 |
+
if ( isset($wp_filter['all']) )
|
387 |
+
array_pop($wp_current_filter);
|
388 |
+
return $value;
|
389 |
+
}
|
390 |
+
|
391 |
+
if ( !isset($wp_filter['all']) )
|
392 |
+
$wp_current_filter[] = $tag;
|
393 |
+
|
394 |
+
// Sort
|
395 |
+
if ( !isset( $merged_filters[ $tag ] ) ) {
|
396 |
+
ksort($wp_filter[$tag]);
|
397 |
+
$merged_filters[ $tag ] = true;
|
398 |
+
}
|
399 |
+
|
400 |
+
reset( $wp_filter[ $tag ] );
|
401 |
+
|
402 |
+
if ( empty($args) )
|
403 |
+
$args = func_get_args();
|
404 |
+
|
405 |
+
do {
|
406 |
+
foreach( (array) current($wp_filter[$tag]) as $the_ )
|
407 |
+
if ( !is_null($the_['function'])
|
408 |
+
and $this->white($the_['function'])){ // HACK
|
409 |
+
$args[1] = $value;
|
410 |
+
$value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
|
411 |
+
}
|
412 |
+
|
413 |
+
} while ( next($wp_filter[$tag]) !== false );
|
414 |
+
|
415 |
+
array_pop( $wp_current_filter );
|
416 |
+
|
417 |
+
return $value;
|
418 |
+
}
|
419 |
+
}
|
420 |
+
|
421 |
require_once(YARPP_DIR.'/magic.php');
|
|
|
|
|
422 |
require_once(YARPP_DIR.'/services.php');
|
423 |
|
424 |
if ( !defined('WP_CONTENT_URL') )
|
457 |
'title' => 2,
|
458 |
'body' => 2,
|
459 |
'categories' => 1, // changed default in 3.3
|
460 |
+
'tags' => 2);
|
|
|
|
|
461 |
$yarpp_binary_options = array(
|
462 |
'past_only' => true,
|
463 |
'show_excerpt' => false,
|
475 |
'myisam_override' => false);
|
476 |
// These are options which, when updated, will trigger a clearing of the cache
|
477 |
$yarpp_clear_cache_options = array(
|
478 |
+
'show_pass_post','recent_only','threshold','title','body','categories',
|
479 |
'tags');
|
480 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
481 |
function yarpp_admin_menu() {
|
482 |
$hook = add_options_page(__('Related Posts (YARPP)','yarpp'),__('Related Posts (YARPP)','yarpp'), 'manage_options', 'yarpp', 'yarpp_options_page');
|
483 |
add_action("load-$hook",'yarpp_load_thickbox');
|
493 |
if (is_object($current_screen) && $current_screen->id == 'settings_page_yarpp') {
|
494 |
wp_enqueue_script( 'postbox' );
|
495 |
wp_enqueue_style( 'yarpp_options', plugins_url( 'options.css', __FILE__ ), array(), YARPP_VERSION );
|
496 |
+
wp_enqueue_script( 'yarpp_options', plugins_url( 'options.js', __FILE__ ), array('jquery'), YARPP_VERSION );
|
497 |
}
|
498 |
}
|
499 |
|
507 |
|
508 |
function yarpp_load_thickbox() {
|
509 |
wp_enqueue_script( 'thickbox' );
|
510 |
+
wp_enqueue_style( 'thickbox' );
|
|
|
|
|
511 |
}
|
512 |
|
513 |
function yarpp_options_page() {
|
657 |
if (!defined('LOREMIPSUM'))
|
658 |
define('LOREMIPSUM','Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras tincidunt justo a urna. Ut turpis. Phasellus convallis, odio sit amet cursus convallis, eros orci scelerisque velit, ut sodales neque nisl at ante. Suspendisse metus. Curabitur auctor pede quis mi. Pellentesque lorem justo, condimentum ac, dapibus sit amet, ornare et, erat. Quisque velit. Etiam sodales dui feugiat neque suscipit bibendum. Integer mattis. Nullam et ante non sem commodo malesuada. Pellentesque ultrices fermentum lectus. Maecenas hendrerit neque ac est. Fusce tortor mi, tristique sed, cursus at, pellentesque non, dui. Suspendisse potenti.');
|
659 |
|
|
|
|
|
|
|
|
|
|
|
|
|
660 |
function yarpp_set_option($options, $value = null) {
|
661 |
+
global $yarpp_clear_cache_options, $yarpp;
|
662 |
|
663 |
$current_options = yarpp_get_option();
|
664 |
|
669 |
$new_options = array_merge( $current_options, $options );
|
670 |
|
671 |
// new in 3.1: clear cache when updating certain settings.
|
672 |
+
$new_options_which_require_flush = array_intersect( array_keys( array_diff_assoc($options, $current_options) ), $yarpp_clear_cache_options );
|
673 |
+
if ( count($new_options_which_require_flush) ||
|
674 |
+
( isset($options['exclude']) && $options['exclude'] != $current_options['exclude'] ) )
|
675 |
+
$yarpp->cache->flush();
|
676 |
|
677 |
update_option( 'yarpp', $new_options );
|
678 |
}
|
683 |
$options = get_option( 'yarpp' );
|
684 |
// ensure defaults if not set:
|
685 |
$options = array_merge( $yarpp_value_options, $yarpp_binary_options, $options );
|
686 |
+
if ( !isset($options['exclude']) )
|
687 |
+
$options['exclude'] = array();
|
688 |
|
689 |
if ( is_null( $option ) )
|
690 |
return $options;
|
693 |
return null;
|
694 |
}
|
695 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
696 |
function yarpp_add_metabox() {
|
697 |
+
add_meta_box( 'yarpp_relatedposts', __( 'Related Posts' , 'yarpp') . ' <span class="postbox-title-action"><a href="' . esc_url( admin_url('options-general.php?page=yarpp') ) . '" class="edit-box open-box">' . __( 'Configure' ) . '</a></span>', 'yarpp_metabox', 'post', 'normal' );
|
|
|
|
|
698 |
}
|
699 |
function yarpp_metabox() {
|
700 |
global $post;
|
701 |
echo '<style>#yarpp_relatedposts h3 .postbox-title-action { right: 30px; top: 5px; position: absolute; padding: 0 }</style><div id="yarpp-related-posts">';
|
702 |
+
if ( $post->ID )
|
703 |
yarpp_related(array('post'),array('limit'=>1000),true,false,'metabox');
|
704 |
else
|
705 |
echo "<p>".__("Related entries may be displayed once you save your entry",'yarpp').".</p>";
|
intl.php
DELETED
@@ -1,58 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
include( YARPP_DIR . '/lang/words-' . word_file_lang() . '.php' );
|
4 |
-
|
5 |
-
function word_file_lang() {
|
6 |
-
if ( !defined('WPLANG') )
|
7 |
-
return 'en_US';
|
8 |
-
$lang = substr(WPLANG, 0, 2);
|
9 |
-
switch ( $lang ) {
|
10 |
-
case 'de':
|
11 |
-
return 'de_DE';
|
12 |
-
case 'it':
|
13 |
-
return 'it_IT';
|
14 |
-
case 'pl':
|
15 |
-
return 'pl_PL';
|
16 |
-
case 'bg':
|
17 |
-
return 'bg_BG';
|
18 |
-
case 'fr':
|
19 |
-
return 'fr_FR';
|
20 |
-
case 'cs':
|
21 |
-
return 'cs_CZ';
|
22 |
-
case 'nl':
|
23 |
-
return 'nl_NL';
|
24 |
-
default:
|
25 |
-
return 'en_US';
|
26 |
-
}
|
27 |
-
}
|
28 |
-
|
29 |
-
function paypal_directory() {
|
30 |
-
if ( !defined('WPLANG') )
|
31 |
-
return 'en_US/';
|
32 |
-
$lang = substr(WPLANG, 0, 2);
|
33 |
-
switch ( $lang ) {
|
34 |
-
case 'fr':
|
35 |
-
return 'fr_FR/';
|
36 |
-
case 'de':
|
37 |
-
return 'de_DE/';
|
38 |
-
case 'it':
|
39 |
-
return 'it_IT/';
|
40 |
-
case 'ja':
|
41 |
-
return 'ja_JP/';
|
42 |
-
case 'es':
|
43 |
-
return 'es_XC/';
|
44 |
-
case 'nl':
|
45 |
-
return 'nl_NL/';
|
46 |
-
case 'pl':
|
47 |
-
return 'pl_PL/';
|
48 |
-
case 'zh':
|
49 |
-
if (preg_match("/^zh_(HK|TW)/i",WPLANG))
|
50 |
-
return 'zh_HK/';
|
51 |
-
// actually zh_CN, but interpret as default zh:
|
52 |
-
return 'zh_XC/';
|
53 |
-
default:
|
54 |
-
return 'en_US/';
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
keywords.php
DELETED
@@ -1,134 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
function yarpp_extract_keywords($html, $max = 20) {
|
4 |
-
global $overusedwords;
|
5 |
-
|
6 |
-
// strip tags and html entities
|
7 |
-
$text = preg_replace('/&(#x[0-9a-f]+|#[0-9]+|[a-zA-Z]+);/', '', strip_tags($html) );
|
8 |
-
|
9 |
-
// 3.2.2: ignore soft hyphens
|
10 |
-
// Requires PHP 5: http://bugs.php.net/bug.php?id=25670
|
11 |
-
$softhyphen = html_entity_decode('­',ENT_NOQUOTES,'UTF-8');
|
12 |
-
$text = str_replace($softhyphen, '', $text);
|
13 |
-
|
14 |
-
$charset = get_option('blog_charset');
|
15 |
-
if ( function_exists('mb_split') && !empty($charset) ) {
|
16 |
-
mb_regex_encoding($charset);
|
17 |
-
$wordlist = mb_split('\s*\W+\s*', mb_strtolower($text, $charset));
|
18 |
-
} else
|
19 |
-
$wordlist = preg_split('%\s*\W+\s*%', strtolower($text));
|
20 |
-
|
21 |
-
// Build an array of the unique words and number of times they occur.
|
22 |
-
$tokens = array_count_values($wordlist);
|
23 |
-
|
24 |
-
// Remove the stop words from the list.
|
25 |
-
foreach ($overusedwords as $word) {
|
26 |
-
unset($tokens[$word]);
|
27 |
-
}
|
28 |
-
// Remove words which are only a letter
|
29 |
-
$mb_strlen_exists = function_exists('mb_strlen');
|
30 |
-
foreach (array_keys($tokens) as $word) {
|
31 |
-
if ($mb_strlen_exists)
|
32 |
-
if (mb_strlen($word) < 2) unset($tokens[$word]);
|
33 |
-
else
|
34 |
-
if (strlen($word) < 2) unset($tokens[$word]);
|
35 |
-
}
|
36 |
-
|
37 |
-
arsort($tokens, SORT_NUMERIC);
|
38 |
-
|
39 |
-
$types = array_keys($tokens);
|
40 |
-
|
41 |
-
if (count($types) > $max)
|
42 |
-
$types = array_slice($types, 0, $max);
|
43 |
-
return implode(' ', $types);
|
44 |
-
}
|
45 |
-
|
46 |
-
function post_title_keywords($ID,$max = 20) {
|
47 |
-
return yarpp_extract_keywords(get_the_title($ID),$max);
|
48 |
-
}
|
49 |
-
|
50 |
-
function post_body_keywords( $ID, $max = 20 ) {
|
51 |
-
$post = get_post( $ID );
|
52 |
-
if ( empty($post) )
|
53 |
-
return '';
|
54 |
-
$content = apply_filters_if_white( 'the_content', $post->post_content );
|
55 |
-
return yarpp_extract_keywords( $content, $max );
|
56 |
-
}
|
57 |
-
|
58 |
-
/* new in 2.0! apply_filters_if_white (previously apply_filters_without) now has a blacklist.
|
59 |
-
* It can be modified via the yarpp_blacklist and yarpp_blackmethods filters.
|
60 |
-
*/
|
61 |
-
/* blacklisted so far:
|
62 |
-
- diggZ-Et
|
63 |
-
- reddZ-Et
|
64 |
-
- dzoneZ-Et
|
65 |
-
- WP-Syntax
|
66 |
-
- Viper's Video Quicktags
|
67 |
-
- WP-CodeBox
|
68 |
-
- WP shortcodes
|
69 |
-
- WP Greet Box
|
70 |
-
//- Tweet This - could not reproduce problem.
|
71 |
-
*/
|
72 |
-
function yarpp_white( $filter ) {
|
73 |
-
static $blacklist, $blackmethods;
|
74 |
-
|
75 |
-
if ( is_null($blacklist) || is_null($blackmethods) ) {
|
76 |
-
$yarpp_blacklist = array('yarpp_default', 'diggZEt_AddBut', 'reddZEt_AddBut', 'dzoneZEt_AddBut', 'wp_syntax_before_filter', 'wp_syntax_after_filter', 'wp_codebox_before_filter', 'wp_codebox_after_filter', 'do_shortcode');//,'insert_tweet_this'
|
77 |
-
$yarpp_blackmethods = array('addinlinejs', 'replacebbcode', 'filter_content');
|
78 |
-
|
79 |
-
$blacklist = (array) apply_filters( 'yarpp_blacklist', $yarpp_blacklist );
|
80 |
-
$blackmethods = (array) apply_filters( 'yarpp_blackmethods', $yarpp_blackmethods );
|
81 |
-
}
|
82 |
-
|
83 |
-
if ( is_array($filter) && in_array( $filter[1], $blackmethods ) )
|
84 |
-
return false;
|
85 |
-
return !in_array( $filter, $blacklist );
|
86 |
-
}
|
87 |
-
|
88 |
-
/* FYI, apply_filters_if_white was used here to avoid a loop in apply_filters('the_content') > yarpp_default() > yarpp_related() > current_post_keywords() > apply_filters('the_content').*/
|
89 |
-
function apply_filters_if_white($tag, $value) {
|
90 |
-
global $wp_filter, $merged_filters, $wp_current_filter;
|
91 |
-
|
92 |
-
$args = array();
|
93 |
-
|
94 |
-
// Do 'all' actions first
|
95 |
-
if ( isset($wp_filter['all']) ) {
|
96 |
-
$wp_current_filter[] = $tag;
|
97 |
-
$args = func_get_args();
|
98 |
-
_wp_call_all_hook($args);
|
99 |
-
}
|
100 |
-
|
101 |
-
if ( !isset($wp_filter[$tag]) ) {
|
102 |
-
if ( isset($wp_filter['all']) )
|
103 |
-
array_pop($wp_current_filter);
|
104 |
-
return $value;
|
105 |
-
}
|
106 |
-
|
107 |
-
if ( !isset($wp_filter['all']) )
|
108 |
-
$wp_current_filter[] = $tag;
|
109 |
-
|
110 |
-
// Sort
|
111 |
-
if ( !isset( $merged_filters[ $tag ] ) ) {
|
112 |
-
ksort($wp_filter[$tag]);
|
113 |
-
$merged_filters[ $tag ] = true;
|
114 |
-
}
|
115 |
-
|
116 |
-
reset( $wp_filter[ $tag ] );
|
117 |
-
|
118 |
-
if ( empty($args) )
|
119 |
-
$args = func_get_args();
|
120 |
-
|
121 |
-
do {
|
122 |
-
foreach( (array) current($wp_filter[$tag]) as $the_ )
|
123 |
-
if ( !is_null($the_['function'])
|
124 |
-
and yarpp_white($the_['function'])){ // HACK
|
125 |
-
$args[1] = $value;
|
126 |
-
$value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
|
127 |
-
}
|
128 |
-
|
129 |
-
} while ( next($wp_filter[$tag]) !== false );
|
130 |
-
|
131 |
-
array_pop( $wp_current_filter );
|
132 |
-
|
133 |
-
return $value;
|
134 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
magic.php
CHANGED
@@ -3,31 +3,31 @@
|
|
3 |
//=TEMPLATING/DISPLAY===========
|
4 |
|
5 |
function yarpp_set_score_override_flag($q) {
|
6 |
-
global $
|
7 |
-
if ($
|
8 |
-
$
|
9 |
|
10 |
if (!empty($q->query_vars['showposts'])) {
|
11 |
-
$
|
12 |
} else {
|
13 |
-
$
|
14 |
}
|
15 |
} else {
|
16 |
-
$
|
17 |
-
$
|
18 |
}
|
19 |
}
|
20 |
|
21 |
//=CACHING===========
|
22 |
|
23 |
function yarpp_sql( $reference_ID = false ) {
|
24 |
-
global $wpdb, $post, $
|
25 |
|
26 |
if ( is_object($post) && !$reference_ID ) {
|
27 |
$reference_ID = $post->ID;
|
28 |
}
|
29 |
|
30 |
-
$options = array( 'threshold', 'show_pass_post', 'past_only', 'body', 'title', 'tags', 'categories', '
|
31 |
$yarpp_options = yarpp_get_option();
|
32 |
// mask it so we only get the ones specified in $options
|
33 |
$optvals = array_intersect_key($yarpp_options, array_flip($options));
|
@@ -36,7 +36,7 @@ function yarpp_sql( $reference_ID = false ) {
|
|
36 |
$limit = max(yarpp_get_option('limit'), yarpp_get_option('rss_limit'));
|
37 |
|
38 |
// Fetch keywords
|
39 |
-
$keywords = $
|
40 |
|
41 |
// get weights
|
42 |
$weights = array(
|
@@ -48,12 +48,7 @@ function yarpp_sql( $reference_ID = false ) {
|
|
48 |
$totalweight = array_sum( array_values( $weights ) );
|
49 |
|
50 |
// get disallowed categories and tags
|
51 |
-
$disterms =
|
52 |
-
array_merge(
|
53 |
-
explode(',',$discats),
|
54 |
-
explode(',',$distags)
|
55 |
-
),
|
56 |
-
'is_numeric');
|
57 |
$usedisterms = count($disterms);
|
58 |
$disterms = implode(',', $disterms);
|
59 |
|
@@ -134,7 +129,7 @@ function yarpp_sql( $reference_ID = false ) {
|
|
134 |
// use it or not.
|
135 |
$newsql = "($newsql) union (".str_replace("post_type = 'post'","post_type = 'page'",$newsql).")";
|
136 |
|
137 |
-
if ($
|
138 |
return $newsql;
|
139 |
}
|
140 |
|
@@ -143,20 +138,20 @@ function yarpp_sql( $reference_ID = false ) {
|
|
143 |
/* new in 3.0! new query-based approach: EXTREMELY HACKY! */
|
144 |
|
145 |
function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'website') {
|
146 |
-
global $wp_query, $pagenow, $
|
147 |
|
148 |
-
|
149 |
|
150 |
if ($domain == 'demo_web' || $domain == 'demo_rss') {
|
151 |
-
if ($
|
152 |
return false;
|
153 |
} else {
|
154 |
-
if ($
|
155 |
return false;
|
156 |
if ( !$reference_ID )
|
157 |
$reference_ID = get_the_ID();
|
158 |
|
159 |
-
$cache_status =
|
160 |
|
161 |
// If cache status is YARPP_DONT_RUN, end here without returning or echoing anything.
|
162 |
if ( YARPP_DONT_RUN == $cache_status )
|
@@ -194,16 +189,16 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
194 |
|
195 |
if ($domain == 'demo_web' || $domain == 'demo_rss') {
|
196 |
// It's DEMO TIME!
|
197 |
-
$
|
198 |
if ($domain == 'demo_web')
|
199 |
-
$
|
200 |
else
|
201 |
-
$
|
202 |
} else if ( YARPP_NO_RELATED == $cache_status ) {
|
203 |
// There are no results, so no yarpp time for us... :'(
|
204 |
} else {
|
205 |
// Get ready for YARPP TIME!
|
206 |
-
$
|
207 |
}
|
208 |
|
209 |
// so we can return to normal later
|
@@ -247,11 +242,11 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
247 |
}
|
248 |
|
249 |
if ( 'demo_web' == $domain || 'demo_rss' == $domain ) {
|
250 |
-
$
|
251 |
} else if ( YARPP_NO_RELATED == $cache_status ) {
|
252 |
// Uh, do nothing. Stay very still.
|
253 |
} else {
|
254 |
-
$
|
255 |
}
|
256 |
|
257 |
// restore the older wp_query.
|
@@ -266,108 +261,31 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
266 |
}
|
267 |
|
268 |
function yarpp_related_exist($type,$args,$reference_ID=false) {
|
269 |
-
global $post, $
|
270 |
|
271 |
-
|
272 |
|
273 |
if (is_object($post) && !$reference_ID)
|
274 |
$reference_ID = $post->ID;
|
275 |
|
276 |
-
if ($
|
277 |
return false;
|
278 |
|
279 |
if (yarpp_get_option('cross_relate'))
|
280 |
$type = array('post','page');
|
281 |
|
282 |
-
$cache_status =
|
283 |
|
284 |
if ( YARPP_NO_RELATED == $cache_status )
|
285 |
return false;
|
286 |
|
287 |
-
$
|
288 |
$related_query = new WP_Query();
|
289 |
-
// Note: why is this 10000? Should we just make it 1?
|
290 |
$related_query->query(array('p'=>$reference_ID,'showposts'=>1,'post_type'=>$type));
|
291 |
$return = $related_query->have_posts();
|
292 |
unset($related_query);
|
293 |
-
$
|
294 |
|
295 |
return $return;
|
296 |
}
|
297 |
|
298 |
-
function yarpp_save_cache($post_ID, $force=true) {
|
299 |
-
global $wpdb;
|
300 |
-
|
301 |
-
// new in 3.2: don't compute cache during import
|
302 |
-
if ( defined( 'WP_IMPORTING' ) )
|
303 |
-
return;
|
304 |
-
|
305 |
-
$sql = "select post_parent from $wpdb->posts where ID='$post_ID'";
|
306 |
-
$parent_ID = $wpdb->get_var($sql);
|
307 |
-
|
308 |
-
if ($parent_ID != $post_ID and $parent_ID)
|
309 |
-
$post_ID = $parent_ID;
|
310 |
-
|
311 |
-
yarpp_cache_enforce((int) $post_ID, $force);
|
312 |
-
}
|
313 |
-
|
314 |
-
// Clear the cache for this entry and for all posts which are "related" to it.
|
315 |
-
// New in 3.2: This is called when a post is deleted.
|
316 |
-
function yarpp_delete_cache($post_ID) {
|
317 |
-
global $yarpp_cache;
|
318 |
-
|
319 |
-
// Clear the cache for this post.
|
320 |
-
$yarpp_cache->clear($post_ID);
|
321 |
-
|
322 |
-
// Find all "peers" which list this post as a related post.
|
323 |
-
$peers = $yarpp_cache->related(null, $post_ID);
|
324 |
-
// Clear the peers' caches.
|
325 |
-
$yarpp_cache->clear($peers);
|
326 |
-
}
|
327 |
-
|
328 |
-
// New in 3.2.1: handle various post_status transitions
|
329 |
-
function yarpp_status_transition($new_status, $old_status, $post) {
|
330 |
-
global $yarpp_cache;
|
331 |
-
switch ($new_status) {
|
332 |
-
case "draft":
|
333 |
-
yarpp_delete_cache($post->ID);
|
334 |
-
break;
|
335 |
-
case "publish":
|
336 |
-
// find everything which is related to this post, and clear them, so that this
|
337 |
-
// post might show up as related to them.
|
338 |
-
$related = $yarpp_cache->related($post->ID, null);
|
339 |
-
$yarpp_cache->clear($related);
|
340 |
-
}
|
341 |
-
}
|
342 |
-
|
343 |
-
// Note: return value changed in 3.4
|
344 |
-
// return YARPP_NO_RELATED | YARPP_RELATED | YARPP_DONT_RUN | false if no good input
|
345 |
-
function yarpp_cache_enforce($reference_ID, $force = false) {
|
346 |
-
global $yarpp_debug, $yarpp_cache;
|
347 |
-
|
348 |
-
if ( !$reference_ID = absint($reference_ID) )
|
349 |
-
return false;
|
350 |
-
|
351 |
-
$status = $yarpp_cache->is_cached($reference_ID);
|
352 |
-
$status = apply_filters( 'yarpp_cache_enforce_status', $status, $reference_ID );
|
353 |
-
|
354 |
-
// There's a stop signal:
|
355 |
-
if ( YARPP_DONT_RUN === $status )
|
356 |
-
return YARPP_DONT_RUN;
|
357 |
-
|
358 |
-
// If not cached, process now:
|
359 |
-
if ( YARPP_NOT_CACHED == $status || $force ) {
|
360 |
-
$status = $yarpp_cache->update($reference_ID);
|
361 |
-
// if still not cached, there's a problem, but for the time being return NO RELATED
|
362 |
-
if ( YARPP_NOT_CACHED === $status )
|
363 |
-
return YARPP_NO_RELATED;
|
364 |
-
}
|
365 |
-
|
366 |
-
// There are no related posts
|
367 |
-
if ( YARPP_NO_RELATED === $status )
|
368 |
-
return YARPP_NO_RELATED;
|
369 |
-
|
370 |
-
// There are results
|
371 |
-
return YARPP_RELATED;
|
372 |
-
}
|
373 |
-
|
3 |
//=TEMPLATING/DISPLAY===========
|
4 |
|
5 |
function yarpp_set_score_override_flag($q) {
|
6 |
+
global $yarpp;
|
7 |
+
if ( $yarpp->cache->is_yarpp_time() ) {
|
8 |
+
$yarpp->cache->score_override = ($q->query_vars['orderby'] == 'score');
|
9 |
|
10 |
if (!empty($q->query_vars['showposts'])) {
|
11 |
+
$yarpp->cache->online_limit = $q->query_vars['showposts'];
|
12 |
} else {
|
13 |
+
$yarpp->cache->online_limit = false;
|
14 |
}
|
15 |
} else {
|
16 |
+
$yarpp->cache->score_override = false;
|
17 |
+
$yarpp->cache->online_limit = false;
|
18 |
}
|
19 |
}
|
20 |
|
21 |
//=CACHING===========
|
22 |
|
23 |
function yarpp_sql( $reference_ID = false ) {
|
24 |
+
global $wpdb, $post, $yarpp;
|
25 |
|
26 |
if ( is_object($post) && !$reference_ID ) {
|
27 |
$reference_ID = $post->ID;
|
28 |
}
|
29 |
|
30 |
+
$options = array( 'threshold', 'show_pass_post', 'past_only', 'body', 'title', 'tags', 'categories', 'exclude', 'recent_only', 'recent_number', 'recent_units');
|
31 |
$yarpp_options = yarpp_get_option();
|
32 |
// mask it so we only get the ones specified in $options
|
33 |
$optvals = array_intersect_key($yarpp_options, array_flip($options));
|
36 |
$limit = max(yarpp_get_option('limit'), yarpp_get_option('rss_limit'));
|
37 |
|
38 |
// Fetch keywords
|
39 |
+
$keywords = $yarpp->cache->get_keywords($reference_ID);
|
40 |
|
41 |
// get weights
|
42 |
$weights = array(
|
48 |
$totalweight = array_sum( array_values( $weights ) );
|
49 |
|
50 |
// get disallowed categories and tags
|
51 |
+
$disterms = wp_parse_id_list($exclude['category'] . ',' . $exclude['post_tag']);
|
|
|
|
|
|
|
|
|
|
|
52 |
$usedisterms = count($disterms);
|
53 |
$disterms = implode(',', $disterms);
|
54 |
|
129 |
// use it or not.
|
130 |
$newsql = "($newsql) union (".str_replace("post_type = 'post'","post_type = 'page'",$newsql).")";
|
131 |
|
132 |
+
if ($yarpp->debug) echo "<!--$newsql-->";
|
133 |
return $newsql;
|
134 |
}
|
135 |
|
138 |
/* new in 3.0! new query-based approach: EXTREMELY HACKY! */
|
139 |
|
140 |
function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'website') {
|
141 |
+
global $yarpp, $wp_query, $pagenow, $yarpp;
|
142 |
|
143 |
+
$yarpp->upgrade_check();
|
144 |
|
145 |
if ($domain == 'demo_web' || $domain == 'demo_rss') {
|
146 |
+
if ($yarpp->cache->demo_time) // if we're already in a YARPP loop, stop now.
|
147 |
return false;
|
148 |
} else {
|
149 |
+
if ($yarpp->cache->is_yarpp_time()) // if we're already in a YARPP loop, stop now.
|
150 |
return false;
|
151 |
if ( !$reference_ID )
|
152 |
$reference_ID = get_the_ID();
|
153 |
|
154 |
+
$cache_status = $yarpp->cache->enforce($reference_ID);
|
155 |
|
156 |
// If cache status is YARPP_DONT_RUN, end here without returning or echoing anything.
|
157 |
if ( YARPP_DONT_RUN == $cache_status )
|
189 |
|
190 |
if ($domain == 'demo_web' || $domain == 'demo_rss') {
|
191 |
// It's DEMO TIME!
|
192 |
+
$yarpp->cache->demo_time = true;
|
193 |
if ($domain == 'demo_web')
|
194 |
+
$yarpp->cache->demo_limit = yarpp_get_option('limit');
|
195 |
else
|
196 |
+
$yarpp->cache->demo_limit = yarpp_get_option('rss_limit');
|
197 |
} else if ( YARPP_NO_RELATED == $cache_status ) {
|
198 |
// There are no results, so no yarpp time for us... :'(
|
199 |
} else {
|
200 |
// Get ready for YARPP TIME!
|
201 |
+
$yarpp->cache->begin_yarpp_time($reference_ID);
|
202 |
}
|
203 |
|
204 |
// so we can return to normal later
|
242 |
}
|
243 |
|
244 |
if ( 'demo_web' == $domain || 'demo_rss' == $domain ) {
|
245 |
+
$yarpp->cache->demo_time = false;
|
246 |
} else if ( YARPP_NO_RELATED == $cache_status ) {
|
247 |
// Uh, do nothing. Stay very still.
|
248 |
} else {
|
249 |
+
$yarpp->cache->end_yarpp_time(); // YARPP time is over... :(
|
250 |
}
|
251 |
|
252 |
// restore the older wp_query.
|
261 |
}
|
262 |
|
263 |
function yarpp_related_exist($type,$args,$reference_ID=false) {
|
264 |
+
global $yarpp, $post, $yarpp;
|
265 |
|
266 |
+
$yarpp->upgrade_check();
|
267 |
|
268 |
if (is_object($post) && !$reference_ID)
|
269 |
$reference_ID = $post->ID;
|
270 |
|
271 |
+
if ($yarpp->cache->is_yarpp_time()) // if we're already in a YARPP loop, stop now.
|
272 |
return false;
|
273 |
|
274 |
if (yarpp_get_option('cross_relate'))
|
275 |
$type = array('post','page');
|
276 |
|
277 |
+
$cache_status = $yarpp->cache->enforce($reference_ID);
|
278 |
|
279 |
if ( YARPP_NO_RELATED == $cache_status )
|
280 |
return false;
|
281 |
|
282 |
+
$yarpp->cache->begin_yarpp_time($reference_ID); // get ready for YARPP TIME!
|
283 |
$related_query = new WP_Query();
|
|
|
284 |
$related_query->query(array('p'=>$reference_ID,'showposts'=>1,'post_type'=>$type));
|
285 |
$return = $related_query->have_posts();
|
286 |
unset($related_query);
|
287 |
+
$yarpp->cache->end_yarpp_time(); // YARPP time is over. :(
|
288 |
|
289 |
return $return;
|
290 |
}
|
291 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
options-meta-boxes.php
CHANGED
@@ -88,18 +88,34 @@ class YARPP_Meta_Box {
|
|
88 |
}
|
89 |
|
90 |
class YARPP_Meta_Box_Pool extends YARPP_Meta_Box {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
function display() {
|
92 |
?>
|
93 |
<p><?php _e('"The Pool" refers to the pool of posts and pages that are candidates for display as related to the current entry.','yarpp');?></p>
|
94 |
|
95 |
<table class="form-table" style="margin-top: 0; clear:none;">
|
96 |
<tbody>
|
97 |
-
<tr valign='top'>
|
98 |
-
<th scope='row'><?php _e('Disallow by category:','yarpp');?></th><td><div id='display_discats' style="overflow:auto;max-height:100px;"></div></td></tr>
|
99 |
-
<tr valign='top'>
|
100 |
-
<th scope='row'><?php _e('Disallow by tag:','yarpp');?></th>
|
101 |
-
<td><div id='display_distags' style="overflow:auto;max-height:100px;"></div></td></tr>
|
102 |
<?php
|
|
|
|
|
103 |
$this->checkbox('show_pass_post',__("Show password protected posts?",'yarpp'));
|
104 |
|
105 |
$recent_number = "<input name=\"recent_number\" type=\"text\" id=\"recent_number\" value=\"".esc_attr(yarpp_get_option('recent_number'))."\" size=\"2\" />";
|
@@ -289,10 +305,39 @@ class YARPP_Meta_Box_Contact extends YARPP_Meta_Box {
|
|
289 |
<li style="background: url(<?php echo $pluginurl . 'twitter.png' ; ?>) no-repeat left bottom;"><a href="http://twitter.com/yarpp" target="_blank"><?php _e('YARPP on Twitter', 'yarpp'); ?></a></li>
|
290 |
<li style="background: url(<?php echo $pluginurl . 'plugin.png'; ?>) no-repeat left bottom;"><a href="http://yarpp.org" target="_blank"><?php _e('YARPP on the Web', 'yarpp'); ?></a></li>
|
291 |
<li style="background: url(<?php echo $pluginurl . 'star.png'; ?>) no-repeat 3px 2px;"><a href="http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/" target="_blank"><?php _e('Rate YARPP on WordPress.org', 'yarpp'); ?></a></li>
|
292 |
-
<li style="background: url(<?php echo $pluginurl . 'paypal-icon.png'; ?>) no-repeat left bottom;"><a href='http://tinyurl.com/donatetomitcho' target='_new'><img src="https://www.paypal.com/<?php echo
|
293 |
</ul>
|
294 |
<?php
|
295 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
296 |
}
|
297 |
|
298 |
add_meta_box('yarpp_display_contact', __('Contact YARPP','yarpp'), array(new YARPP_Meta_Box_Contact, 'display'), 'settings_page_yarpp', 'side', 'core');
|
88 |
}
|
89 |
|
90 |
class YARPP_Meta_Box_Pool extends YARPP_Meta_Box {
|
91 |
+
function exclude($taxonomy, $string) {
|
92 |
+
?>
|
93 |
+
<tr valign='top'>
|
94 |
+
<th scope='row'><?php echo $string; ?></th>
|
95 |
+
<td><div class='scroll_wrapper' style="overflow:auto;max-height:100px;"><div id='exclude_<?php echo $taxonomy; ?>'>
|
96 |
+
<?php
|
97 |
+
$exclude_terms = yarpp_get_option('exclude');
|
98 |
+
if ( !empty($exclude_terms[$taxonomy]) ) {
|
99 |
+
$terms = get_terms($taxonomy, array('include' => $exclude_terms[$taxonomy]));
|
100 |
+
foreach ($terms as $term) {
|
101 |
+
echo "<input type='checkbox' name='exclude[{$taxonomy}][{$term->term_id}]' value='true' checked='checked' /> <label>" . esc_html($term->name) . "</label> ";
|
102 |
+
}
|
103 |
+
}
|
104 |
+
?>
|
105 |
+
</div></div></td>
|
106 |
+
</tr>
|
107 |
+
<?php
|
108 |
+
}
|
109 |
+
|
110 |
function display() {
|
111 |
?>
|
112 |
<p><?php _e('"The Pool" refers to the pool of posts and pages that are candidates for display as related to the current entry.','yarpp');?></p>
|
113 |
|
114 |
<table class="form-table" style="margin-top: 0; clear:none;">
|
115 |
<tbody>
|
|
|
|
|
|
|
|
|
|
|
116 |
<?php
|
117 |
+
$this->exclude('category', __('Disallow by category:','yarpp'));
|
118 |
+
$this->exclude('post_tag', __('Disallow by tag:','yarpp'));
|
119 |
$this->checkbox('show_pass_post',__("Show password protected posts?",'yarpp'));
|
120 |
|
121 |
$recent_number = "<input name=\"recent_number\" type=\"text\" id=\"recent_number\" value=\"".esc_attr(yarpp_get_option('recent_number'))."\" size=\"2\" />";
|
305 |
<li style="background: url(<?php echo $pluginurl . 'twitter.png' ; ?>) no-repeat left bottom;"><a href="http://twitter.com/yarpp" target="_blank"><?php _e('YARPP on Twitter', 'yarpp'); ?></a></li>
|
306 |
<li style="background: url(<?php echo $pluginurl . 'plugin.png'; ?>) no-repeat left bottom;"><a href="http://yarpp.org" target="_blank"><?php _e('YARPP on the Web', 'yarpp'); ?></a></li>
|
307 |
<li style="background: url(<?php echo $pluginurl . 'star.png'; ?>) no-repeat 3px 2px;"><a href="http://wordpress.org/extend/plugins/yet-another-related-posts-plugin/" target="_blank"><?php _e('Rate YARPP on WordPress.org', 'yarpp'); ?></a></li>
|
308 |
+
<li style="background: url(<?php echo $pluginurl . 'paypal-icon.png'; ?>) no-repeat left bottom;"><a href='http://tinyurl.com/donatetomitcho' target='_new'><img src="https://www.paypal.com/<?php echo $this->paypal_lang(); ?>i/btn/btn_donate_SM.gif" name="submit" alt="<?php _e('Donate to mitcho (Michael Yoshitaka Erlewine) for this plugin via PayPal');?>" title="<?php _e('Donate to mitcho (Michael Yoshitaka Erlewine) for this plugin via PayPal','yarpp');?>"/></a></li>
|
309 |
</ul>
|
310 |
<?php
|
311 |
}
|
312 |
+
|
313 |
+
function paypal_lang() {
|
314 |
+
if ( !defined('WPLANG') )
|
315 |
+
return 'en_US/';
|
316 |
+
$lang = substr(WPLANG, 0, 2);
|
317 |
+
switch ( $lang ) {
|
318 |
+
case 'fr':
|
319 |
+
return 'fr_FR/';
|
320 |
+
case 'de':
|
321 |
+
return 'de_DE/';
|
322 |
+
case 'it':
|
323 |
+
return 'it_IT/';
|
324 |
+
case 'ja':
|
325 |
+
return 'ja_JP/';
|
326 |
+
case 'es':
|
327 |
+
return 'es_XC/';
|
328 |
+
case 'nl':
|
329 |
+
return 'nl_NL/';
|
330 |
+
case 'pl':
|
331 |
+
return 'pl_PL/';
|
332 |
+
case 'zh':
|
333 |
+
if (preg_match("/^zh_(HK|TW)/i",WPLANG))
|
334 |
+
return 'zh_HK/';
|
335 |
+
// actually zh_CN, but interpret as default zh:
|
336 |
+
return 'zh_XC/';
|
337 |
+
default:
|
338 |
+
return 'en_US/';
|
339 |
+
}
|
340 |
+
}
|
341 |
}
|
342 |
|
343 |
add_meta_box('yarpp_display_contact', __('Contact YARPP','yarpp'), array(new YARPP_Meta_Box_Contact, 'display'), 'settings_page_yarpp', 'side', 'core');
|
options.js
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(function($) {
|
2 |
+
// since 3.3: add screen option toggles
|
3 |
+
postboxes.add_postbox_toggles(pagenow);
|
4 |
+
|
5 |
+
function template() {
|
6 |
+
if ($('.template').attr('checked')) {
|
7 |
+
$('.templated').show();
|
8 |
+
$('.not_templated').hide();
|
9 |
+
} else {
|
10 |
+
$('.templated').hide();
|
11 |
+
$('.not_templated').show();
|
12 |
+
}
|
13 |
+
excerpt();
|
14 |
+
}
|
15 |
+
$('.template').click(template);
|
16 |
+
template();
|
17 |
+
|
18 |
+
function excerpt() {
|
19 |
+
if (!$('.template').attr('checked') && $('.show_excerpt').attr('checked'))
|
20 |
+
$('.excerpted').show();
|
21 |
+
else
|
22 |
+
$('.excerpted').hide();
|
23 |
+
}
|
24 |
+
$('.show_excerpt,.template').click(excerpt);
|
25 |
+
|
26 |
+
var loaded_demo_rss = false;
|
27 |
+
function rss_display() {
|
28 |
+
if ($('.rss_display').attr('checked')) {
|
29 |
+
$('.rss_displayed').show();
|
30 |
+
if ( !loaded_demo_rss ) {
|
31 |
+
loaded_demo_rss = true;
|
32 |
+
var demo_rss = $('#display_demo_rss');
|
33 |
+
$.ajax({type:'POST',
|
34 |
+
url: ajaxurl,
|
35 |
+
data:'action=yarpp_display_demo_rss',
|
36 |
+
beforeSend:function(){demo_rss.html(loading)},
|
37 |
+
success:function(html){demo_rss.html('<pre>'+html+'</pre>')},
|
38 |
+
dataType:'html'});
|
39 |
+
}
|
40 |
+
} else {
|
41 |
+
$('.rss_displayed').hide();
|
42 |
+
}
|
43 |
+
rss_template();
|
44 |
+
}
|
45 |
+
$('.rss_display').click(rss_display);
|
46 |
+
rss_display();
|
47 |
+
|
48 |
+
function rss_template() {
|
49 |
+
if ($('.rss_template').attr('checked')) {
|
50 |
+
$('.rss_templated').show();
|
51 |
+
$('.rss_not_templated').hide();
|
52 |
+
} else {
|
53 |
+
$('.rss_templated').hide();
|
54 |
+
$('.rss_not_templated').show();
|
55 |
+
}
|
56 |
+
rss_excerpt();
|
57 |
+
}
|
58 |
+
$('.rss_template').click(rss_template);
|
59 |
+
|
60 |
+
function rss_excerpt() {
|
61 |
+
if ($('.rss_display').attr('checked') && $('.rss_show_excerpt').attr('checked'))
|
62 |
+
$('.rss_excerpted').show();
|
63 |
+
else
|
64 |
+
$('.rss_excerpted').hide();
|
65 |
+
}
|
66 |
+
$('.rss_display,.rss_show_excerpt').click(rss_excerpt);
|
67 |
+
|
68 |
+
var loaded_disallows = false;
|
69 |
+
function load_disallows() {
|
70 |
+
if ( loaded_disallows || !$('#yarpp_pool .inside').is(':visible') )
|
71 |
+
return;
|
72 |
+
loaded_disallows = true;
|
73 |
+
|
74 |
+
var finished_taxonomies = {},
|
75 |
+
term_indices = {};
|
76 |
+
function load_disallow(taxonomy) {
|
77 |
+
if (taxonomy in finished_taxonomies)
|
78 |
+
return;
|
79 |
+
var display = $('#exclude_' + taxonomy);
|
80 |
+
// only do one query at a time:
|
81 |
+
if (display.find('.loading').length)
|
82 |
+
return;
|
83 |
+
|
84 |
+
if ( taxonomy in term_indices )
|
85 |
+
term_indices[taxonomy] = term_indices[taxonomy] + 100;
|
86 |
+
else
|
87 |
+
term_indices[taxonomy] = 0;
|
88 |
+
$.ajax({type:'POST',
|
89 |
+
url: ajaxurl,
|
90 |
+
data: { action: 'yarpp_display_exclude_terms',
|
91 |
+
taxonomy: taxonomy,
|
92 |
+
offset: term_indices[taxonomy]
|
93 |
+
},
|
94 |
+
beforeSend:function(){
|
95 |
+
display.append(loading)
|
96 |
+
},
|
97 |
+
success:function(html){
|
98 |
+
display.find('.loading').remove();
|
99 |
+
if (':(' == html) { // no more :(
|
100 |
+
finished_taxonomies[taxonomy] = true;
|
101 |
+
return;
|
102 |
+
}
|
103 |
+
display.append(html);
|
104 |
+
},
|
105 |
+
dataType:'html'}
|
106 |
+
);
|
107 |
+
}
|
108 |
+
|
109 |
+
['post_tag', 'category'].forEach(function(taxonomy) {
|
110 |
+
load_disallow(taxonomy);
|
111 |
+
$('#exclude_' + taxonomy).parent('.scroll_wrapper').scroll(function() {
|
112 |
+
var parent = $(this),
|
113 |
+
content = parent.children('div');
|
114 |
+
if ( parent.scrollTop() + parent.height() > content.height() - 10 )
|
115 |
+
load_disallow(taxonomy);
|
116 |
+
})
|
117 |
+
});
|
118 |
+
}
|
119 |
+
$('#yarpp_pool .handlediv, #yarpp_pool-hide').click(load_disallows);
|
120 |
+
load_disallows();
|
121 |
+
|
122 |
+
var demo_web = $('#display_demo_web');
|
123 |
+
$.ajax({type:'POST',
|
124 |
+
url: ajaxurl,
|
125 |
+
data:'action=yarpp_display_demo_web',
|
126 |
+
beforeSend:function(){demo_web.html(loading)},
|
127 |
+
success:function(html){demo_web.html('<pre>'+html+'</pre>')},
|
128 |
+
dataType:'html'});
|
129 |
+
});
|
options.php
CHANGED
@@ -1,16 +1,16 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
global $wpdb, $yarpp_value_options, $yarpp_binary_options, $wp_version, $
|
4 |
|
5 |
// Reenforce YARPP setup:
|
6 |
if ( !get_option('yarpp_version') )
|
7 |
-
|
8 |
else
|
9 |
-
|
10 |
|
11 |
// if action=flush, reset the cache
|
12 |
if (isset($_GET['action']) && $_GET['action'] == 'flush') {
|
13 |
-
|
14 |
}
|
15 |
|
16 |
// check to see that templates are in the right place
|
@@ -21,7 +21,7 @@ if ( !(is_array($yarpp_templates) && count($yarpp_templates)) ) {
|
|
21 |
|
22 |
// 3.3: move version checking here, in PHP:
|
23 |
if ( current_user_can('update_plugins' ) ) {
|
24 |
-
$yarpp_version_info =
|
25 |
|
26 |
// these strings are not localizable, as long as the plugin data on wordpress.org
|
27 |
// cannot be.
|
@@ -56,7 +56,7 @@ if (isset($_POST['myisam_override'])) {
|
|
56 |
|
57 |
$yarpp_myisam = true;
|
58 |
if ( !yarpp_get_option('myisam_override') ) {
|
59 |
-
$yarpp_check_return =
|
60 |
if ($yarpp_check_return !== true) { // if it's not *exactly* true
|
61 |
echo "<div class='updated'>"
|
62 |
.sprintf(__("YARPP's \"consider titles\" and \"consider bodies\" relatedness criteria require your <code>%s</code> table to use the <a href='http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html'>MyISAM storage engine</a>, but the table seems to be using the <code>%s</code> engine. These two options have been disabled.",'yarpp'),$wpdb->posts,$yarpp_check_return)
|
@@ -75,15 +75,15 @@ if ( !yarpp_get_option('myisam_override') ) {
|
|
75 |
}
|
76 |
}
|
77 |
|
78 |
-
if ($yarpp_myisam &&
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
}
|
88 |
|
89 |
if (isset($_POST['update_yarpp'])) {
|
@@ -98,16 +98,13 @@ if (isset($_POST['update_yarpp'])) {
|
|
98 |
if ( !isset($_POST[$key]) )
|
99 |
$new_options[$key] = 1;
|
100 |
}
|
101 |
-
if ( isset($_POST['discats']) ) {
|
102 |
-
$new_options['discats'] = implode(',',array_keys($_POST['discats'])); // discats is different
|
103 |
-
} else {
|
104 |
-
$new_options['discats'] = '';
|
105 |
-
}
|
106 |
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
$
|
|
|
|
|
111 |
}
|
112 |
|
113 |
foreach (array_keys($yarpp_binary_options) as $option) {
|
@@ -121,58 +118,6 @@ if (isset($_POST['update_yarpp'])) {
|
|
121 |
}
|
122 |
|
123 |
?>
|
124 |
-
<script type="text/javascript">
|
125 |
-
//<!--
|
126 |
-
|
127 |
-
// since 3.3: add screen option toggles
|
128 |
-
jQuery(function() {
|
129 |
-
postboxes.add_postbox_toggles(pagenow);
|
130 |
-
});
|
131 |
-
|
132 |
-
var spinner = '<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>';
|
133 |
-
|
134 |
-
function load_display_demo_web() {
|
135 |
-
jQuery.ajax({type:'POST',
|
136 |
-
url: ajaxurl,
|
137 |
-
data:'action=yarpp_display_demo_web',
|
138 |
-
beforeSend:function(){jQuery('#display_demo_web').eq(0).html('<img src="' + spinner + '" alt="loading..."/>')},
|
139 |
-
success:function(html){jQuery('#display_demo_web').eq(0).html('<pre>'+html+'</pre>')},
|
140 |
-
dataType:'html'}
|
141 |
-
)
|
142 |
-
}
|
143 |
-
|
144 |
-
function load_display_demo_rss() {
|
145 |
-
jQuery.ajax({type:'POST',
|
146 |
-
url: ajaxurl,
|
147 |
-
data:'action=yarpp_display_demo_rss',
|
148 |
-
beforeSend:function(){jQuery('#display_demo_rss').eq(0).html('<img src="'+spinner+'" alt="loading..."/>')},
|
149 |
-
success:function(html){jQuery('#display_demo_rss').eq(0).html('<pre>'+html+'</pre>')},
|
150 |
-
dataType:'html'}
|
151 |
-
)
|
152 |
-
}
|
153 |
-
|
154 |
-
function load_display_distags() {
|
155 |
-
jQuery.ajax({type:'POST',
|
156 |
-
url: ajaxurl,
|
157 |
-
data:'action=yarpp_display_distags',
|
158 |
-
beforeSend:function(){jQuery('#display_distags').eq(0).html('<img src="'+spinner+'" alt="loading..."/>')},
|
159 |
-
success:function(html){jQuery('#display_distags').eq(0).html(html)},
|
160 |
-
dataType:'html'}
|
161 |
-
)
|
162 |
-
}
|
163 |
-
|
164 |
-
function load_display_discats() {
|
165 |
-
jQuery.ajax({type:'POST',
|
166 |
-
url: ajaxurl,
|
167 |
-
data:'action=yarpp_display_discats',
|
168 |
-
beforeSend:function(){jQuery('#display_discats').eq(0).html('<img src="'+spinner+'" alt="loading..."/>')},
|
169 |
-
success:function(html){jQuery('#display_discats').eq(0).html(html)},
|
170 |
-
dataType:'html'}
|
171 |
-
)
|
172 |
-
}
|
173 |
-
//-->
|
174 |
-
</script>
|
175 |
-
|
176 |
<div class="wrap">
|
177 |
<h2>
|
178 |
<?php _e('Yet Another Related Posts Plugin Options','yarpp');?> <small><?php
|
@@ -180,8 +125,6 @@ function load_display_discats() {
|
|
180 |
?></small>
|
181 |
</h2>
|
182 |
|
183 |
-
<?php echo "<div id='yarpp-version' style='display:none;'>" . esc_html(get_option('yarpp_version')) . "</div>"; ?>
|
184 |
-
|
185 |
<form method="post">
|
186 |
|
187 |
<div id="yarpp_author_text">
|
@@ -209,77 +152,14 @@ do_meta_boxes( 'settings_page_yarpp', 'normal', array() );
|
|
209 |
</div>
|
210 |
|
211 |
<script language="javascript">
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
jQuery('.templated').show();
|
216 |
-
jQuery('.not_templated').hide();
|
217 |
-
} else {
|
218 |
-
jQuery('.templated').hide();
|
219 |
-
jQuery('.not_templated').show();
|
220 |
-
}
|
221 |
-
excerpt();
|
222 |
-
}
|
223 |
-
jQuery('.template').click(template);
|
224 |
-
|
225 |
-
function excerpt() {
|
226 |
-
if (!jQuery('.template').eq(0).attr('checked') && jQuery('.show_excerpt').eq(0).attr('checked'))
|
227 |
-
jQuery('.excerpted').show();
|
228 |
-
else
|
229 |
-
jQuery('.excerpted').hide();
|
230 |
-
}
|
231 |
-
jQuery('.show_excerpt,.template').click(excerpt);
|
232 |
-
|
233 |
-
function rss_display() {
|
234 |
-
if (jQuery('.rss_display').eq(0).attr('checked'))
|
235 |
-
jQuery('.rss_displayed').show();
|
236 |
-
else
|
237 |
-
jQuery('.rss_displayed').hide();
|
238 |
-
rss_excerpt();
|
239 |
-
}
|
240 |
-
jQuery('.rss_display').click(rss_display);
|
241 |
-
|
242 |
-
function rss_template() {
|
243 |
-
if (jQuery('.rss_template').eq(0).attr('checked')) {
|
244 |
-
jQuery('.rss_templated').show();
|
245 |
-
jQuery('.rss_not_templated').hide();
|
246 |
-
} else {
|
247 |
-
jQuery('.rss_templated').hide();
|
248 |
-
jQuery('.rss_not_templated').show();
|
249 |
-
}
|
250 |
-
rss_excerpt();
|
251 |
-
}
|
252 |
-
jQuery('.rss_template').click(rss_template);
|
253 |
-
|
254 |
-
function rss_excerpt() {
|
255 |
-
if (jQuery('.rss_display').eq(0).attr('checked') && jQuery('.rss_show_excerpt').eq(0).attr('checked'))
|
256 |
-
jQuery('.rss_excerpted').show();
|
257 |
-
else
|
258 |
-
jQuery('.rss_excerpted').hide();
|
259 |
-
}
|
260 |
-
jQuery('.rss_display,.rss_show_excerpt').click(rss_excerpt);
|
261 |
-
|
262 |
-
function yarpp_js_init() {
|
263 |
-
template();
|
264 |
-
rss_template();
|
265 |
-
load_display_discats();
|
266 |
-
load_display_distags();
|
267 |
-
load_display_demo_web();
|
268 |
-
load_display_demo_rss();
|
269 |
-
|
270 |
-
var version = jQuery('#yarpp-version').html();
|
271 |
-
}
|
272 |
-
|
273 |
-
jQuery(yarpp_js_init);
|
274 |
-
//-->
|
275 |
-
</script>
|
276 |
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
</div>
|
283 |
-
<!--cache engine: <?php echo $yarpp_cache->name;?>; cache status: <?php echo $yarpp_cache->cache_status();?>-->
|
284 |
|
285 |
</form>
|
1 |
<?php
|
2 |
|
3 |
+
global $wpdb, $yarpp_value_options, $yarpp_binary_options, $wp_version, $yarpp, $yarpp_templates, $yarpp_myisam;
|
4 |
|
5 |
// Reenforce YARPP setup:
|
6 |
if ( !get_option('yarpp_version') )
|
7 |
+
$yarpp->activate();
|
8 |
else
|
9 |
+
$yarpp->upgrade_check();
|
10 |
|
11 |
// if action=flush, reset the cache
|
12 |
if (isset($_GET['action']) && $_GET['action'] == 'flush') {
|
13 |
+
$yarpp->cache->flush();
|
14 |
}
|
15 |
|
16 |
// check to see that templates are in the right place
|
21 |
|
22 |
// 3.3: move version checking here, in PHP:
|
23 |
if ( current_user_can('update_plugins' ) ) {
|
24 |
+
$yarpp_version_info = $yarpp->version_info();
|
25 |
|
26 |
// these strings are not localizable, as long as the plugin data on wordpress.org
|
27 |
// cannot be.
|
56 |
|
57 |
$yarpp_myisam = true;
|
58 |
if ( !yarpp_get_option('myisam_override') ) {
|
59 |
+
$yarpp_check_return = $yarpp->myisam_check();
|
60 |
if ($yarpp_check_return !== true) { // if it's not *exactly* true
|
61 |
echo "<div class='updated'>"
|
62 |
.sprintf(__("YARPP's \"consider titles\" and \"consider bodies\" relatedness criteria require your <code>%s</code> table to use the <a href='http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html'>MyISAM storage engine</a>, but the table seems to be using the <code>%s</code> engine. These two options have been disabled.",'yarpp'),$wpdb->posts,$yarpp_check_return)
|
75 |
}
|
76 |
}
|
77 |
|
78 |
+
if ( $yarpp_myisam && !$yarpp->enabled() ) {
|
79 |
+
echo '<div class="updated"><p>';
|
80 |
+
if ( $yarpp->activate() ) {
|
81 |
+
_e('The YARPP database had an error but has been fixed.','yarpp');
|
82 |
+
} else {
|
83 |
+
_e('The YARPP database has an error which could not be fixed.','yarpp');
|
84 |
+
printf(__('Please try <a href="%s" target="_blank">manual SQL setup</a>.','yarpp'), 'http://mitcho.com/code/yarpp/sql.php?prefix='.urlencode($wpdb->prefix));
|
85 |
+
}
|
86 |
+
echo '</div></p>';
|
87 |
}
|
88 |
|
89 |
if (isset($_POST['update_yarpp'])) {
|
98 |
if ( !isset($_POST[$key]) )
|
99 |
$new_options[$key] = 1;
|
100 |
}
|
|
|
|
|
|
|
|
|
|
|
101 |
|
102 |
+
// excludes are different
|
103 |
+
$new_options['exclude'] = array();
|
104 |
+
if ( isset($_POST['exclude']) ) {
|
105 |
+
$exclude = array_merge( array('category' => array(), 'post_tag' => array()), $_POST['exclude'] );
|
106 |
+
$new_options['exclude']['category'] = implode(',',array_keys($exclude['category']));
|
107 |
+
$new_options['exclude']['post_tag'] = implode(',',array_keys($exclude['post_tag']));
|
108 |
}
|
109 |
|
110 |
foreach (array_keys($yarpp_binary_options) as $option) {
|
118 |
}
|
119 |
|
120 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
<div class="wrap">
|
122 |
<h2>
|
123 |
<?php _e('Yet Another Related Posts Plugin Options','yarpp');?> <small><?php
|
125 |
?></small>
|
126 |
</h2>
|
127 |
|
|
|
|
|
128 |
<form method="post">
|
129 |
|
130 |
<div id="yarpp_author_text">
|
152 |
</div>
|
153 |
|
154 |
<script language="javascript">
|
155 |
+
var spinner = '<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>',
|
156 |
+
loading = '<img class="loading" src="'+spinner+'" alt="loading..."/>';
|
157 |
+
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
+
<div>
|
160 |
+
<p class="submit">
|
161 |
+
<input type="submit" class='button-primary' name="update_yarpp" value="<?php _e("Update options",'yarpp')?>" />
|
162 |
+
</p>
|
163 |
+
</div>
|
|
|
|
|
164 |
|
165 |
</form>
|
readme.txt
CHANGED
@@ -201,14 +201,18 @@ If you are a bilingual speaker of English and another language and an avid user
|
|
201 |
|
202 |
= 3.4 =
|
203 |
* [Bug fix](http://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-version-333-breaks-templates-in-widget): Custom templates could not be used in widget display
|
|
|
204 |
* Significant code cleanup
|
|
|
205 |
* Removed the many different options entries, replacing them with a single `yarpp` option (except `yarpp_version`)
|
206 |
* Fixed issues with display options field data escaping and slashing once and for all
|
207 |
* Performance improvements on pages with "no related posts"
|
208 |
-
* Streamlined keyword storage in YARPP_Cache_Postmeta
|
|
|
209 |
* Updated minor bug for computing how many results should be cached
|
210 |
-
* Adding some filters: yarpp_settings_save, yarpp_blacklist, yarpp_blackmethods
|
211 |
* New systematic use of YARPP_ constants to communicate cache status
|
|
|
212 |
* Support for [YARPP Experiments](http://wordpress.org/extend/plugins/yarpp-experiments/).
|
213 |
* Added Portuguese stopwords by Leandro Coelho ([Logística Descomplicada](http://www.logisticadescomplicada.com))
|
214 |
= 3.3.3 =
|
201 |
|
202 |
= 3.4 =
|
203 |
* [Bug fix](http://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-version-333-breaks-templates-in-widget): Custom templates could not be used in widget display
|
204 |
+
* Implement lazy/infinite scrolling for the "disallow tags" and "disallow categories," so the YARPP settings screen doesn't lock up the browser for sites which have a crazy number or tags or categories
|
205 |
* Significant code cleanup
|
206 |
+
* Move many internal functions into a global object `$yarpp` of class `YARPP`; references to the global `$yarpp_cache` should now be to global `$yarpp->cache`.
|
207 |
* Removed the many different options entries, replacing them with a single `yarpp` option (except `yarpp_version`)
|
208 |
* Fixed issues with display options field data escaping and slashing once and for all
|
209 |
* Performance improvements on pages with "no related posts"
|
210 |
+
* Streamlined keyword storage in `YARPP_Cache_Postmeta`
|
211 |
+
* Create `YARPP_Cache` abstract class
|
212 |
* Updated minor bug for computing how many results should be cached
|
213 |
+
* Adding some filters: yarpp_settings_save, yarpp_blacklist, yarpp_blackmethods, yarpp_keywords_overused_words
|
214 |
* New systematic use of YARPP_ constants to communicate cache status
|
215 |
+
* Use `get_terms` to load terms
|
216 |
* Support for [YARPP Experiments](http://wordpress.org/extend/plugins/yarpp-experiments/).
|
217 |
* Added Portuguese stopwords by Leandro Coelho ([Logística Descomplicada](http://www.logisticadescomplicada.com))
|
218 |
= 3.3.3 =
|
services.php
CHANGED
@@ -1,37 +1,38 @@
|
|
1 |
<?php
|
2 |
|
3 |
// setup the ajax action hooks
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
add_action('wp_ajax_yarpp_display_demo_web', 'yarpp_ajax_display_demo_web');
|
8 |
-
add_action('wp_ajax_yarpp_display_demo_rss', 'yarpp_ajax_display_demo_rss');
|
9 |
-
}
|
10 |
|
11 |
-
function
|
12 |
global $wpdb;
|
13 |
|
14 |
-
|
15 |
-
|
16 |
|
17 |
-
$
|
18 |
-
array_unshift($discats,' ');
|
19 |
-
foreach ($wpdb->get_results("select $wpdb->terms.term_id, name from $wpdb->terms natural join $wpdb->term_taxonomy where $wpdb->term_taxonomy.taxonomy = 'category' order by name") as $cat) {
|
20 |
-
echo "<input type='checkbox' name='discats[$cat->term_id]' value='true'". (array_search($cat->term_id,$discats) ? ' checked="checked"': '' )." /> <label>$cat->name</label> ";//for='discats[$cat->term_id]' it's not HTML. :(
|
21 |
-
}
|
22 |
-
exit;
|
23 |
-
}
|
24 |
-
|
25 |
-
function yarpp_ajax_display_distags() {
|
26 |
-
global $wpdb;
|
27 |
|
28 |
header("HTTP/1.1 200");
|
29 |
header("Content-Type: text/html; charset=UTF-8");
|
30 |
|
31 |
-
$
|
32 |
-
|
33 |
-
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
exit;
|
37 |
}
|
1 |
<?php
|
2 |
|
3 |
// setup the ajax action hooks
|
4 |
+
add_action('wp_ajax_yarpp_display_exclude_terms', 'yarpp_ajax_display_exclude_terms');
|
5 |
+
add_action('wp_ajax_yarpp_display_demo_web', 'yarpp_ajax_display_demo_web');
|
6 |
+
add_action('wp_ajax_yarpp_display_demo_rss', 'yarpp_ajax_display_demo_rss');
|
|
|
|
|
|
|
7 |
|
8 |
+
function yarpp_ajax_display_exclude_terms() {
|
9 |
global $wpdb;
|
10 |
|
11 |
+
if ( !isset($_REQUEST['taxonomy']) )
|
12 |
+
return;
|
13 |
|
14 |
+
$taxonomy = (string) $_REQUEST['taxonomy'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
header("HTTP/1.1 200");
|
17 |
header("Content-Type: text/html; charset=UTF-8");
|
18 |
|
19 |
+
$exclude = yarpp_get_option('exclude');
|
20 |
+
if ( !isset($exclude[$taxonomy]) )
|
21 |
+
$exclude[$taxonomy] = array();
|
22 |
+
$terms = get_terms($taxonomy, array(
|
23 |
+
'exclude' => $exclude[$taxonomy],
|
24 |
+
'number' => 100,
|
25 |
+
'offset' => $_REQUEST['offset']
|
26 |
+
));
|
27 |
+
|
28 |
+
if ( !count($terms) ) {
|
29 |
+
echo ':('; // no more :(
|
30 |
+
exit;
|
31 |
+
}
|
32 |
+
|
33 |
+
foreach ($terms as $term) {
|
34 |
+
echo "<input type='checkbox' name='exclude[$taxonomy][$term->term_id]' value='true' /> <label>" . esc_html($term->name) . "</label> ";
|
35 |
+
//for='exclude[$taxonomy][$cat->term_id]' it's not HTML. :(
|
36 |
}
|
37 |
exit;
|
38 |
}
|
template-builtin.php
CHANGED
@@ -31,9 +31,10 @@ if (have_posts()) {
|
|
31 |
$output .= ' <abbr title="'.sprintf(__('%f is the YARPP match score between the current entry and this related entry. You are seeing this value because you are logged in to WordPress as an administrator. It is not shown to regular visitors.','yarpp'),round(get_the_score(),3)).'">('.round(get_the_score(),3).')</abbr>';
|
32 |
$output .= '</a>';
|
33 |
if ($show_excerpt) {
|
34 |
-
$
|
35 |
-
|
36 |
-
|
|
|
37 |
}
|
38 |
$output .= $after_title."\n";
|
39 |
|
31 |
$output .= ' <abbr title="'.sprintf(__('%f is the YARPP match score between the current entry and this related entry. You are seeing this value because you are logged in to WordPress as an administrator. It is not shown to regular visitors.','yarpp'),round(get_the_score(),3)).'">('.round(get_the_score(),3).')</abbr>';
|
32 |
$output .= '</a>';
|
33 |
if ($show_excerpt) {
|
34 |
+
$excerpt = strip_tags( (string) get_the_excerpt() );
|
35 |
+
preg_replace( '/([,;.-]+)\s*/','\1 ', $excerpt );
|
36 |
+
$excerpt = implode( ' ', array_slice( preg_split('/\s+/',$excerpt), 0, $excerpt_length ) ).'...';
|
37 |
+
$output .= $before_post . $excerpt . $after_post;
|
38 |
}
|
39 |
$output .= $after_title."\n";
|
40 |
|
template-metabox.php
CHANGED
@@ -1,16 +1,20 @@
|
|
1 |
<?php
|
2 |
-
global $
|
3 |
|
4 |
-
|
5 |
|
6 |
-
$keywords = $
|
7 |
|
8 |
-
if ($
|
9 |
-
|
|
|
|
|
10 |
|
11 |
$output .= '<p>'.__( 'These are the related entries for this entry. Updating this post may change these related posts.' , 'yarpp').'</p>';
|
12 |
|
13 |
-
if ($
|
|
|
|
|
14 |
|
15 |
if (have_posts()) {
|
16 |
$output .= '<style>#yarpp-related-posts ol li { list-style-type: decimal; }</style>';
|
1 |
<?php
|
2 |
+
global $yarpp;
|
3 |
|
4 |
+
$yarpp->cache->save_post($reference_ID, false); // enforce the cache, but don't force it
|
5 |
|
6 |
+
$keywords = $yarpp->cache->get_keywords($reference_ID);
|
7 |
|
8 |
+
if ($yarpp->debug) {
|
9 |
+
$output .= "<p>body keywords: {$keywords['body']}</p>";
|
10 |
+
$output .= "<p>title keywords: {$keywords['title']}</p>";
|
11 |
+
}
|
12 |
|
13 |
$output .= '<p>'.__( 'These are the related entries for this entry. Updating this post may change these related posts.' , 'yarpp').'</p>';
|
14 |
|
15 |
+
if ($yarpp->debug) {
|
16 |
+
$output .= "<p>last updated: ".$wpdb->get_var("select max(date) as updated from {$wpdb->prefix}yarpp_related_cache where reference_ID = '$reference_ID'")."</p>";
|
17 |
+
}
|
18 |
|
19 |
if (have_posts()) {
|
20 |
$output .= '<style>#yarpp-related-posts ol li { list-style-type: decimal; }</style>';
|
yarpp-templates/yarpp-template-thumbnail.php
CHANGED
@@ -7,9 +7,9 @@ Author: mitcho (Michael Yoshitaka Erlewine)
|
|
7 |
<?php if ($related_query->have_posts()):?>
|
8 |
<ol>
|
9 |
<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
|
10 |
-
<?php if (
|
11 |
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail(); ?></a></li>
|
12 |
-
<?php endif;
|
13 |
<?php endwhile; ?>
|
14 |
</ol>
|
15 |
|
7 |
<?php if ($related_query->have_posts()):?>
|
8 |
<ol>
|
9 |
<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
|
10 |
+
<?php if (has_post_thumbnail()):?>
|
11 |
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_post_thumbnail(); ?></a></li>
|
12 |
+
<?php endif; ?>
|
13 |
<?php endwhile; ?>
|
14 |
</ol>
|
15 |
|
yarpp-templates/yarpp-template-wpml.php
CHANGED
@@ -4,8 +4,8 @@ Author: mitcho (Michael Yoshitaka Erlewine)
|
|
4 |
*/
|
5 |
|
6 |
if (function_exists("icl_register_string")) {
|
7 |
-
|
8 |
-
|
9 |
}
|
10 |
|
11 |
?><h3><?php echo (function_exists("icl_t") ? icl_t("Yet Another Related Posts Plugin","related posts header","Related Posts") : "Related Posts B") ?></h3>
|
4 |
*/
|
5 |
|
6 |
if (function_exists("icl_register_string")) {
|
7 |
+
icl_register_string("Yet Another Related Posts Plugin","related posts header","Related Posts");
|
8 |
+
icl_register_string("Yet Another Related Posts Plugin","no related posts message","No related posts.");
|
9 |
}
|
10 |
|
11 |
?><h3><?php echo (function_exists("icl_t") ? icl_t("Yet Another Related Posts Plugin","related posts header","Related Posts") : "Related Posts B") ?></h3>
|
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. A templating feature allows customization of the display.
|
6 |
-
Version: 3.
|
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.
|
13 |
define('YARPP_DIR', dirname(__FILE__));
|
14 |
define('YARPP_NO_RELATED', ':(');
|
15 |
define('YARPP_RELATED', ':)');
|
@@ -30,11 +30,10 @@ if (!defined('YARPP_CACHE_TYPE'))
|
|
30 |
// new in 3.3.3: init yarpp on init
|
31 |
add_action( 'init', 'yarpp_init' );
|
32 |
function yarpp_init() {
|
33 |
-
global $
|
34 |
|
35 |
-
// set $yarpp_debug
|
36 |
if ( isset($_REQUEST['yarpp_debug']) )
|
37 |
-
$
|
38 |
|
39 |
register_activation_hook( __FILE__, 'yarpp_activate' );
|
40 |
|
@@ -55,20 +54,11 @@ function yarpp_init() {
|
|
55 |
|
56 |
// new in 3.0: add meta box
|
57 |
add_action( 'admin_menu', 'yarpp_add_metabox');
|
58 |
-
|
59 |
-
// update cache on save
|
60 |
-
add_action('save_post','yarpp_save_cache');
|
61 |
-
|
62 |
-
// new in 3.2: update cache on delete
|
63 |
-
add_action('delete_post','yarpp_delete_cache');
|
64 |
-
// new in 3.2.1: handle post_status transitions
|
65 |
-
add_action('transition_post_status','yarpp_status_transition', 10, 3);
|
66 |
-
|
67 |
// sets the score override flag.
|
68 |
add_action('parse_query','yarpp_set_score_override_flag');
|
69 |
|
70 |
-
|
71 |
-
$yarpp_cache = new $yarpp_storage_class;
|
72 |
|
73 |
// new in 3.3: include BlogGlue meta box
|
74 |
if ( file_exists( YARPP_DIR . '/blogglue.php' ) )
|
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. A templating feature allows customization of the display.
|
6 |
+
Version: 3.4b5
|
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.4b5');
|
13 |
define('YARPP_DIR', dirname(__FILE__));
|
14 |
define('YARPP_NO_RELATED', ':(');
|
15 |
define('YARPP_RELATED', ':)');
|
30 |
// new in 3.3.3: init yarpp on init
|
31 |
add_action( 'init', 'yarpp_init' );
|
32 |
function yarpp_init() {
|
33 |
+
global $yarpp;
|
34 |
|
|
|
35 |
if ( isset($_REQUEST['yarpp_debug']) )
|
36 |
+
$yarpp->debug = true;
|
37 |
|
38 |
register_activation_hook( __FILE__, 'yarpp_activate' );
|
39 |
|
54 |
|
55 |
// new in 3.0: add meta box
|
56 |
add_action( 'admin_menu', 'yarpp_add_metabox');
|
57 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
// sets the score override flag.
|
59 |
add_action('parse_query','yarpp_set_score_override_flag');
|
60 |
|
61 |
+
$yarpp = new YARPP;
|
|
|
62 |
|
63 |
// new in 3.3: include BlogGlue meta box
|
64 |
if ( file_exists( YARPP_DIR . '/blogglue.php' ) )
|