PluginProbe
FeedWordPress / 2009.1112
FeedWordPress v2009.1112
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 2009.1112, at compatability.php

301 lines 9.7 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 function fwp_category_checklist ($post_id = 0, $descendents_and_self = 0, $selected_cats = false) {
217 if (function_exists('wp_category_checklist')) :
218 wp_category_checklist($post_id, $descendents_and_self, $selected_cats);
219 else :
220 // selected_cats is an array of integer cat_IDs / term_ids for
221 // the categories that should be checked
222 global $post_ID;
223
224 $cats = get_nested_categories();
225
226 // Undo damage from usort() in WP 2.0
227 $dogs = array();
228 foreach ($cats as $cat) :
229 $dogs[$cat['cat_ID']] = $cat;
230 endforeach;
231 foreach ($selected_cats as $cat_id) :
232 $dogs[$cat_id]['checked'] = true;
233 endforeach;
234 write_nested_categories($dogs);
235 endif;
236 }
237
238 function fwp_time_elapsed ($ts) {
239 if (function_exists('human_time_diff')) :
240 if ($ts >= time()) :
241 $ret = __(human_time_diff($ts)." from now");
242 else :
243 $ret = __(human_time_diff($ts)." ago");
244 endif;
245 else :
246 $ret = strftime('%x %X', $ts);
247 endif;
248 return $ret;
249 }
250
251 ################################################################################
252 ## UPGRADE INTERFACE: Have users upgrade DB from older versions of FWP #########
253 ################################################################################
254
255 function fwp_upgrade_page () {
256 if (isset($GLOBALS['fwp_post']['action']) and $GLOBALS['fwp_post']['action']=='Upgrade') :
257 $ver = get_option('feedwordpress_version');
258 if (get_option('feedwordpress_version') != FEEDWORDPRESS_VERSION) :
259 echo "<div class=\"wrap\">\n";
260 echo "<h2>Upgrading FeedWordPress...</h2>";
261
262 $feedwordpress =& new FeedWordPress;
263 $feedwordpress->upgrade_database($ver);
264 echo "<p><strong>Done!</strong> Upgraded database to version ".FEEDWORDPRESS_VERSION.".</p>\n";
265 echo "<form action=\"\" method=\"get\">\n";
266 echo "<div class=\"submit\"><input type=\"hidden\" name=\"page\" value=\"syndication.php\" />";
267 echo "<input type=\"submit\" value=\"Continue &raquo;\" /></form></div>\n";
268 echo "</div>\n";
269 return;
270 else :
271 echo "<div class=\"updated\"><p>Already at version ".FEEDWORDPRESS_VERSION."!</p></div>";
272 endif;
273 endif;
274 ?>
275 <div class="wrap">
276 <h2>Upgrade FeedWordPress</h2>
277
278 <p>It appears that you have installed FeedWordPress
279 <?php echo FEEDWORDPRESS_VERSION; ?> as an upgrade to an existing installation of
280 FeedWordPress. That's no problem, but you will need to take a minute out first
281 to upgrade your database: some necessary changes in how the software keeps
282 track of posts and feeds will cause problems such as duplicate posts and broken
283 templates if we were to continue without the upgrade.</p>
284
285 <p>Note that most of FeedWordPress's functionality is temporarily disabled
286 until we have successfully completed the upgrade. Everything should begin
287 working as normal again once the upgrade is complete. There's extraordinarily
288 little chance of any damage as the result of the upgrade, but if you're paranoid
289 like me you may want to back up your database before you proceed.</p>
290
291 <p>This may take several minutes for a large installation.</p>
292
293 <form action="" method="post">
294 <?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_upgrade'); ?>
295 <div class="submit"><input type="submit" name="action" value="Upgrade" /></div>
296 </form>
297 </div>
298 <?php
299 } // function fwp_upgrade_page ()
300
301