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
feedwordpress / compatability.php

compatability.php in FeedWordPress 2010.0528, at compatability.php

325 lines 10.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 ################################################################################
3 ## LEGACY API: Replicate or mock up functions for legacy support purposes ######
4 ################################################################################
5
6 // version testing
7 function fwp_test_wp_version ($floor, $ceiling = NULL) {
8 global $wp_db_version;
9
10 $ver = (isset($wp_db_version) ? $wp_db_version : 0);
11 $good = ($ver >= $floor);
12 if (!is_null($ceiling)) :
13 $good = ($good and ($ver < $ceiling));
14 endif;
15 return $good;
16 } /* function fwp_test_wp_version () */
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&#8217; 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
144 if (!function_exists('get_option')) {
145 function get_option ($option) {
146 return get_settings($option);
147 }
148 }
149 if (!function_exists('current_user_can')) {
150 $fwp_capability['manage_options'] = 6;
151 $fwp_capability['manage_links'] = 5;
152 function current_user_can ($task) {
153 global $user_level;
154
155 $can = false;
156
157 // This is **not** a full replacement for current_user_can. It
158 // is only for checking the capabilities we care about via the
159 // WordPress 1.5 user levels.
160 switch ($task) :
161 case 'manage_options':
162 $can = ($user_level >= 6);
163 break;
164 case 'manage_links':
165 $can = ($user_level >= 5);
166 break;
167 case 'edit_files':
168 $can = ($user_level >= 9);
169 break;
170 endswitch;
171 return $can;
172 }
173 } else {
174 $fwp_capability['manage_options'] = 'manage_options';
175 $fwp_capability['manage_links'] = 'manage_links';
176 }
177 if (!function_exists('sanitize_user')) {
178 function sanitize_user ($text, $strict = false) {
179 return $text; // Don't munge it if it wasn't munged going in...
180 }
181 }
182 if (!function_exists('wp_insert_user')) {
183 function wp_insert_user ($userdata) {
184 global $wpdb;
185
186 #-- Help WordPress 1.5.x quack like a duck
187 $login = $userdata['user_login'];
188 $author = $userdata['display_name'];
189 $nice_author = $userdata['user_nicename'];
190 $email = $userdata['user_email'];
191 $url = $userdata['user_url'];
192
193 $wpdb->query (
194 "INSERT INTO $wpdb->users
195 SET
196 ID='0',
197 user_login='$login',
198 user_firstname='$author',
199 user_nickname='$author',
200 user_nicename='$nice_author',
201 user_description='$author',
202 user_email='$email',
203 user_url='$url'");
204 $id = $wpdb->insert_id;
205
206 return $id;
207 }
208 } /* if (!function_exists('wp_insert_user')) */
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
240 function fwp_category_checklist ($post_id = 0, $descendents_and_self = 0, $selected_cats = false) {
241 if (function_exists('wp_category_checklist')) :
242 wp_category_checklist($post_id, $descendents_and_self, $selected_cats);
243 else :
244 // selected_cats is an array of integer cat_IDs / term_ids for
245 // the categories that should be checked
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");
268 endif;
269 else :
270 $ret = strftime('%x %X', $ts);
271 endif;
272 return $ret;
273 }
274
275 ################################################################################
276 ## UPGRADE INTERFACE: Have users upgrade DB from older versions of FWP #########
277 ################################################################################
278
279 function fwp_upgrade_page () {
280 if (isset($GLOBALS['fwp_post']['action']) and $GLOBALS['fwp_post']['action']=='Upgrade') :
281 $ver = get_option('feedwordpress_version');
282 if (get_option('feedwordpress_version') != FEEDWORDPRESS_VERSION) :
283 echo "<div class=\"wrap\">\n";
284 echo "<h2>Upgrading FeedWordPress...</h2>";
285
286 $feedwordpress = new FeedWordPress;
287 $feedwordpress->upgrade_database($ver);
288 echo "<p><strong>Done!</strong> Upgraded database to version ".FEEDWORDPRESS_VERSION.".</p>\n";
289 echo "<form action=\"\" method=\"get\">\n";
290 echo "<div class=\"submit\"><input type=\"hidden\" name=\"page\" value=\"syndication.php\" />";
291 echo "<input type=\"submit\" value=\"Continue &raquo;\" /></form></div>\n";
292 echo "</div>\n";
293 return;
294 else :
295 echo "<div class=\"updated\"><p>Already at version ".FEEDWORDPRESS_VERSION."!</p></div>";
296 endif;
297 endif;
298 ?>
299 <div class="wrap">
300 <h2>Upgrade FeedWordPress</h2>
301
302 <p>It appears that you have installed FeedWordPress
303 <?php echo FEEDWORDPRESS_VERSION; ?> as an upgrade to an existing installation of
304 FeedWordPress. That's no problem, but you will need to take a minute out first
305 to upgrade your database: some necessary changes in how the software keeps
306 track of posts and feeds will cause problems such as duplicate posts and broken
307 templates if we were to continue without the upgrade.</p>
308
309 <p>Note that most of FeedWordPress's functionality is temporarily disabled
310 until we have successfully completed the upgrade. Everything should begin
311 working as normal again once the upgrade is complete. There's extraordinarily
312 little chance of any damage as the result of the upgrade, but if you're paranoid
313 like me you may want to back up your database before you proceed.</p>
314
315 <p>This may take several minutes for a large installation.</p>
316
317 <form action="" method="post">
318 <?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_upgrade'); ?>
319 <div class="submit"><input type="submit" name="action" value="Upgrade" /></div>
320 </form>
321 </div>
322 <?php
323 } // function fwp_upgrade_page ()
324
325