PluginProbe
FeedWordPress / 2010.0528
FeedWordPress v2010.0528
trunk 0.8 0.9 0.91 0.95 0.96 0.97 0.98 0.981 0.99 0.991 0.992 0.993 2008.1030 2008.1101 2008.1105 2008.1214 2009.0612 2009.0613 2009.0618 2009.0707 2009.1111 2009.1112 2010.0127 2010.0528 All 65 releases
← All changes | compatability.php +188 -11 2008.11012010.0528 View file →
@@ -14,8 +14,134 @@
14 14 endif;
15 15 return $good;
16 16 } /* function fwp_test_wp_version () */
17 17
18 +class FeedWordPressCompatibility {
19 + /*static*/ function test_version ($floor, $ceiling = null) {
20 + return fwp_test_wp_version($floor, $ceiling);
21 + } /* FeedWordPressCompatibility::test_version() */
22 +
23 + /*static*/ function insert_link_category ($name) {
24 + global $wpdb;
25 +
26 + $name = $wpdb->escape($name);
27 +
28 + // WordPress 2.3+ term/taxonomy API
29 + if (function_exists('wp_insert_term')) :
30 + $term = wp_insert_term($name, 'link_category');
31 + $cat_id = $term['term_id'];
32 + // WordPress 2.1, 2.2 category API. By the way, why the fuck is this API function only available in a wp-admin module?
33 + elseif (function_exists('wp_insert_category') and !fwp_test_wp_version(FWP_SCHEMA_20, FWP_SCHEMA_21)) :
34 + $cat_id = wp_insert_category(array('cat_name' => $name));
35 + // WordPress 1.5 and 2.0.x
36 + elseif (fwp_test_wp_version(0, FWP_SCHEMA_21)) :
37 + $result = $wpdb->query("
38 + INSERT INTO $wpdb->linkcategories
39 + SET
40 + cat_id = 0,
41 + cat_name='$name',
42 + show_images='N',
43 + show_description='N',
44 + show_rating='N',
45 + show_updated='N',
46 + sort_order='name'
47 + ");
48 + $cat_id = $wpdb->insert_id;
49 + // This should never happen.
50 + else :
51 + FeedWordPress::critical_bug('FeedWordPress::link_category_id::wp_db_version', $wp_db_version, __LINE__);
52 + endif;
53 +
54 + // Return newly-created category ID
55 + return $cat_id;
56 + } /* FeedWordPressCompatibility::insert_link_category () */
57 +
58 + /*static*/ function link_category_id ($value, $key = 'cat_name') {
59 + global $wpdb;
60 +
61 + $cat_id = NULL;
62 +
63 + // WordPress 2.3 introduces a new taxonomy/term API
64 + if (function_exists('is_term')) :
65 + $the_term = is_term($value, 'link_category');
66 +
67 + // Sometimes, in some versions, we get a row
68 + if (is_array($the_term)) :
69 + $cat_id = $the_term['term_id'];
70 +
71 + // other times we get an integer result
72 + else :
73 + $cat_id = $the_term;
74 + endif;
75 +
76 + // WordPress 2.1 and 2.2 use a common table for both link and post categories
77 + elseif (fwp_test_wp_version(FWP_SCHEMA_21, FWP_SCHEMA_23)) :
78 + $value = $wpdb->escape($value);
79 + $cat_id = $wpdb->get_var("SELECT cat_id FROM {$wpdb->categories} WHERE {$key}='$value'");
80 +
81 + // WordPress 1.5 and 2.0.x have a separate table for link categories
82 + elseif (fwp_test_wp_version(0, FWP_SCHEMA_21)):
83 + $value = $wpdb->escape($value);
84 + $cat_id = $wpdb->get_var("SELECT cat_id FROM {$wpdb->linkcategories} WHERE {$key}='$value'");
85 +
86 + // This should never happen.
87 + else :
88 + FeedWordPress::critical_bug(__CLASS__.'::'.__METHOD__.'::wp_db_version', $wp_db_version, __LINE__);
89 + endif;
90 +
91 + return $cat_id;
92 + } /* FeedWordPressCompatibility::link_category_id () */
93 +
94 + /*static*/ function post_tags () {
95 + return FeedWordPressCompatibility::test_version(FWP_SCHEMA_23);
96 + } /* FeedWordPressCompatibility::post_tags () */
97 +
98 + /*static*/ function validate_http_request ($action = -1, $capability = null) {
99 + // Only worry about this if we're using a method with significant side-effects
100 + if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') :
101 + // Limit post by user capabilities
102 + if (!is_null($capability) and !current_user_can($capability)) :
103 + wp_die(__('Cheatin’ uh?'));
104 + endif;
105 +
106 + // If check_admin_referer() checks a nonce.
107 + if (function_exists('wp_verify_nonce')) :
108 + check_admin_referer($action);
109 +
110 + // No nonces means no checking nonces.
111 + else :
112 + check_admin_referer();
113 + endif;
114 + endif;
115 + } /* FeedWordPressCompatibility::validate_http_request() */
116 +
117 + /*static*/ function stamp_nonce ($action = -1) {
118 + // stamp form with hidden fields for a nonce in WP 2.0.3 & later
119 + if (function_exists('wp_nonce_field')) :
120 + wp_nonce_field($action);
121 + endif;
122 + } /* FeedWordPressCompatibility::stamp_nonce() */
123 +
124 + /*static*/ function bottom_script_hook ($filename) {
125 + global $fwp_path;
126 +
127 + $hook = 'admin_footer';
128 + if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_28)) : // WordPress 2.8+
129 + $hook = $hook . '-' . $fwp_path . '/' . basename($filename);
130 + endif;
131 + return $hook;
132 + } /* FeedWordPressCompatibility::bottom_script_hook() */
133 +} /* class FeedWordPressCompatibility */
134 +
135 +define('FEEDWORDPRESS_AND_TAGS', (FeedWordPressCompatibility::post_tags() ? ' & Tags' : ''));
136 +
137 +if (!function_exists('stripslashes_deep')) {
138 + function stripslashes_deep($value) {
139 + $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
140 + return $value;
141 + }
142 +}
143 +
18 144 if (!function_exists('get_option')) {
19 145 function get_option ($option) {
20 146 return get_settings($option);
21 147 }
@@ -37,8 +163,11 @@
37 163 break;
38 164 case 'manage_links':
39 165 $can = ($user_level >= 5);
40 166 break;
167 + case 'edit_files':
168 + $can = ($user_level >= 9);
169 + break;
41 170 endswitch;
42 171 return $can;
43 172 }
44 173 } else {
@@ -45,9 +174,9 @@
45 174 $fwp_capability['manage_options'] = 'manage_options';
46 175 $fwp_capability['manage_links'] = 'manage_links';
47 176 }
48 177 if (!function_exists('sanitize_user')) {
49 - function sanitize_user ($text, $strict) {
178 + function sanitize_user ($text, $strict = false) {
50 179 return $text; // Don't munge it if it wasn't munged going in...
51 180 }
52 181 }
53 182 if (!function_exists('wp_insert_user')) {
@@ -75,26 +204,73 @@
75 204 $id = $wpdb->insert_id;
76 205
77 206 return $id;
78 207 }
79 -}
208 +} /* if (!function_exists('wp_insert_user')) */
80 209
210 +if (!function_exists('wp_die')) {
211 + function wp_die ( $message, $title = '', $args = array() ) {
212 + die($message);
213 + } /* wp_die() */
214 +} /* if */
215 +
216 +if (!function_exists('add_post_meta')) {
217 + function add_post_meta ($postId, $key, $value, $unique) {
218 + global $wpdb;
219 +
220 + $postId = (int) $postId;
221 + $key = $wpdb->escape($key);
222 + $value = $wpdb->escape($value);
223 +
224 + $result = $wpdb->query("
225 + INSERT INTO $wpdb->postmeta
226 + SET
227 + post_id='$postId',
228 + meta_key='$key',
229 + meta_value='$value'
230 + ");
231 + if (!$result) :
232 + $err = mysql_error();
233 + if (FEEDWORDPRESS_DEBUG) :
234 + echo "[DEBUG:".date('Y-m-d H:i:S')."][feedwordpress]: post metadata insertion FAILED for field '$key' := '$value': [$err]";
235 + endif;
236 + endif;
237 + } /* add_post_meta() */
238 +} /* if */
239 +
81 240 function fwp_category_checklist ($post_id = 0, $descendents_and_self = 0, $selected_cats = false) {
82 241 if (function_exists('wp_category_checklist')) :
83 242 wp_category_checklist($post_id, $descendents_and_self, $selected_cats);
84 243 else :
85 - global $checked_categories;
86 -
87 244 // selected_cats is an array of integer cat_IDs / term_ids for
88 245 // the categories that should be checked
89 - $cats = array();
90 - if ($post_id) : $cats = wp_get_post_categories($post_id);
91 - else : $cats = $selected_cats;
246 + global $post_ID;
247 +
248 + $cats = get_nested_categories();
249 +
250 + // Undo damage from usort() in WP 2.0
251 + $dogs = array();
252 + foreach ($cats as $cat) :
253 + $dogs[$cat['cat_ID']] = $cat;
254 + endforeach;
255 + foreach ($selected_cats as $cat_id) :
256 + $dogs[$cat_id]['checked'] = true;
257 + endforeach;
258 + write_nested_categories($dogs);
259 + endif;
260 +}
261 +
262 +function fwp_time_elapsed ($ts) {
263 + if (function_exists('human_time_diff')) :
264 + if ($ts >= time()) :
265 + $ret = __(human_time_diff($ts)." from now");
266 + else :
267 + $ret = __(human_time_diff($ts)." ago");
92 268 endif;
93 -
94 - $checked_categories = $cats;
95 - dropdown_categories();
269 + else :
270 + $ret = strftime('%x %X', $ts);
96 271 endif;
272 + return $ret;
97 273 }
98 274
99 275 ################################################################################
100 276 ## UPGRADE INTERFACE: Have users upgrade DB from older versions of FWP #########
@@ -106,9 +282,9 @@
106 282 if (get_option('feedwordpress_version') != FEEDWORDPRESS_VERSION) :
107 283 echo "<div class=\"wrap\">\n";
108 284 echo "<h2>Upgrading FeedWordPress...</h2>";
109 285
110 - $feedwordpress =& new FeedWordPress;
286 + $feedwordpress = new FeedWordPress;
111 287 $feedwordpress->upgrade_database($ver);
112 288 echo "<p><strong>Done!</strong> Upgraded database to version ".FEEDWORDPRESS_VERSION.".</p>\n";
113 289 echo "<form action=\"\" method=\"get\">\n";
114 290 echo "<div class=\"submit\"><input type=\"hidden\" name=\"page\" value=\"syndication.php\" />";
@@ -138,8 +314,9 @@
138 314
139 315 <p>This may take several minutes for a large installation.</p>
140 316
141 317 <form action="" method="post">
318 +<?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_upgrade'); ?>
142 319 <div class="submit"><input type="submit" name="action" value="Upgrade" /></div>
143 320 </form>
144 321 </div>
145 322 <?php