PluginProbe
FeedWordPress / 2024.0511
FeedWordPress v2024.0511
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 2024.0511, at compatability.php

337 lines 11.0 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 * @author radgeek
6 */
7
8 /**
9 * Implements legacy functionality no longer present in the current WordPress
10 * versions
11 */
12 class FeedWordPressCompatibility {
13
14 /**
15 * FeedWordPressCompatibility::test_version: test version of WordPress
16 * based on the database schema version.
17 *
18 * @param int $floor The minimum version necessary.
19 * @param mixed $ceiling The first version that is too high. If omitted
20 * or NULL, no version is too high.
21 * @return bool TRUE if within the range of versions, FALSE if too low
22 * or too high.
23 */
24 static function test_version( $floor, $ceiling = null ) {
25 global $wp_db_version;
26
27 $ver = ( isset( $wp_db_version ) ? $wp_db_version : 0 );
28 $good = ( $ver >= $floor );
29 if ( ! is_null( $ceiling ) ) :
30 $good = ( $good and ( $ver < $ceiling ) );
31 endif;
32 return $good;
33 } /* FeedWordPressCompatibility::test_version() */
34
35 /**
36 * Creates a new category for the Links.
37 *
38 * WP dropped support for "Links".
39 *
40 * @param string $name New link category name.
41 *
42 * @return mixed Most of the time should return an array with `term_id`
43 * and `term_taxonomy_id`, unless there was an error.
44 */
45 static function insert_link_category( $name ) {
46 // WordPress 2.3+ term/taxonomy API
47 $term = wp_insert_term( $name, 'link_category' );
48
49 // OK: returned array('term_id' => $term_id, 'term_taxonomy_id' => $tt_id)
50 if ( ! is_wp_error( $term ) ) :
51 $cat_id = $term['term_id'];
52
53 // Error: term with this name already exists. Well, let's use that then.
54 elseif ( 'term_exists' == $term->get_error_code() ) :
55 // Already-existing term ID is returned in data field
56 $cat_id = $term->get_error_data( 'term_exists' );
57
58 // Error: another kind of error, harder to recover from. Return WP_Error.
59 else :
60 $cat_id = $term;
61 endif;
62
63 // Return newly-created category ID
64 return $cat_id;
65 } /* FeedWordPressCompatibility::insert_link_category () */
66
67 /**
68 * Returns category id for a Links category.
69 *
70 * "Links" became optional in WP.
71 *
72 * For the explanation of the values, see @see term_exists()
73 *
74 * @param int|string $value @see term_exists()
75 * @param string $key Unused.
76 * @return mixed @see term_exists()
77 */
78 static function link_category_id( $value, $key = 'cat_name' ) {
79 $cat_id = NULL;
80
81 $the_term = term_exists( $value, 'link_category' );
82
83 // Sometimes, in some versions, we get a row
84 if ( is_array( $the_term ) ) :
85 $cat_id = $the_term['term_id'];
86
87 // other times we get an integer result
88 else :
89 $cat_id = $the_term;
90 endif;
91
92 return $cat_id;
93 } /* FeedWordPressCompatibility::link_category_id () */
94
95 /**
96 * Validate if the user has the right capability for doing this request.
97 *
98 * @see check_admin_referer()
99 * @see current_user_can()
100 *
101 * @param int|string $action The nonce action.
102 * @param string|null $capability Capability name.
103 */
104 static function validate_http_request( $action = -1, $capability = null ) {
105 // Only worry about this if we're using a method with significant side-effects
106 if ( 'POST' == strtoupper( $_SERVER['REQUEST_METHOD'] ) ) :
107 // Limit post by user capabilities
108 if ( ! is_null( $capability ) and ! current_user_can( $capability ) ) :
109 wp_die( esc_html__( 'Cheatin&rsquo; uh?' ) );
110 endif;
111
112 // If check_admin_referer() checks a nonce.
113 if ( function_exists( 'wp_verify_nonce' ) ) :
114 check_admin_referer( $action );
115
116 // No nonces means no checking nonces.
117 else :
118 check_admin_referer();
119 endif;
120 endif;
121 } /* FeedWordPressCompatibility::validate_http_request() */
122
123 /**
124 * Stamps form with hidden fields for a nonce in WP 2.0.3 & later.
125 *
126 * Basically just checks if the function wp_nonce_field() exists, and, if so,
127 * uses it; on earlier WP versions, just skips it.
128 *
129 * @todo What about the HTML which might get returned by wp_nonce_field()?
130 * (gwyneth 20230917)
131 *
132 * @see wp_nonce_field()
133 *
134 * @param int|string $action Optional action name, defaults to -1.
135 *
136 */
137 static function stamp_nonce( $action = -1 ) {
138 if ( function_exists( 'wp_nonce_field' ) ) :
139 wp_nonce_field( $action );
140 endif;
141 } /* FeedWordPressCompatibility::stamp_nonce() */
142
143 static function bottom_script_hook ($filename) {
144 global $fwp_path;
145
146 $hook = 'admin_footer-'.$fwp_path.'/'.basename($filename);
147 return $hook;
148 } /* FeedWordPressCompatibility::bottom_script_hook() */
149 } /* class FeedWordPressCompatibility */
150
151 // Compat
152
153 if ( ! function_exists( 'set_post_field' ) ) {
154 /**
155 * Update data from a post field based on Post ID.
156 *
157 * Examples of the post field will be, 'post_type', 'post_status', 'post_content', etc.
158 *
159 * The context values are based off of the taxonomy filter functions and
160 * supported values are found within those functions.
161 *
162 * @uses sanitize_post_field()
163 *
164 * @param string $field Post field name.
165 * @param mixed $value New value for post field.
166 * @param id $post Post ID.
167 * @return bool Result of UPDATE query.
168 *
169 * Included under terms of GPL from WordPress Ticket #10946 <http://core.trac.wordpress.org/attachment/ticket/10946/post.php.diff>
170 */
171 function set_post_field ($field, $value, $post_id) {
172 global $wpdb;
173
174 $post_id = absint($post_id);
175 // sigh ... when FWP is active, I need to avoid avoid_kses_munge
176 // $value = sanitize_post_field($field, $value, $post_id, 'db');
177 return $wpdb->update($wpdb->posts, array($field => $value), array('ID' => $post_id));
178 } /* function set_post_field () */
179
180 } /* if */
181
182 if ( ! function_exists( 'is_countable' ) ) {
183 /* Copied from WordPress 5.3.2 wp-includes/compat.php pursuant to terms
184 * of GPL. Provide support for is_countable() for versions of PHP < 7.3
185 * and for versions of WordPress < 4.9.6. -C.J. 2020/01/24
186 */
187
188 /**
189 * Polyfill for is_countable() function added in PHP 7.3.
190 *
191 * Verify that the content of a variable is an array or an object
192 * implementing the Countable interface.
193 *
194 * @since 4.9.6
195 *
196 * @param mixed $var The value to check.
197 *
198 * @return bool True if `$var` is countable, false otherwise.
199 */
200 function is_countable( $var ) {
201 return ( is_array( $var )
202 || $var instanceof Countable
203 || $var instanceof SimpleXMLElement
204 || $var instanceof ResourceBundle
205 );
206 }
207 } /* if */
208
209 require_once dirname(__FILE__) . '/feedwordpress-walker-category-checklist.class.php';
210
211 /**
212 * Checks if we have all the categories we need.
213 *
214 * @see wp_terms_checklist()
215 *
216 * @param int $post_id Optional, defaults to zero.
217 * @param int $descendents_and_self @see wp_terms_checklist()
218 * @param bool $selected_cats @see wp_terms_checklist()
219 * @param string|array $params @see wp_terms_checklist()
220 *
221 * @uses wp_terms_checklist()
222 * @uses FeedWordPress_Walker_Category_Checklist()
223 */
224 function fwp_category_checklist( $post_id = 0, $descendents_and_self = 0, $selected_cats = false, $params = array() ) {
225 if ( is_string( $params ) ) :
226 $prefix = $params;
227 $taxonomy = 'category';
228 elseif ( is_array( $params ) ) :
229 $prefix = ( isset( $params['prefix'] ) ? $params['prefix'] : '' );
230 $taxonomy = ( isset( $params['taxonomy'] ) ? $params['taxonomy'] : 'category' );
231 endif;
232
233 $walker = new FeedWordPress_Walker_Category_Checklist( $params );
234 $walker->set_prefix( $prefix );
235 $walker->set_taxonomy( $taxonomy );
236 wp_terms_checklist( /*post_id=*/ $post_id, array(
237 'taxonomy' => $taxonomy,
238 'descendents_and_self' => $descendents_and_self,
239 'selected_cats' => $selected_cats,
240 'popular_cats' => false,
241 'walker' => $walker,
242 'checked_ontop' => true,
243 ) );
244 } /* function fwp_category_checklist() */
245
246 /**
247 * Calculates the difference between a timestamp and the current time.
248 *
249 * @param int $ts Timestamp.
250 *
251 * @return string A human-readable indication of the elapsed time.
252 */
253 function fwp_time_elapsed( $ts ) {
254 if ( ! is_int( $ts ) ) :
255
256 endif;
257 if ( function_exists( 'human_time_diff' ) ) :
258 if ( $ts >= time() ) :
259 $ret = human_time_diff( $ts ) . __( " from now" );
260 else :
261 $ret = human_time_diff( $ts ) . __( " ago" );
262 endif;
263 else :
264 // $ret = strftime( '%x %X', $ts ); // deprecated
265 $ret = date( "Y-m-d H:i:s", $ts );
266 endif;
267 return $ret;
268 } /* function fwp_time_elapsed() */
269
270 /**
271 * UPGRADE INTERFACE: Have users upgrade DB from older versions of FWP.
272 *
273 * @uses FeedWordPress
274 * @uses FeedWordPress::upgrade_database()
275 * @uses get_option()
276 * @uses MyPHP::post()
277 */
278 function fwp_upgrade_page() {
279 if ( 'Upgrade' == MyPHP::post( 'action' ) ) :
280 /** @var string Current FeedWordPress version. */
281 $ver = get_option( 'feedwordpress_version' );
282 if ( ! empty( $ver ) and FEEDWORDPRESS_VERSION != $ver ) :
283 echo "<div class=\"wrap\">\n";
284 echo "<h2>" . esc_html__( "Upgrading FeedWordPress..." ) . "</h2>";
285
286 $feedwordpress = new FeedWordPress;
287 $feedwordpress->upgrade_database( $ver );
288 echo "<p><strong>" . esc_html__( "Done!" ) . "</strong> " . esc_html__( "Upgraded database to version " ) . esc_html( 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>" . esc_html__( "Already at version " ) . esc_html( FEEDWORDPRESS_VERSION ) . "!</p></div>";
296 endif;
297 endif;
298 ?>
299 <div class="wrap">
300 <h2><?php esc_html_e( 'Upgrade FeedWordPress' ); ?></h2>
301
302 <p><?php esc_html_e( 'It appears that you have installed FeedWordPress' ); ?>
303 <?php echo esc_html( FEEDWORDPRESS_VERSION ); ?> <?php esc_html_e( '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><?php esc_html_e( '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><?php esc_html_e( '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 /**
326 * Filter action for removing dummy zeroes.
327 *
328 * @todo Requires a better explanation! (gwyneth 20230917)
329 *
330 * @param mixed $var Variable to test.
331 *
332 * @return int Possibly returns filtered result
333 */
334 function remove_dummy_zero( $var ) {
335 return ! ( is_numeric( $var ) and ( 0 == (int) $var ) );
336 }
337