Version Description
Download this release
Release Info
Developer | mitchoyoshitaka |
Plugin | Yet Another Related Posts Plugin (YARPP) |
Version | 3.4b2 |
Comparing to | |
See all releases |
Code changes from version 3.3.3 to 3.4b2
- cache-postmeta.php +76 -47
- cache-tables.php +80 -47
- includes.php +86 -47
- lang/words-nl_NL.php +3 -3
- lang/words-pt_BR.php +3 -0
- magic.php +129 -154
- options-meta-boxes.php +30 -25
- options.php +25 -20
- readme.txt +8 -0
- template-builtin.php +5 -9
- template-metabox.php +6 -7
- template-widget.php +3 -3
- yarpp.php +6 -3
cache-postmeta.php
CHANGED
@@ -2,20 +2,18 @@
|
|
2 |
|
3 |
$yarpp_storage_class = 'YARPP_Cache_Postmeta';
|
4 |
|
5 |
-
define('
|
6 |
-
define('YARPP_POSTMETA_BODY_KEYWORDS_KEY','_yarpp_body_keywords');
|
7 |
define('YARPP_POSTMETA_RELATED_KEY', '_yarpp_related');
|
8 |
-
define('YARPP_NO_RELATED', ':(');
|
9 |
|
10 |
class YARPP_Cache_Postmeta {
|
11 |
// variables used for lookup
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
|
20 |
/**
|
21 |
* SETUP/STATUS
|
@@ -29,17 +27,23 @@ class YARPP_Cache_Postmeta {
|
|
29 |
add_filter('post_limits',array(&$this,'limit_filter'));
|
30 |
}
|
31 |
|
32 |
-
function is_enabled() {
|
33 |
return true; // always enabled.
|
34 |
}
|
35 |
|
36 |
-
function setup() {
|
37 |
}
|
38 |
|
39 |
-
function upgrade() {
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
|
42 |
-
function cache_status() {
|
43 |
global $wpdb;
|
44 |
return $wpdb->get_var("select (count(p.ID)-sum(m.meta_value IS NULL))/count(p.ID)
|
45 |
FROM `{$wpdb->posts}` as p
|
@@ -47,7 +51,7 @@ class YARPP_Cache_Postmeta {
|
|
47 |
WHERE p.post_status = 'publish'");
|
48 |
}
|
49 |
|
50 |
-
function uncached($limit = 20, $offset = 0) {
|
51 |
global $wpdb;
|
52 |
return $wpdb->get_col("select SQL_CALC_FOUND_ROWS p.ID
|
53 |
FROM `{$wpdb->posts}` as p
|
@@ -59,7 +63,7 @@ class YARPP_Cache_Postmeta {
|
|
59 |
/**
|
60 |
* MAGIC FILTERS
|
61 |
*/
|
62 |
-
function where_filter($arg) {
|
63 |
global $wpdb;
|
64 |
if ($this->yarpp_time) {
|
65 |
$threshold = yarpp_get_option('threshold');
|
@@ -75,7 +79,7 @@ class YARPP_Cache_Postmeta {
|
|
75 |
return $arg;
|
76 |
}
|
77 |
|
78 |
-
function orderby_filter($arg) {
|
79 |
global $wpdb;
|
80 |
// only order by score if the score function is added in fields_filter, which only happens
|
81 |
// if there are related posts in the postdata
|
@@ -85,7 +89,7 @@ class YARPP_Cache_Postmeta {
|
|
85 |
return $arg;
|
86 |
}
|
87 |
|
88 |
-
function fields_filter($arg) {
|
89 |
global $wpdb, $wpdb;
|
90 |
if ($this->yarpp_time && is_array($this->related_postdata) && count($this->related_postdata)) {
|
91 |
$scores = array();
|
@@ -97,7 +101,7 @@ class YARPP_Cache_Postmeta {
|
|
97 |
return $arg;
|
98 |
}
|
99 |
|
100 |
-
function demo_request_filter($arg) {
|
101 |
global $wpdb;
|
102 |
if ($this->demo_time) {
|
103 |
$wpdb->query("set @count = 0;");
|
@@ -109,7 +113,7 @@ class YARPP_Cache_Postmeta {
|
|
109 |
return $arg;
|
110 |
}
|
111 |
|
112 |
-
function limit_filter($arg) {
|
113 |
global $wpdb;
|
114 |
if ($this->yarpp_time and $this->online_limit)
|
115 |
return " limit {$this->online_limit} ";
|
@@ -119,7 +123,11 @@ class YARPP_Cache_Postmeta {
|
|
119 |
/**
|
120 |
* RELATEDNESS CACHE CONTROL
|
121 |
*/
|
122 |
-
function
|
|
|
|
|
|
|
|
|
123 |
$this->yarpp_time = true;
|
124 |
// get the related posts from postdata, and also construct the relate_IDs array
|
125 |
$this->related_postdata = get_post_meta($reference_ID,YARPP_POSTMETA_RELATED_KEY,true);
|
@@ -127,17 +135,23 @@ class YARPP_Cache_Postmeta {
|
|
127 |
$this->related_IDs = array_map(create_function('$x','return $x["ID"];'), $this->related_postdata);
|
128 |
}
|
129 |
|
130 |
-
function end_yarpp_time() {
|
131 |
$this->yarpp_time = false;
|
132 |
$this->related_IDs = array();
|
133 |
$this->related_postdata = array();
|
134 |
}
|
135 |
|
136 |
-
|
137 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
}
|
139 |
|
140 |
-
function clear($reference_ID) {
|
141 |
if (is_int($reference_ID))
|
142 |
$reference_ID = array($reference_ID);
|
143 |
// make sure that we have a non-trivial array
|
@@ -149,18 +163,19 @@ class YARPP_Cache_Postmeta {
|
|
149 |
}
|
150 |
}
|
151 |
|
152 |
-
|
|
|
153 |
global $wpdb, $yarpp_debug;
|
154 |
|
155 |
// $reference_ID must be numeric
|
156 |
-
if (
|
157 |
-
return
|
158 |
|
159 |
$original_related = $this->related($reference_ID);
|
160 |
-
$related = $wpdb->get_results(yarpp_sql(
|
161 |
$new_related = array_map(create_function('$x','return $x["ID"];'), $related);
|
162 |
|
163 |
-
if (count($new_related)) {
|
164 |
update_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, $related);
|
165 |
if ($yarpp_debug) echo "<!--YARPP just set the cache for post $reference_ID-->";
|
166 |
|
@@ -169,21 +184,25 @@ class YARPP_Cache_Postmeta {
|
|
169 |
$this->clear(array_diff($original_related, $new_related));
|
170 |
$this->clear(array_diff($new_related, $original_related));
|
171 |
}
|
|
|
|
|
172 |
} else {
|
173 |
update_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, YARPP_NO_RELATED);
|
|
|
174 |
// Clear the caches of those which are no longer related.
|
175 |
-
if (count($original_related))
|
176 |
$this->clear($original_related);
|
177 |
-
|
|
|
178 |
}
|
179 |
}
|
180 |
|
181 |
-
function flush() {
|
182 |
global $wpdb;
|
183 |
return $wpdb->query("delete from `{$wpdb->postmeta}` where meta_key = '" . YARPP_POSTMETA_RELATED_KEY . "'");
|
184 |
}
|
185 |
|
186 |
-
function related($reference_ID = null, $related_ID = null) {
|
187 |
global $wpdb;
|
188 |
|
189 |
if ( !is_int( $reference_ID ) && !is_int( $related_ID ) )
|
@@ -217,24 +236,34 @@ class YARPP_Cache_Postmeta {
|
|
217 |
/**
|
218 |
* KEYWORDS CACHE CONTROL
|
219 |
*/
|
220 |
-
|
221 |
-
|
222 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
223 |
}
|
224 |
|
225 |
-
|
226 |
-
|
|
|
|
|
|
|
227 |
return false;
|
228 |
|
229 |
-
$
|
230 |
-
$out = get_post_meta($ID, $key, true);
|
231 |
|
232 |
-
// if empty, try caching them first
|
233 |
-
|
234 |
-
$this->cache_keywords($ID);
|
235 |
-
$out = get_post_meta($ID, $key, true);
|
236 |
-
}
|
237 |
|
238 |
-
|
|
|
|
|
|
|
|
|
|
|
239 |
}
|
240 |
}
|
2 |
|
3 |
$yarpp_storage_class = 'YARPP_Cache_Postmeta';
|
4 |
|
5 |
+
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;
|
16 |
+
public $online_limit = false;
|
17 |
|
18 |
/**
|
19 |
* SETUP/STATUS
|
27 |
add_filter('post_limits',array(&$this,'limit_filter'));
|
28 |
}
|
29 |
|
30 |
+
public function is_enabled() {
|
31 |
return true; // always enabled.
|
32 |
}
|
33 |
|
34 |
+
public function setup() {
|
35 |
}
|
36 |
|
37 |
+
public function upgrade( $last_version ) {
|
38 |
+
global $wpdb;
|
39 |
+
if ( $last_version && version_compare('3.4b1', $last_version) > 0 ) {
|
40 |
+
// 3.4 moved _yarpp_body_keywords and _yarpp_title_keywords into the single
|
41 |
+
// postmeta _yarpp_keywords, so clear out the old data now.
|
42 |
+
$wpdb->query("delete from {$wpdb->postmeta} where (meta_key = '_yarpp_title_keywords' or meta_key = '_yarpp_body_keywords')");
|
43 |
+
}
|
44 |
}
|
45 |
|
46 |
+
public function cache_status() {
|
47 |
global $wpdb;
|
48 |
return $wpdb->get_var("select (count(p.ID)-sum(m.meta_value IS NULL))/count(p.ID)
|
49 |
FROM `{$wpdb->posts}` as p
|
51 |
WHERE p.post_status = 'publish'");
|
52 |
}
|
53 |
|
54 |
+
public function uncached($limit = 20, $offset = 0) {
|
55 |
global $wpdb;
|
56 |
return $wpdb->get_col("select SQL_CALC_FOUND_ROWS p.ID
|
57 |
FROM `{$wpdb->posts}` as p
|
63 |
/**
|
64 |
* MAGIC FILTERS
|
65 |
*/
|
66 |
+
public function where_filter($arg) {
|
67 |
global $wpdb;
|
68 |
if ($this->yarpp_time) {
|
69 |
$threshold = yarpp_get_option('threshold');
|
79 |
return $arg;
|
80 |
}
|
81 |
|
82 |
+
public function orderby_filter($arg) {
|
83 |
global $wpdb;
|
84 |
// only order by score if the score function is added in fields_filter, which only happens
|
85 |
// if there are related posts in the postdata
|
89 |
return $arg;
|
90 |
}
|
91 |
|
92 |
+
public function fields_filter($arg) {
|
93 |
global $wpdb, $wpdb;
|
94 |
if ($this->yarpp_time && is_array($this->related_postdata) && count($this->related_postdata)) {
|
95 |
$scores = array();
|
101 |
return $arg;
|
102 |
}
|
103 |
|
104 |
+
public function demo_request_filter($arg) {
|
105 |
global $wpdb;
|
106 |
if ($this->demo_time) {
|
107 |
$wpdb->query("set @count = 0;");
|
113 |
return $arg;
|
114 |
}
|
115 |
|
116 |
+
public function limit_filter($arg) {
|
117 |
global $wpdb;
|
118 |
if ($this->yarpp_time and $this->online_limit)
|
119 |
return " limit {$this->online_limit} ";
|
123 |
/**
|
124 |
* RELATEDNESS CACHE CONTROL
|
125 |
*/
|
126 |
+
public function is_yarpp_time() {
|
127 |
+
return $this->yarpp_time;
|
128 |
+
}
|
129 |
+
|
130 |
+
public function begin_yarpp_time($reference_ID) {
|
131 |
$this->yarpp_time = true;
|
132 |
// get the related posts from postdata, and also construct the relate_IDs array
|
133 |
$this->related_postdata = get_post_meta($reference_ID,YARPP_POSTMETA_RELATED_KEY,true);
|
135 |
$this->related_IDs = array_map(create_function('$x','return $x["ID"];'), $this->related_postdata);
|
136 |
}
|
137 |
|
138 |
+
public function end_yarpp_time() {
|
139 |
$this->yarpp_time = false;
|
140 |
$this->related_IDs = array();
|
141 |
$this->related_postdata = array();
|
142 |
}
|
143 |
|
144 |
+
// @return YARPP_NO_RELATED | YARPP_RELATED | YARPP_NOT_CACHED
|
145 |
+
public function is_cached($reference_ID) {
|
146 |
+
$related = get_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, true);
|
147 |
+
if ( YARPP_NO_RELATED === $related )
|
148 |
+
return YARPP_NO_RELATED;
|
149 |
+
if ( '' == $related )
|
150 |
+
return YARPP_NOT_CACHED;
|
151 |
+
return YARPP_RELATED;
|
152 |
}
|
153 |
|
154 |
+
public function clear($reference_ID) {
|
155 |
if (is_int($reference_ID))
|
156 |
$reference_ID = array($reference_ID);
|
157 |
// make sure that we have a non-trivial array
|
163 |
}
|
164 |
}
|
165 |
|
166 |
+
// @return YARPP_NO_RELATED | YARPP_RELATED | YARPP_NOT_CACHED
|
167 |
+
public function update($reference_ID) {
|
168 |
global $wpdb, $yarpp_debug;
|
169 |
|
170 |
// $reference_ID must be numeric
|
171 |
+
if ( !$reference_ID = absint($reference_ID) )
|
172 |
+
return YARPP_NOT_CACHED;
|
173 |
|
174 |
$original_related = $this->related($reference_ID);
|
175 |
+
$related = $wpdb->get_results(yarpp_sql($reference_ID), ARRAY_A);
|
176 |
$new_related = array_map(create_function('$x','return $x["ID"];'), $related);
|
177 |
|
178 |
+
if ( count($new_related) ) {
|
179 |
update_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, $related);
|
180 |
if ($yarpp_debug) echo "<!--YARPP just set the cache for post $reference_ID-->";
|
181 |
|
184 |
$this->clear(array_diff($original_related, $new_related));
|
185 |
$this->clear(array_diff($new_related, $original_related));
|
186 |
}
|
187 |
+
|
188 |
+
return YARPP_RELATED;
|
189 |
} else {
|
190 |
update_post_meta($reference_ID, YARPP_POSTMETA_RELATED_KEY, YARPP_NO_RELATED);
|
191 |
+
|
192 |
// Clear the caches of those which are no longer related.
|
193 |
+
if (count($original_related))
|
194 |
$this->clear($original_related);
|
195 |
+
|
196 |
+
return YARPP_NO_RELATED;
|
197 |
}
|
198 |
}
|
199 |
|
200 |
+
public function flush() {
|
201 |
global $wpdb;
|
202 |
return $wpdb->query("delete from `{$wpdb->postmeta}` where meta_key = '" . YARPP_POSTMETA_RELATED_KEY . "'");
|
203 |
}
|
204 |
|
205 |
+
public function related($reference_ID = null, $related_ID = null) {
|
206 |
global $wpdb;
|
207 |
|
208 |
if ( !is_int( $reference_ID ) && !is_int( $related_ID ) )
|
236 |
/**
|
237 |
* KEYWORDS CACHE CONTROL
|
238 |
*/
|
239 |
+
|
240 |
+
// @return (array) with body and title keywords
|
241 |
+
private function cache_keywords($ID) {
|
242 |
+
$keywords = array(
|
243 |
+
'body' => post_body_keywords($ID),
|
244 |
+
'title' => post_title_keywords($ID)
|
245 |
+
);
|
246 |
+
update_post_meta($ID, YARPP_POSTMETA_KEYWORDS_KEY, $keywords);
|
247 |
+
return $keywords;
|
248 |
}
|
249 |
|
250 |
+
// @param $ID (int)
|
251 |
+
// @param $type (string) body | title | all
|
252 |
+
// @return (string|array) depending on whether "all" were requested or not
|
253 |
+
public function get_keywords( $ID, $type = 'all' ) {
|
254 |
+
if ( !$ID = absint($ID) )
|
255 |
return false;
|
256 |
|
257 |
+
$keywords = get_post_meta($ID, YARPP_POSTMETA_KEYWORDS_KEY, true);
|
|
|
258 |
|
259 |
+
if ( empty($keywords) ) // if empty, try caching them first.
|
260 |
+
$keywords = $this->cache_keywords($ID);
|
|
|
|
|
|
|
261 |
|
262 |
+
if ( empty($keywords) )
|
263 |
+
return false;
|
264 |
+
|
265 |
+
if ( 'all' == $type )
|
266 |
+
return $keywords;
|
267 |
+
return $keywords[$type];
|
268 |
}
|
269 |
}
|
cache-tables.php
CHANGED
@@ -6,10 +6,11 @@ define('YARPP_TABLES_RELATED_TABLE', 'yarpp_related_cache');
|
|
6 |
define('YARPP_TABLES_KEYWORDS_TABLE', 'yarpp_keyword_cache');
|
7 |
|
8 |
class YARPP_Cache_Tables {
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
|
|
13 |
|
14 |
/**
|
15 |
* SETUP/STATUS
|
@@ -24,7 +25,7 @@ class YARPP_Cache_Tables {
|
|
24 |
add_filter('post_limits',array(&$this,'limit_filter'));
|
25 |
}
|
26 |
|
27 |
-
function is_enabled() {
|
28 |
global $wpdb;
|
29 |
// now check for the cache tables
|
30 |
$tabledata = $wpdb->get_col("show tables");
|
@@ -35,7 +36,7 @@ class YARPP_Cache_Tables {
|
|
35 |
return false;
|
36 |
}
|
37 |
|
38 |
-
function setup() {
|
39 |
global $wpdb;
|
40 |
$wpdb->query("CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . "` (
|
41 |
`ID` bigint(20) unsigned NOT NULL default '0',
|
@@ -54,9 +55,9 @@ class YARPP_Cache_Tables {
|
|
54 |
) ENGINE=MyISAM;");
|
55 |
}
|
56 |
|
57 |
-
function upgrade($last_version) {
|
58 |
global $wpdb;
|
59 |
-
if (version_compare('3.2.1b4', $last_version) > 0) {
|
60 |
// Change primary key to be (reference_ID, ID) to ensure that we don't
|
61 |
// get duplicates.
|
62 |
// We unfortunately have to clear the cache first here, to ensure that there
|
@@ -69,7 +70,7 @@ class YARPP_Cache_Tables {
|
|
69 |
}
|
70 |
}
|
71 |
|
72 |
-
function cache_status() {
|
73 |
global $wpdb;
|
74 |
return $wpdb->get_var("select (count(p.ID)-sum(c.ID IS NULL))/count(p.ID)
|
75 |
FROM `{$wpdb->posts}` as p
|
@@ -77,7 +78,7 @@ class YARPP_Cache_Tables {
|
|
77 |
WHERE p.post_status = 'publish' ");
|
78 |
}
|
79 |
|
80 |
-
function uncached($limit = 20, $offset = 0) {
|
81 |
global $wpdb;
|
82 |
return $wpdb->get_col("select SQL_CALC_FOUND_ROWS p.ID
|
83 |
FROM `{$wpdb->posts}` as p
|
@@ -89,14 +90,14 @@ class YARPP_Cache_Tables {
|
|
89 |
/**
|
90 |
* MAGIC FILTERS
|
91 |
*/
|
92 |
-
function join_filter($arg) {
|
93 |
global $wpdb;
|
94 |
if ($this->yarpp_time)
|
95 |
$arg .= " join {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " as yarpp on {$wpdb->posts}.ID = yarpp.ID";
|
96 |
return $arg;
|
97 |
}
|
98 |
|
99 |
-
function where_filter($arg) {
|
100 |
global $wpdb;
|
101 |
$threshold = yarpp_get_option('threshold');
|
102 |
if ($this->yarpp_time) {
|
@@ -109,21 +110,21 @@ class YARPP_Cache_Tables {
|
|
109 |
return $arg;
|
110 |
}
|
111 |
|
112 |
-
function orderby_filter($arg) {
|
113 |
global $wpdb;
|
114 |
if ($this->yarpp_time and $this->score_override)
|
115 |
$arg = str_replace("$wpdb->posts.post_date","yarpp.score",$arg);
|
116 |
return $arg;
|
117 |
}
|
118 |
|
119 |
-
function fields_filter($arg) {
|
120 |
global $wpdb;
|
121 |
if ($this->yarpp_time)
|
122 |
$arg .= ", yarpp.score";
|
123 |
return $arg;
|
124 |
}
|
125 |
|
126 |
-
function demo_request_filter($arg) {
|
127 |
global $wpdb;
|
128 |
if ($this->demo_time) {
|
129 |
$wpdb->query("set @count = 0;");
|
@@ -135,7 +136,7 @@ class YARPP_Cache_Tables {
|
|
135 |
return $arg;
|
136 |
}
|
137 |
|
138 |
-
function limit_filter($arg) {
|
139 |
global $wpdb;
|
140 |
if ($this->yarpp_time and $this->online_limit) {
|
141 |
return " limit {$this->online_limit} ";
|
@@ -146,20 +147,42 @@ class YARPP_Cache_Tables {
|
|
146 |
/**
|
147 |
* RELATEDNESS CACHE CONTROL
|
148 |
*/
|
149 |
-
function
|
|
|
|
|
|
|
|
|
150 |
$this->yarpp_time = true;
|
151 |
}
|
152 |
|
153 |
-
function end_yarpp_time() {
|
154 |
$this->yarpp_time = false;
|
155 |
}
|
156 |
|
157 |
-
|
|
|
158 |
global $wpdb;
|
159 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
}
|
161 |
|
162 |
-
function clear($reference_ID) {
|
163 |
global $wpdb;
|
164 |
if (is_array($reference_ID) && count($reference_ID))
|
165 |
$wpdb->query("delete from {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " where reference_ID in (".implode(',',$reference_ID).")");
|
@@ -167,24 +190,25 @@ class YARPP_Cache_Tables {
|
|
167 |
$wpdb->query("delete from {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " where reference_ID = {$reference_ID}");
|
168 |
}
|
169 |
|
170 |
-
|
|
|
171 |
global $wpdb, $yarpp_debug;
|
172 |
|
173 |
// $reference_ID must be numeric
|
174 |
-
if (
|
175 |
-
return
|
176 |
|
177 |
$original_related = $this->related($reference_ID);
|
178 |
-
//error_log('original:' . implode(':', $original_related));
|
179 |
|
180 |
// clear out the cruft
|
181 |
$this->clear($reference_ID);
|
182 |
|
183 |
-
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " (reference_ID,ID,score) ".yarpp_sql(
|
184 |
|
185 |
-
|
|
|
186 |
$new_related = $this->related($reference_ID);
|
187 |
-
|
188 |
if ($yarpp_debug) echo "<!--YARPP just set the cache for post $reference_ID-->";
|
189 |
|
190 |
// Clear the caches of any items which are no longer related or are newly related.
|
@@ -192,23 +216,29 @@ class YARPP_Cache_Tables {
|
|
192 |
$this->clear(array_diff($original_related, $new_related));
|
193 |
$this->clear(array_diff($new_related, $original_related));
|
194 |
}
|
|
|
|
|
195 |
} else {
|
196 |
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " (reference_ID,ID,score) values ($reference_ID,0,0) on duplicate key update date = now()");
|
197 |
-
|
198 |
-
|
|
|
|
|
199 |
// Clear the caches of those which are no longer related.
|
200 |
-
if (count($original_related))
|
201 |
$this->clear($original_related);
|
202 |
-
|
|
|
203 |
}
|
204 |
}
|
205 |
|
206 |
-
function flush() {
|
207 |
global $wpdb;
|
208 |
-
|
|
|
209 |
}
|
210 |
|
211 |
-
function related($reference_ID = null, $related_ID = null) {
|
212 |
global $wpdb;
|
213 |
|
214 |
if ( !is_int( $reference_ID ) && !is_int( $related_ID ) )
|
@@ -235,7 +265,8 @@ class YARPP_Cache_Tables {
|
|
235 |
/**
|
236 |
* KEYWORDS CACHE CONTROL
|
237 |
*/
|
238 |
-
|
|
|
239 |
global $wpdb;
|
240 |
$body_terms = post_body_keywords($ID);
|
241 |
$title_terms = post_title_keywords($ID);
|
@@ -246,25 +277,27 @@ class YARPP_Cache_Tables {
|
|
246 |
|
247 |
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . " (ID,body,title) values ($ID,'$body_terms ','$title_terms ') on duplicate key update date = now(), body = '$body_terms ', title = '$title_terms '");
|
248 |
|
|
|
249 |
}
|
250 |
|
251 |
-
|
|
|
|
|
|
|
252 |
global $wpdb;
|
253 |
|
254 |
if ( !is_int($ID) )
|
255 |
return false;
|
256 |
|
257 |
-
$
|
258 |
-
if ( empty($
|
259 |
-
$this->cache_keywords($ID);
|
260 |
-
$out = $wpdb->get_var("select $type from {$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . " where ID = $ID");
|
261 |
-
}
|
262 |
|
263 |
-
if ( empty($
|
264 |
-
//echo "<!--YARPP ERROR: couldn't select/create yarpp $type keywords for $ID-->";
|
265 |
return false;
|
266 |
-
|
267 |
-
|
268 |
-
|
|
|
269 |
}
|
270 |
}
|
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;
|
12 |
+
public $score_override = false; // @todo: should be private
|
13 |
+
public $online_limit = false; // @todo: should be private
|
14 |
|
15 |
/**
|
16 |
* SETUP/STATUS
|
25 |
add_filter('post_limits',array(&$this,'limit_filter'));
|
26 |
}
|
27 |
|
28 |
+
public function is_enabled() {
|
29 |
global $wpdb;
|
30 |
// now check for the cache tables
|
31 |
$tabledata = $wpdb->get_col("show tables");
|
36 |
return false;
|
37 |
}
|
38 |
|
39 |
+
public function setup() {
|
40 |
global $wpdb;
|
41 |
$wpdb->query("CREATE TABLE IF NOT EXISTS `{$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . "` (
|
42 |
`ID` bigint(20) unsigned NOT NULL default '0',
|
55 |
) ENGINE=MyISAM;");
|
56 |
}
|
57 |
|
58 |
+
public function upgrade($last_version) {
|
59 |
global $wpdb;
|
60 |
+
if ( $last_version && version_compare('3.2.1b4', $last_version) > 0 ) {
|
61 |
// Change primary key to be (reference_ID, ID) to ensure that we don't
|
62 |
// get duplicates.
|
63 |
// We unfortunately have to clear the cache first here, to ensure that there
|
70 |
}
|
71 |
}
|
72 |
|
73 |
+
public function cache_status() {
|
74 |
global $wpdb;
|
75 |
return $wpdb->get_var("select (count(p.ID)-sum(c.ID IS NULL))/count(p.ID)
|
76 |
FROM `{$wpdb->posts}` as p
|
78 |
WHERE p.post_status = 'publish' ");
|
79 |
}
|
80 |
|
81 |
+
public function uncached($limit = 20, $offset = 0) {
|
82 |
global $wpdb;
|
83 |
return $wpdb->get_col("select SQL_CALC_FOUND_ROWS p.ID
|
84 |
FROM `{$wpdb->posts}` as p
|
90 |
/**
|
91 |
* MAGIC FILTERS
|
92 |
*/
|
93 |
+
public function join_filter($arg) {
|
94 |
global $wpdb;
|
95 |
if ($this->yarpp_time)
|
96 |
$arg .= " join {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " as yarpp on {$wpdb->posts}.ID = yarpp.ID";
|
97 |
return $arg;
|
98 |
}
|
99 |
|
100 |
+
public function where_filter($arg) {
|
101 |
global $wpdb;
|
102 |
$threshold = yarpp_get_option('threshold');
|
103 |
if ($this->yarpp_time) {
|
110 |
return $arg;
|
111 |
}
|
112 |
|
113 |
+
public function orderby_filter($arg) {
|
114 |
global $wpdb;
|
115 |
if ($this->yarpp_time and $this->score_override)
|
116 |
$arg = str_replace("$wpdb->posts.post_date","yarpp.score",$arg);
|
117 |
return $arg;
|
118 |
}
|
119 |
|
120 |
+
public function fields_filter($arg) {
|
121 |
global $wpdb;
|
122 |
if ($this->yarpp_time)
|
123 |
$arg .= ", yarpp.score";
|
124 |
return $arg;
|
125 |
}
|
126 |
|
127 |
+
public function demo_request_filter($arg) {
|
128 |
global $wpdb;
|
129 |
if ($this->demo_time) {
|
130 |
$wpdb->query("set @count = 0;");
|
136 |
return $arg;
|
137 |
}
|
138 |
|
139 |
+
public function limit_filter($arg) {
|
140 |
global $wpdb;
|
141 |
if ($this->yarpp_time and $this->online_limit) {
|
142 |
return " limit {$this->online_limit} ";
|
147 |
/**
|
148 |
* RELATEDNESS CACHE CONTROL
|
149 |
*/
|
150 |
+
public function is_yarpp_time() {
|
151 |
+
return $this->yarpp_time;
|
152 |
+
}
|
153 |
+
|
154 |
+
public function begin_yarpp_time() {
|
155 |
$this->yarpp_time = true;
|
156 |
}
|
157 |
|
158 |
+
public function end_yarpp_time() {
|
159 |
$this->yarpp_time = false;
|
160 |
}
|
161 |
|
162 |
+
// @return YARPP_NO_RELATED | YARPP_RELATED | YARPP_NOT_CACHED
|
163 |
+
public function is_cached($reference_ID) {
|
164 |
global $wpdb;
|
165 |
+
|
166 |
+
$result = wp_cache_get( 'is_cached_' . $reference_ID, 'yarpp' );
|
167 |
+
if ( false !== $result )
|
168 |
+
return $result;
|
169 |
+
|
170 |
+
$min_id = $wpdb->get_var("select min(ID) as min_id from {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " where reference_ID = $reference_ID");
|
171 |
+
|
172 |
+
if ( is_null( $min_id ) )
|
173 |
+
return YARPP_NOT_CACHED;
|
174 |
+
|
175 |
+
if ( 0 == $min_id )
|
176 |
+
$result = YARPP_NO_RELATED;
|
177 |
+
else
|
178 |
+
$result = YARPP_RELATED;
|
179 |
+
|
180 |
+
wp_cache_set( 'is_cached_' . $reference_ID, $result, 'yarpp' );
|
181 |
+
|
182 |
+
return $result;
|
183 |
}
|
184 |
|
185 |
+
public function clear($reference_ID) {
|
186 |
global $wpdb;
|
187 |
if (is_array($reference_ID) && count($reference_ID))
|
188 |
$wpdb->query("delete from {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " where reference_ID in (".implode(',',$reference_ID).")");
|
190 |
$wpdb->query("delete from {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " where reference_ID = {$reference_ID}");
|
191 |
}
|
192 |
|
193 |
+
// @return YARPP_RELATED | YARPP_NO_RELATED | YARPP_NOT_CACHED
|
194 |
+
public function update($reference_ID) {
|
195 |
global $wpdb, $yarpp_debug;
|
196 |
|
197 |
// $reference_ID must be numeric
|
198 |
+
if ( !$reference_ID = absint($reference_ID) )
|
199 |
+
return YARPP_NOT_CACHED;
|
200 |
|
201 |
$original_related = $this->related($reference_ID);
|
|
|
202 |
|
203 |
// clear out the cruft
|
204 |
$this->clear($reference_ID);
|
205 |
|
206 |
+
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " (reference_ID,ID,score) ".yarpp_sql($reference_ID)." on duplicate key update date = now()");
|
207 |
|
208 |
+
// If there were related entries saved...
|
209 |
+
if ( $wpdb->rows_affected ) {
|
210 |
$new_related = $this->related($reference_ID);
|
211 |
+
|
212 |
if ($yarpp_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.
|
216 |
$this->clear(array_diff($original_related, $new_related));
|
217 |
$this->clear(array_diff($new_related, $original_related));
|
218 |
}
|
219 |
+
|
220 |
+
return YARPP_RELATED;
|
221 |
} else {
|
222 |
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . " (reference_ID,ID,score) values ($reference_ID,0,0) on duplicate key update date = now()");
|
223 |
+
|
224 |
+
//if (!$wpdb->rows_affected)
|
225 |
+
// return YARPP_NOT_CACHED;
|
226 |
+
|
227 |
// Clear the caches of those which are no longer related.
|
228 |
+
if ( count($original_related) )
|
229 |
$this->clear($original_related);
|
230 |
+
|
231 |
+
return YARPP_NO_RELATED;
|
232 |
}
|
233 |
}
|
234 |
|
235 |
+
public function flush() {
|
236 |
global $wpdb;
|
237 |
+
$wpdb->query("truncate table `{$wpdb->prefix}" . YARPP_TABLES_RELATED_TABLE . "`");
|
238 |
+
$wpdb->query("truncate table `{$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . "`");
|
239 |
}
|
240 |
|
241 |
+
public function related($reference_ID = null, $related_ID = null) {
|
242 |
global $wpdb;
|
243 |
|
244 |
if ( !is_int( $reference_ID ) && !is_int( $related_ID ) )
|
265 |
/**
|
266 |
* KEYWORDS CACHE CONTROL
|
267 |
*/
|
268 |
+
// @return (array) with body and title keywords
|
269 |
+
private function cache_keywords($ID) {
|
270 |
global $wpdb;
|
271 |
$body_terms = post_body_keywords($ID);
|
272 |
$title_terms = post_title_keywords($ID);
|
277 |
|
278 |
$wpdb->query("insert into {$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . " (ID,body,title) values ($ID,'$body_terms ','$title_terms ') on duplicate key update date = now(), body = '$body_terms ', title = '$title_terms '");
|
279 |
|
280 |
+
return array( 'body' => $body_terms, 'title' => $title_terms );
|
281 |
}
|
282 |
|
283 |
+
// @param $ID (int)
|
284 |
+
// @param $type (string) body | title | all
|
285 |
+
// @return (string|array) depending on whether "all" were requested or not
|
286 |
+
public function get_keywords( $ID, $type = 'all' ) {
|
287 |
global $wpdb;
|
288 |
|
289 |
if ( !is_int($ID) )
|
290 |
return false;
|
291 |
|
292 |
+
$keywords = $wpdb->get_row("select body, title from {$wpdb->prefix}" . YARPP_TABLES_KEYWORDS_TABLE . " where ID = $ID", ARRAY_A);
|
293 |
+
if ( empty($keywords) ) // if empty, try caching them first.
|
294 |
+
$keywords = $this->cache_keywords($ID);
|
|
|
|
|
295 |
|
296 |
+
if ( empty($keywords) )
|
|
|
297 |
return false;
|
298 |
+
|
299 |
+
if ( 'all' == $type )
|
300 |
+
return $keywords;
|
301 |
+
return $keywords[$type];
|
302 |
}
|
303 |
}
|
includes.php
CHANGED
@@ -38,10 +38,10 @@ $yarpp_value_options = array(
|
|
38 |
'rss_after_related' => '</ol>',
|
39 |
'rss_no_results' => '<p>'.__('No related posts.','yarpp').'</p>',
|
40 |
'rss_order' => 'score DESC',
|
41 |
-
'title' =>
|
42 |
-
'body' =>
|
43 |
-
'categories' =>
|
44 |
-
'tags' =>
|
45 |
'distags' => '',
|
46 |
'discats' => '');
|
47 |
$yarpp_binary_options = array(
|
@@ -57,7 +57,8 @@ $yarpp_binary_options = array(
|
|
57 |
'rss_display' => false, // changed default in 3.1.7
|
58 |
'rss_excerpt_display' => true,
|
59 |
'promote_yarpp' => false,
|
60 |
-
'rss_promote_yarpp' => false
|
|
|
61 |
// These are options which, when updated, will trigger a clearing of the cache
|
62 |
$yarpp_clear_cache_options = array(
|
63 |
'distags','discats','show_pass_post','recent_only','threshold','title','body','categories',
|
@@ -76,15 +77,7 @@ function yarpp_enabled() {
|
|
76 |
}
|
77 |
|
78 |
function yarpp_activate() {
|
79 |
-
global $yarpp_version, $wpdb, $
|
80 |
-
foreach (array_keys($yarpp_value_options) as $option) {
|
81 |
-
if (get_option("yarpp_$option") === false)
|
82 |
-
add_option("yarpp_$option",$yarpp_value_options[$option] . ' ');
|
83 |
-
}
|
84 |
-
foreach (array_keys($yarpp_binary_options) as $option) {
|
85 |
-
if (get_option("yarpp_$option") === false)
|
86 |
-
add_option("yarpp_$option",$yarpp_binary_options[$option]);
|
87 |
-
}
|
88 |
|
89 |
$wpdb->get_results("show index from $wpdb->posts where Key_name='yarpp_title'");
|
90 |
if (!$wpdb->num_rows)
|
@@ -94,16 +87,16 @@ function yarpp_activate() {
|
|
94 |
if (!$wpdb->num_rows)
|
95 |
$wpdb->query("ALTER TABLE $wpdb->posts ADD FULLTEXT `yarpp_content` ( `post_content` )");
|
96 |
|
97 |
-
if (!yarpp_enabled()) {
|
98 |
// If we are still not enabled, run the cache abstraction's setup method.
|
99 |
$yarpp_cache->setup();
|
100 |
// If we're still not enabled, give up.
|
101 |
-
if (!yarpp_enabled())
|
102 |
return 0;
|
103 |
}
|
104 |
|
105 |
-
if (!get_option('yarpp_version')) {
|
106 |
-
add_option('yarpp_version',YARPP_VERSION);
|
107 |
yarpp_version_info(true);
|
108 |
} else {
|
109 |
yarpp_upgrade_check();
|
@@ -123,19 +116,14 @@ function yarpp_myisam_check() {
|
|
123 |
}
|
124 |
|
125 |
function yarpp_upgrade_check() {
|
126 |
-
$
|
|
|
|
|
127 |
if (version_compare(YARPP_VERSION, $last_version) === 0)
|
128 |
return;
|
129 |
|
130 |
-
|
131 |
-
|
132 |
-
foreach (array_keys($yarpp_value_options) as $option) {
|
133 |
-
if (get_option("yarpp_$option") === false)
|
134 |
-
add_option("yarpp_$option",$yarpp_value_options[$option].' ');
|
135 |
-
}
|
136 |
-
foreach (array_keys($yarpp_binary_options) as $option) {
|
137 |
-
if (get_option("yarpp_$option") === false)
|
138 |
-
add_option("yarpp_$option",$yarpp_binary_options[$option]);
|
139 |
}
|
140 |
|
141 |
$yarpp_cache->upgrade($last_version);
|
@@ -145,6 +133,48 @@ function yarpp_upgrade_check() {
|
|
145 |
update_option('yarpp_version',YARPP_VERSION);
|
146 |
}
|
147 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
function yarpp_admin_menu() {
|
149 |
$hook = add_options_page(__('Related Posts (YARPP)','yarpp'),__('Related Posts (YARPP)','yarpp'), 'manage_options', 'yarpp', 'yarpp_options_page');
|
150 |
add_action("load-$hook",'yarpp_load_thickbox');
|
@@ -184,7 +214,7 @@ function yarpp_options_page() {
|
|
184 |
}
|
185 |
|
186 |
function widget_yarpp_init() {
|
187 |
-
register_widget('YARPP_Widget');
|
188 |
}
|
189 |
|
190 |
// vaguely based on code by MK Safi
|
@@ -289,7 +319,7 @@ function yarpp_default($content) {
|
|
289 |
if (yarpp_get_option('cross_relate'))
|
290 |
$type = array('post','page');
|
291 |
|
292 |
-
if (yarpp_get_option('auto_display')
|
293 |
return $content . yarpp_related($type,array(),false,false,'website');
|
294 |
else
|
295 |
return $content;
|
@@ -331,26 +361,35 @@ function yarpp_excerpt($content,$length) {
|
|
331 |
return implode(' ',array_slice(preg_split('/\s+/',$content),0,$length)).'...';
|
332 |
}
|
333 |
|
334 |
-
function yarpp_set_option($
|
335 |
-
global $
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
|
|
|
|
|
|
|
|
|
|
340 |
// new in 3.1: clear cache when updating certain settings.
|
341 |
-
|
342 |
-
|
|
|
|
|
|
|
343 |
}
|
344 |
|
345 |
-
function yarpp_get_option($option
|
346 |
-
global $yarpp_value_options;
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
|
|
354 |
}
|
355 |
|
356 |
function yarpp_microtime_float() {
|
38 |
'rss_after_related' => '</ol>',
|
39 |
'rss_no_results' => '<p>'.__('No related posts.','yarpp').'</p>',
|
40 |
'rss_order' => 'score DESC',
|
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(
|
57 |
'rss_display' => false, // changed default in 3.1.7
|
58 |
'rss_excerpt_display' => true,
|
59 |
'promote_yarpp' => false,
|
60 |
+
'rss_promote_yarpp' => false,
|
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 |
'distags','discats','show_pass_post','recent_only','threshold','title','body','categories',
|
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)
|
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();
|
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);
|
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');
|
214 |
}
|
215 |
|
216 |
function widget_yarpp_init() {
|
217 |
+
register_widget( 'YARPP_Widget' );
|
218 |
}
|
219 |
|
220 |
// vaguely based on code by MK Safi
|
319 |
if (yarpp_get_option('cross_relate'))
|
320 |
$type = array('post','page');
|
321 |
|
322 |
+
if (yarpp_get_option('auto_display') && is_single())
|
323 |
return $content . yarpp_related($type,array(),false,false,'website');
|
324 |
else
|
325 |
return $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, $yarpp_cache;
|
366 |
+
|
367 |
+
$current_options = yarpp_get_option();
|
368 |
+
|
369 |
+
// we can call yarpp_set_option(key,value) if we like:
|
370 |
+
if ( !is_array($options) && isset($value) )
|
371 |
+
$options = array( $options => $value );
|
372 |
+
|
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( array_diff($options, $current_options) ), $yarpp_clear_cache_options );
|
377 |
+
if ( count($new_options_which_require_flush) )
|
378 |
+
$yarpp_cache->flush();
|
379 |
+
|
380 |
+
update_option( 'yarpp', $new_options );
|
381 |
}
|
382 |
|
383 |
+
function yarpp_get_option($option = null) {
|
384 |
+
global $yarpp_value_options, $yarpp_binary_options;
|
385 |
+
|
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[$option];
|
392 |
+
return $options;
|
393 |
}
|
394 |
|
395 |
function yarpp_microtime_float() {
|
lang/words-nl_NL.php
CHANGED
@@ -1,3 +1,3 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
$overusedwords = array('', 'een', 'de', 'het', 'of', 'in', 'naar', 'op', 'is', 'met', 'voor', 'als', 'dat', 'onder', 'dit', 'mijn', 'mij', 'was', 'ons', 'jij', 'zij', 'wij', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '10', 'over', 'na', 'alle', 'bijna', 'langs', 'ook', 'ander', 'enig', 'enige', 'zijn', 'ben', 'bent', 'beschikbaar', 'terug', 'omdat', 'geweest', 'doordat', 'beste', 'beter', 'groot', 'klein', 'beiden', 'maar', 'c', 'kom', 'komen','kan','kunnen','konden', 'controleren', 'zouden', 'zou', 'cursus', 'd', 'dan', 'dag', 'beslissen', 'deden', 'deed', 'doet', 'verschillend', 'doe', 'niet', 'nog', 'onder', 'rijden', 'e', 'elke', 'gemakkelijk', 'makkie', 'editie', 'versie', 'einde', 'genoeg', 'even', 'elke', 'voorbeeld', 'enkele', 'vinden', 'eerste', 'gevonden', 'vind', 'vindt', 'van', 'krijg', 'krijgen', 'gaan', 'ga', 'goed', 'snap', 'begrijpen', 'heb', 'hebben', 'had', 'hard', 'heeft', 'hij', 'hem', 'haar', 'hier', 'hoe', 'niet', 'wel', 'weten', 'laatste', 'links', 'rechts', 'leuk', 'klein', 'lang', 'kijk', 'kijken', 'veel', 'weinig', 'maken', 'maak', 'gemaakt', 'menu', 'misschien', 'wellicht', 'meer', 'minder', 'naam', 'nbsp', 'nodig', 'nieuw', 'nee', 'ja', 'niet', 'nu', 'nummer', 'uit', 'oud', 'een', 'alleen', 'originineel', 'ander', 'andere', 'anders', 'haar', 'over', 'deel', 'plek', 'plek', 'mooi', 'waarschijnlijk', 'probleem', 'plaats', 'ongeveer', 'gezegde', 're', 'werkelijk', 'uitkomst', 'plus', 'min','klopt', 's', 'zelfde','dezelfde', 'zag', 'zien', 'zie', 'verschillende','zou', 'zouden', 'since', 'maat', 'kleine', 'zo', 'sommige', 'iets', 'speciaal', 'stil','nog', 'dingen', 'zoals', 'natuurlijk', 'systeem', 't', 'nemen','neem', 'dan', 'hun', 'hen', 'daarna', 'er', 'deze', 'dingen', 'ding', 'denk', 'denken', 'zulke', 'moeilijk', 'door','doorheen', 'doordat','omdat', 'tijd', 'vandaag', 'samen', 'ook', 'nam', 'twee', 'gebruiken','gebruik', 'gebruikt', 'gebruikte', 'zeer', 'erg', 'want', 'manier', 'nou', 'nu', 'geweest', 'waar', 'wat', 'wanneer', 'waar', 'welke', 'ondertussen', 'terwijl', 'wit','zwart','wie','wil', 'zou','zouden', 'jou', 'jouw', 'haar', 'van','mensen', 'man', 'vrouw', 'persoon', 'goed', 'slecht', 'heel','later', 'eerder', 'nieuw', 'moet', 'moeten', 'mogen', 'mag', 'zegt', 'zeggen', 'zei', 'zeg', 'maak', 'maken', 'maakte', 'gemaakt', 'doe', 'doen', 'deed', 'deden', 'konden', 'word', 'wordt', 'werd', 'werden', 'ja', 'nee','uh', 'die','naar', 'je', 'maar','jaar','moet', 'aleen');
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$overusedwords = array('', 'een', 'de', 'het', 'of', 'in', 'naar', 'op', 'is', 'met', 'voor', 'als', 'dat', 'onder', 'dit', 'mijn', 'mij', 'was', 'ons', 'jij', 'zij', 'wij', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '10', 'over', 'na', 'alle', 'bijna', 'langs', 'ook', 'ander', 'enig', 'enige', 'zijn', 'ben', 'bent', 'beschikbaar', 'terug', 'omdat', 'geweest', 'doordat', 'beste', 'beter', 'groot', 'klein', 'beiden', 'maar', 'c', 'kom', 'komen','kan','kunnen','konden', 'controleren', 'zouden', 'zou', 'cursus', 'd', 'dan', 'dag', 'beslissen', 'deden', 'deed', 'doet', 'verschillend', 'doe', 'niet', 'nog', 'onder', 'rijden', 'e', 'elke', 'gemakkelijk', 'makkie', 'editie', 'versie', 'einde', 'genoeg', 'even', 'elke', 'voorbeeld', 'enkele', 'vinden', 'eerste', 'gevonden', 'vind', 'vindt', 'van', 'krijg', 'krijgen', 'gaan', 'ga', 'goed', 'snap', 'begrijpen', 'heb', 'hebben', 'had', 'hard', 'heeft', 'hij', 'hem', 'haar', 'hier', 'hoe', 'niet', 'wel', 'weten', 'laatste', 'links', 'rechts', 'leuk', 'klein', 'lang', 'kijk', 'kijken', 'veel', 'weinig', 'maken', 'maak', 'gemaakt', 'menu', 'misschien', 'wellicht', 'meer', 'minder', 'naam', 'nbsp', 'nodig', 'nieuw', 'nee', 'ja', 'niet', 'nu', 'nummer', 'uit', 'oud', 'een', 'alleen', 'originineel', 'ander', 'andere', 'anders', 'haar', 'over', 'deel', 'plek', 'plek', 'mooi', 'waarschijnlijk', 'probleem', 'plaats', 'ongeveer', 'gezegde', 're', 'werkelijk', 'uitkomst', 'plus', 'min','klopt', 's', 'zelfde','dezelfde', 'zag', 'zien', 'zie', 'verschillende','zou', 'zouden', 'since', 'maat', 'kleine', 'zo', 'sommige', 'iets', 'speciaal', 'stil','nog', 'dingen', 'zoals', 'natuurlijk', 'systeem', 't', 'nemen','neem', 'dan', 'hun', 'hen', 'daarna', 'er', 'deze', 'dingen', 'ding', 'denk', 'denken', 'zulke', 'moeilijk', 'door','doorheen', 'doordat','omdat', 'tijd', 'vandaag', 'samen', 'ook', 'nam', 'twee', 'gebruiken','gebruik', 'gebruikt', 'gebruikte', 'zeer', 'erg', 'want', 'manier', 'nou', 'nu', 'geweest', 'waar', 'wat', 'wanneer', 'waar', 'welke', 'ondertussen', 'terwijl', 'wit','zwart','wie','wil', 'zou','zouden', 'jou', 'jouw', 'haar', 'van','mensen', 'man', 'vrouw', 'persoon', 'goed', 'slecht', 'heel','later', 'eerder', 'nieuw', 'moet', 'moeten', 'mogen', 'mag', 'zegt', 'zeggen', 'zei', 'zeg', 'maak', 'maken', 'maakte', 'gemaakt', 'doe', 'doen', 'deed', 'deden', 'konden', 'word', 'wordt', 'werd', 'werden', 'ja', 'nee','uh', 'die','naar', 'je', 'maar','jaar','moet', 'aleen');
|
lang/words-pt_BR.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$overusedwords = array('a', 'acerca', 'agora', 'ainda', 'alguém', 'algum', 'alguma', 'algumas', 'alguns', 'ali', 'ambos', 'ampla', 'amplas', 'amplo', 'amplos', 'ante', 'antes', 'apontar', 'ao', 'aos', 'após', 'aquela', 'aquelas', 'aquele', 'aqueles', 'aqui', 'aquilo', 'as', 'até', 'atrás', 'através', 'bem', 'bom', 'cada', 'caminho', 'cima', 'coisa', 'coisas', 'com', 'como', 'conhecido', 'contra', 'contudo', 'corrente', 'da', 'daquela', 'daquelas', 'daquele', 'daqueles', 'das', 'de', 'debaixo', 'dela', 'delas', 'dele', 'deles', 'dentro', 'depois', 'desde', 'desligado', 'dessa', 'dessas', 'desse', 'desses', 'desta', 'destas', 'deste', 'deste', 'destes', 'deve', 'devem', 'devendo', 'dever', 'dever', 'deverão', 'deveria', 'deveriam', 'devia', 'deviam', 'direita', 'disse', 'disso', 'disto', 'dito', 'diz', 'dizem', 'do', 'dois', 'dos', 'e', 'é', 'ela', 'elas', 'ele', 'eles', 'em', 'enquanto', 'então', 'entre', 'era', 'essa', 'essas', 'esse', 'esses', 'esta', 'está', 'estamos', 'estão', 'estar', 'estará', 'estas', 'estava', 'estavam', 'estávamos', 'este', 'estes', 'estou', 'eu', 'fará', 'faz', 'fazendo', 'fazer', 'fazia', 'feita', 'feitas', 'feito', 'feitos', 'fez', 'fim', 'foi', 'for', 'fora', 'foram', 'fosse', 'fossem', 'grande', 'grandes', 'há', 'hora', 'horas', 'iniciar', 'início', 'ir', 'irá', 'isso', 'isto', 'já', 'ligado', 'maioria', 'maiorias', 'mais', 'mas', 'me', 'mesma', 'mesmas', 'mesmo', 'mesmos', 'meu', 'meus', 'minha', 'minhas', 'muita', 'muitas', 'muito', 'muitos', 'na', 'não', 'nas', 'nem', 'nenhum', 'nessa', 'nessas', 'nesta', 'nestas', 'ninguém', 'no', 'nome', 'nos', 'nós', 'nossa', 'nossas', 'nosso', 'nossos', 'novo', 'num', 'numa', 'nunca', 'o', 'onde', 'os', 'ou', 'outra', 'outras', 'outro', 'outros', 'para', 'parte', 'pegar', 'pela', 'pelas', 'pelo', 'pelos', 'pequena', 'pequenas', 'pequeno', 'pequenos', 'perante', 'pessoa', 'pessoas', 'pode', 'podendo', 'poder', 'poderá', 'poderia', 'poderiam', 'podia', 'podiam', 'pois', 'por', 'porém', 'porque', 'posso', 'pouca', 'poucas', 'pouco', 'poucos', 'povo', 'primeiro', 'primeiros', 'própria', 'próprio', 'próprios', 'quais', 'qual', 'qualquer', 'quando', 'quanto', 'quantos', 'que', 'quê', 'quem', 'saber', 'são', 'se', 'seja', 'sejam', 'sem', 'sempre', 'sendo', 'ser', 'será', 'serão', 'seu', 'seus', 'si', 'sido', 'só', 'sob', 'sobre', 'somente', 'sua', 'suas', 'tal', 'talvez', 'também', 'tampouco', 'te', 'tem', 'têm', 'tempo', 'tendo', 'tenha', 'tenho', 'tentaram', 'tentarem', 'ter', 'teu', 'teus', 'teve', 'ti', 'tido', 'tinha', 'tinham', 'tipo', 'tive', 'toda', 'todas', 'todavia', 'todo', 'todos', 'tu', 'tua', 'tuas', 'tudo', 'última', 'últimas', 'último', 'últimos', 'um', 'uma', 'umas', 'uns', 'usa', 'usar', 'veja', 'vendo', 'ver', 'verdade', 'verdadeiro', 'vez', 'vindo', 'vir', 'você');
|
magic.php
CHANGED
@@ -4,94 +4,67 @@
|
|
4 |
|
5 |
function yarpp_set_score_override_flag($q) {
|
6 |
global $yarpp_cache;
|
7 |
-
if ($yarpp_cache->
|
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 |
-
|
17 |
-
|
18 |
}
|
19 |
}
|
20 |
|
21 |
//=CACHING===========
|
22 |
|
23 |
-
function yarpp_sql($
|
24 |
global $wpdb, $post, $yarpp_debug, $yarpp_cache;
|
25 |
|
26 |
-
if (is_object($post)
|
27 |
$reference_ID = $post->ID;
|
28 |
}
|
29 |
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
$domainprefix = '';
|
35 |
-
|
36 |
-
$options = array('limit'=>"${domainprefix}limit",
|
37 |
-
'threshold'=>'threshold',
|
38 |
-
'show_pass_post'=>'show_pass_post',
|
39 |
-
'past_only'=>'past_only',
|
40 |
-
'body'=>'body',
|
41 |
-
'title'=>'title',
|
42 |
-
'tags'=>'tags',
|
43 |
-
'categories'=>'categories',
|
44 |
-
'distags'=>'distags',
|
45 |
-
'discats'=>'discats',
|
46 |
-
'recent_only'=>'recent_only',
|
47 |
-
'recent_number'=>'recent_number',
|
48 |
-
'recent_units'=>'recent_units');
|
49 |
-
$optvals = array();
|
50 |
-
foreach (array_keys($options) as $option) {
|
51 |
-
if (isset($args[$option])) {
|
52 |
-
$optvals[$option] = stripslashes($args[$option]);
|
53 |
-
} else {
|
54 |
-
$optvals[$option] = stripslashes(stripslashes(yarpp_get_option($options[$option])));
|
55 |
-
}
|
56 |
-
}
|
57 |
-
|
58 |
extract($optvals);
|
59 |
|
60 |
-
|
61 |
-
$body_terms = $yarpp_cache->get_keywords($reference_ID,'body');
|
62 |
-
$title_terms = $yarpp_cache->get_keywords($reference_ID,'title');
|
63 |
|
64 |
-
|
65 |
-
|
66 |
|
67 |
// get weights
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
$
|
75 |
-
$weights['title'] = $titleweight;
|
76 |
-
$weights['cat'] = $catweight;
|
77 |
-
$weights['tag'] = $tagweight;
|
78 |
-
|
79 |
-
$totalweight = $bodyweight + $titleweight + $tagweight + $catweight;
|
80 |
|
81 |
// get disallowed categories and tags
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
|
|
|
|
|
|
|
|
86 |
|
87 |
$criteria = array();
|
88 |
-
if ($
|
89 |
-
$criteria['body'] = "(MATCH (post_content) AGAINST ('".$wpdb->escape($
|
90 |
-
if ($
|
91 |
-
$criteria['title'] = "(MATCH (post_title) AGAINST ('".$wpdb->escape($
|
92 |
-
if ($
|
93 |
$criteria['tag'] = "COUNT( DISTINCT tagtax.term_taxonomy_id )";
|
94 |
-
if ($
|
95 |
$criteria['cat'] = "COUNT( DISTINCT cattax.term_taxonomy_id )";
|
96 |
|
97 |
$newsql = "SELECT $reference_ID as reference_ID, ID, "; //post_title, post_date, post_content, post_excerpt,
|
@@ -109,14 +82,14 @@ function yarpp_sql($args,$giveresults = true,$reference_ID=false,$domain='websit
|
|
109 |
left join $wpdb->term_taxonomy as blocktax using (`term_taxonomy_id`)
|
110 |
left join $wpdb->terms as blockterm on (blocktax.term_id = blockterm.term_id and blockterm.term_id in ($disterms))\n";
|
111 |
|
112 |
-
if ($
|
113 |
$newsql .= " left JOIN $wpdb->term_relationships AS thistag ON (thistag.object_id = $reference_ID )
|
114 |
left JOIN $wpdb->term_relationships AS tagrel on (tagrel.term_taxonomy_id = thistag.term_taxonomy_id
|
115 |
AND tagrel.object_id = $wpdb->posts.ID)
|
116 |
left JOIN $wpdb->term_taxonomy AS tagtax ON ( tagrel.term_taxonomy_id = tagtax.term_taxonomy_id
|
117 |
AND tagtax.taxonomy = 'post_tag')\n";
|
118 |
|
119 |
-
if ($
|
120 |
$newsql .= " left JOIN $wpdb->term_relationships AS thiscat ON (thiscat.object_id = $reference_ID )
|
121 |
left JOIN $wpdb->term_relationships AS catrel on (catrel.term_taxonomy_id = thiscat.term_taxonomy_id
|
122 |
AND catrel.object_id = $wpdb->posts.ID)
|
@@ -125,13 +98,13 @@ function yarpp_sql($args,$giveresults = true,$reference_ID=false,$domain='websit
|
|
125 |
|
126 |
// WHERE
|
127 |
|
128 |
-
$newsql .= " where (post_status IN ( 'publish',
|
129 |
|
130 |
if ($past_only) { // 3.1.8: revised $past_only option
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
$newsql .= " and post_date <= '$reference_post_date' ";
|
136 |
}
|
137 |
if (!$show_pass_post)
|
@@ -139,7 +112,7 @@ function yarpp_sql($args,$giveresults = true,$reference_ID=false,$domain='websit
|
|
139 |
if ($recent_only)
|
140 |
$newsql .= " and post_date > date_sub(now(), interval $recent_number $recent_units) ";
|
141 |
|
142 |
-
|
143 |
|
144 |
// GROUP BY
|
145 |
$newsql .= "\n group by ID \n";
|
@@ -157,13 +130,9 @@ function yarpp_sql($args,$giveresults = true,$reference_ID=false,$domain='websit
|
|
157 |
$newsql .= (($tags == 4)?' and '.$criteria['tag'].' >= 2':'');
|
158 |
$newsql .= " order by score desc limit ".$limit;
|
159 |
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
// in caching, we cross-relate regardless of whether we're going to actually
|
165 |
-
// use it or not.
|
166 |
-
$newsql = "($newsql) union (".str_replace("post_type = 'post'","post_type = 'page'",$newsql).")";
|
167 |
|
168 |
if ($yarpp_debug) echo "<!--$newsql-->";
|
169 |
return $newsql;
|
@@ -174,25 +143,25 @@ function yarpp_sql($args,$giveresults = true,$reference_ID=false,$domain='websit
|
|
174 |
/* new in 3.0! new query-based approach: EXTREMELY HACKY! */
|
175 |
|
176 |
function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'website') {
|
177 |
-
global $
|
178 |
|
179 |
yarpp_upgrade_check();
|
180 |
|
181 |
-
if ($domain
|
182 |
-
if ($yarpp_cache->
|
183 |
return false;
|
184 |
-
|
185 |
-
if (is_object($post) and !$reference_ID)
|
186 |
-
$reference_ID = $post->ID;
|
187 |
} else {
|
188 |
-
if ($yarpp_cache->
|
189 |
return false;
|
|
|
|
|
|
|
190 |
}
|
191 |
|
192 |
get_currentuserinfo();
|
193 |
|
194 |
// set the "domain prefix", used for all the preferences.
|
195 |
-
if ($domain == 'rss'
|
196 |
$domainprefix = 'rss_';
|
197 |
else
|
198 |
$domainprefix = '';
|
@@ -200,8 +169,8 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
200 |
// get options
|
201 |
// note the 2.1 change... the options array changed from what you might call a "list" to a "hash"... this changes the structure of the $args to something which is, in the long term, much more useful
|
202 |
$options = array(
|
203 |
-
|
204 |
-
|
205 |
'use_template'=>"${domainprefix}use_template",
|
206 |
'order'=>"${domainprefix}order",
|
207 |
'template_file'=>"${domainprefix}template_file",
|
@@ -209,9 +178,9 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
209 |
$optvals = array();
|
210 |
foreach (array_keys($options) as $option) {
|
211 |
if (isset($args[$option])) {
|
212 |
-
$optvals[$option] =
|
213 |
} else {
|
214 |
-
$optvals[$option] =
|
215 |
}
|
216 |
}
|
217 |
extract($optvals);
|
@@ -219,41 +188,44 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
219 |
if ($cross_relate)
|
220 |
$type = array('post','page');
|
221 |
|
222 |
-
yarpp_cache_enforce($reference_ID);
|
223 |
|
224 |
$output = '';
|
225 |
|
226 |
-
if ($domain
|
227 |
-
|
228 |
-
else {
|
229 |
$yarpp_cache->demo_time = true;
|
230 |
if ($domain == 'demo_web')
|
231 |
$yarpp_cache->demo_limit = yarpp_get_option('limit');
|
232 |
else
|
233 |
$yarpp_cache->demo_limit = yarpp_get_option('rss_limit');
|
|
|
|
|
|
|
|
|
|
|
234 |
}
|
235 |
-
|
|
|
236 |
$current_query = $wp_query;
|
237 |
-
$current_post = $post;
|
238 |
-
$current_id = $id;
|
239 |
-
$current_page = $page;
|
240 |
-
$current_pages = $pages;
|
241 |
-
$current_authordata = $authordata;
|
242 |
-
$current_numpages = $numpages;
|
243 |
-
$current_multipage = $multipage;
|
244 |
-
$current_more = $more;
|
245 |
$current_pagenow = $pagenow;
|
246 |
-
$current_day = $day;
|
247 |
-
$current_currentmonth = $currentmonth;
|
248 |
|
249 |
-
$
|
250 |
$orders = explode(' ',$order);
|
251 |
-
if (
|
252 |
-
$
|
253 |
-
else
|
254 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
255 |
|
256 |
-
$wp_query = $related_query;
|
257 |
$wp_query->in_the_loop = true;
|
258 |
$wp_query->is_feed = $current_query->is_feed;
|
259 |
// make sure we get the right is_single value
|
@@ -273,25 +245,18 @@ function yarpp_related($type,$args,$echo = true,$reference_ID=false,$domain = 'w
|
|
273 |
include(YARPP_DIR.'/template-builtin.php');
|
274 |
}
|
275 |
|
276 |
-
|
277 |
-
if ($domain != 'demo_web' and $domain != 'demo_rss')
|
278 |
-
$yarpp_cache->end_yarpp_time(); // YARPP time is over... :(
|
279 |
-
else
|
280 |
$yarpp_cache->demo_time = false;
|
|
|
|
|
|
|
|
|
|
|
281 |
|
282 |
// restore the older wp_query.
|
283 |
-
$wp_query =
|
284 |
-
|
285 |
-
$
|
286 |
-
$pages = null; $pages = $current_pages; unset($current_pages);
|
287 |
-
$id = $current_id; unset($current_id);
|
288 |
-
$page = $current_page; unset($current_page);
|
289 |
-
$numpages = null; $numpages = $current_numpages; unset($current_numpages);
|
290 |
-
$multipage = null; $multipage = $current_multipage; unset($current_multipage);
|
291 |
-
$more = null; $more = $current_more; unset($current_more);
|
292 |
-
$pagenow = null; $pagenow = $current_pagenow; unset($current_pagenow);
|
293 |
-
$day = null; $day = $current_day; unset($current_day);
|
294 |
-
$currentmonth = null; $currentmonth = $current_currentmonth; unset($current_currentmonth);
|
295 |
|
296 |
if ($promote_yarpp and $domain != 'metabox')
|
297 |
$output .= "\n<p>".sprintf(__("Related posts brought to you by <a href='%s'>Yet Another Related Posts Plugin</a>.",'yarpp'), 'http://yarpp.org')."</p>";
|
@@ -304,21 +269,24 @@ function yarpp_related_exist($type,$args,$reference_ID=false) {
|
|
304 |
|
305 |
yarpp_upgrade_check();
|
306 |
|
307 |
-
if (is_object($post)
|
308 |
$reference_ID = $post->ID;
|
309 |
|
310 |
-
if ($yarpp_cache->
|
311 |
return false;
|
312 |
|
313 |
if (yarpp_get_option('cross_relate'))
|
314 |
$type = array('post','page');
|
315 |
|
316 |
-
yarpp_cache_enforce($reference_ID);
|
|
|
|
|
|
|
317 |
|
318 |
$yarpp_cache->begin_yarpp_time($reference_ID); // get ready for YARPP TIME!
|
319 |
$related_query = new WP_Query();
|
320 |
// Note: why is this 10000? Should we just make it 1?
|
321 |
-
$related_query->query(array('p'=>$reference_ID,'showposts'=>
|
322 |
$return = $related_query->have_posts();
|
323 |
unset($related_query);
|
324 |
$yarpp_cache->end_yarpp_time(); // YARPP time is over. :(
|
@@ -345,48 +313,55 @@ function yarpp_save_cache($post_ID, $force=true) {
|
|
345 |
// Clear the cache for this entry and for all posts which are "related" to it.
|
346 |
// New in 3.2: This is called when a post is deleted.
|
347 |
function yarpp_delete_cache($post_ID) {
|
348 |
-
|
349 |
|
350 |
-
|
351 |
$yarpp_cache->clear($post_ID);
|
352 |
|
353 |
// Find all "peers" which list this post as a related post.
|
354 |
$peers = $yarpp_cache->related(null, $post_ID);
|
355 |
// Clear the peers' caches.
|
356 |
-
|
357 |
}
|
358 |
|
359 |
// New in 3.2.1: handle various post_status transitions
|
360 |
function yarpp_status_transition($new_status, $old_status, $post) {
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
}
|
373 |
|
374 |
-
|
|
|
|
|
375 |
global $yarpp_debug, $yarpp_cache;
|
376 |
|
377 |
-
if (
|
378 |
-
return false;
|
379 |
-
|
380 |
-
if (!$force && $yarpp_cache->is_cached($reference_ID)) {
|
381 |
-
if ($yarpp_debug) echo "<!--YARPP is using the cache right now.-->";
|
382 |
return false;
|
383 |
-
}
|
384 |
|
385 |
-
$yarpp_cache->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
386 |
|
387 |
-
//
|
388 |
-
|
389 |
-
|
390 |
|
|
|
|
|
391 |
}
|
392 |
|
4 |
|
5 |
function yarpp_set_score_override_flag($q) {
|
6 |
global $yarpp_cache;
|
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_debug, $yarpp_cache;
|
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', 'distags', 'discats', '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));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
extract($optvals);
|
35 |
|
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(
|
43 |
+
'body' => (($body == 3)?3:(($body == 2)?1:0)),
|
44 |
+
'title' => (($title == 3)?3:(($title == 2)?1:0)),
|
45 |
+
'tag' => (($tags != 1)?1:0),
|
46 |
+
'cat' => (($categories != 1)?1:0)
|
47 |
+
);
|
48 |
+
$totalweight = array_sum( array_values( $weights ) );
|
|
|
|
|
|
|
|
|
|
|
49 |
|
50 |
// get disallowed categories and tags
|
51 |
+
$disterms = array_filter(
|
52 |
+
array_merge(
|
53 |
+
explode(',',$discats),
|
54 |
+
explode(',',$distags)
|
55 |
+
),
|
56 |
+
'is_numeric');
|
57 |
+
$usedisterms = count($disterms);
|
58 |
+
$disterms = implode(',', $disterms);
|
59 |
|
60 |
$criteria = array();
|
61 |
+
if ($weights['body'])
|
62 |
+
$criteria['body'] = "(MATCH (post_content) AGAINST ('".$wpdb->escape($keywords['body'])."'))";
|
63 |
+
if ($weights['title'])
|
64 |
+
$criteria['title'] = "(MATCH (post_title) AGAINST ('".$wpdb->escape($keywords['title'])."'))";
|
65 |
+
if ($weights['tag'])
|
66 |
$criteria['tag'] = "COUNT( DISTINCT tagtax.term_taxonomy_id )";
|
67 |
+
if ($weights['cat'])
|
68 |
$criteria['cat'] = "COUNT( DISTINCT cattax.term_taxonomy_id )";
|
69 |
|
70 |
$newsql = "SELECT $reference_ID as reference_ID, ID, "; //post_title, post_date, post_content, post_excerpt,
|
82 |
left join $wpdb->term_taxonomy as blocktax using (`term_taxonomy_id`)
|
83 |
left join $wpdb->terms as blockterm on (blocktax.term_id = blockterm.term_id and blockterm.term_id in ($disterms))\n";
|
84 |
|
85 |
+
if ($weights['tag'])
|
86 |
$newsql .= " left JOIN $wpdb->term_relationships AS thistag ON (thistag.object_id = $reference_ID )
|
87 |
left JOIN $wpdb->term_relationships AS tagrel on (tagrel.term_taxonomy_id = thistag.term_taxonomy_id
|
88 |
AND tagrel.object_id = $wpdb->posts.ID)
|
89 |
left JOIN $wpdb->term_taxonomy AS tagtax ON ( tagrel.term_taxonomy_id = tagtax.term_taxonomy_id
|
90 |
AND tagtax.taxonomy = 'post_tag')\n";
|
91 |
|
92 |
+
if ($weights['cat'])
|
93 |
$newsql .= " left JOIN $wpdb->term_relationships AS thiscat ON (thiscat.object_id = $reference_ID )
|
94 |
left JOIN $wpdb->term_relationships AS catrel on (catrel.term_taxonomy_id = thiscat.term_taxonomy_id
|
95 |
AND catrel.object_id = $wpdb->posts.ID)
|
98 |
|
99 |
// WHERE
|
100 |
|
101 |
+
$newsql .= " where (post_status IN ( 'publish', 'static' ) and ID != '$reference_ID')";
|
102 |
|
103 |
if ($past_only) { // 3.1.8: revised $past_only option
|
104 |
+
if ( is_object($post) && $reference_ID == $post->ID )
|
105 |
+
$reference_post_date = $post->post_date;
|
106 |
+
else
|
107 |
+
$reference_post_date = $wpdb->get_var("select post_date from $wpdb->posts where ID = $reference_ID");
|
108 |
$newsql .= " and post_date <= '$reference_post_date' ";
|
109 |
}
|
110 |
if (!$show_pass_post)
|
112 |
if ($recent_only)
|
113 |
$newsql .= " and post_date > date_sub(now(), interval $recent_number $recent_units) ";
|
114 |
|
115 |
+
$newsql .= " and post_type = 'post'";
|
116 |
|
117 |
// GROUP BY
|
118 |
$newsql .= "\n group by ID \n";
|
130 |
$newsql .= (($tags == 4)?' and '.$criteria['tag'].' >= 2':'');
|
131 |
$newsql .= " order by score desc limit ".$limit;
|
132 |
|
133 |
+
// in caching, we cross-relate regardless of whether we're going to actually
|
134 |
+
// use it or not.
|
135 |
+
$newsql = "($newsql) union (".str_replace("post_type = 'post'","post_type = 'page'",$newsql).")";
|
|
|
|
|
|
|
|
|
136 |
|
137 |
if ($yarpp_debug) echo "<!--$newsql-->";
|
138 |
return $newsql;
|
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, $yarpp_cache;
|
147 |
|
148 |
yarpp_upgrade_check();
|
149 |
|
150 |
+
if ($domain == 'demo_web' || $domain == 'demo_rss') {
|
151 |
+
if ($yarpp_cache->demo_time) // if we're already in a YARPP loop, stop now.
|
152 |
return false;
|
|
|
|
|
|
|
153 |
} else {
|
154 |
+
if ($yarpp_cache->is_yarpp_time()) // if we're already in a YARPP loop, stop now.
|
155 |
return false;
|
156 |
+
|
157 |
+
if ( !$reference_ID )
|
158 |
+
$reference_ID = get_the_ID();
|
159 |
}
|
160 |
|
161 |
get_currentuserinfo();
|
162 |
|
163 |
// set the "domain prefix", used for all the preferences.
|
164 |
+
if ($domain == 'rss' || $domain == 'demo_rss')
|
165 |
$domainprefix = 'rss_';
|
166 |
else
|
167 |
$domainprefix = '';
|
169 |
// get options
|
170 |
// note the 2.1 change... the options array changed from what you might call a "list" to a "hash"... this changes the structure of the $args to something which is, in the long term, much more useful
|
171 |
$options = array(
|
172 |
+
'cross_relate'=>"cross_relate",
|
173 |
+
'limit'=>"${domainprefix}limit",
|
174 |
'use_template'=>"${domainprefix}use_template",
|
175 |
'order'=>"${domainprefix}order",
|
176 |
'template_file'=>"${domainprefix}template_file",
|
178 |
$optvals = array();
|
179 |
foreach (array_keys($options) as $option) {
|
180 |
if (isset($args[$option])) {
|
181 |
+
$optvals[$option] = $args[$option];
|
182 |
} else {
|
183 |
+
$optvals[$option] = yarpp_get_option($options[$option]);
|
184 |
}
|
185 |
}
|
186 |
extract($optvals);
|
188 |
if ($cross_relate)
|
189 |
$type = array('post','page');
|
190 |
|
191 |
+
$cache_status = yarpp_cache_enforce($reference_ID);
|
192 |
|
193 |
$output = '';
|
194 |
|
195 |
+
if ($domain == 'demo_web' || $domain == 'demo_rss') {
|
196 |
+
// It's DEMO TIME!
|
|
|
197 |
$yarpp_cache->demo_time = true;
|
198 |
if ($domain == 'demo_web')
|
199 |
$yarpp_cache->demo_limit = yarpp_get_option('limit');
|
200 |
else
|
201 |
$yarpp_cache->demo_limit = yarpp_get_option('rss_limit');
|
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 |
+
$yarpp_cache->begin_yarpp_time($reference_ID);
|
207 |
}
|
208 |
+
|
209 |
+
// so we can return to normal later
|
210 |
$current_query = $wp_query;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
$current_pagenow = $pagenow;
|
|
|
|
|
212 |
|
213 |
+
$wp_query = new WP_Query();
|
214 |
$orders = explode(' ',$order);
|
215 |
+
if ( 'demo_web' == $domain || 'demo_rss' == $domain ) {
|
216 |
+
$wp_query->query('');
|
217 |
+
} else if ( YARPP_NO_RELATED == $cache_status ) {
|
218 |
+
// If there are no related posts, get no query
|
219 |
+
} else {
|
220 |
+
$wp_query->query(array(
|
221 |
+
'p' => $reference_ID,
|
222 |
+
'orderby' => $orders[0],
|
223 |
+
'order' => $orders[1],
|
224 |
+
'showposts' => $limit,
|
225 |
+
'post_type' => $type
|
226 |
+
));
|
227 |
+
}
|
228 |
|
|
|
229 |
$wp_query->in_the_loop = true;
|
230 |
$wp_query->is_feed = $current_query->is_feed;
|
231 |
// make sure we get the right is_single value
|
245 |
include(YARPP_DIR.'/template-builtin.php');
|
246 |
}
|
247 |
|
248 |
+
if ( 'demo_web' == $domain || 'demo_rss' == $domain ) {
|
|
|
|
|
|
|
249 |
$yarpp_cache->demo_time = false;
|
250 |
+
} else if ( YARPP_NO_RELATED == $cache_status ) {
|
251 |
+
// Uh, do nothing. Stay very still.
|
252 |
+
} else {
|
253 |
+
$yarpp_cache->end_yarpp_time(); // YARPP time is over... :(
|
254 |
+
}
|
255 |
|
256 |
// restore the older wp_query.
|
257 |
+
$wp_query = $current_query; unset($current_query);
|
258 |
+
wp_reset_postdata();
|
259 |
+
$pagenow = $current_pagenow; unset($current_pagenow);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
260 |
|
261 |
if ($promote_yarpp and $domain != 'metabox')
|
262 |
$output .= "\n<p>".sprintf(__("Related posts brought to you by <a href='%s'>Yet Another Related Posts Plugin</a>.",'yarpp'), 'http://yarpp.org')."</p>";
|
269 |
|
270 |
yarpp_upgrade_check();
|
271 |
|
272 |
+
if (is_object($post) && !$reference_ID)
|
273 |
$reference_ID = $post->ID;
|
274 |
|
275 |
+
if ($yarpp_cache->is_yarpp_time()) // if we're already in a YARPP loop, stop now.
|
276 |
return false;
|
277 |
|
278 |
if (yarpp_get_option('cross_relate'))
|
279 |
$type = array('post','page');
|
280 |
|
281 |
+
$cache_status = yarpp_cache_enforce($reference_ID);
|
282 |
+
|
283 |
+
if ( YARPP_NO_RELATED == $cache_status )
|
284 |
+
return false;
|
285 |
|
286 |
$yarpp_cache->begin_yarpp_time($reference_ID); // get ready for YARPP TIME!
|
287 |
$related_query = new WP_Query();
|
288 |
// Note: why is this 10000? Should we just make it 1?
|
289 |
+
$related_query->query(array('p'=>$reference_ID,'showposts'=>1,'post_type'=>$type));
|
290 |
$return = $related_query->have_posts();
|
291 |
unset($related_query);
|
292 |
$yarpp_cache->end_yarpp_time(); // YARPP time is over. :(
|
313 |
// Clear the cache for this entry and for all posts which are "related" to it.
|
314 |
// New in 3.2: This is called when a post is deleted.
|
315 |
function yarpp_delete_cache($post_ID) {
|
316 |
+
global $yarpp_cache;
|
317 |
|
318 |
+
// Clear the cache for this post.
|
319 |
$yarpp_cache->clear($post_ID);
|
320 |
|
321 |
// Find all "peers" which list this post as a related post.
|
322 |
$peers = $yarpp_cache->related(null, $post_ID);
|
323 |
// Clear the peers' caches.
|
324 |
+
$yarpp_cache->clear($peers);
|
325 |
}
|
326 |
|
327 |
// New in 3.2.1: handle various post_status transitions
|
328 |
function yarpp_status_transition($new_status, $old_status, $post) {
|
329 |
+
global $yarpp_cache;
|
330 |
+
switch ($new_status) {
|
331 |
+
case "draft":
|
332 |
+
yarpp_delete_cache($post->ID);
|
333 |
+
break;
|
334 |
+
case "publish":
|
335 |
+
// find everything which is related to this post, and clear them, so that this
|
336 |
+
// post might show up as related to them.
|
337 |
+
$related = $yarpp_cache->related($post->ID, null);
|
338 |
+
$yarpp_cache->clear($related);
|
339 |
+
}
|
340 |
}
|
341 |
|
342 |
+
// Note: return value changed in 3.4
|
343 |
+
// return YARPP_NO_RELATED | YARPP_RELATED | false if no good input
|
344 |
+
function yarpp_cache_enforce($reference_ID, $force = false) {
|
345 |
global $yarpp_debug, $yarpp_cache;
|
346 |
|
347 |
+
if ( !$reference_ID = absint($reference_ID) )
|
|
|
|
|
|
|
|
|
348 |
return false;
|
|
|
349 |
|
350 |
+
$status = $yarpp_cache->is_cached($reference_ID);
|
351 |
+
|
352 |
+
// If not cached, process now:
|
353 |
+
if ( YARPP_NOT_CACHED == $status || $force ) {
|
354 |
+
$status = $yarpp_cache->update($reference_ID);
|
355 |
+
// if still not cached, there's a problem, but for the time being return NO RELATED
|
356 |
+
if ( YARPP_NOT_CACHED === $status )
|
357 |
+
return YARPP_NO_RELATED;
|
358 |
+
}
|
359 |
|
360 |
+
// There are no related posts
|
361 |
+
if ( YARPP_NO_RELATED === $status )
|
362 |
+
return YARPP_NO_RELATED;
|
363 |
|
364 |
+
// There are results
|
365 |
+
return YARPP_RELATED;
|
366 |
}
|
367 |
|
options-meta-boxes.php
CHANGED
@@ -8,7 +8,7 @@ class YARPP_Meta_Box {
|
|
8 |
}
|
9 |
function textbox($option,$desc,$size=2,$tr="<tr valign='top'>
|
10 |
<th scope='row'>", $note = '') {
|
11 |
-
$value =
|
12 |
echo " $tr$desc</th>
|
13 |
<td><input name='$option' type='text' id='$option' value='$value' size='$size' />";
|
14 |
if ( !empty($note) )
|
@@ -20,9 +20,9 @@ class YARPP_Meta_Box {
|
|
20 |
<th scope='row'>", $note = '') {
|
21 |
echo " $tr$desc</th>
|
22 |
<td>";
|
23 |
-
$value =
|
24 |
echo "<input name='{$options[0]}' type='text' id='{$options[0]}' value='$value' size='$size' /> / ";
|
25 |
-
$value =
|
26 |
echo "<input name='{$options[1]}' type='text' id='{$options[1]}' value='$value' size='$size' />";
|
27 |
if ( !empty($note) )
|
28 |
echo " <em><small>{$note}</small></em>";
|
@@ -70,15 +70,17 @@ class YARPP_Meta_Box {
|
|
70 |
|
71 |
function select($option,$desc,$type='word',$tr="<tr valign='top'>
|
72 |
<th scope='row'>",$inputplus = '') {
|
|
|
|
|
73 |
echo " $tr$desc</th>
|
74 |
<td>
|
75 |
-
<input $inputplus type='radio' name='$option' value='1'". ((
|
76 |
".__("do not consider",'yarpp')."
|
77 |
-
<input $inputplus type='radio' name='$option' value='2'". ((
|
78 |
".__("consider",'yarpp')."
|
79 |
-
<input $inputplus type='radio' name='$option' value='3'". ((
|
80 |
".sprintf(__("require at least one %s in common",'yarpp'),__($type,'yarpp'))."
|
81 |
-
<input $inputplus type='radio' name='$option' value='4'". ((
|
82 |
".sprintf(__("require more than one %s in common",'yarpp'),__($type,'yarpp'))."
|
83 |
</td>
|
84 |
</tr>";
|
@@ -100,11 +102,12 @@ class YARPP_Meta_Box_Pool extends YARPP_Meta_Box {
|
|
100 |
<?php
|
101 |
$this->checkbox('show_pass_post',__("Show password protected posts?",'yarpp'));
|
102 |
|
103 |
-
$recent_number = "<input name=\"recent_number\" type=\"text\" id=\"recent_number\" value=\"".
|
|
|
104 |
$recent_units = "<select name=\"recent_units\" id=\"recent_units\">
|
105 |
-
<option value='day'". (('day'
|
106 |
-
<option value='week'". (('week'
|
107 |
-
<option value='month'". (('month'
|
108 |
</select>";
|
109 |
$this->checkbox('recent_only',str_replace('NUMBER',$recent_number,str_replace('UNITS',$recent_units,__("Show only posts from the past NUMBER UNITS",'yarpp'))));
|
110 |
?>
|
@@ -166,7 +169,7 @@ class YARPP_Meta_Box_Display_Web extends YARPP_Meta_Box {
|
|
166 |
<td>
|
167 |
<select name="template_file" id="template_file">
|
168 |
<?php foreach (glob(STYLESHEETPATH . '/yarpp-template-*.php') as $template): ?>
|
169 |
-
<option value='<?php echo
|
170 |
<?php endforeach; ?>
|
171 |
</select>
|
172 |
</td>
|
@@ -181,19 +184,20 @@ class YARPP_Meta_Box_Display_Web extends YARPP_Meta_Box {
|
|
181 |
|
182 |
<tr class="excerpted" valign='top'>
|
183 |
<th><?php _e("Before / after (Excerpt):",'yarpp');?></th>
|
184 |
-
<td><input name="before_post" type="text" id="before_post" value="<?php echo
|
185 |
</td>
|
186 |
</tr>
|
187 |
|
188 |
<tr valign='top'>
|
189 |
<th><?php _e("Order results:",'yarpp');?></th>
|
190 |
<td><select name="order" id="order">
|
191 |
-
|
192 |
-
<option value="score
|
193 |
-
<option value="
|
194 |
-
<option value="post_date
|
195 |
-
<option value="
|
196 |
-
<option value="post_title
|
|
|
197 |
</select>
|
198 |
</td>
|
199 |
</tr>
|
@@ -253,12 +257,13 @@ $this->checkbox('rss_excerpt_display',__("Display related posts in the descripti
|
|
253 |
<tr class='rss_displayed' valign='top'>
|
254 |
<th><?php _e("Order results:",'yarpp');?></th>
|
255 |
<td><select name="rss_order" id="rss_order">
|
256 |
-
|
257 |
-
<option value="score
|
258 |
-
<option value="
|
259 |
-
<option value="post_date
|
260 |
-
<option value="
|
261 |
-
<option value="post_title
|
|
|
262 |
</select>
|
263 |
</td>
|
264 |
</tr>
|
8 |
}
|
9 |
function textbox($option,$desc,$size=2,$tr="<tr valign='top'>
|
10 |
<th scope='row'>", $note = '') {
|
11 |
+
$value = esc_attr(yarpp_get_option($option));
|
12 |
echo " $tr$desc</th>
|
13 |
<td><input name='$option' type='text' id='$option' value='$value' size='$size' />";
|
14 |
if ( !empty($note) )
|
20 |
<th scope='row'>", $note = '') {
|
21 |
echo " $tr$desc</th>
|
22 |
<td>";
|
23 |
+
$value = esc_attr(yarpp_get_option($options[0]));
|
24 |
echo "<input name='{$options[0]}' type='text' id='{$options[0]}' value='$value' size='$size' /> / ";
|
25 |
+
$value = esc_attr(yarpp_get_option($options[1]));
|
26 |
echo "<input name='{$options[1]}' type='text' id='{$options[1]}' value='$value' size='$size' />";
|
27 |
if ( !empty($note) )
|
28 |
echo " <em><small>{$note}</small></em>";
|
70 |
|
71 |
function select($option,$desc,$type='word',$tr="<tr valign='top'>
|
72 |
<th scope='row'>",$inputplus = '') {
|
73 |
+
$value = yarpp_get_option($option);
|
74 |
+
|
75 |
echo " $tr$desc</th>
|
76 |
<td>
|
77 |
+
<input $inputplus type='radio' name='$option' value='1'". (($value == 1) ? ' checked="checked"': '' )." />
|
78 |
".__("do not consider",'yarpp')."
|
79 |
+
<input $inputplus type='radio' name='$option' value='2'". (($value == 2) ? ' checked="checked"': '' )." />
|
80 |
".__("consider",'yarpp')."
|
81 |
+
<input $inputplus type='radio' name='$option' value='3'". (($value == 3) ? ' checked="checked"': '' )." />
|
82 |
".sprintf(__("require at least one %s in common",'yarpp'),__($type,'yarpp'))."
|
83 |
+
<input $inputplus type='radio' name='$option' value='4'". (($value == 4) ? ' checked="checked"': '' )." />
|
84 |
".sprintf(__("require more than one %s in common",'yarpp'),__($type,'yarpp'))."
|
85 |
</td>
|
86 |
</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\" />";
|
106 |
+
$recent_units = yarpp_get_option('recent_units');
|
107 |
$recent_units = "<select name=\"recent_units\" id=\"recent_units\">
|
108 |
+
<option value='day'". (('day'==$recent_units)?" selected='selected'":'').">".__('day(s)','yarpp')."</option>
|
109 |
+
<option value='week'". (('week'==$recent_units)?" selected='selected'":'').">".__('week(s)','yarpp')."</option>
|
110 |
+
<option value='month'". (('month'==$recent_units)?" selected='selected'":'').">".__('month(s)','yarpp')."</option>
|
111 |
</select>";
|
112 |
$this->checkbox('recent_only',str_replace('NUMBER',$recent_number,str_replace('UNITS',$recent_units,__("Show only posts from the past NUMBER UNITS",'yarpp'))));
|
113 |
?>
|
169 |
<td>
|
170 |
<select name="template_file" id="template_file">
|
171 |
<?php foreach (glob(STYLESHEETPATH . '/yarpp-template-*.php') as $template): ?>
|
172 |
+
<option value='<?php echo esc_attr(basename($template))?>'<?php echo (basename($template)==yarpp_get_option('template_file'))?" selected='selected'":'';?>><?php echo htmlspecialchars(basename($template))?></option>
|
173 |
<?php endforeach; ?>
|
174 |
</select>
|
175 |
</td>
|
184 |
|
185 |
<tr class="excerpted" valign='top'>
|
186 |
<th><?php _e("Before / after (Excerpt):",'yarpp');?></th>
|
187 |
+
<td><input name="before_post" type="text" id="before_post" value="<?php echo esc_attr(yarpp_get_option('before_post')); ?>" size="10" /> / <input name="after_post" type="text" id="after_post" value="<?php echo esc_attr(yarpp_get_option('after_post')); ?>" size="10" /><em><small> <?php _e("For example:",'yarpp');?> <li></li><?php _e(' or ','yarpp');?><dl></dl></small></em>
|
188 |
</td>
|
189 |
</tr>
|
190 |
|
191 |
<tr valign='top'>
|
192 |
<th><?php _e("Order results:",'yarpp');?></th>
|
193 |
<td><select name="order" id="order">
|
194 |
+
<?php $order = yarpp_get_option('order'); ?>
|
195 |
+
<option value="score DESC" <?php echo ($order == 'score DESC'?' selected="selected"':'')?>><?php _e("score (high relevance to low)",'yarpp');?></option>
|
196 |
+
<option value="score ASC" <?php echo ($order == 'score ASC'?' selected="selected"':'')?>><?php _e("score (low relevance to high)",'yarpp');?></option>
|
197 |
+
<option value="post_date DESC" <?php echo ($order == 'post_date DESC'?' selected="selected"':'')?>><?php _e("date (new to old)",'yarpp');?></option>
|
198 |
+
<option value="post_date ASC" <?php echo ($order == 'post_date ASC'?' selected="selected"':'')?>><?php _e("date (old to new)",'yarpp');?></option>
|
199 |
+
<option value="post_title ASC" <?php echo ($order == 'post_title ASC'?' selected="selected"':'')?>><?php _e("title (alphabetical)",'yarpp');?></option>
|
200 |
+
<option value="post_title DESC" <?php echo ($order == 'post_title DESC'?' selected="selected"':'')?>><?php _e("title (reverse alphabetical)",'yarpp');?></option>
|
201 |
</select>
|
202 |
</td>
|
203 |
</tr>
|
257 |
<tr class='rss_displayed' valign='top'>
|
258 |
<th><?php _e("Order results:",'yarpp');?></th>
|
259 |
<td><select name="rss_order" id="rss_order">
|
260 |
+
<?php $order = yarpp_get_option('rss_order'); ?>
|
261 |
+
<option value="score DESC" <?php echo ($order=='score DESC'?' selected="selected"':'')?>><?php _e("score (high relevance to low)",'yarpp');?></option>
|
262 |
+
<option value="score ASC" <?php echo ($order == 'score ASC'?' selected="selected"':'')?>><?php _e("score (low relevance to high)",'yarpp');?></option>
|
263 |
+
<option value="post_date DESC" <?php echo ($order == 'post_date DESC'?' selected="selected"':'')?>><?php _e("date (new to old)",'yarpp');?></option>
|
264 |
+
<option value="post_date ASC" <?php echo ($order == 'post_date ASC'?' selected="selected"':'')?>><?php _e("date (old to new)",'yarpp');?></option>
|
265 |
+
<option value="post_title ASC" <?php echo ($order == 'post_title ASC'?' selected="selected"':'')?>><?php _e("title (alphabetical)",'yarpp');?></option>
|
266 |
+
<option value="post_title DESC" <?php echo ($order == 'post_title DESC'?' selected="selected"':'')?>><?php _e("title (reverse alphabetical)",'yarpp');?></option>
|
267 |
</select>
|
268 |
</td>
|
269 |
</tr>
|
options.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
global $wpdb, $yarpp_value_options, $yarpp_binary_options, $wp_version, $yarpp_cache, $yarpp_templates, $yarpp_myisam;
|
4 |
|
5 |
// Reenforce YARPP setup:
|
6 |
-
if (!get_option('yarpp_version'))
|
7 |
yarpp_activate();
|
8 |
else
|
9 |
yarpp_upgrade_check();
|
@@ -16,8 +16,7 @@ if (isset($_GET['action']) && $_GET['action'] == 'flush') {
|
|
16 |
// check to see that templates are in the right place
|
17 |
$yarpp_templates = glob(STYLESHEETPATH . '/yarpp-template-*.php');
|
18 |
if ( !(is_array($yarpp_templates) && count($yarpp_templates)) ) {
|
19 |
-
|
20 |
-
yarpp_set_option('rss_use_template',false);
|
21 |
}
|
22 |
|
23 |
// 3.3: move version checking here, in PHP:
|
@@ -56,7 +55,7 @@ if (isset($_POST['myisam_override'])) {
|
|
56 |
}
|
57 |
|
58 |
$yarpp_myisam = true;
|
59 |
-
if (!yarpp_get_option('myisam_override')) {
|
60 |
$yarpp_check_return = yarpp_myisam_check();
|
61 |
if ($yarpp_check_return !== true) { // if it's not *exactly* true
|
62 |
echo "<div class='updated'>"
|
@@ -71,8 +70,7 @@ if (!yarpp_get_option('myisam_override')) {
|
|
71 |
."'></input></form>"
|
72 |
."</div>";
|
73 |
|
74 |
-
yarpp_set_option('title',1);
|
75 |
-
yarpp_set_option('body',1);
|
76 |
$yarpp_myisam = false;
|
77 |
}
|
78 |
}
|
@@ -89,28 +87,35 @@ if ($yarpp_myisam && !yarpp_enabled()) {
|
|
89 |
}
|
90 |
|
91 |
if (isset($_POST['update_yarpp'])) {
|
|
|
|
|
|
|
92 |
foreach (array_keys($yarpp_value_options) as $option) {
|
93 |
-
|
94 |
-
|
95 |
}
|
96 |
foreach (array('title','body','tags','categories') as $key) {
|
97 |
-
if (!isset($_POST[$key])
|
|
|
98 |
}
|
99 |
-
if (isset($_POST['discats'])) {
|
100 |
-
|
101 |
} else {
|
102 |
-
|
103 |
}
|
104 |
|
105 |
-
if (isset($_POST['distags'])) {
|
106 |
-
|
107 |
} else {
|
108 |
-
|
109 |
}
|
110 |
|
111 |
foreach (array_keys($yarpp_binary_options) as $option) {
|
112 |
-
|
113 |
}
|
|
|
|
|
|
|
114 |
echo '<div class="updated fade"><p>'.__('Options saved!','yarpp').'</p></div>';
|
115 |
}
|
116 |
|
@@ -170,11 +175,11 @@ function load_display_discats() {
|
|
170 |
<div class="wrap">
|
171 |
<h2>
|
172 |
<?php _e('Yet Another Related Posts Plugin Options','yarpp');?> <small><?php
|
173 |
-
|
174 |
?></small>
|
175 |
</h2>
|
176 |
|
177 |
-
<?php echo "<div id='yarpp-version' style='display:none;'>".
|
178 |
|
179 |
<form method="post">
|
180 |
|
@@ -192,13 +197,13 @@ wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
|
|
192 |
|
193 |
<div class="inner-sidebar" id="side-info-column">
|
194 |
<?php
|
195 |
-
do_meta_boxes('settings_page_yarpp', 'side', array());
|
196 |
?>
|
197 |
</div>
|
198 |
|
199 |
<div id="post-body-content">
|
200 |
<?php
|
201 |
-
do_meta_boxes('settings_page_yarpp', 'normal', array());
|
202 |
?>
|
203 |
</div>
|
204 |
|
3 |
global $wpdb, $yarpp_value_options, $yarpp_binary_options, $wp_version, $yarpp_cache, $yarpp_templates, $yarpp_myisam;
|
4 |
|
5 |
// Reenforce YARPP setup:
|
6 |
+
if ( !get_option('yarpp_version') )
|
7 |
yarpp_activate();
|
8 |
else
|
9 |
yarpp_upgrade_check();
|
16 |
// check to see that templates are in the right place
|
17 |
$yarpp_templates = glob(STYLESHEETPATH . '/yarpp-template-*.php');
|
18 |
if ( !(is_array($yarpp_templates) && count($yarpp_templates)) ) {
|
19 |
+
yarpp_set_option(array('use_template' => false, 'rss_use_template' => false));
|
|
|
20 |
}
|
21 |
|
22 |
// 3.3: move version checking here, in PHP:
|
55 |
}
|
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'>"
|
70 |
."'></input></form>"
|
71 |
."</div>";
|
72 |
|
73 |
+
yarpp_set_option(array('title' => 1, 'body' => 1));
|
|
|
74 |
$yarpp_myisam = false;
|
75 |
}
|
76 |
}
|
87 |
}
|
88 |
|
89 |
if (isset($_POST['update_yarpp'])) {
|
90 |
+
|
91 |
+
$new_options = array();
|
92 |
+
|
93 |
foreach (array_keys($yarpp_value_options) as $option) {
|
94 |
+
if ( isset($_POST[$option]) && is_string($_POST[$option]) )
|
95 |
+
$new_options[$option] = stripslashes($_POST[$option]);
|
96 |
}
|
97 |
foreach (array('title','body','tags','categories') as $key) {
|
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 |
+
if ( isset($_POST['distags']) ) {
|
108 |
+
$new_options['distags'] = implode(',',array_keys($_POST['distags'])); // distags is also different
|
109 |
} else {
|
110 |
+
$new_options['distags'] = '';
|
111 |
}
|
112 |
|
113 |
foreach (array_keys($yarpp_binary_options) as $option) {
|
114 |
+
$new_options[$option] = isset($_POST[$option]);
|
115 |
}
|
116 |
+
|
117 |
+
yarpp_set_option($new_options);
|
118 |
+
|
119 |
echo '<div class="updated fade"><p>'.__('Options saved!','yarpp').'</p></div>';
|
120 |
}
|
121 |
|
175 |
<div class="wrap">
|
176 |
<h2>
|
177 |
<?php _e('Yet Another Related Posts Plugin Options','yarpp');?> <small><?php
|
178 |
+
echo esc_html(get_option('yarpp_version'));
|
179 |
?></small>
|
180 |
</h2>
|
181 |
|
182 |
+
<?php echo "<div id='yarpp-version' style='display:none;'>" . esc_html(get_option('yarpp_version')) . "</div>"; ?>
|
183 |
|
184 |
<form method="post">
|
185 |
|
197 |
|
198 |
<div class="inner-sidebar" id="side-info-column">
|
199 |
<?php
|
200 |
+
do_meta_boxes( 'settings_page_yarpp', 'side', array() );
|
201 |
?>
|
202 |
</div>
|
203 |
|
204 |
<div id="post-body-content">
|
205 |
<?php
|
206 |
+
do_meta_boxes( 'settings_page_yarpp', 'normal', array() );
|
207 |
?>
|
208 |
</div>
|
209 |
|
readme.txt
CHANGED
@@ -199,6 +199,14 @@ If you are a bilingual speaker of English and another language and an avid user
|
|
199 |
|
200 |
== Changelog ==
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
= 3.3.3 =
|
203 |
* [Bug fix](http://wordpress.org/support/topic/no-related-posts-1): a fix for keyword computation for pages; should improve results on pages. May require flushing of cache: see FAQ for instructions.
|
204 |
* Init YARPP on the `init` action, [for compatibility with WPML](https://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-load-sequence-yarpp-starts-before-the-wordpress-init-completes)
|
199 |
|
200 |
== Changelog ==
|
201 |
|
202 |
+
= 3.4 =
|
203 |
+
* Significant code cleanup
|
204 |
+
* Removed the many different options entries, replacing them with a single `yarpp` option (except `yarpp_version`)
|
205 |
+
* Fixed issues with display options field data escaping and slashing once and for all
|
206 |
+
* Performance improvements on pages with "no related posts"
|
207 |
+
* Streamlined keyword storage in YARPP_Cache_Postmeta
|
208 |
+
* Updated minor bug for computing how many results should be cached
|
209 |
+
* Added Portuguese stopwords by Leandro Coelho ([Logística Descomplicada](http://www.logisticadescomplicada.com))
|
210 |
= 3.3.3 =
|
211 |
* [Bug fix](http://wordpress.org/support/topic/no-related-posts-1): a fix for keyword computation for pages; should improve results on pages. May require flushing of cache: see FAQ for instructions.
|
212 |
* Init YARPP on the `init` action, [for compatibility with WPML](https://wordpress.org/support/topic/plugin-yet-another-related-posts-plugin-load-sequence-yarpp-starts-before-the-wordpress-init-completes)
|
template-builtin.php
CHANGED
@@ -18,17 +18,13 @@ $options = array(
|
|
18 |
'no_results'=>"${domainprefix}no_results");
|
19 |
$optvals = array();
|
20 |
foreach (array_keys($options) as $option) {
|
21 |
-
|
22 |
-
$optvals[$option] = stripslashes($args[$option]);
|
23 |
-
} else {
|
24 |
-
$optvals[$option] = stripslashes(stripslashes(yarpp_get_option($options[$option])));
|
25 |
-
}
|
26 |
}
|
27 |
extract($optvals);
|
28 |
|
29 |
-
if (
|
30 |
-
while (
|
31 |
-
|
32 |
|
33 |
$output .= "$before_title<a href='" . get_permalink() . "' rel='bookmark' title='" . esc_attr(get_the_title() ? get_the_title() : get_the_ID()) . "'>".get_the_title()."";
|
34 |
if (current_user_can('manage_options') && $domain != 'rss')
|
@@ -42,7 +38,7 @@ if ($related_query->have_posts()) {
|
|
42 |
$output .= $after_title."\n";
|
43 |
|
44 |
}
|
45 |
-
$output =
|
46 |
} else {
|
47 |
$output = $no_results;
|
48 |
}
|
18 |
'no_results'=>"${domainprefix}no_results");
|
19 |
$optvals = array();
|
20 |
foreach (array_keys($options) as $option) {
|
21 |
+
$optvals[$option] = yarpp_get_option($options[$option]);
|
|
|
|
|
|
|
|
|
22 |
}
|
23 |
extract($optvals);
|
24 |
|
25 |
+
if (have_posts()) {
|
26 |
+
while (have_posts()) {
|
27 |
+
the_post();
|
28 |
|
29 |
$output .= "$before_title<a href='" . get_permalink() . "' rel='bookmark' title='" . esc_attr(get_the_title() ? get_the_title() : get_the_ID()) . "'>".get_the_title()."";
|
30 |
if (current_user_can('manage_options') && $domain != 'rss')
|
38 |
$output .= $after_title."\n";
|
39 |
|
40 |
}
|
41 |
+
$output = $before_related . $output . $after_related;
|
42 |
} else {
|
43 |
$output = $no_results;
|
44 |
}
|
template-metabox.php
CHANGED
@@ -3,20 +3,19 @@ global $yarpp_debug;
|
|
3 |
|
4 |
yarpp_save_cache($reference_ID,false); // enforce the cache, but don't force it
|
5 |
|
6 |
-
$
|
7 |
-
$title_terms = $yarpp_cache->get_keywords($reference_ID,'title');
|
8 |
|
9 |
-
if ($yarpp_debug) $output .= "<p>body keywords: $
|
10 |
-
if ($yarpp_debug) $output .= "<p>title keywords: $
|
11 |
|
12 |
$output .= '<p>'.__( 'These are the related entries for this entry. Updating this post may change these related posts.' , 'yarpp').'</p>';
|
13 |
|
14 |
if ($yarpp_debug) $output .= "<p>last updated: ".$wpdb->get_var("select max(date) as updated from {$wpdb->prefix}yarpp_related_cache where reference_ID = '$reference_ID'")."</p>";
|
15 |
|
16 |
-
if (
|
17 |
$output .= '<ol>';
|
18 |
-
while (
|
19 |
-
|
20 |
$output .= "<li><a href='post.php?action=edit&post=$id'>".get_the_title()."</a>";
|
21 |
$output .= ' ('.round(get_the_score(),3).')';
|
22 |
$output .= '</li>';
|
3 |
|
4 |
yarpp_save_cache($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) $output .= "<p>body keywords: {$keywords['body']}</p>";
|
9 |
+
if ($yarpp_debug) $output .= "<p>title keywords: {$keywords['title']}</p>";
|
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 ($yarpp_debug) $output .= "<p>last updated: ".$wpdb->get_var("select max(date) as updated from {$wpdb->prefix}yarpp_related_cache where reference_ID = '$reference_ID'")."</p>";
|
14 |
|
15 |
+
if (have_posts()) {
|
16 |
$output .= '<ol>';
|
17 |
+
while (have_posts()) {
|
18 |
+
the_post();
|
19 |
$output .= "<li><a href='post.php?action=edit&post=$id'>".get_the_title()."</a>";
|
20 |
$output .= ' ('.round(get_the_score(),3).')';
|
21 |
$output .= '</li>';
|
template-widget.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
if (
|
4 |
$output .= '<ol>';
|
5 |
-
while (
|
6 |
-
|
7 |
$output .= '<li><a href="'.get_permalink().'" rel="bookmark">'.get_the_title().'</a>';
|
8 |
// $output .= ' ('.round(get_the_score(),3).')';
|
9 |
$output .= '</li>';
|
1 |
<?php
|
2 |
|
3 |
+
if (have_posts()) {
|
4 |
$output .= '<ol>';
|
5 |
+
while (have_posts()) {
|
6 |
+
the_post();
|
7 |
$output .= '<li><a href="'.get_permalink().'" rel="bookmark">'.get_the_title().'</a>';
|
8 |
// $output .= ' ('.round(get_the_score(),3).')';
|
9 |
$output .= '</li>';
|
yarpp.php
CHANGED
@@ -3,14 +3,17 @@
|
|
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 |
|
15 |
require_once(YARPP_DIR.'/includes.php');
|
16 |
require_once(YARPP_DIR.'/related-functions.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.4b2
|
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.4b2');
|
13 |
+
define('YARPP_DIR', dirname(__FILE__));
|
14 |
+
define('YARPP_NO_RELATED', ':(');
|
15 |
+
define('YARPP_RELATED', ':)');
|
16 |
+
define('YARPP_NOT_CACHED', ':/');
|
17 |
|
18 |
require_once(YARPP_DIR.'/includes.php');
|
19 |
require_once(YARPP_DIR.'/related-functions.php');
|