PluginProbe
FeedWordPress / 2011.1018
FeedWordPress v2011.1018
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 | feeds-page.php +465 -887 trunk2011.1018 View file →
@@ -1,34 +1,12 @@
1 1 <?php
2 -require_once dirname(__FILE__) . '/admin-ui.php';
3 -require_once dirname(__FILE__) . '/magpiemocklink.class.php';
4 -require_once dirname(__FILE__) . '/feedfinder.class.php';
5 -require_once dirname(__FILE__) . '/updatedpostscontrol.class.php';
2 +require_once(dirname(__FILE__) . '/admin-ui.php');
3 +require_once(dirname(__FILE__) . '/magpiemocklink.class.php');
4 +require_once(dirname(__FILE__) . '/feedfinder.class.php');
5 +require_once(dirname(__FILE__) . '/updatedpostscontrol.class.php');
6 6
7 -/**
8 - * List of feeds for FWP
9 - *
10 - * @extends FeedWordPressAdminPage
11 - * @global $post_source
12 - */
13 7 class FeedWordPressFeedsPage extends FeedWordPressAdminPage {
14 - /**
15 - * List of possible HTTP status messages.
16 - *
17 - * @var array
18 - *
19 - * @note Added a few more, renamed a few to stick to contemporary standard. (gwyneth 20230918)
20 - */
21 - var $HTTPStatusMessages = array(
22 - 100 => 'Continue',
23 - 101 => 'Switching Protocols',
24 - 102 => 'Processing', // WebDAV; RFC 2518
25 - 103 => 'Early Hints', // RFC 8297
26 - 110 => 'Response is Stale', // Obsoleted in 2022 by RFC 9111 (caching-related)
27 - 111 => 'Revalidation Failed', // Obsoleted in 2022 by RFC 9111 (caching-related)
28 - 112 => 'Disconnected Operation', // Obsoleted in 2022 by RFC 9111 (caching-related)
29 - 113 => 'Heuristic Expiration', // Obsoleted in 2022 by RFC 9111 (caching-related)
30 - 199 => 'Miscellaneous Warning', // Obsoleted in 2022 by RFC 9111 (caching-related)
8 + var $HTTPStatusMessages = array (
31 9 200 => 'OK. FeedWordPress had no problems retrieving the content at this URL but the content does not seem to be a feed, and does not seem to include links to any feeds.',
32 10 201 => 'Created',
33 11 202 => 'Accepted',
34 12 203 => 'Non-Authoritative information',
@@ -34,23 +12,15 @@
34 12 203 => 'Non-Authoritative information',
35 13 204 => 'No Content',
36 14 205 => 'Reset Content',
37 15 206 => 'Partial Content',
38 - 207 => 'Multi-Status', // WebDAV; RFC 4918
39 - 208 => 'Already Reported', // WebDAV; RFC 5842
40 - 214 => 'Transformation Applied', // Obsoleted in 2022 by RFC 9111 (caching-related)
41 - 218 => 'This is fine', // Non-standard; used by the Apache HTTP Serve)
42 - 226 => 'IM Used', // RFC 3229
43 - 299 => 'Miscellaneous Persistent Warning', // Obsoleted in 2022 by RFC 9111 (caching-related)
44 16 300 => 'Multiple Choices',
45 17 301 => 'Moved Permanently',
46 - 302 => 'Found', // Previously known as 'Moved temporarily'
18 + 302 => 'Found',
47 19 303 => 'See Other',
48 20 304 => 'Not Modified',
49 21 305 => 'Use Proxy',
50 - 306 => 'Switch Proxy',
51 22 307 => 'Temporary Redirect',
52 - 308 => 'Permanent Redirect',
53 23 400 => 'Bad Request',
54 24 401 => 'Unauthorized. This URL probably needs a username and password for you to access it.',
55 25 402 => 'Payment Required',
56 26 403 => 'Forbidden. The URL is not made available for the machine that FeedWordPress is running on.',
@@ -62,38 +32,13 @@
62 32 409 => 'Conflict',
63 33 410 => 'Gone. This URL is no longer available on this server and no forwarding address is known.',
64 34 411 => 'Length Required',
65 35 412 => 'Precondition Failed',
66 - 413 => 'Payload Too Large', // Previously known as 'Request Entity Too Large'
67 - 414 => 'URI Too Long', // Previously known as 'Request URI Too Long'
36 + 413 => 'Request Entity Too Large',
37 + 414 => 'Request URI Too Long',
68 38 415 => 'Unsupported Media Type',
69 - 416 => 'Range Not Satisfiable', // Previously known as 'Requested Range Not Satisfiable'
39 + 416 => 'Requested Range Not Satisfiable',
70 40 417 => 'Expectation Failed',
71 - 418 => 'I\'m a teapot', // RFC 2324, RFC 7168
72 - 419 => 'Page Expired', // Non-standard; used by the Laravel Framework
73 - 420 => 'Enhance Your Calm', // Non-standard; used by version 1.0 of the Twitter API
74 - 421 => 'Misdirected Request',
75 - 422 => 'Unprocessable Entity',
76 - 423 => 'Locked', // WebDAV; RFC 4918
77 - 424 => 'Failed Dependency', // WebDAV; RFC 4918
78 - 425 => 'Too Early', // RFC 8470
79 - 426 => 'Upgrade Required',
80 - 428 => 'Precondition Required', // RFC 6585
81 - 429 => 'Too Many Requests', // RFC 6585
82 - 431 => 'Request Header Fields Too Large', // RFC 6585
83 - 440 => 'Login Time-out', // Non-standard; used by Microsoft on IIS
84 - 444 => 'No Response', // Non-standard; used internally by the nginx web server
85 - 449 => 'Retry With', // Non-standard; used by Microsoft on IIS
86 - 450 => 'Blocked by Windows Parental Controls', // Non-standard; used by Microsoft
87 - 451 => 'Unavailable For Legal Reasons', // RFC 7725; also: used by Microsoft IIS for a redirect
88 - 460 => 'Too Soon', // Non-standard; used by Amazon on AWS
89 - 463 => 'Too Many IP Addresses', // Non-standard; used by Amazon on AWS
90 - 464 => 'Incompatible Protocol Version', // Non-standard; used by Amazon on AWS
91 - 494 => 'Request Header Too Large', // Non-standard; used by the nginx web server
92 - 495 => 'SSL Certificate Error', // Non-standard; used by the nginx web server
93 - 496 => 'SSL Certificate Required', // Non-standard; used by the nginx web server
94 - 498 => 'Invalid Token', // Non-standard; used by Esri on their ArcGIS for Server product
95 - 499 => 'Token Required', // Non-standard; used by Esri on their ArcGIS for Server product; also used as 'Client Closed Request' by the nginx web server
96 41 500 => 'Internal Server Error. Something unexpected went wrong with the configuration of the server that hosts this URL. You might try again later to see if this issue has been resolved.',
97 42 501 => 'Not Implemented',
98 43 502 => 'Bad Gateway',
99 44 503 => 'Service Unavailable. The server is currently unable to handle the request due to a temporary overloading or maintenance of the server that hosts this URL. This is probably a temporary condition and you should try again later to see if the issue has been resolved.',
@@ -98,44 +43,12 @@
98 43 502 => 'Bad Gateway',
99 44 503 => 'Service Unavailable. The server is currently unable to handle the request due to a temporary overloading or maintenance of the server that hosts this URL. This is probably a temporary condition and you should try again later to see if the issue has been resolved.',
100 45 504 => 'Gateway Timeout',
101 46 505 => 'HTTP Version Not Supported',
102 - 506 => 'Variant Also Negotiates', // RFC 2295
103 - 507 => 'Insufficient Storage', // WebDAV; RFC 4918
104 - 508 => 'Loop Detected', // WebDAV; RFC 5842
105 - 509 => 'Bandwidth Limit Exceeded', // Non-standard; used by the Apache Web Server as well as cPanel
106 - 510 => 'Not Extended', // RFC 2774
107 - 511 => 'Network Authentication Required', // RFC 6585
108 - 520 => 'Web Server Returned an Unknown Error', // Non-Standard; used by Cloudflare
109 - 521 => 'Web Server Is Down', // Non-Standard; used by Cloudflare
110 - 522 => 'Connection Timed Out', // Non-Standard; used by Cloudflare
111 - 523 => 'Origin Is Unreachable', // Non-Standard; used by Cloudflare
112 - 524 => 'A Timeout Occurred', // Non-Standard; used by Cloudflare
113 - 525 => 'SSL Handshake Failed', // Non-Standard; used by Cloudflare
114 - 526 => 'Invalid SSL Certificate', // Non-Standard; used by Cloudflare
115 - 527 => 'Railgun Error', // Non-Standard; used by Cloudflare
116 - 529 => 'Site is overloaded', // Non-standard; used by Qualys on its SSLLabs server testing API
117 - 530 => 'Site is frozen', // Non-standard; used by the Pantheon Systems web platform
118 - 561 => 'Unauthorized', // Non-standard; used by Amazon on AWS
119 - 598 => 'Network Read Timeout Error', // Non-standard; informal convention used by some HTTP procoes
120 - 599 => 'Network Connect Timeout Error', // Non-standard; informal convention used by some HTTP procoes
121 47 );
122 -
123 - /**
124 - * List of updated posts.
125 - *
126 - * @var mixed
127 - */
128 48 var $updatedPosts = NULL;
129 49
130 - /**
131 - * List of special settings.
132 - *
133 - * Regular expression syntax is OK here.
134 - *
135 - * @var Array
136 - */
137 - var $special_settings = array(
50 + var $special_settings = array ( /* Regular expression syntax is OK here */
138 51 'cats',
139 52 'cat_split',
140 53 'fetch timeout',
141 54 'freeze updates',
@@ -168,16 +81,15 @@
168 81 /**
169 82 * Constructs the Feeds page object
170 83 *
171 84 * @param mixed $link An object of class {@link SyndicatedLink} if created for one feed's settings, NULL if created for global default settings
172 - * @uses UpdatedPostsControl
173 85 */
174 - public function __construct( $link = -1 ) {
175 - if ( is_numeric( $link ) and -1 == $link ) :
176 - $link = $this->submitted_link();
86 + function FeedWordPressFeedsPage ($link = -1) {
87 + if (is_numeric($link) and -1 == $link) :
88 + $link = FeedWordPressAdminPage::submitted_link();
177 89 endif;
178 90
179 - parent::__construct( 'feedwordpressfeeds', $link );
91 + FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpressfeeds', $link);
180 92
181 93 $this->dispatch = 'feedwordpress_admin_page_feeds';
182 94 $this->pagenames = array(
183 95 'default' => 'Feeds',
@@ -184,45 +96,39 @@
184 96 'settings-update' => 'Syndicated feed',
185 97 'open-sheet' => 'Feed and Update',
186 98 );
187 99 $this->filename = __FILE__;
188 - $this->updatedPosts = new UpdatedPostsControl( $this );
189 -
190 - $this->special_settings = apply_filters( 'syndicated_feed_special_settings', $this->special_settings, $this );
100 + $this->updatedPosts = new UpdatedPostsControl($this);
101 +
102 + $this->special_settings = apply_filters('syndicated_feed_special_settings', $this->special_settings, $this);
191 103 } /* FeedWordPressFeedsPage constructor */
192 104
193 - /**
194 - * Prints out the feeds page.
195 - *
196 - * @return bool TRUE to continue printing out, FALSE to stop.
197 - * @uses FeedWordPress::param()
198 - */
199 - function display() {
105 + function display () {
106 + global $fwp_post;
200 107 global $post_source;
201 108
202 109 $this->boxes_by_methods = array(
203 - 'feed_information_box' => __( 'Feed Information' ),
204 - 'global_feeds_box' => __( 'Update Scheduling' ),
205 - 'updated_posts_box' => __( 'Updated Posts' ),
206 - 'custom_settings_box' => __( 'Custom Feed Settings (for use in templates)' ),
207 - 'advanced_settings_box' => __( 'Advanced Settings' ),
110 + 'feed_information_box' => __('Feed Information'),
111 + 'global_feeds_box' => __('Update Scheduling'),
112 + 'updated_posts_box' => __('Updated Posts'),
113 + 'custom_settings_box' => __('Custom Feed Settings (for use in templates)'),
114 + 'fetch_settings_box' => __('Settings for Fetching Feeds (Advanced)'),
208 115 );
209 116 if ($this->for_default_settings()) :
210 - unset( $this->boxes_by_methods['custom_settings_box'] );
211 - endif;
212 -
117 + unset($this->boxes_by_methods['custom_settings_box']);
118 + endif;
119 +
213 120 // Allow overriding of normal source for FeedFinder, which may
214 121 // be called from multiple points.
215 - if ( isset( $post_source ) and ! is_null( $post_source ) ) :
122 + if (isset($post_source) and !is_null($post_source)) :
216 123 $source = $post_source;
217 124 else :
218 125 $source = $this->dispatch;
219 126 endif;
220 127
221 - $feedfinder = FeedWordPress::param( 'feedfinder' );
222 - $action = FeedWordPress::param( 'action' );
223 - if ( $feedfinder || in_array( $action, array( 'feedfinder', FWP_SYNDICATE_NEW ) ) ) :
224 -
128 + if (isset($_REQUEST['feedfinder'])
129 + or (isset($_REQUEST['action']) and $_REQUEST['action']=='feedfinder')
130 + or (isset($_REQUEST['action']) and $_REQUEST['action']==FWP_SYNDICATE_NEW)) :
225 131 // If this is a POST, validate source and user credentials
226 132 FeedWordPressCompatibility::validate_http_request(/*action=*/ $source, /*capability=*/ 'manage_links');
227 133
228 134 return $this->display_feedfinder(); // re-route to Feed Finder page
@@ -231,55 +137,37 @@
231 137 parent::display();
232 138 return false; // Don't continue
233 139 } /* FeedWordPressFeedsPage::display() */
234 140
235 - /**
236 - * Interface with JavaScript calls.
237 - *
238 - */
239 - function ajax_interface_js() {
240 - parent::ajax_interface_js();
141 + function ajax_interface_js () {
142 + FeedWordPressAdminPage::ajax_interface_js();
241 143 ?>
242 - jQuery( document ).ready( function () {
243 - contextual_appearance( 'automatic-updates-selector', 'cron-job-explanation', null, 'no' );
244 - contextual_appearance( 'time-limit', 'time-limit-box', null, 'yes' );
245 - contextual_appearance( 'use-default-update-window-no', 'update-scheduling-note', null, null, 'block', true );
246 - jQuery( '#use-default-update-window-yes, #use-default-update-window-no' ).click( function () {
247 - contextual_appearance( 'use-default-update-window-no', 'update-scheduling-note', null, null, 'block', true );
144 +
145 + jQuery(document).ready( function () {
146 + contextual_appearance('automatic-updates-selector', 'cron-job-explanation', null, 'no');
147 + contextual_appearance('time-limit', 'time-limit-box', null, 'yes');
148 + contextual_appearance('use-default-update-window-no', 'update-scheduling-note', null, null, 'block', true);
149 + jQuery('#use-default-update-window-yes, #use-default-update-window-no').click( function () {
150 + contextual_appearance('use-default-update-window-no', 'update-scheduling-note', null, null, 'block', true);
248 151 } );
249 152
250 - var els = [ 'name', 'description', 'url' ];
251 - for ( var i = 0; i < els.length; i++ ) {
153 + var els = ['name', 'description', 'url'];
154 + for (var i = 0; i < els.length; i++) {
252 155 contextual_appearance(
253 - /*item=*/ 'basics-hardcode-' + els[i],
254 - /*appear=*/ 'basics-' + els[i] + '-view',
255 - /*disappear=*/ 'basics-' + els[i] + '-edit',
256 - /*value=*/ 'no',
156 + /*item=*/ 'basics-hardcode-'+els[i],
157 + /*appear=*/ 'basics-'+els[i]+'-view',
158 + /*disappear=*/ 'basics-'+els[i]+'-edit',
159 + /*value=*/ 'no',
257 160 /*visibleStyle=*/ 'block',
258 - /*checkbox=*/ true
161 + /*checkbox=*/ true
259 162 );
260 163 } /* for */
164 + } );
261 165
262 - // Let's make the interface for the PAUSE/RESUME a bit better
263 - jQuery( '<tr id="reveal-pause-resume"><th></th><td><button id="pause-resume-reveal-button">&mdash; PAUSE or RESUME UPDATES &mdash;</button></td></tr>' ).insertBefore( '#pause-resume' );
264 - jQuery( '#pause-resume' ).hide();
265 - jQuery( '#pause-resume-reveal-button' ).click( function( ev ) {
266 - ev.preventDefault();
267 -
268 - jQuery( '#pause-resume' ).toggle();
269 - return false;
270 - });
271 - } );
272 166 <?php
273 - } /* FeedWordPressFeedsPage::ajax_interface_js() */
274 -
275 - /**
276 - * Displays updated feeds.
277 - *
278 - * @param object $page Current page object (?).
279 - * @param mixed|null $box A box inside this object.
280 - */
281 - /*static*/ function updated_posts_box( $page, $box = NULL ) {
167 + }
168 +
169 + /*static*/ function updated_posts_box ($page, $box = NULL) {
282 170 ?>
283 171 <table class="edit-form">
284 172 <?php $page->updatedPosts->display(); ?>
285 173 </table>
@@ -285,148 +173,106 @@
285 173 </table>
286 174 <?php
287 175 } /* FeedWordPressFeedsPage::updated_posts_box() */
288 176
289 - /**
290 - * Displays form to deal with global feeds.
291 - *
292 - * @param object $page Current page object (?).
293 - * @param mixed|null $box A box inside this object.
294 - *
295 - * @uses FeedWordPress::automatic_update_hook()
296 - */
297 - /*static*/ function global_feeds_box( $page, $box = NULL ) {
177 + /*static*/ function global_feeds_box ($page, $box = NULL) {
298 178 global $feedwordpress;
299 - $automatic_updates = $feedwordpress->automatic_update_hook( array( 'setting only' => true ) );
300 - $update_time_limit = (int) get_option( 'feedwordpress_update_time_limit' );
179 + $automatic_updates = $feedwordpress->automatic_update_hook(array('setting only' => true));
180 + $update_time_limit = (int) get_option('feedwordpress_update_time_limit');
301 181
302 182 // Hey, ho, let's go...
303 183 ?>
304 184
305 - <table class="edit-form"
306 - <?php if ( $page->for_default_settings() ) : ?>
185 + <table class="edit-form">
186 + <?php if ($page->for_default_settings()) : ?>
307 187
308 188 <tr>
309 - <th scope="row"><?php esc_html_e( 'Update Method:' ); ?></th>
189 + <th scope="row">Updates:</th>
310 190 <td><select id="automatic-updates-selector" name="automatic_updates" size="1" onchange="contextual_appearance('automatic-updates-selector', 'cron-job-explanation', null, 'no');">
311 - <option value="shutdown"<?php fwp_selected_flag( 'shutdown' == $automatic_updates ); ?>><?php esc_html_e( 'automatically check for updates after pages load' ); ?></option>
312 - <option value="init"<?php fwp_selected_flag( 'init' == $automatic_updates ); ?>><?php esc_html_e( 'automatically check for updates before pages load' ); ?></option>
313 - <option value="no"<?php fwp_selected_flag( ! $automatic_updates ); ?>><?php esc_html_e( 'cron job or manual updates' ); ?></option>
191 + <option value="shutdown"<?php echo ($automatic_updates=='shutdown')?' selected="selected"':''; ?>>automatically check for updates after pages load</option>
192 + <option value="init"<?php echo ($automatic_updates=='init')?' selected="selected"':''; ?>>automatically check for updates before pages load</option>
193 + <option value="no"<?php echo (!$automatic_updates)?' selected="selected"':''; ?>>cron job or manual updates</option>
314 194 </select>
315 195 <div id="cron-job-explanation" class="setting-description">
316 196 <p><?php
317 - /* Do we have shell_exec() available from here, or is it disabled for security reasons?
318 - * If it's available, use it to execute `which` to try to get a realistic path to curl,
319 - * or to wget. If everything fails or shell_exec() isn't available, then just make
320 - * up something for the sake of example.
321 - */
322 - /** var string|null Path to either cURL or wget executables. */
323 - $curlOrWgetPath = NULL;
324 -
325 - /** var bool True if this WP installation can call shell commands. */
326 - $shellExecAvailable = ( is_callable( 'shell_exec' ) && false === stripos( ini_get( 'disable_functions' ), 'shell_exec') );
327 -
328 - if ( $shellExecAvailable ) :
329 - $curlOrWgetPath = `which curl`; $opts = '--silent %s';
197 + $path = `which curl`; $opts = '--silent %s';
198 + if (is_null($path) or strlen(trim($path))==0) :
199 + $path = `which wget`; $opts = '-q -O - %s';
200 + if (is_null($path) or strlen(trim($path))==0) :
201 + $path = '/usr/bin/curl'; $opts = '--silent %s';
202 + endif;
330 203 endif;
331 -
332 - if ( $shellExecAvailable and ( is_null( $curlOrWgetPath ) or strlen( trim( $curlOrWgetPath ) ) == 0 ) ) :
333 - $curlOrWgetPath = `which wget`; $opts = '-q -O - %s';
334 - endif;
335 -
336 - if ( is_null( $curlOrWgetPath ) or strlen( trim( $curlOrWgetPath ) ) == 0 ) :
337 - $curlOrWgetPath = '/usr/bin/curl'; $opts = '--silent %s';
338 - endif;
339 -
340 - $curlOrWgetPath = preg_replace( '/\n+$/', '', $curlOrWgetPath );
341 -
342 - /** var string Constructed shell command line to call cURL/wget for updating FeedWordPress feeds. */
343 - $cmdline = $curlOrWgetPath . ' ' . sprintf( $opts, get_bloginfo( 'url' ) . '?update_feedwordpress=1' );
344 -
345 - ?><?php esc_html_e( 'If you want to use a cron job, you can perform scheduled updates by sending regularly-scheduled requests to ' ); ?><a href="<?php bloginfo('url'); ?>?update_feedwordpress=1"><code><?php bloginfo('url'); ?>?update_feedwordpress=1</code></a>
346 - <?php esc_html_e( 'For example, inserting the following line in your crontab:' ); ?></p>
204 + $path = preg_replace('/\n+$/', '', $path);
205 + $crontab = `crontab -l`;
206 +
207 + $cmdline = $path . ' ' . sprintf($opts, get_bloginfo('url').'?update_feedwordpress=1');
208 +
209 + ?>If you want to use a cron job,
210 + you can perform scheduled updates by sending regularly-scheduled
211 + requests to <a href="<?php bloginfo('url'); ?>?update_feedwordpress=1"><code><?php bloginfo('url') ?>?update_feedwordpress=1</code></a>
212 + For example, inserting the following line in your crontab:</p>
347 213 <pre style="font-size: 0.80em"><code>*/10 * * * * <?php print esc_html($cmdline); ?></code></pre>
348 - <p class="setting-description"><?php esc_html_e( 'will check in every 10 minutes and check for updates on any feeds that are ready to be polled for updates.' ); ?></p>
214 + <p class="setting-description">will check in every 10 minutes
215 + and check for updates on any feeds that are ready to be polled for updates.</p>
349 216 </div>
350 217 </td>
351 218 </tr>
352 -
219 +
353 220 <?php else : /* Feed-specific settings */ ?>
354 221
355 222 <tr>
356 - <th scope="row"><?php esc_html_e( 'Last update' ) ?>:</th>
223 + <th scope="row"><?php _e('Last update') ?>:</th>
357 224 <td><?php
358 - if ( isset( $page->link->settings['update/last'] ) ) :
359 - echo esc_html( fwp_time_elapsed( $page->link->settings['update/last'] ) . " " );
225 + if (isset($page->link->settings['update/last'])) :
226 + echo fwp_time_elapsed($page->link->settings['update/last'])." ";
360 227 else :
361 - esc_html_e( " none yet" );
228 + echo " none yet";
362 229 endif;
363 230 ?></td></tr>
364 231
365 - <tr><th><?php esc_html_e( 'Next update' ) ?>:</th>
232 + <tr><th><?php _e('Next update') ?>:</th>
366 233 <td><?php
367 - $holdem = ( isset( $page->link->settings['update/hold'] ) ? $page->link->settings['update/hold'] : 'scheduled' );
234 + $holdem = (isset($page->link->settings['update/hold']) ? $page->link->settings['update/hold'] : 'scheduled');
368 235 ?>
369 236 <select name="update_schedule">
370 - <option value="scheduled"<?php echo ( 'scheduled' == $holdem ) ? ' selected="selected"' : ''; ?>><?php esc_html_e( 'update on schedule' ); ?> <?php
237 + <option value="scheduled"<?php echo ($holdem=='scheduled')?' selected="selected"':''; ?>>update on schedule <?php
371 238 echo " (";
372 - if ( isset( $page->link->settings['update/ttl'] ) and is_numeric( $page->link->settings['update/ttl'] ) ) :
373 - if ( isset( $page->link->settings['update/timed'] ) and 'automatically' == $page->link->settings['update/timed'] ) :
374 - esc_html_e( 'next: ');
375 - $next = $page->link->settings['update/last'] + ( (int) $page->link->settings['update/ttl'] * 60 );
376 - // Note: strftime() is deprecated; use date() instead. (gwyneth 20230918)
377 - if ( strftime( '%x', time() ) != strftime( '%x', $next) ) :
378 - echo esc_html( strftime( '%x', $next ) . ' ' );
239 + if (isset($page->link->settings['update/ttl']) and is_numeric($page->link->settings['update/ttl'])) :
240 + if (isset($page->link->settings['update/timed']) and $page->link->settings['update/timed']=='automatically') :
241 + echo 'next: ';
242 + $next = $page->link->settings['update/last'] + ((int) $page->link->settings['update/ttl'] * 60);
243 + if (strftime('%x', time()) != strftime('%x', $next)) :
244 + echo strftime('%x', $next)." ";
379 245 endif;
380 - echo esc_html( strftime( '%X', $page->link->settings['update/last'] + ( (int) $page->link->settings['update/ttl'] * 60 ) ) );
246 + echo strftime('%X', $page->link->settings['update/last']+((int) $page->link->settings['update/ttl']*60));
381 247 else :
382 - echo esc_html__( "every " ) . esc_html( $page->link->settings['update/ttl'] ) . esc_html__( " minute" )
383 - . ( ( 1 != $page->link->settings['update/ttl'] ) ? esc_html__( "s" ) : "" );
248 + echo "every ".$page->link->settings['update/ttl']." minute".(($page->link->settings['update/ttl']!=1)?"s":"");
384 249 endif;
385 250 else:
386 - esc_html_e( "next scheduled update" );
251 + echo "next scheduled update";
387 252 endif;
388 253 echo ")";
389 254 ?></option>
390 - <option value="next"<?php echo ( 'next' == $holdem ) ? ' selected="selected"' : ''; ?>><?php esc_html_e( 'update ASAP' ); ?></option>
391 - <option value="ping"<?php echo ( 'ping' == $holdem ) ? ' selected="selected"' : ''; ?>><?php esc_html_e( 'update only when pinged' ); ?></option>
255 + <option value="next"<?php echo ($holdem=='next')?' selected="selected"':''; ?>>update ASAP</option>
256 + <option value="ping"<?php echo ($holdem=='ping')?' selected="selected"':''; ?>>update only when pinged</option>
392 257 </select></td></tr>
393 -
258 +
394 259 <?php endif; ?>
395 -
396 - <tr id="pause-resume">
397 - <th scope="row"><?php esc_html_e( 'Pause/Resume:'); ?></th>
398 - <td><?php
399 - $this->setting_radio_control(
400 - 'update/pause',
401 - 'update_pause',
402 - /*options=*/ array(
403 - 'no' => __( '<strong>UPDATE:</strong> import new posts as normal' ),
404 - 'yes' => __( '<strong>PAUSE:</strong> do not import new posts until I unpause updates' ),
405 - ),
406 - /*params=*/ array(
407 - 'setting-default' => NULL,
408 - 'global-setting-default' => 'no',
409 - 'default-input-value' => 'default',
410 - ),
411 - );
412 - ?></td>
413 - </tr>
414 -
260 +
415 261 <tr>
416 - <th scope="row"><?php esc_html_e( 'Update scheduling:') ?></th>
417 - <td><p style="margin-top:0px"><?php esc_html_e( 'How long should FeedWordPress wait between updates before it considers this feed ready to be polled for updates again?' ); ?></p>
262 + <th scope="row"><?php print __('Update scheduling:') ?></th>
263 + <td><p style="margin-top:0px">How long should FeedWordPress wait between updates before it considers this feed ready to be polled for updates again?</p>
418 264 <?php
265 +
419 266 $this->setting_radio_control(
420 - 'update/window',
421 - 'update_window',
422 - array( $this, 'update_window_edit_box' ),
267 + 'update/window', 'update_window',
268 + array(&$this, 'update_window_edit_box'),
423 269 array(
424 270 'global-setting-default' => DEFAULT_UPDATE_PERIOD,
425 - 'default-input-name' => 'use_default_update_window',
426 - 'default-input-id' => 'use-default-update-window-yes',
427 - 'default-input-id-no' => 'use-default-update-window-no',
428 - 'labels' => array($this, 'update_window_currently' ),
271 + 'default-input-name' => 'use_default_update_window',
272 + 'default-input-id' => 'use-default-update-window-yes',
273 + 'default-input-id-no' => 'use-default-update-window-no',
274 + 'labels' => array(&$this, 'update_window_currently'),
429 275 )
430 276 );
431 277 ?></td>
432 278 </tr>
@@ -431,20 +277,20 @@
431 277 ?></td>
432 278 </tr>
433 279
434 280 <tr>
435 - <th scope="row"><?php esc_html_e( 'Minimum Interval:'); ?></th>
436 - <td><p style="margin-top:0px"><?php esc_html_e( 'Some feeds include standard elements that
281 + <th scope="row"><?php print __('Minimum Interval:'); ?></th>
282 + <td><p style="margin-top:0px">Some feeds include standard elements that
437 283 request a specific update schedule. If the interval requested by the
438 - feed provider is <em>longer</em> than FeedWordPress&rsquo;s normal scheduling,
284 + feed provider is <em>longer</em> than FeedWordPress's normal scheduling,
439 285 FeedWordPress will always respect their request to slow down. But what
440 - should it do if the update interval is <em>shorter</em> than the schedule set above?' ); ?></p>
286 + should it do if the update interval is <em>shorter</em> than the schedule set above?</p>
441 287 <?php
442 288 $this->setting_radio_control(
443 289 'update/minimum', 'update_minimum',
444 290 /*options=*/ array(
445 - 'no' => __( 'Speed up and accept the interval from the feed provider' ),
446 - 'yes' => __( 'Keep pace and use the longer scheduling from FeedWordPress' ),
291 + 'no' => 'Speed up and accept the interval from the feed provider',
292 + 'yes' => 'Keep pace and use the longer scheduling from FeedWordPress',
447 293 ),
448 294 /*params=*/ array(
449 295 'setting-default' => NULL,
450 296 'global-setting-default' => 'no',
@@ -453,350 +299,205 @@
453 299 );
454 300 ?>
455 301 </td>
456 302 </tr>
457 -
303 +
458 304 <?php if ($this->for_default_settings()) : ?>
459 -
305 +
460 306 <tr>
461 - <th scope="row"><?php esc_html_e( 'Time limit on updates' ); ?>:</th>
462 - <td><select id="time-limit" name="update_time_limit" size="1" onchange="contextual_appearance( 'time-limit', 'time-limit-box', null, 'yes' );">
463 - <option value="no"<?php fwp_selected_flag( $update_time_limit <= 0 ); ?>><?php esc_html_e( 'no time limit on updates' ); ?></option>
464 - <option value="yes"<?php fwp_selected_flag( $update_time_limit > 0 ); ?>><?php esc_html_e( 'limit updates to no more than...' ); ?></option>
307 + <th scope="row"><?php print __('Time limit on updates'); ?>:</th>
308 + <td><select id="time-limit" name="update_time_limit" size="1" onchange="contextual_appearance('time-limit', 'time-limit-box', null, 'yes');">
309 + <option value="no"<?php echo ($update_time_limit>0)?'':' selected="selected"'; ?>>no time limit on updates</option>
310 + <option value="yes"<?php echo ($update_time_limit>0)?' selected="selected"':''; ?>>limit updates to no more than...</option>
465 311 </select>
466 - <span id="time-limit-box"><label><input type="text" name="time_limit_seconds" value="<?php print esc_attr( $update_time_limit ); ?>" size="5" /> <?php esc_html_e( 'seconds' ); ?></label></span>
312 + <span id="time-limit-box"><label><input type="text" name="time_limit_seconds" value="<?php print $update_time_limit; ?>" size="5" /> seconds</label></span>
467 313 </tr>
468 314
469 315 <?php endif; ?>
470 -
316 +
471 317 </table>
472 -
318 +
473 319 <?php
474 320 } /* FeedWordPressFeedsPage::global_feeds_box() */
475 321
476 - /**
477 - * Updates the window edit box.
478 - *
479 - * @param int $updateWindow Minutes between polling.
480 - * @param bool $defaulted Unused.
481 - * @param array $params Unused.
482 - */
483 - function update_window_edit_box( $updateWindow, $defaulted, $params ) {
484 - if ( ! is_numeric( $updateWindow) ) :
322 + function update_window_edit_box ($updateWindow, $defaulted, $params) {
323 + if (!is_numeric($updateWindow)) :
485 324 $updateWindow = DEFAULT_UPDATE_PERIOD;
486 325 endif;
487 326 ?>
488 - <p><?php esc_html_e( 'Wait' ); ?> <input type="text" name="update_window" value="<?php print esc_attr( $updateWindow ); ?>" size="4" /> <?php esc_html_e( 'minutes between polling.' ); ?></p>
327 + <p>Wait <input type="text" name="update_window" value="<?php print $updateWindow; ?>" size="4" /> minutes between polling.</p>
489 328 <div class="setting-description" id="update-scheduling-note">
490 - <p<?php if ( $updateWindow < 50 ) : ?> style="color: white; background-color: #703030; padding: 1.0em;"<?php endif; ?>><?php esc_html_e( '<strong>Recommendation.</strong> Unless you are positive that you have the webmaster&rsquo;s permission, you generally should not set FeedWordPress to poll feeds more frequently than once every 60 minutes. Many webmasters consider more frequent automated polling to be abusive, and may complain to your web host, or ban your IP address, as retaliation for hammering their servers too hard.' ); ?></p>
491 - <p><?php esc_html_e( '<strong>Note.</strong> This is a default setting that FeedWordPress uses to schedule updates when the feed does not provide any scheduling requests. If this feed does provide update scheduling information (through elements such as <code>&lt;rss:ttl&gt;</code> or <code>&lt;sy:updateFrequency&gt;</code>), FeedWordPress will respect the feed&rsquo;s request.' ); ?></p>
329 + <p<?php if ($updateWindow<50) : ?> style="color: white; background-color: #703030; padding: 1.0em;"<?php endif; ?>><strong>Recommendation.</strong> Unless you are positive that you have the webmaster's permission, you generally should not set FeedWordPress to poll feeds more frequently than once every 60 minutes. Many webmasters consider more frequent automated polling to be abusive, and may complain to your web host, or ban your IP address, as retaliation for hammering their servers too hard.</p>
330 + <p><strong>Note.</strong> This is a default setting that FeedWordPress uses to schedule updates when the feed does not provide any scheduling requests. If this feed does provide update scheduling information (through elements such as <code>&lt;rss:ttl&gt;</code> or <code>&lt;sy:updateFrequency&gt;</code>), FeedWordPress will respect the feed's request.</p>
492 331 </div>
493 332 <?php
494 - } /* FeedWordPressFeedsPage::update_window_edit_box() */
495 -
496 - /**
497 - * Auxiliary function to update the window with current polling waiting period.
498 - *
499 - * @param int $updateWindow Minutes between polling.
500 - * @param bool $defaulted Unused.
501 - * @param array $params Unused.
502 - */
503 - function update_window_currently( $updateWindow, $defaulted, $params ) {
333 + } /* FeedWordPressFeedsPage::update_window_edit_box () */
334 +
335 + function update_window_currently ($updateWindow, $defaulted, $params) {
504 336 $updateWindow = (int) $updateWindow;
505 - if ( 1 == $updateWindow ) :
506 - $caption = __( 'wait %d minute between polling' );
337 + if (1==$updateWindow) :
338 + $caption = 'wait %d minute between polling';
507 339 else :
508 - $caption = __( 'wait %d minutes between polling' );
340 + $caption = 'wait %d minutes between polling';
509 341 endif;
510 - return sprintf( $caption, $updateWindow );
511 - } /* FeedWordPressFeedsPage::update_window_currently() */
342 + return sprintf(__($caption), $updateWindow);
343 + } /* FeedWordPressFeedsPage::update_window_currently () */
344 +
345 + function fetch_timeout_setting ($setting, $defaulted, $params) {
346 + $timeout = intval($this->setting('fetch timeout', FEEDWORDPRESS_FETCH_TIMEOUT_DEFAULT));
512 347
513 - /**
514 - * Fetches the timeout setting.
515 - *
516 - * Nothing is returned, this just emits the HTML.
517 - *
518 - * @param int $setting Unused.
519 - * @param bool $defaulted Unused.
520 - * @param array $params Unused.
521 - */
522 - function fetch_timeout_setting( $setting, $defaulted, $params ) {
523 - /** var int Fetch feed timeout in seconds. */
524 - $timeout = intval( $this->setting( 'fetch timeout', FEEDWORDPRESS_FETCH_TIMEOUT_DEFAULT ) );
525 -
526 - if ( $this->for_feed_settings() ) :
527 - $article = __( 'this' );
348 + if ($this->for_feed_settings()) :
349 + $article = 'this';
528 350 else :
529 - $article = __( 'a' );
351 + $article = 'a';
530 352 endif;
531 353 ?>
532 - <p><?php esc_html_e( 'Wait no more than' ); ?> <input name="fetch_timeout" type="number" min="0" size="3" value="<?php print esc_attr( $timeout ); ?>" />
533 - <?php esc_html_e( 'second(s) when trying to fetch '); print esc_html( $article ); esc_html_e(' feed to check for updates. '); ?></p>
534 - <p><?php esc_html_e( 'If ' ); print esc_html( $article ); esc_html_e(' source&rsquo;s web server does not respond before time runs
535 - out, FeedWordPress will skip over the source and try again during the next update cycle.' ); ?></p>
354 + <p>Wait no more than
355 + than <input name="fetch_timeout" type="number" min="0" size="3" value="<?php print $timeout; ?>" />
356 + second(s) when trying to fetch <?php print $article; ?> feed to check for updates.</p>
357 + <p>If <?php print $article; ?> source's web server does not respond before time runs
358 + out, FeedWordPress will skip over the source and try again during
359 + the next update cycle.</p>
536 360 <?php
537 - } /* FeedWordPressFeedsPage::fetch_timeout_setting() */
538 -
539 - /**
540 - * Properly formats the feed timeout setting, with plurals if required.
541 - *
542 - * Nothing is returned, this just emits the HTML.
543 - *
544 - * @param int $setting Value for the feed timeout, in seconds.
545 - * @param bool $defaulted Unused.
546 - * @param array $params Unused.
547 - */
548 - function fetch_timeout_setting_value( $setting, $defaulted, $params ) {
549 - print number_format( intval( $setting) ) . " " . ( ( 1 == $setting ) ? "second" : "seconds" );
550 361 }
551 -
552 - /**
553 - * Displays the advanced settings box on the FWP dashboard page.
554 - *
555 - * @param FeedWordPressFeedsPage $page A page object, unused.
556 - * @param mixed|null $box A box inside this object, unused.
557 - */
558 - function advanced_settings_box( $page, $box = NULL ) {
559 - ?>
560 - <table class="edit-form">
561 - <tr>
562 - <th><?php esc_html_e( 'Fetch Timeout:' ); ?></th>
563 - <td>
564 - <?php
362 + function fetch_timeout_setting_value ($setting, $defaulted, $params) {
363 + print number_format(intval($setting)) . " " . (($setting==1) ? "second" : "seconds");
364 + }
365 +
366 + function fetch_settings_box ($page, $box = NULL) {
565 367 $this->setting_radio_control(
566 368 'fetch timeout', 'fetch_timeout',
567 - array($this, 'fetch_timeout_setting'),
369 + array(&$this, 'fetch_timeout_setting'),
568 370 array(
569 371 'global-setting-default' => FEEDWORDPRESS_FETCH_TIMEOUT_DEFAULT,
570 372 'input-name' => 'fetch_timeout',
571 373 'default-input-name' => 'fetch_timeout_default',
572 - 'labels' => array($this, 'fetch_timeout_setting_value'),
374 + 'labels' => array(&$this, 'fetch_timeout_setting_value'),
573 375 )
574 376 );
575 - ?>
576 - </td>
577 - </tr>
578 - <tr>
579 - <th><?php esc_html_e( 'Feed Update Type:' ); ?></th>
580 - <td><?php
581 - $this->setting_radio_control( 'update_incremental', 'update_incremental',
582 - /*options=*/ array(
583 - 'incremental' => __( '**Incremental.** When items no longer appear on the feed, keep them in the WordPress posts table.' ),
584 - 'complete' => __( '**Complete.** When items no longer appear on the feed, they are obsolete; retire them from the WordPress posts table.' ),
585 - ),
586 - /*params=*/ array(
587 - 'setting-default' => NULL,
588 - 'global-setting-default' => 'incremental',
589 - 'default-input-value' => 'default',
590 - )
591 - ); ?></td>
592 - </tr>
593 - <tr>
594 - <th><?php esc_html_e( 'Allow Feeds to Delete Posts:' ); ?></th>
595 - <td><?php
596 - $this->setting_radio_control(
597 - 'tombstones',
598 - 'tombstones',
599 - /*options=*/ array(
600 - 'yes' => __( 'Yes. If a feed indicates that one of its posts has been deleted, delete the local copy syndicated to this website.' ),
601 - 'no' => __( 'No. Even if a feed indicates that one of its posts has been deleted, retain the local copy on this website.' ),
602 - ),
603 - /*params=*/ array(
604 - 'setting-default' => NULL,
605 - 'global-setting-default' => 'yes',
606 - 'default-input-value' => 'default',
607 - )
608 - ); ?></td>
609 - </tr>
610 - </table>
611 - <?php
612 - } /* FeedWordPressFeedsPage::advanced_settings_box() */
613 -
614 - /**
615 - * Shows a box for authentication credentials for a feed.
616 - *
617 - * @param array $params Array of parameters to parse.
618 - */
619 - function display_authentication_credentials_box( $params = array() ) {
620 - static $count = 0;
621 -
622 - $params = wp_parse_args(
623 - $params,
624 - array(
625 - 'username' => NULL,
626 - 'password' => NULL,
627 - 'method' => '-',
628 - ),
629 - );
630 -
631 - // Equivalents
632 - if ( is_null( $params['method'] ) ) : $params['method'] = '-'; endif;
633 -
634 - $count++;
635 - /** var string Constructed slug for each feed credential. */
636 - $slug = ( $count > 1 ? '-' . $count : '' );
637 -
638 - global $feedwordpress;
639 - $authMethods = apply_filters(
640 - 'feedwordpress_http_auth_methods',
641 - $feedwordpress->httpauth->methods_available(),
642 - );
643 -
644 - $linkRssAuthId = sanitize_html_class( 'link-rss-authentication' . $slug );
645 - $linkRssCredentialsId = sanitize_html_class( 'link-rss-authentication-credentials' . $slug );
646 - $linkRssAuthMethodId = sanitize_html_class( 'link-rss-authentication-method' . $slug );
647 -
648 - if ( count( $authMethods ) > 1 ) : /* More than '-' */
649 - ?>
650 - <div class="link-rss-authentication" id="<?php print esc_attr( $linkRssAuthId ); ?>">
651 - <table>
652 - <tbody>
653 - <tr class="link-rss-authentication-credentials" id="<?php print esc_attr( $linkRssCredentialsId ); ?>">
654 - <td><label><?php esc_html_e( 'user:' ); ?> <input type="text" name="link_rss_username"
655 - value="<?php print esc_attr( $params['username'] ); ?>" size="16"
656 - placeholder="username to access this feed" /></label></td>
657 - <td><label><?php esc_html_e( 'pass:' ); ?> <input type="text" name="link_rss_password"
658 - value="<?php print esc_attr( $params['password'] ); ?>" size="16"
659 - placeholder=<?php esc_html_e( 'password to access this feed' ); ?> /></label></td>
660 - <td class="link-rss-authentication-method" id="<?php print esc_attr( $linkRssAuthMethodId ); ?>"><label><?php esc_html_e( 'method' ); ?>: <select class="link-rss-auth-method" id="link-rss-auth-method" name="link_rss_auth_method" size="1">
661 -<?php foreach ( $authMethods as $value => $label ) : ?>
662 - <option value="<?php print esc_attr( $value ); ?>"<?php
663 - fwp_selected_flag( $value == $params['method'] );
664 - ?>><?php print esc_html( $label ); ?></option>
665 -<?php endforeach; ?>
666 - </select></label></td>
667 - </tr>
668 - </tbody>
669 - </table>
670 - </div>
671 -
672 - <script type="text/javascript">
673 - jQuery('<td><a class="add-remove remove-it" id="link-rss-userpass-remove<?php print esc_attr( $slug ); ?>" href="#"><span class="x">(X)</span> <?php esc_html_e( 'Remove' ); ?></a></td>')
674 - .appendTo('#<?php print esc_attr( $linkRssCredentialsId ); ?>' )
675 - .click( feedAuthenticationMethodUnPress );
676 - jQuery( '#link-rss-auth-method<?php print esc_attr( $slug ); ?>' ).change( feedAuthenticationMethod );
677 - feedAuthenticationMethod( {
678 - init: true,
679 - node: jQuery( '#<?php print esc_attr( $linkRssAuthId ); ?>' )
680 - } );
681 - </script>
682 -
683 - <?php
684 - endif;
685 - } /* FeedWordPressFeedsPage::display_authentication_credentials_box() */
686 -
687 - /**
688 - * Displays a box with information about a feed.
689 - *
690 - * @param object $page Current page object (?).
691 - * @param mixed|null $box A box inside this object.
692 - *
693 - * @uses get_categories()
694 - * @uses get_category()
695 - * @uses get_option()
696 - * @uses maybe_unserialize()
697 - * @uses FeedWordPress::link_category_id()
698 - */
699 - function feed_information_box( $page, $box = NULL ) {
700 - $link_rss_params = maybe_unserialize( $page->setting( 'query parameters', '' ) );
701 - if ( ! is_array( $link_rss_params ) ) :
377 + } /* FeedWordPressFeedsPage::fetch_settings_box () */
378 +
379 + function feed_information_box ($page, $box = NULL) {
380 + global $wpdb;
381 + $link_rss_params = maybe_unserialize($page->setting('query parameters', ''));
382 + if (!is_array($link_rss_params)) :
702 383 $link_rss_params = array();
703 384 endif;
704 -
705 - if ( $page->for_feed_settings() ) :
706 - $info['name'] = esc_html( $page->link->link->link_name );
707 - $info['description'] = esc_html( $page->link->link->link_description );
708 - $info['url'] = esc_html( $page->link->link->link_url );
385 +
386 + if ($page->for_feed_settings()) :
387 + $info['name'] = esc_html($page->link->link->link_name);
388 + $info['description'] = esc_html($page->link->link->link_description);
389 + $info['url'] = esc_html($page->link->link->link_url);
709 390 $rss_url = $page->link->link->link_rss;
710 391
711 - $hardcode['name'] = $page->link->hardcode( 'name' );
712 - $hardcode['description'] = $page->link->hardcode( 'description' );
713 - $hardcode['url'] = $page->link->hardcode( 'url' );
392 + $hardcode['name'] = $page->link->hardcode('name');
393 + $hardcode['description'] = $page->link->hardcode('description');
394 + $hardcode['url'] = $page->link->hardcode('url');
714 395 else :
715 396 $cat_id = FeedWordPress::link_category_id();
716 397
717 398 $params = array();
718 - $params['taxonomy'] = 'link_category';
399 + if (FeedWordPressCompatibility::test_version(FWP_SCHEMA_USES_ARGS_TAXONOMY)) :
400 + $params['taxonomy'] = 'link_category';
401 + else :
402 + $params['type'] = 'link';
403 + endif;
719 404 $params['hide_empty'] = false;
720 - $results = get_categories( $params );
721 -
722 - /** var bool Guarantee that the Contributors category will be in the drop-down chooser, even if it is empty. */
405 + $results = get_categories($params);
406 +
407 + // Guarantee that the Contributors category will be in the drop-down chooser, even if it is empty.
723 408 $found_link_category_id = false;
724 - foreach ( $results as $row ) :
409 + foreach ($results as $row) :
725 410 // Normalize case
726 - if ( ! isset( $row->cat_id ) ) : $row->cat_id = $row->cat_ID; endif;
411 + if (!isset($row->cat_id)) : $row->cat_id = $row->cat_ID; endif;
727 412
728 - if ( $row->cat_id == $cat_id) : $found_link_category_id = true; endif;
413 + if ($row->cat_id == $cat_id) : $found_link_category_id = true; endif;
729 414 endforeach;
730 -
731 - if ( ! $found_link_category_id ) :
732 - $results[] = get_category( $cat_id );
415 +
416 + if (!$found_link_category_id) :
417 + $results[] = get_category($cat_id);
733 418 endif;
734 -
419 +
735 420 $info = array();
736 421 $rss_url = null;
737 422
738 - $hardcode['name'] = get_option( 'feedwordpress_hardcode_name' );
739 - $hardcode['description'] = get_option( 'feedwordpress_hardcode_description' );
740 - $hardcode['url'] = get_option( 'feedwordpress_hardcode_url' );
423 + $hardcode['name'] = get_option('feedwordpress_hardcode_name');
424 + $hardcode['description'] = get_option('feedwordpress_hardcode_description');
425 + $hardcode['url'] = get_option('feedwordpress_hardcode_url');
741 426 endif;
742 427
743 - /** @var bool Hide authentication (unused). */
744 428 $hideAuth = false;
745 429
746 - $username = $this->setting( 'http username', NULL );
430 + $username = $this->setting('http username', NULL);
747 431
748 - if ( is_null( $username ) ) :
432 + if (is_null($username)) :
749 433 $username = '';
750 434 $hideAuth = true;
751 435 endif;
752 -
753 - $password = $this->setting( 'http password', NULL );
754 - if ( is_null( $password ) ) :
436 +
437 + $password = $this->setting('http password', NULL);
438 + if (is_null($password)) :
755 439 $password = '';
756 440 endif;
441 +
442 + $auth = $this->setting('http auth method', NULL);
757 443
758 - $auth = $this->setting( 'http auth method', NULL );
759 -
760 - if ( is_null( $auth ) or ( strlen( $auth ) == 0 ) ) :
444 + $authMethods = apply_filters('feedwordpress_http_auth_methods', array(
445 + 'basic' => 'Basic',
446 + 'digest' => 'Digest',
447 + '-' => 'None',
448 + ));
449 + if (is_null($auth)) :
761 450 $auth = '-';
762 451 $hideAuth = true;
763 452 endif;
764 453
765 454 // Hey ho, let's go
766 -
767 455 ?>
768 456 <table class="edit-form">
769 457
770 - <?php if ( $page->for_feed_settings() ) : ?>
458 + <?php if ($page->for_feed_settings()) : ?>
771 459
772 460 <tr>
773 - <th scope="row"><?php esc_html_e( 'Feed URL:' ) ?></th>
774 - <td><a href="<?php echo esc_html( $rss_url ); ?>"><?php echo esc_html( $rss_url ); ?></a>
775 - (<a href="<?php echo esc_url( FEEDVALIDATOR_URI ); ?>?url=<?php echo urlencode( $rss_url ); ?>"
776 - title="<?php esc_html_e( 'Check feed' ); ?> &lt;<?php echo esc_html( $rss_url ); ?>&gt; <?php esc_html_e( 'for validity' ); ?>">validate</a>)
461 + <th scope="row"><?php _e('Feed URL:') ?></th>
462 + <td><a href="<?php echo esc_html($rss_url); ?>"><?php echo esc_html($rss_url); ?></a>
463 + (<a href="<?php echo FEEDVALIDATOR_URI; ?>?url=<?php echo urlencode($rss_url); ?>"
464 + title="Check feed &lt;<?php echo esc_html($rss_url); ?>&gt; for validity">validate</a>)
777 465 <input type="submit" name="feedfinder" value="switch &rarr;" style="font-size:smaller" />
778 -
779 - <?php $this->display_authentication_credentials_box( array(
780 - 'username' => $username,
781 - 'password' => $password,
782 - 'method' => $auth,
783 - )
784 - );
785 - ?>
466 +
467 + <table id="link-rss-authentication">
468 + <tbody>
469 + <tr id="link-rss-authentication-credentials">
470 + <td><label>user: <input type="text" name="link_rss_username"
471 + value="<?php print esc_attr($username); ?>" size="16"
472 + placeholder="username to access this feed" /></label></td>
473 + <td><label>pass: <input type="text" name="link_rss_password"
474 + value="<?php print esc_attr($password); ?>" size="16"
475 + placeholder="password to access this feed" /></label></td>
476 + <td id="link-rss-authentication-method"><label>method: <select id="link-rss-auth-method" name="link_rss_auth_method" size="1">
477 +<?php foreach ($authMethods as $value => $label) : ?>
478 + <option value="<?php print esc_attr($value); ?>"<?php
479 + if ($value == $auth) : ?> selected="selected"<?php
480 + endif; ?>><?php print esc_html($label); ?></option>
481 +<?php endforeach; ?>
482 + </select></label></td>
483 + </tr>
484 + </tbody>
485 + </table>
486 +
786 487 <table id="link-rss-params">
787 488 <tbody>
788 489 <?php
789 - $link_rss_params['new'] = array( '', '' );
490 + $link_rss_params['new'] = array('', '');
790 491 $i = 0;
791 - foreach ( $link_rss_params as $index => $pair ) :
492 + foreach ($link_rss_params as $index => $pair) :
792 493 ?>
793 - <tr class="link-rss-params-row" id="link-rss-params-<?php print esc_attr($index); ?>">
794 - <td><label><?php esc_html_e( 'Parameter' ); ?>: <input type="text" class="link_params_key"
795 - name="link_rss_params_key[<?php print esc_attr( $index ); ?>]" value="<?php print esc_html( $pair[0] ); ?>"
494 + <tr class="link-rss-params-row" id="link-rss-params-<?php print $index; ?>">
495 + <td><label>Parameter: <input type="text" class="link_params_key"
496 + name="link_rss_params_key[<?php print $index; ?>]" value="<?php print esc_html($pair[0]); ?>"
796 497 size="5" style="width: 5em" placeholder="name" /></label></td>
797 498 <td class="link-rss-params-value-cell"><label class="link_params_value_label">= <input type="text" class="link_params_value"
798 - name="link_rss_params_value[<?php print esc_attr( $index ); ?>]" value="<?php print esc_html( $pair[1] ); ?>"
499 + name="link_rss_params_value[<?php print $index; ?>]" value="<?php print esc_html($pair[1]); ?>"
799 500 size="8" placeholder="value" /></label></td>
800 501 </tr>
801 502 <?php
802 503 $i++;
@@ -803,49 +504,73 @@
803 504 endforeach;
804 505 ?>
805 506 </tbody>
806 507 </table>
807 -
808 - <div><input type="hidden" id="link-rss-params-num" name="link_rss_params_num" value="<?php print esc_attr($i); ?>" /></div>
809 -
810 - <script>
811 - function linkParamsRowRemove( element ) {
812 - jQuery( element ).closest( 'tr' ).fadeOut(
813 - 'slow',
814 - function () {
815 - jQuery( this ).remove();
816 - }
817 - );
508 +
509 + <div><input type="hidden" id="link-rss-params-num" name="link_rss_params_num" value="<?php print $i; ?>" /></div>
510 +
511 + <script type="text/javascript">
512 + function linkUserPassFlip (init) {
513 + var speed = 'slow';
514 + if (typeof(init)=='boolean' && init) {
515 + speed = 0;
516 + }
517 +
518 + if (jQuery('#link-rss-auth-method').val()=='-') {
519 + jQuery('<a style="display: none" class="add-remove" id="link-rss-userpass-use" href="#">+ Uses username/password</a>')
520 + .insertAfter('#link-rss-authentication')
521 + .click( function () {
522 + jQuery('#link-rss-auth-method').val('basic');
523 + linkUserPassFlip();
524 + return false;
525 + } )
526 + .show(speed);
527 + jQuery('#link-rss-authentication').hide(speed);
528 + } else {
529 + jQuery('#link-rss-userpass-use').hide(speed, function () { jQuery(this).remove(); } );
530 + jQuery('#link-rss-authentication').show(speed);
531 + }
818 532 }
533 + jQuery('<td><a class="add-remove remove-it" id="link-rss-userpass-remove" href="#"><span class="x">(X)</span> Remove</a></td>')
534 + .appendTo('#link-rss-authentication-credentials').click(function () {
535 + jQuery('#link-rss-auth-method').val('-');
536 + linkUserPassFlip();
537 + } );
538 + jQuery('#link-rss-auth-method').change( linkUserPassFlip );
539 + linkUserPassFlip(/*init=*/ true);
540 +
541 + function linkParamsRowRemove (element) {
542 + jQuery(element).closest('tr').fadeOut('slow', function () {
543 + jQuery(this).remove();
544 + } );
545 + }
819 546
820 - jQuery('<td><a href="#" class="add-remove link-rss-params-remove"><span class="x">(X)</span> <?php esc_html_e( 'Remove' ); ?></a></td>' ).insertAfter( '.link-rss-params-value-cell' );
547 + jQuery('<td><a href="#" class="add-remove link-rss-params-remove"><span class="x">(X)</span> Remove</a></td>').insertAfter('.link-rss-params-value-cell');
821 548
822 - jQuery( '#link-rss-params-new' ).hide();
823 - jQuery( '<a class="add-remove" id="link-rss-params-add" href="#"><span class="dashicons dashicons-plus fwp-no-underline"></span> <?php esc_html_e( 'Add a query parameter' ); ?></a>').insertAfter( '#link-rss-params' );
824 - jQuery( '#link-rss-params-add' ).click( function () {
825 - var next = jQuery( '#link-rss-params-num' ).val();
826 - var newRow = jQuery( '#link-rss-params-new' ).clone().attr( 'id', 'link-rss-params-' + next );
827 - newRow.find( '.link_params_key' ).attr( 'name', 'link_rss_params_key[' + next + ']' );
828 - newRow.find( '.link_params_value' ).attr( 'name', 'link_rss_params_value[' + next + ']' );
549 + jQuery('#link-rss-params-new').hide();
550 + jQuery('<a class="add-remove" id="link-rss-params-add" href="#">+ Add a query parameter</a>').insertAfter('#link-rss-params');
551 + jQuery('#link-rss-params-add').click( function () {
552 + var next = jQuery('#link-rss-params-num').val();
553 + var newRow = jQuery('#link-rss-params-new').clone().attr('id', 'link-rss-params-'+next);
554 + newRow.find('.link_params_key').attr('name', 'link_rss_params_key['+next+']');
555 + newRow.find('.link_params_value').attr('name', 'link_rss_params_value['+next+']');
556 +
557 + newRow.find('.link-rss-params-remove').click( function () {
558 + linkParamsRowRemove(this);
559 + return false;
560 + } );
829 561
830 - newRow.find( '.link-rss-params-remove' ).click(
831 - function () {
832 - linkParamsRowRemove( this );
833 - return false;
834 - }
835 - );
836 -
837 - newRow.appendTo( '#link-rss-params' );
562 + newRow.appendTo('#link-rss-params');
838 563 newRow.show();
839 -
564 +
840 565 // Update counter for next row.
841 566 next++;
842 - jQuery( '#link-rss-params-num' ).val( next );
567 + jQuery('#link-rss-params-num').val(next);
843 568
844 569 return false;
845 570 } );
846 - jQuery( '.link-rss-params-remove' ).click( function () {
847 - linkParamsRowRemove( this );
571 + jQuery('.link-rss-params-remove').click( function () {
572 + linkParamsRowRemove(this);
848 573 return false;
849 574 } );
850 575 </script>
851 576 </td>
@@ -852,38 +577,34 @@
852 577 </tr>
853 578
854 579 <?php
855 580 $rows = array(
856 - "name" => __('Link Name'),
581 + "name" => __('Link Name'),
857 582 "description" => __('Short Description'),
858 - "url" => __('Homepage'),
583 + "url" => __('Homepage'),
859 584 );
860 - foreach ( $rows as $what => $label ) :
861 - $hardcode_name = sanitize_html_class( sprintf( 'hardcode_%s', $what ) );
862 - $hardcode_id = sanitize_html_class( sprintf( 'basics-hardcode-%s', $what ) );
863 - $hardcode_view_id = sanitize_html_class( sprintf( 'basics-%s-view', $what ) );
864 - $hardcode_edit_id = sanitize_html_class( sprintf( 'basics-%s-edit', $what ) );
585 + foreach ($rows as $what => $label) :
865 586 ?>
866 587 <tr>
867 - <th scope="row"><?php print esc_html( $label ); ?></th>
588 + <th scope="row"><?php print $label ?></th>
868 589 <td>
869 - <div id="<?php print esc_attr( $hardcode_edit_id ); ?>"><input type="text" name="link<?php print esc_attr( $what ); ?>"
870 - value="<?php echo esc_attr( $info[$what] ); ?>" style="width: 95%" /></div>
871 - <div id="<?php print esc_attr( $hardcode_view_id ); ?>">
872 - <?php if ( 'url' == $what ) : ?><a href="<?php print esc_url( $info[$what] ); ?>"><?php else : ?><strong><?php endif; ?>
873 - <?php print ( strlen( trim( $info[$what] ) ) > 0 ) ? esc_attr( $info[$what] ) : esc_attr__( '(none provided)' ); ?>
874 - <?php if ( 'url' == $what ) : ?></a><?php else : ?></strong><?php endif; ?></div>
875 -
590 + <div id="basics-<?php print $what; ?>-edit"><input type="text" name="link<?php print $what; ?>"
591 + value="<?php echo $info[$what]; ?>" style="width: 95%" /></div>
592 + <div id="basics-<?php print $what; ?>-view">
593 + <?php if ($what=='url') : ?><a href="<?php print $info[$what]; ?>"><?php else : ?><strong><?php endif; ?>
594 + <?php print (strlen(trim($info[$what])) > 0) ? $info[$what] : '(none provided)'; ?>
595 + <?php if ($what=='url') : ?></a><?php else : ?></strong><?php endif; ?></div>
596 +
876 597 <div>
877 - <label><input id="<?php print esc_attr( $hardcode_id ); ?>"
878 - type="radio" name="<?php print esc_attr( $hardcode_name ); ?>" value="no"
879 - <?php echo ( ('yes' == $hardcode[$what] ) ? '' : ' checked="checked"');?>
880 - onchange="contextual_appearance( 'basics-hardcode-<?php print esc_attr( $what ); ?>', '<?php print esc_attr( $hardcode_view_id ); ?>', '<?php print esc_attr( $hardcode_edit_id ); ?>', 'no', 'block', /*checkbox=*/ true )"
881 - /> <?php esc_html_e( 'Update automatically from feed' ); ?></label>
882 - <label><input type="radio" name="<?php print esc_attr( $hardcode_name ); ?>" value="yes"
883 - <?php echo ( ( 'yes' != $hardcode[$what] ) ? '' : ' checked="checked"' );?>
884 - onchange="contextual_appearance('<?php print esc_attr( $hardcode_id ); ?>', '<?php print esc_attr( $hardcode_view_id ); ?>', '<?php print esc_attr( $hardcode_edit_id ); ?>', 'no', 'block', /*checkbox=*/ true)"
885 - /> <?php esc_html_e( 'Edit manually' ); ?></label>
598 + <label><input id="basics-hardcode-<?php print $what; ?>"
599 + type="radio" name="hardcode_<?php print $what; ?>" value="no"
600 + <?php echo (($hardcode[$what]=='yes')?'':' checked="checked"');?>
601 + onchange="contextual_appearance('basics-hardcode-<?php print $what; ?>', 'basics-<?php print $what; ?>-view', 'basics-<?php print $what; ?>-edit', 'no', 'block', /*checkbox=*/ true)"
602 + /> Update automatically from feed</label>
603 + <label><input type="radio" name="hardcode_<?php print $what; ?>" value="yes"
604 + <?php echo (($hardcode[$what]!='yes')?'':' checked="checked"');?>
605 + onchange="contextual_appearance('basics-hardcode-<?php print $what; ?>', 'basics-<?php print $what; ?>-view', 'basics-<?php print $what; ?>-edit', 'no', 'block', /*checkbox=*/ true)"
606 + /> Edit manually</label>
886 607 </div>
887 608 </td>
888 609 </tr>
889 610 <?php
@@ -892,41 +613,41 @@
892 613
893 614 <?php else : ?>
894 615
895 616 <tr>
896 - <th scope="row"><?php esc_html_e( 'Syndicated Link category:' ); ?></th>
617 + <th scope="row">Syndicated Link category:</th>
897 618 <td><p><select name="syndication_category" size="1">
898 619 <?php
899 - foreach ( $results as $row ) :
620 + foreach ($results as $row) :
900 621 // Normalize case
901 - if ( ! isset( $row->cat_id ) ) : $row->cat_id = $row->cat_ID; endif;
622 + if (!isset($row->cat_id)) : $row->cat_id = $row->cat_ID; endif;
902 623
903 - echo "\n\t" . '<option value="' . esc_attr( $row->cat_id ) . '"';
904 - if ( $row->cat_id == $cat_id) :
905 - echo ' selected="selected"';
624 + echo "\n\t<option value=\"$row->cat_id\"";
625 + if ($row->cat_id == $cat_id) :
626 + echo " selected='selected'";
906 627 endif;
907 - echo '>' . esc_attr( $row->cat_id ) . ': ' . esc_html( $row->cat_name );
908 - echo '</option>' . "\n";
628 + echo ">$row->cat_id: ".esc_html($row->cat_name);
629 + echo "</option>\n";
909 630 endforeach;
910 631 ?></select></p>
911 - <p class="setting-description"><?php esc_html_e( 'FeedWordPress will syndicate the
912 - links placed under this link category.' ); ?></p>
632 + <p class="setting-description">FeedWordPress will syndicate the
633 + links placed under this link category.</p>
913 634 </td>
914 635 </tr>
915 -
636 +
916 637 <tr>
917 - <th scope="row"><?php esc_html_e( 'Link Names:' ); ?></th>
918 - <td><label><input type="checkbox" name="hardcode_name" value="no"<?php echo ( ( 'yes' == $hardcode['name'] )? '' : ' checked="checked"' );?>/> <?php esc_html_e( 'Update contributor titles automatically when the feed title changes' ); ?></label></td>
638 + <th scope="row">Link Names:</th>
639 + <td><label><input type="checkbox" name="hardcode_name" value="no"<?php echo (($hardcode['name']=='yes')?'':' checked="checked"');?>/> Update contributor titles automatically when the feed title changes</label></td>
919 640 </tr>
920 -
641 +
921 642 <tr>
922 - <th scope="row"><?php esc_html_e( 'Short descriptions:' ); ?></th>
923 - <td><label><input type="checkbox" name="hardcode_description" value="no"<?php echo ( ( 'yes' == $hardcode['description'] ) ? '' : ' checked="checked"' );?>/> <?php esc_html_e( 'Update contributor descriptions automatically when the feed tagline changes' ); ?></label></td>
643 + <th scope="row">Short descriptions:</th>
644 + <td><label><input type="checkbox" name="hardcode_description" value="no"<?php echo (($hardcode['description']=='yes')?'':' checked="checked"');?>/> Update contributor descriptions automatically when the feed tagline changes</label></td>
924 645 </tr>
925 -
646 +
926 647 <tr>
927 - <th scope="row"><?php esc_html_e( 'Homepages:' ); ?></th>
928 - <td><label><input type="checkbox" name="hardcode_url" value="no"<?php echo ( ( 'yes' == $hardcode['url'] ) ? '' : ' checked="checked"' );?>/> <?php esc_html_e( 'Update contributor homepages automatically when the feed link changes' ); ?></label></td>
648 + <th scope="row">Homepages:</th>
649 + <td><label><input type="checkbox" name="hardcode_url" value="no"<?php echo (($hardcode['url']=='yes')?'':' checked="checked"');?>/> Update contributor homepages automatically when the feed link changes</label></td>
929 650 </tr>
930 651
931 652 <?php endif; ?>
932 653
@@ -933,16 +654,15 @@
933 654 </table>
934 655 <?php
935 656 } /* FeedWordPressFeedsPage::feed_information_box() */
936 657
937 -
938 - function custom_settings_box( $page, $box = NULL ) {
939 - $postsSettings = $this->admin_page_href('posts-page.php', array(), $page->link);
658 + function custom_settings_box ($page, $box = NULL) {
940 659 ?>
941 660 <p class="setting-description">These custom settings are special fields for the <strong>feed</strong> you are
942 661 syndicating, to be retrieved in templates using the <code>get_feed_meta()</code> function. They do not create
943 662 custom fields on syndicated <strong>posts</strong>. If you want to create custom fields that are applied to each
944 - individual post from this feed, set up the settings in <a href="<?php print esc_url($postsSettings); ?>">Syndicated Posts</a>.</p>
663 + individual post from this feed, set up the settings in <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/posts-page.php&amp;link_id=<?php print $page->link->id; ?>">Syndicated Posts</a>.</p>
664 +
945 665 <div id="postcustomstuff">
946 666 <table id="meta-list" cellpadding="3">
947 667 <tr>
948 668 <th>Key</th>
@@ -948,19 +668,19 @@
948 668 <th>Key</th>
949 669 <th>Value</th>
950 670 <th>Action</th>
951 671 </tr>
952 -
672 +
953 673 <?php
954 674 $i = 0;
955 675 foreach ($page->link->settings as $key => $value) :
956 - if ( !preg_match("\007^((".implode(')|(', $page->special_settings)."))$\007i", $key)) :
676 + if (!preg_match("\007^((".implode(')|(', $page->special_settings)."))$\007i", $key)) :
957 677 ?>
958 678 <tr style="vertical-align:top">
959 - <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo esc_attr($i); ?>][key0]" value="<?php echo esc_html($key); ?>" />
960 - <input id="notes-<?php echo esc_attr($i); ?>-key" name="notes[<?php echo esc_attr($i); ?>][key1]" value="<?php echo esc_html($key); ?>" /></th>
961 - <td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo esc_attr($i); ?>-value" name="notes[<?php echo esc_attr($i); ?>][value]"><?php echo esc_html($value); ?></textarea></td>
962 - <td width="10%"><select name="notes[<?php echo esc_attr($i); ?>][action]">
679 + <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo esc_html($key); ?>" />
680 + <input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo esc_html($key); ?>" /></th>
681 + <td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo $i; ?>-value" name="notes[<?php echo $i; ?>][value]"><?php echo esc_html($value); ?></textarea></td>
682 + <td width="10%"><select name="notes[<?php echo $i; ?>][action]">
963 683 <option value="update">save changes</option>
964 684 <option value="delete">delete this setting</option>
965 685 </select></td>
966 686 </tr>
@@ -969,11 +689,11 @@
969 689 endif;
970 690 endforeach;
971 691 ?>
972 692 <tr>
973 - <th scope="row"><input type="text" size="10" name="notes[<?php echo esc_attr( $i ); ?>][key1]" value="" /></th>
974 - <td><textarea name="notes[<?php echo esc_attr( $i ); ?>][value]" rows="2" cols="40"></textarea></td>
975 - <td><em>add new setting...</em><input type="hidden" name="notes[<?php echo esc_attr( $i ); ?>][action]" value="update" /></td>
693 + <th scope="row"><input type="text" size="10" name="notes[<?php echo $i; ?>][key1]" value="" /></th>
694 + <td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea></td>
695 + <td><em>add new setting...</em><input type="hidden" name="notes[<?php echo $i; ?>][action]" value="update" /></td>
976 696 </tr>
977 697 </table>
978 698 </div> <!-- id="postcustomstuff" -->
979 699 <?php
@@ -978,36 +698,13 @@
978 698 </div> <!-- id="postcustomstuff" -->
979 699 <?php
980 700 }
981 701
982 - function url_for_401 ($err) {
983 - $ret = NULL;
984 - if (is_wp_error($err)) :
985 - if ($err->get_error_code()=='http_request_failed') :
986 - $data = $err->get_error_data('http_request_failed');
987 -
988 - if (is_array($data) and isset($data['status'])) :
989 - if (401==$data['status']) :
990 - $ret = $data['uri'];
991 - endif;
992 - endif;
993 - endif;
994 - endif;
995 - return $ret;
996 - }
997 -
998 702 function display_feedfinder () {
999 - $lookup = FeedWordPress::param( 'lookup' );
703 + global $wpdb;
704 +
705 + $lookup = (isset($_REQUEST['lookup']) ? $_REQUEST['lookup'] : NULL);
1000 706
1001 - $auth = FeedWordPress::param( 'link_rss_auth_method' );
1002 - $username = FeedWordPress::param( 'link_rss_username' );
1003 - $password = FeedWordPress::param( 'link_rss_password' );
1004 - $credentials = array(
1005 - "authentication" => $auth,
1006 - "username" => $username,
1007 - "password" => $password,
1008 - );
1009 -
1010 707 $feeds = array(); $feedSwitch = false; $current = null;
1011 708 if ($this->for_feed_settings()) : // Existing feed?
1012 709 $feedSwitch = true;
1013 710 if (is_null($lookup)) :
@@ -1013,26 +710,22 @@
1013 710 if (is_null($lookup)) :
1014 711 // Switch Feed without a specific feed yet suggested
1015 712 // Go to the human-readable homepage to look for
1016 713 // auto-detection links
1017 -
1018 714 $lookup = $this->link->link->link_url;
1019 - $auth = $this->link->setting('http auth method');
1020 - $username = $this->link->setting('http username');
1021 - $password = $this->link->setting('http password');
1022 -
715 +
1023 716 // Guarantee that you at least have the option to
1024 717 // stick with what works.
1025 718 $current = $this->link->link->link_rss;
1026 719 $feeds[] = $current;
1027 720 endif;
1028 - $name = $this->link->link->link_name;
721 + $name = esc_html($this->link->link->link_name);
1029 722 else: // Or a new subscription to add?
1030 - $name = "Subscribe to ".feedwordpress_display_url($lookup);
723 + $name = "Subscribe to <code>".esc_html(feedwordpress_display_url($lookup))."</code>";
1031 724 endif;
1032 725 ?>
1033 726 <div class="wrap" id="feed-finder">
1034 - <h2>Feed Finder: <?php echo esc_html($name); ?></h2>
727 + <h2>Feed Finder: <?php echo $name; ?></h2>
1035 728
1036 729 <?php
1037 730 if ($feedSwitch) :
1038 731 $this->display_alt_feed_box($lookup);
@@ -1038,37 +731,23 @@
1038 731 $this->display_alt_feed_box($lookup);
1039 732 endif;
1040 733
1041 734 $finder = array();
1042 - if ( !is_null($current)) :
735 + if (!is_null($current)) :
1043 736 $finder[$current] = new FeedFinder($current);
1044 737 endif;
1045 738 $finder[$lookup] = new FeedFinder($lookup);
1046 -
739 +
1047 740 foreach ($finder as $url => $ff) :
1048 - $feeds = array_merge($feeds, $ff->find(
1049 - /*url=*/ NULL,
1050 - /*params=*/ $credentials));
741 + $feeds = array_merge($feeds, $ff->find());
1051 742 endforeach;
1052 -
743 +
1053 744 $feeds = array_values( // Renumber from 0..(N-1)
1054 - $feeds
745 + array_unique( // Eliminate duplicates
746 + $feeds
747 + )
1055 748 );
1056 749
1057 - // Allow for some simple FeedFinder results filtering
1058 - $feeds = apply_filters(
1059 - 'feedwordpress_feedfinder_results',
1060 - $feeds,
1061 - array(
1062 - "url" => $lookup,
1063 - "auth" => $auth,
1064 - "username" => $username,
1065 - "password" => $password,
1066 - "finder" => $finder,
1067 - ),
1068 - $this
1069 - );
1070 -
1071 750 if (count($feeds) > 0):
1072 751 if ($feedSwitch) :
1073 752 ?>
1074 753 <h3>Feeds Found</h3>
@@ -1076,9 +755,9 @@
1076 755 endif;
1077 756
1078 757 if (count($feeds) > 1) :
1079 758 $option_template = 'Option %d: ';
1080 - $form_class = 'multi';
759 + $form_class = ' class="multi"';
1081 760 ?>
1082 761 <p><strong>This web page provides at least <?php print count($feeds); ?> different feeds.</strong> These feeds may provide the same information
1083 762 in different formats, or may track different items. (You can check the Feed Information and the
1084 763 Sample Item for each feed to get an idea of what the feed provides.) Please select the feed that you'd like to subscribe to.</p>
@@ -1087,28 +766,12 @@
1087 766 $option_template = '';
1088 767 $form_class = '';
1089 768 endif;
1090 769
1091 - global $fwp_credentials;
1092 -
1093 770 foreach ($feeds as $key => $f):
1094 - $ofc = $fwp_credentials;
1095 - $fwp_credentials = $credentials; // Set
1096 - $pie = FeedWordPress::fetch($f, array("cache" => false));
1097 - $fwp_credentials = $ofc; // Re-Set
1098 -
771 + $pie = FeedWordPress::fetch($f);
1099 772 $rss = (is_wp_error($pie) ? $pie : new MagpieFromSimplePie($pie));
1100 773
1101 - if ($this->url_for_401($pie)) :
1102 - $this->display_alt_feed_box($lookup, array(
1103 - "err" => $pie,
1104 - "auth" => $auth,
1105 - "username" => $username,
1106 - "password" => $password
1107 - ));
1108 - continue;
1109 - endif;
1110 -
1111 774 if ($rss and !is_wp_error($rss)):
1112 775 $feed_link = (isset($rss->channel['link'])?$rss->channel['link']:'');
1113 776 $feed_title = (isset($rss->channel['title'])?$rss->channel['title']:$feed_link);
1114 777 $feed_type = ($rss->feed_type ? $rss->feed_type : 'Unknown');
@@ -1122,14 +785,14 @@
1122 785 $feed_version_template = '';
1123 786 $feed_version = '';
1124 787 endif;
1125 788 ?>
1126 - <form <?php fwp_form_class_attr($form_class); ?> action="<?php print esc_url( $this->form_action( 'syndication.php' ) ); ?>" method="post">
789 + <form<?php print $form_class; ?> action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/syndication.php" method="post">
1127 790 <div class="inside"><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_switchfeed'); ?>
1128 791
1129 792 <?php
1130 793 $classes = array('feed-found'); $currentFeed = '';
1131 - if ( !is_null($current) and $current==$f) :
794 + if (!is_null($current) and $current==$f) :
1132 795 $classes[] = 'current';
1133 796 $currentFeed = ' (currently subscribed)';
1134 797 endif;
1135 798 if ($key%2) :
@@ -1135,10 +798,10 @@
1135 798 if ($key%2) :
1136 799 $classes[] = 'alt';
1137 800 endif;
1138 801 ?>
1139 - <fieldset class="<?php print esc_attr( implode(" ", $classes) ); ?>">
1140 - <legend><?php print esc_html( sprintf( $option_template, ( $key + 1 ) ) ); print esc_html($feed_type) . " "; print esc_html( sprintf( $feed_version_template, $feed_version ) ); ?> feed<?php print esc_html( $currentFeed ); ?></legend>
802 + <fieldset class="<?php print implode(" ", $classes); ?>">
803 + <legend><?php printf($option_template, ($key+1)); print $feed_type." "; printf($feed_version_template, $feed_version); ?> feed<?php print $currentFeed; ?></legend>
1141 804
1142 805 <?php
1143 806 $this->stamp_link_id();
1144 807
@@ -1144,9 +807,9 @@
1144 807
1145 808 // No feed specified = add new feed; we
1146 809 // need to pass along a starting title
1147 810 // and homepage URL for the new Link.
1148 - if ( ! $this->for_feed_settings()):
811 + if (!$this->for_feed_settings()):
1149 812 ?>
1150 813 <input type="hidden" name="feed_title" value="<?php echo esc_html($feed_title); ?>" />
1151 814 <input type="hidden" name="feed_link" value="<?php echo esc_html($feed_link); ?>" />
1152 815 <?php
@@ -1158,11 +821,11 @@
1158 821
1159 822 <div>
1160 823 <div class="feed-sample">
1161 824 <?php
1162 - $link = null;
1163 - $post = null;
1164 - if ( !is_wp_error($rss) && !empty($rss->items) && is_array($rss->items) ):
825 + $link = NULL;
826 + $post = NULL;
827 + if (!is_wp_error($rss) and count($rss->items) > 0):
1165 828 // Prepare to display Sample Item
1166 829 $link = new MagpieMockLink(array('simplepie' => $pie, 'magpie' => $rss), $f);
1167 830 $post = new SyndicatedPost(array('simplepie' => $rss->originals[0], 'magpie' => $rss->items[0]), $link);
1168 831 ?>
@@ -1167,13 +830,13 @@
1167 830 $post = new SyndicatedPost(array('simplepie' => $rss->originals[0], 'magpie' => $rss->items[0]), $link);
1168 831 ?>
1169 832 <h3>Sample Item</h3>
1170 833 <ul>
1171 - <li><strong>Title:</strong> <a href="<?php echo esc_url( $post->post['meta']['syndication_permalink'] ); ?>"><?php echo esc_html( $post->post['post_title'] ); ?></a></li>
1172 - <li><strong>Date:</strong> <?php print esc_html( date('d-M-y g:i:s a', $post->published() ) ); ?></li>
834 + <li><strong>Title:</strong> <a href="<?php echo $post->post['meta']['syndication_permalink']; ?>"><?php echo $post->post['post_title']; ?></a></li>
835 + <li><strong>Date:</strong> <?php print date('d-M-y g:i:s a', $post->published()); ?></li>
1173 836 </ul>
1174 837 <div class="entry">
1175 - <?php print wp_kses( $post->post['post_content'], 'post' ); ?>
838 + <?php print $post->post['post_content']; ?>
1176 839 </div>
1177 840 <?php
1178 841 do_action('feedwordpress_feed_finder_sample_item', $f, $post, $link);
1179 842 else:
@@ -1181,9 +844,9 @@
1181 844 print '<div class="feed-problem">';
1182 845 print "<h3>Problem:</h3>\n";
1183 846 print "<p>FeedWordPress encountered the following error
1184 847 when trying to retrieve this feed:</p>";
1185 - print '<p style="margin: 1.0em 3.0em"><code>' . esc_html( $rss->get_error_message() ) . '</code></p>';
848 + print '<p style="margin: 1.0em 3.0em"><code>'.$rss->get_error_message().'</code></p>';
1186 849 print "<p>If you think this is a temporary problem, you can still force FeedWordPress to add the subscription. FeedWordPress will not be able to find any syndicated posts until this problem is resolved.</p>";
1187 850 print "</div>";
1188 851 endif;
1189 852 ?>
@@ -1192,22 +855,17 @@
1192 855 <?php
1193 856 endif;
1194 857 ?>
1195 858 </div>
1196 -
859 +
1197 860 <div>
1198 861 <h3>Feed Information</h3>
1199 862 <ul>
1200 - <li><strong>Homepage:</strong> <a href="<?php echo esc_url( $feed_link ); ?>"><?php echo is_null( $feed_title )?'<em>Unknown</em>': esc_html( $feed_title ); ?></a></li>
1201 - <li><strong>Feed URL:</strong> <a title="<?php echo esc_html( $f ); ?>" href="<?php echo esc_url( $f ); ?>"><?php echo esc_html( feedwordpress_display_url($f, 40, 10) ); ?></a> (<a title="Check feed &lt;<?php echo esc_html( $f ); ?>&gt; for validity" href="http://feedvalidator.org/check.cgi?url=<?php echo urlencode( $f ); ?>">validate</a>)</li>
1202 - <li><strong>Encoding:</strong> <?php echo isset($rss->encoding) ? esc_html($rss->encoding) : "<em>Unknown</em>"; ?></li>
1203 - <li><strong>Description:</strong> <?php echo isset($rss->channel['description']) ? esc_html($rss->channel['description']) : "<em>Unknown</em>"; ?></li>
863 + <li><strong>Homepage:</strong> <a href="<?php echo $feed_link; ?>"><?php echo is_null($feed_title)?'<em>Unknown</em>':$feed_title; ?></a></li>
864 + <li><strong>Feed URL:</strong> <a title="<?php echo esc_html($f); ?>" href="<?php echo esc_html($f); ?>"><?php echo esc_html(feedwordpress_display_url($f, 40, 10)); ?></a> (<a title="Check feed &lt;<?php echo esc_html($f); ?>&gt; for validity" href="http://feedvalidator.org/check.cgi?url=<?php echo urlencode($f); ?>">validate</a>)</li>
865 + <li><strong>Encoding:</strong> <?php echo isset($rss->encoding)?esc_html($rss->encoding):"<em>Unknown</em>"; ?></li>
866 + <li><strong>Description:</strong> <?php echo isset($rss->channel['description'])?esc_html($rss->channel['description']):"<em>Unknown</em>"; ?></li>
1204 867 </ul>
1205 - <?php $this->display_authentication_credentials_box(array(
1206 - 'username' => $username,
1207 - 'password' => $password,
1208 - 'method' => $auth,
1209 - )); ?>
1210 868 <?php do_action('feedwordpress_feedfinder_form', $f, $post, $link, $this->for_feed_settings()); ?>
1211 869 <div class="submit"><input type="submit" class="button-primary" name="Use" value="&laquo; Use this feed" />
1212 870 <input type="submit" class="button" name="Cancel" value="× Cancel" /></div>
1213 871 </div>
@@ -1220,58 +878,39 @@
1220 878 unset($post);
1221 879 endforeach;
1222 880 else:
1223 881 foreach ($finder as $url => $ff) :
1224 - print '<h3>Searched for feeds at '. esc_html( $url ) . '</h3>' . "\n";
1225 - print '<p><strong>' . esc_html__( 'Error' ) . ':</strong> ' . esc_html__( 'FeedWordPress couldn\'t find any feeds at' ).' <code><a href="' . esc_url( $lookup ) . '">' . esc_html( $lookup ) . '</a></code>';
1226 - print '. ' . esc_html__( 'Try another URL' ) . '.</p>';
1227 -
882 + $url = esc_html($url);
883 + print "<h3>Searched for feeds at ${url}</h3>\n";
884 + print "<p><strong>".__('Error').":</strong> ".__("FeedWordPress couldn't find any feeds at").' <code><a href="'.htmlspecialchars($lookup).'">'.htmlspecialchars($lookup).'</a></code>';
885 + print ". ".__('Try another URL').".</p>";
886 +
1228 887 // Diagnostics
1229 888 print "<div class=\"updated\" style=\"margin-left: 3.0em; margin-right: 3.0em;\">\n";
1230 - print '<h3>' . esc_html__( 'Diagnostic information' ) . '</h3>' . "\n";
1231 - if ( !is_null($ff->error()) and strlen($ff->error()) > 0) :
1232 - print '<h4>'. esc_html__( 'HTTP request failure' ) . '</h4>' . "\n";
1233 - print '<p>' . esc_html( $ff->error() ) ."</p>\n";
889 + print "<h3>".__('Diagnostic information')."</h3>\n";
890 + if (!is_null($ff->error()) and strlen($ff->error()) > 0) :
891 + print "<h4>".__('HTTP request failure')."</h4>\n";
892 + print "<p>".$ff->error()."</p>\n";
1234 893 else :
1235 - print '<h4>' . esc_html__( 'HTTP request completed' ) . '</h4>' . "\n";
1236 - print '<p><strong>Status ' . esc_html( $ff->status() ) . ':</strong> '. esc_html( $this->HTTPStatusMessages[ (int) $ff->status() ] ) ."</p>\n";
894 + print "<h4>".__('HTTP request completed')."</h4>\n";
895 + print "<p><strong>Status ".$ff->status().":</strong> ".$this->HTTPStatusMessages[(int) $ff->status()]."</p>\n";
1237 896 endif;
1238 897
1239 898 // Do some more diagnostics if the API for it is available.
1240 - // Note to @radgeek: consider using a hook instead: https://developer.wordpress.org/reference/hooks/http_api_transports/ (gwyneth 20230920)
1241 - if ( function_exists( '_wp_http_get_object' ) ) :
899 + if (function_exists('_wp_http_get_object')) :
1242 900 $httpObject = _wp_http_get_object();
1243 -
1244 - /*
1245 - // _getTransport() was totally deprecated (gwyneth 20230920)
1246 - if (is_callable(array($httpObject, '_getTransport'))) :
1247 -
1248 - $transports = $httpObject->_getTransport();
1249 -
1250 - print "<h4>".__('HTTP Transports available').":</h4>\n";
1251 - print "<ol>\n";
1252 - print "<li>".implode("</li>\n<li>", array_map('get_class', $transports))."</li>\n";
1253 - print "</ol>\n";
1254 - else
1255 - */
1256 - if ( is_callable( array( $httpObject, '_get_first_available_transport' ) ) ) :
1257 - $transport = $httpObject->_get_first_available_transport(
1258 - array(),
1259 - $url
1260 - );
1261 -
1262 - print "<h4>" . esc_html__("HTTP Transport") . ":</h4>\n";
1263 - print "<ol>\n";
1264 - print "<li>" . esc_html( MyPHP::val($transport) ) . "</li>\n";
1265 - print "</ol>\n";
1266 - endif;
1267 -
901 + $transports = $httpObject->_getTransport();
902 +
903 + print "<h4>".__('HTTP Transports available').":</h4>\n";
904 + print "<ol>\n";
905 + print "<li>".implode("</li>\n<li>", array_map('get_class', $transports))."</li>\n";
906 + print "</ol>\n";
1268 907 print "</div>\n";
1269 908 endif;
1270 909 endforeach;
1271 910 endif;
1272 -
1273 - if ( ! $feedSwitch) :
911 +
912 + if (!$feedSwitch) :
1274 913 $this->display_alt_feed_box($lookup, /*alt=*/ true);
1275 914 endif;
1276 915 ?>
1277 916 </div> <!-- class="wrap" -->
@@ -1278,40 +917,19 @@
1278 917 <?php
1279 918 return false; // Don't continue
1280 919 } /* FeedWordPressFeedsPage::display_feedfinder() */
1281 920
1282 - function display_alt_feed_box ($lookup, $params = false)
1283 - {
1284 - if (is_bool($params)) :
1285 - $params = array("alt" => $params);
1286 - endif;
1287 -
1288 - $params = wp_parse_args($params, array( // Defaults
1289 - "alt" => false,
1290 - "err" => NULL,
1291 - "auth" => NULL,
1292 - "password" => NULL,
1293 - "username" => NULL,
1294 - ));
1295 - $alt = $params['alt'];
1296 -
921 + function display_alt_feed_box ($lookup, $alt = false) {
922 + global $fwp_post;
1297 923 ?>
1298 - <form action="<?php print esc_url( $this->form_action('syndication.php') ); ?>" method="post">
924 + <form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
1299 925 <div class="inside"><?php
1300 - FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds');
926 + FeedWordPressCompatibility::stamp_nonce($this->dispatch);
1301 927 ?>
1302 928 <fieldset class="alt"
1303 - <?php if ( ! $alt): ?>style="margin: 1.0em 3.0em; font-size: smaller;"<?php endif; ?>>
929 + <?php if (!$alt): ?>style="margin: 1.0em 3.0em; font-size: smaller;"<?php endif; ?>>
1304 930 <legend><?php if ($alt) : ?>Alternative feeds<?php else: ?>Find feeds<?php endif; ?></legend>
1305 931 <?php if ($alt) : ?><h3>Use a different feed</h3><?php endif; ?>
1306 - <?php if (is_wp_error($params['err'])) :
1307 - ?>
1308 - <p><em><strong>401 Not Authorized.</strong> This URL may require
1309 - a username and password to access it.</em> You may want to add login
1310 - credentials below and check it again.</p>
1311 - <?php
1312 - endif;
1313 - ?>
1314 932 <div><label>Address:
1315 933 <input type="text" name="lookup" id="use-another-feed"
1316 934 placeholder="URL"
1317 935 <?php if (is_null($lookup)) : ?>
@@ -1322,55 +940,40 @@
1322 940 size="64" style="max-width: 80%" /></label>
1323 941 <?php if (is_null($lookup)) : ?>
1324 942 <?php FeedWordPressSettingsUI::magic_input_tip_js('use-another-feed'); ?>
1325 943 <?php endif; ?>
1326 -
1327 944 <?php $this->stamp_link_id('link_id'); ?>
1328 945 <input type="hidden" name="action" value="feedfinder" />
1329 946 <input type="submit" class="button<?php if ($alt): ?>-primary<?php endif; ?>" value="Check &raquo;" /></div>
1330 -
1331 - <?php $this->display_authentication_credentials_box(array(
1332 - 'username' => $params['username'],
1333 - 'password' => $params['password'],
1334 - 'method' => $params['auth'],
1335 - )); ?>
1336 -
1337 947 <p>This can be the address of a feed, or of a website. FeedWordPress
1338 948 will try to automatically detect any feeds associated with a
1339 949 website.</p>
1340 950 </div> <!-- class="inside" -->
1341 951 </fieldset></form>
1342 -
952 +
1343 953 <?php
1344 954 } /* FeedWordPressFeedsPage::display_alt_feed_box() */
1345 -
1346 - function save_settings () {
955 +
956 + function save_settings ($post) {
1347 957 if ($this->for_feed_settings()) :
1348 - $params_key = FeedWordPress::post( 'link_rss_params_key', array() );
1349 -
1350 - if ( is_array( $params_key ) && count($params_key) > 0 ) :
1351 - $params_values = FeedWordPress::post( 'link_rss_params_value', array() );
958 +
959 + if (isset($post['link_rss_params_key'])) :
1352 960 $qp = array();
1353 - foreach ( $params_key as $index => $key ) :
961 + foreach ($post['link_rss_params_key'] as $index => $key) :
1354 962 if (strlen($key) > 0) :
1355 -
1356 - if ( isset( $params_values[ $index ] ) ) :
1357 -
1358 - $params_value = $params_values[ $index ];
1359 - if ( strlen($params_value) > 0 ) :
1360 - $qp[] = array( $key, $params_value );
1361 - endif;
963 + if (isset($post['link_rss_params_value'][$index])
964 + and strlen($post['link_rss_params_value'][$index])) :
965 + $value = $post['link_rss_params_value'][$index];
966 + $qp[] = array($key, $value);
1362 967 endif;
1363 968 endif;
1364 969 endforeach;
1365 970 $this->update_setting('query parameters', serialize($qp));
1366 -
1367 971 endif;
1368 -
972 +
1369 973 // custom feed settings first
1370 - $param_notes = FeedWordPress::post( 'notes', array() );
1371 - foreach ( $param_notes as $mn ) :
1372 - $mn['key0'] = ( isset($mn['key0']) ? trim($mn['key0']) : null );
974 + foreach ($post['notes'] as $mn) :
975 + $mn['key0'] = (isset($mn['key0']) ? trim($mn['key0']) : NULL);
1373 976 $mn['key1'] = trim($mn['key1']);
1374 977 if (preg_match("\007^(("
1375 978 .implode(')|(',$this->special_settings)
1376 979 ."))$\007i",
@@ -1380,138 +983,113 @@
1380 983
1381 984 if (strlen($mn['key0']) > 0) :
1382 985 unset($this->link->settings[$mn['key0']]); // out with the old
1383 986 endif;
1384 -
987 +
1385 988 if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
1386 989 $this->link->settings[$mn['key1']] = $mn['value']; // in with the new
1387 990 endif;
1388 991 endforeach;
1389 -
992 +
1390 993 // now stuff through the web form
1391 994 // hardcoded feed info
1392 -
995 +
1393 996 foreach (array('name', 'description', 'url') as $what) :
1394 997 // We have a checkbox for "No," so if it's unchecked, mark as "Yes."
1395 - $this->link->settings["hardcode {$what}"] = FeedWordPress::post( "hardcode_{$what}", 'yes' );
998 + $this->link->settings["hardcode {$what}"] = (isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes');
1396 999 if (FeedWordPress::affirmative($this->link->settings, "hardcode {$what}")) :
1397 - $this->link->link->{'link_'.$what} = FeedWordPress::post( 'link' . $what );
1000 + $this->link->link->{'link_'.$what} = $post['link'.$what];
1398 1001 endif;
1399 1002 endforeach;
1400 -
1003 +
1401 1004 // Update scheduling
1402 - $update_schedule = FeedWordPress::post( 'update_schedule' );
1403 - if ( ! is_null( $update_schedule ) ) :
1404 - $this->link->settings['update/hold'] = $update_schedule;
1005 + if (isset($post['update_schedule'])) :
1006 + $this->link->settings['update/hold'] = $post['update_schedule'];
1405 1007 endif;
1406 1008
1407 - $use_default_update_window = FeedWordPress::post( 'use_default_update_window' );
1408 - $update_window = FeedWordPress::post( 'update_window' );
1409 - if ( FeedWordPress::affirmative( $use_default_update_window ) ) :
1009 + if (isset($post['use_default_update_window']) and strtolower($post['use_default_update_window'])=='yes') :
1410 1010 unset($this->link->settings['update/window']);
1411 - elseif ( ! is_null( $update_window ) ) :
1412 - $update_window = intval( $update_window );
1413 - if ( $update_window > 0 ) :
1414 - $this->link->settings['update/window'] = $update_window;
1011 + elseif (isset($post['update_window'])):
1012 + if ((int) $post['update_window'] > 0) :
1013 + $this->link->settings['update/window'] = (int) $post['update_window'];
1415 1014 endif;
1416 1015 endif;
1417 -
1016 +
1418 1017 else :
1419 1018 // Global
1420 - update_option('feedwordpress_cat_id', FeedWordPress::post( 'syndication_category' ) );
1421 -
1422 - $automatic_updates = FeedWordPress::post( 'automatic_updates' );
1423 - if ( ! in_array( $automatic_updates, array( 'init', 'shutdown' ) ) ) :
1424 - $automatic_updates = null;
1019 + update_option('feedwordpress_cat_id', $post['syndication_category']);
1020 +
1021 + if (!isset($post['automatic_updates']) or !in_array($post['automatic_updates'], array('init', 'shutdown'))) :
1022 + $automatic_updates = NULL;
1023 + else :
1024 + $automatic_updates = $post['automatic_updates'];
1425 1025 endif;
1426 1026 update_option('feedwordpress_automatic_updates', $automatic_updates);
1427 1027
1428 - $update_window = FeedWordPress::post( 'update_window' );
1429 - if ( ! is_null( $update_window ) ) :
1430 - $update_window = intval( $update_window );
1431 - if ( $update_window > 0 ) :
1432 - update_option( 'feedwordpress_update_window', $update_window );
1028 + if (isset($post['update_window'])):
1029 + if ((int) $post['update_window'] > 0) :
1030 + update_option('feedwordpress_update_window', (int) $post['update_window']);
1433 1031 endif;
1434 1032 endif;
1435 1033
1436 - $update_time_limit = FeedWordPress::post( 'update_time_limit' );
1437 - $time_limit_seconds = 0;
1438 - if ( FeedWordPress::affirmative( $update_time_limit ) ) :
1439 - $time_limit_seconds = intval( FeedWordPress::post( 'time_limit_seconds' ) );
1440 - endif;
1441 - update_option( 'feedwordpress_update_time_limit', $time_limit_seconds );
1034 + update_option('feedwordpress_update_time_limit', ($post['update_time_limit']=='yes')?(int) $post['time_limit_seconds']:0);
1442 1035
1443 1036 foreach (array('name', 'description', 'url') as $what) :
1444 1037 // We have a checkbox for "No," so if it's unchecked, mark as "Yes."
1445 - $hardcode = FeedWordPress::post( "hardcode_{$what}", 'yes' );
1446 - update_option( "feedwordpress_hardcode_{$what}", $hardcode );
1038 + $hardcode = (isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes');
1039 + update_option("feedwordpress_hardcode_{$what}", $hardcode);
1447 1040 endforeach;
1448 -
1041 +
1449 1042 endif;
1450 -
1451 - $update_pause = FeedWordPress::post( 'update_pause' );
1452 - if ( ! is_null( $update_pause ) ) :
1453 - $this->update_setting( 'update/pause', $update_pause );
1454 - endif;
1455 -
1456 - $fetch_timeout = FeedWordPress::post( 'fetch_timeout' );
1457 - if ( ! is_null( $fetch_timeout ) ) :
1458 - $fetch_timeout_default = FeedWordPress::post( 'fetch_timeout_default' );
1459 - if ( FeedWordPress::affirmative( $fetch_timeout_default ) ) :
1460 - $fetch_timeout = null;
1043 +
1044 + if (isset($post['fetch_timeout'])) :
1045 + if (isset($post['fetch_timeout_default']) and $post['fetch_timeout_default']=='yes') :
1046 + $timeout = NULL;
1047 + else :
1048 + $timeout = $post['fetch_timeout'];
1461 1049 endif;
1462 1050
1463 - if ( is_int( $fetch_timeout ) ) :
1464 - $fetch_timeout = intval( $fetch_timeout );
1051 + if (is_int($timeout)) :
1052 + $timeout = intval($timeout);
1465 1053 endif;
1466 - $this->update_setting( 'fetch timeout', $fetch_timeout );
1054 + $this->update_setting('fetch timeout', $timeout);
1467 1055 endif;
1468 1056
1469 - $update_incremental = FeedWordPress::post( 'update_incremental' );
1470 - if ( ! is_null( $update_incremental ) ) :
1471 - $this->update_setting( 'update_incremental', $update_incremental );
1057 + if (isset($post['update_minimum'])) :
1058 + $this->update_setting('update/minimum', $post['update_minimum']);
1472 1059 endif;
1473 1060
1474 - $tombstones = FeedWordPress::post( 'tombstones' );
1475 - if ( ! is_null( $tombstones ) ) :
1476 - $this->update_setting('tombstones', $tombstones );
1477 - endif;
1478 -
1479 - $update_minimum = FeedWordPress::post( 'update_minimum' );
1480 - if ( ! is_null( $update_minimum ) ) :
1481 - $this->update_setting( 'update/minimum', $update_minimum );
1482 - endif;
1483 -
1484 - $link_rss_auth_method = FeedWordPress::post( 'link_rss_auth_method' );
1485 1061 if (
1486 - ! $link_rss_auth_method
1487 - || '-' == $link_rss_auth_method
1062 + isset($post['link_rss_auth_method'])
1063 + and $post['link_rss_auth_method']
1064 + and ('-' != $post['link_rss_auth_method'])
1488 1065 ) :
1489 - $link_rss_auth_method = null;
1066 + $this->update_setting('http auth method', $post['link_rss_auth_method']);
1067 + else :
1068 + $this->update_setting('http auth method', NULL);
1490 1069 endif;
1491 - $this->update_setting( 'http auth method', $link_rss_auth_method );
1492 -
1493 - $link_rss_username = FeedWordPress::post( 'link_rss_username' );
1070 +
1494 1071 if (
1495 - ! $link_rss_username
1496 - || is_null( $link_rss_auth_method )
1072 + isset($post['link_rss_username'])
1073 + and (strlen($post['link_rss_username']) > 0)
1497 1074 ) :
1498 - $link_rss_username = null;
1075 + $this->update_setting('http username', $post['link_rss_username']);
1076 + else :
1077 + $this->update_setting('http username', NULL);
1499 1078 endif;
1500 - $this->update_setting( 'http username', $link_rss_username );
1501 1079
1502 - $link_rss_password = FeedWordPress::post( 'link_rss_password' );
1503 1080 if (
1504 - strlen( $link_rss_password ) == 0
1505 - || is_null( $link_rss_auth_method )
1081 + isset($post['link_rss_password'])
1082 + and (strlen($post['link_rss_password']) > 0)
1506 1083 ) :
1507 - $link_rss_password = null;
1084 + $this->update_setting('http password', $post['link_rss_password']);
1085 + else :
1086 + $this->update_setting('http password', NULL);
1508 1087 endif;
1509 - $this->update_setting( 'http password', $link_rss_password );
1088 +
1089 + $this->updatedPosts->accept_POST($post);
1510 1090
1511 - $this->updatedPosts->accept_POST();
1512 -
1513 - parent::save_settings();
1091 + parent::save_settings($post);
1514 1092 } /* FeedWordPressFeedsPage::save_settings() */
1515 1093
1516 1094 } /* class FeedWordPressFeedsPage */
1517 1095