PluginProbe
FeedWordPress / 2011.0512
FeedWordPress v2011.0512
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 2011.0512, at compatability.php

276 lines 9.2 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 class FeedWordPressCompatibility {
7
8 /**
9 * FeedWordPressCompatibility::test_version: test version of WordPress
10 * based on the database schema version.
11 *
12 * @param int $floor The minimum version necessary
13 * @param mixed $ceiling The first version that is too high. If omitted
14 * or NULL, no version is too high.
15 * @return bool TRUE if within the range of versions, FALSE if too low
16 * or too high.
17 */
18 /*static*/ function test_version ($floor, $ceiling = null) {
19 global $wp_db_version;
20
21 $ver = (isset($wp_db_version) ? $wp_db_version : 0);
22 $good = ($ver >= $floor);
23 if (!is_null($ceiling)) :
24 $good = ($good and ($ver < $ceiling));
25 endif;
26 return $good;
27 } /* FeedWordPressCompatibility::test_version() */
28
29 /*static*/ function insert_link_category ($name) {
30 global $wpdb;
31
32 // WordPress 2.3+ term/taxonomy API
33 $term = wp_insert_term($name, 'link_category');
34
35 // OK: returned array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id)
36 if (!is_wp_error($term)) :
37 $cat_id = $term['term_id'];
38
39 // Error: term with this name already exists. Well, let's use that then.
40 elseif ($term->get_error_code() == 'term_exists') :
41 // Already-existing term ID is returned in data field
42 $cat_id = $term->get_error_data('term_exists');
43
44 // Error: another kind of error, harder to recover from. Return WP_Error.
45 else :
46 $cat_id = $term;
47 endif;
48
49 // Return newly-created category ID
50 return $cat_id;
51 } /* FeedWordPressCompatibility::insert_link_category () */
52
53 /*static*/ function link_category_id ($value, $key = 'cat_name') {
54 global $wpdb;
55
56 $cat_id = NULL;
57
58 $the_term = term_exists($value, 'link_category');
59
60 // Sometimes, in some versions, we get a row
61 if (is_array($the_term)) :
62 $cat_id = $the_term['term_id'];
63
64 // other times we get an integer result
65 else :
66 $cat_id = $the_term;
67 endif;
68
69 return $cat_id;
70 } /* FeedWordPressCompatibility::link_category_id () */
71
72 /*static*/ function post_tags () {
73 return FeedWordPressCompatibility::test_version(FWP_SCHEMA_23);
74 } /* FeedWordPressCompatibility::post_tags () */
75
76 /*static*/ function validate_http_request ($action = -1, $capability = null) {
77 // Only worry about this if we're using a method with significant side-effects
78 if (strtoupper($_SERVER['REQUEST_METHOD']) == 'POST') :
79 // Limit post by user capabilities
80 if (!is_null($capability) and !current_user_can($capability)) :
81 wp_die(__('Cheatin&#8217; uh?'));
82 endif;
83
84 // If check_admin_referer() checks a nonce.
85 if (function_exists('wp_verify_nonce')) :
86 check_admin_referer($action);
87
88 // No nonces means no checking nonces.
89 else :
90 check_admin_referer();
91 endif;
92 endif;
93 } /* FeedWordPressCompatibility::validate_http_request() */
94
95 /*static*/ function stamp_nonce ($action = -1) {
96 // stamp form with hidden fields for a nonce in WP 2.0.3 & later
97 if (function_exists('wp_nonce_field')) :
98 wp_nonce_field($action);
99 endif;
100 } /* FeedWordPressCompatibility::stamp_nonce() */
101
102 /*static*/ function bottom_script_hook ($filename) {
103 global $fwp_path;
104
105 $hook = 'admin_footer';
106 if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_28)) : // WordPress 2.8+
107 $hook = $hook . '-' . $fwp_path . '/' . basename($filename);
108 endif;
109 return $hook;
110 } /* FeedWordPressCompatibility::bottom_script_hook() */
111 } /* class FeedWordPressCompatibility */
112
113 define('FEEDWORDPRESS_AND_TAGS', (FeedWordPressCompatibility::post_tags() ? ' & Tags' : ''));
114
115 if (!function_exists('stripslashes_deep')) {
116 function stripslashes_deep($value) {
117 $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value);
118 return $value;
119 }
120 }
121
122 if (!function_exists('sanitize_user')) {
123 function sanitize_user ($text, $strict = false) {
124 return $text; // Don't munge it if it wasn't munged going in...
125 }
126 }
127
128 if (!function_exists('disabled')) {
129 /**
130 * Outputs the html disabled attribute.
131 *
132 * Compares the first two arguments and if identical marks as disabled
133 *
134 * @since 3.0.0
135 *
136 * @param mixed $disabled One of the values to compare
137 * @param mixed $current (true) The other value to compare if not just true
138 * @param bool $echo Whether to echo or just return the string
139 * @return string html attribute or empty string
140 */
141 function disabled( $disabled, $current = true, $echo = true ) {
142 return __checked_selected_helper( $disabled, $current, $echo, 'disabled' );
143 }
144 } /* if */
145
146 // Compat
147
148 if (!function_exists('set_post_field')) {
149
150 /**
151 * Update data from a post field based on Post ID
152 *
153 * Examples of the post field will be, 'post_type', 'post_status', 'post_content', etc.
154 *
155 * The context values are based off of the taxonomy filter functions and
156 * supported values are found within those functions.
157 *
158 * @uses sanitize_post_field()
159 *
160 * @param string $field Post field name
161 * @param mixed $value New value for post field
162 * @param id $post Post ID
163 * @return bool Result of UPDATE query
164 *
165 * Included under terms of GPL from WordPress Ticket #10946 <http://core.trac.wordpress.org/attachment/ticket/10946/post.php.diff>
166 */
167 function set_post_field ($field, $value, $post_id) {
168 global $wpdb;
169
170 $post_id = absint($post_id);
171 // sigh ... when FWP is active, I need to avoid avoid_kses_munge
172 // $value = sanitize_post_field($field, $value, $post_id, 'db');
173 return $wpdb->update($wpdb->posts, array($field => $value), array('ID' => $post_id));
174 } /* function set_post_field () */
175
176 } /* if */
177
178 if (!function_exists('term_exists')) {
179 // Fucking WordPress 3.0 wordsmithing.
180 function term_exists ( $term, $taxonomy = '', $parent = 0 ) {
181 return is_term($term, $taxonomy, $parent);
182 }
183 } /* if */
184
185 require_once(dirname(__FILE__).'/feedwordpress-walker-category-checklist.class.php');
186
187 function fwp_category_checklist ($post_id = 0, $descendents_and_self = 0, $selected_cats = false, $params = array()) {
188 if (is_string($params)) :
189 $prefix = $params;
190 $taxonomy = 'category';
191 elseif (is_array($params)) :
192 $prefix = (isset($params['prefix']) ? $params['prefix'] : '');
193 $taxonomy = (isset($params['taxonomy']) ? $params['taxonomy'] : 'category');
194 endif;
195
196 $walker = new FeedWordPress_Walker_Category_Checklist($params);
197 $walker->set_prefix($prefix);
198 $walker->set_taxonomy($taxonomy);
199 wp_terms_checklist(/*post_id=*/ $post_id, array(
200 'taxonomy' => $taxonomy,
201 'descendents_and_self' => $descendents_and_self,
202 'selected_cats' => $selected_cats,
203 'popular_cats' => false,
204 'walker' => $walker,
205 'checked_ontop' => true,
206 ));
207 }
208
209 function fwp_time_elapsed ($ts) {
210 if (function_exists('human_time_diff')) :
211 if ($ts >= time()) :
212 $ret = __(human_time_diff($ts)." from now");
213 else :
214 $ret = __(human_time_diff($ts)." ago");
215 endif;
216 else :
217 $ret = strftime('%x %X', $ts);
218 endif;
219 return $ret;
220 }
221
222 ################################################################################
223 ## UPGRADE INTERFACE: Have users upgrade DB from older versions of FWP #########
224 ################################################################################
225
226 function fwp_upgrade_page () {
227 if (isset($GLOBALS['fwp_post']['action']) and $GLOBALS['fwp_post']['action']=='Upgrade') :
228 $ver = get_option('feedwordpress_version');
229 if (get_option('feedwordpress_version') != FEEDWORDPRESS_VERSION) :
230 echo "<div class=\"wrap\">\n";
231 echo "<h2>Upgrading FeedWordPress...</h2>";
232
233 $feedwordpress = new FeedWordPress;
234 $feedwordpress->upgrade_database($ver);
235 echo "<p><strong>Done!</strong> Upgraded database to version ".FEEDWORDPRESS_VERSION.".</p>\n";
236 echo "<form action=\"\" method=\"get\">\n";
237 echo "<div class=\"submit\"><input type=\"hidden\" name=\"page\" value=\"syndication.php\" />";
238 echo "<input type=\"submit\" value=\"Continue &raquo;\" /></form></div>\n";
239 echo "</div>\n";
240 return;
241 else :
242 echo "<div class=\"updated\"><p>Already at version ".FEEDWORDPRESS_VERSION."!</p></div>";
243 endif;
244 endif;
245 ?>
246 <div class="wrap">
247 <h2>Upgrade FeedWordPress</h2>
248
249 <p>It appears that you have installed FeedWordPress
250 <?php echo FEEDWORDPRESS_VERSION; ?> as an upgrade to an existing installation of
251 FeedWordPress. That's no problem, but you will need to take a minute out first
252 to upgrade your database: some necessary changes in how the software keeps
253 track of posts and feeds will cause problems such as duplicate posts and broken
254 templates if we were to continue without the upgrade.</p>
255
256 <p>Note that most of FeedWordPress's functionality is temporarily disabled
257 until we have successfully completed the upgrade. Everything should begin
258 working as normal again once the upgrade is complete. There's extraordinarily
259 little chance of any damage as the result of the upgrade, but if you're paranoid
260 like me you may want to back up your database before you proceed.</p>
261
262 <p>This may take several minutes for a large installation.</p>
263
264 <form action="" method="post">
265 <?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_upgrade'); ?>
266 <div class="submit"><input type="submit" name="action" value="Upgrade" /></div>
267 </form>
268 </div>
269 <?php
270 } // function fwp_upgrade_page ()
271
272 function remove_dummy_zero ($var) {
273 return !(is_numeric($var) and ((int) $var == 0));
274 }
275
276