PluginProbe
FeedWordPress / 2011.0211
FeedWordPress v2011.0211
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 | diagnostics-page.php +75 -339 trunk2011.0211 View file →
@@ -1,33 +1,32 @@
1 1 <?php
2 2 require_once(dirname(__FILE__) . '/admin-ui.php');
3 -require_once(dirname(__FILE__) . '/magpiemocklink.class.php');
4 3
5 4 class FeedWordPressDiagnosticsPage extends FeedWordPressAdminPage {
6 - public function __construct() {
5 + function FeedWordPressDiagnosticsPage () {
7 6 // Set meta-box context name
8 - parent::__construct('feedwordpressdiagnosticspage');
7 + FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpressdiagnosticspage');
9 8 $this->dispatch = 'feedwordpress_diagnostics';
10 9 $this->filename = __FILE__;
11 -
12 - $this->test_html = array();
13 - add_action('feedwordpress_diagnostics_do_http_test', array($this, 'do_http_test'), 10, 1);
14 10 }
15 11
16 12 function has_link () { return false; }
17 13
18 14 function display () {
15 + global $wpdb, $wp_db_version, $fwp_path;
16 + global $fwp_post;
17 +
19 18 if (FeedWordPress::needs_upgrade()) :
20 19 fwp_upgrade_page();
21 20 return;
22 21 endif;
23 -
22 +
24 23 // If this is a POST, validate source and user credentials
25 24 FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_diagnostics', /*capability=*/ 'manage_options');
26 -
25 +
27 26 if (strtoupper($_SERVER['REQUEST_METHOD'])=='POST') :
28 - $this->accept_POST();
29 - do_action('feedwordpress_admin_page_diagnostics_save', null, $this);
27 + $this->accept_POST($fwp_post);
28 + do_action('feedwordpress_admin_page_diagnostics_save', $GLOBALS['fwp_post'], $this);
30 29 endif;
31 30
32 31 ////////////////////////////////////////////////
33 32 // Prepare settings page ///////////////////////
@@ -39,14 +38,12 @@
39 38 ?>
40 39 <div id="post-body">
41 40 <?php
42 41 $boxes_by_methods = array(
43 - 'info_box' => __('Diagnostic Information'),
44 - 'diagnostics_box' => __('Display Diagnostics'),
45 - 'updates_box' => __('Diagnostic Messages'),
46 - 'tests_box' => __('Diagnostic Tests'),
42 + 'diagnostics_box' => __('Diagnostics'),
43 + 'updates_box' => __('Updates'),
47 44 );
48 -
45 +
49 46 foreach ($boxes_by_methods as $method => $title) :
50 47 add_meta_box(
51 48 /*id=*/ 'feedwordpress_'.$method,
52 49 /*title=*/ $title,
@@ -58,9 +55,9 @@
58 55 do_action('feedwordpress_admin_page_diagnostics_meta_boxes', $this);
59 56 ?>
60 57 <div class="metabox-holder">
61 58 <?php
62 - do_meta_boxes($this->meta_box_context(), $this->meta_box_context(), $this);
59 + fwp_do_meta_boxes($this->meta_box_context(), $this->meta_box_context(), $this);
63 60 ?>
64 61 </div> <!-- class="metabox-holder" -->
65 62 </div> <!-- id="post-body" -->
66 63
@@ -67,156 +64,77 @@
67 64 <?php
68 65 $this->close_sheet();
69 66 } /* FeedWordPressDiagnosticsPage::display () */
70 67
71 - public function do_requested () {
72 - return ( ! is_null( self::what_requested() ) );
73 - }
68 + function accept_POST ($post) {
69 + if (isset($post['submit'])
70 + or isset($post['save'])) :
71 + update_option('feedwordpress_debug', $post['feedwordpress_debug']);
72 +
73 + if (!isset($post['diagnostics_output'])
74 + or !is_array($post['diagnostics_output'])) :
75 + $post['diagnostics_output'] = array();
76 + endif;
77 + update_option('feedwordpress_diagnostics_output', $post['diagnostics_output']);
78 +
79 + if (!isset($post['diagnostics_show'])
80 + or !is_array($post['diagnostics_show'])) :
81 + $post['diagnostics_show'] = array();
82 + endif;
83 + update_option('feedwordpress_diagnostics_show', $post['diagnostics_show']);
74 84
75 - public function what_requested () {
76 - return FeedWordPress::post( 'feedwordpress_diagnostics_do' );
77 - }
78 -
79 - function accept_POST () {
80 - if ( self::save_requested() || self::do_requested() ) :
81 -
82 - update_option( 'feedwordpress_debug', FeedWordPress::post( 'feedwordpress_debug' ) );
83 - update_option( 'feedwordpress_secret_key', FeedWordPress::post( 'feedwordpress_secret_key' ) );
84 -
85 - update_option( 'feedwordpress_diagnostics_output', FeedWordPress::post( 'diagnostics_output' ) );
86 - update_option( 'feedwordpress_diagnostics_show', FeedWordPress::post( 'diagnostics_show' ) );
87 -
88 - if ( FeedWordPress::post( 'diagnostics_show' )
89 - and in_array( 'updated_feeds:errors:persistent', FeedWordPress::post( 'diagnostics_show' ) ) ) :
90 - update_option('feedwordpress_diagnostics_persistent_errors_hours', (int) FeedWordPress::post( 'diagnostics_persistent_error_hours' ) );
85 + if ($post['diagnostics_show']
86 + and in_array('updated_feeds:errors:persistent', $post['diagnostics_show'])) :
87 + update_option('feedwordpress_diagnostics_persistent_errors_hours', (int) $post['diagnostics_persistent_error_hours']);
91 88 else :
92 - delete_option( 'feedwordpress_diagnostics_persistent_errors_hours' );
89 + delete_option('feedwordpress_diagnostics_persistent_errors_hours');
93 90 endif;
94 -
95 - if ( in_array( 'email', FeedWordPress::post( 'diagnostics_output' ) ) ) :
96 - $ded = FeedWordPress::post('diagnostics_email_destination' );
97 - if ( 'mailto' == $ded ) :
98 - $ded .= ':' . FeedWordPress::post('diagnostics_email_destination_address' );
91 +
92 + if (in_array('email', $post['diagnostics_output'])) :
93 + $ded = $post['diagnostics_email_destination'];
94 + if ('mailto'==$ded) :
95 + $ded .= ':'.$post['diagnostics_email_destination_address'];
99 96 endif;
100 97
101 - update_option( 'feedwordpress_diagnostics_email_destination', $ded );
98 + update_option('feedwordpress_diagnostics_email_destination', $ded);
102 99 else :
103 - delete_option( 'feedwordpress_diagnostics_email_destination' );
100 + delete_option('feedwordpress_diagnostics_email_destination');
104 101 endif;
105 -
106 - if ( self::do_requested() ) :
107 - foreach ( self::what_requested() as $do => $value) :
108 - do_action( 'feedwordpress_diagnostics_do_'.$do );
109 - endforeach;
110 - endif;
111 -
102 +
112 103 $this->updated = true; // Default update message
113 104 endif;
114 105 } /* FeedWordPressDiagnosticsPage::accept_POST () */
115 106
116 - static function info_box ($page, $box = NULL) {
117 - global $feedwordpress;
118 - global $wp_version;
119 - $link_category_id = FeedWordPress::link_category_id();
120 - ?>
121 - <table class="edit-form narrow">
122 - <thead style="display: none">
123 - <th scope="col">Topic</th>
124 - <th scope="col">Information</th>
125 - </thead>
126 -
127 - <tbody>
128 - <tr>
129 - <th scope="row"><?php esc_html_e( 'Version:' ); ?></th>
130 - <td><?php esc_html_e( 'You are using FeedWordPress version' ); ?> <strong><?php print esc_html( FEEDWORDPRESS_VERSION ); ?></strong>.</td>
131 - </tr>
132 -
133 - <tr>
134 - <th scope="row"><?php esc_html_e( 'Hosting Environment:' ); ?></th>
135 - <td><ul style="margin-top: 0; padding-top: 0;">
136 - <li><em>WordPress:</em> <?php esc_html_e( 'version' ); ?> <?php print esc_html( $wp_version ); ?></li>
137 - <li><em>SimplePie:</em> <?php esc_html_e( 'version' ); ?> <?php print esc_html( SIMPLEPIE_VERSION ); ?></li>
138 - <?php if ( function_exists( 'phpversion' ) ) : ?>
139 - <li><em><?php esc_html_e( 'PHP:' ); ?></em> <?php esc_html_e( 'version' ); ?> <?php print esc_html( phpversion() ); ?></li>
140 - <?php endif; ?>
141 - <?php if ( function_exists( 'apache_get_version' ) ) : ?>
142 - <li><em><?php esc_html_e( 'Web Server:' ); ?></em> <?php print esc_html( apache_get_version() ); ?></li>
143 - <?php endif; ?>
144 - <?php if ( ! empty( $_SERVER['SERVER_SIGNATURE'] ) ) : ?>
145 - <li><em><?php esc_html_e( 'Web Server signature:' ); ?></em> <?php print esc_html( $_SERVER['SERVER_SIGNATURE'] ); ?></li>
146 - <?php endif; ?>
147 - <li><em><?php esc_html_e( 'Hosted on:' ); ?></em> <?php print esc_html( php_uname( 'a' ) ); ?></li>
148 - </ul>
149 - </td>
150 - </tr>
151 -
152 - <tr>
153 - <th scope="row"><?php esc_html_e( 'Link Category:' ); ?></th>
154 - <td><?php if ( ! is_wp_error( $link_category_id ) ) :
155 - $term = get_term( $link_category_id, 'link_category' );
156 - ?><p><?php esc_html_e( 'Syndicated feeds are kept in link category' ); ?> #<?php print esc_html( $term->term_id ); ?>, <strong><?php print esc_html( $term->name ); ?></strong>.</p>
157 - <?php else : ?>
158 - <p><strong><?php esc_html_e( 'FeedWordPress has been unable to set up a valid Link Category for syndicated feeds.' ); ?></strong> <?php esc_html_e( 'Attempting to set one up returned an' ); ?>
159 - <code><?php $link_category_id->get_error_code(); ?></code> <?php esc_html_e( 'error with this additional data:' ); ?></p>
160 - <table>
161 - <tbody>
162 - <tr>
163 - <th scope="row"><?php esc_html_e( 'Message:' ); ?></th>
164 - <td><?php print esc_html( $link_category_id->get_error_message() ); ?></td>
165 - </tr>
166 - <?php $data = $link_category_id->get_error_data(); if ( ! empty( $data ) ) : ?>
167 - <tr>
168 - <th scope="row"><?php esc_html_e( 'Auxiliary Data:' ); ?></th>
169 - <td><pre><?php print esc_html( MyPHP::val( $link_category_id->get_error_data() ) ); ?></pre></td>
170 - </tr>
171 - <?php endif; ?>
172 - </table>
173 - <?php endif; ?></td>
174 - </tr>
175 -
176 - <tr>
177 - <th scope="row"><?php esc_html_e('Secret Key:'); ?></th>
178 - <td><input type="text" name="feedwordpress_secret_key" value="<?php print esc_attr( $feedwordpress->secret_key() ); ?>" />
179 - <p class="setting-description"><?php esc_html_e( 'This is used to control access to some diagnostic testing functions. You can change it to any string you want, but only tell it to people you trust to help you troubleshoot your FeedWordPress installation. Keep it secret&mdash;keep it safe.' ); ?></p></td>
180 - </tr>
181 - </table>
182 -
183 - <?php
184 - } /* FeedWordPressDiagnosticsPage::info_box () */
185 -
186 - static function diagnostics_box( $page, $box = NULL ) {
107 + /*static*/ function diagnostics_box ($page, $box = NULL) {
187 108 $settings = array();
188 - $settings['debug'] = ( get_option( 'feedwordpress_debug' ) == 'yes' );
109 + $settings['debug'] = (get_option('feedwordpress_debug')=='yes');
189 110
190 - $diagnostics_output = get_option( 'feedwordpress_diagnostics_output', array() );
191 - if ( ! is_array( $diagnostics_output ) ) {
192 - $diagnostics_output = array( $diagnostics_output );
193 - }
111 + $diagnostics_output = get_option('feedwordpress_diagnostics_output', array());
194 112
195 113 $users = fwp_author_list();
196 114
197 - $ded = get_option( 'feedwordpress_diagnostics_email_destination', 'admins' );
115 + $ded = get_option('feedwordpress_diagnostics_email_destination', 'admins');
198 116
199 - if (preg_match( '/^mailto:(.*)$/', $ded, $ref ) ) :
117 + if (preg_match('/^mailto:(.*)$/', $ded, $ref)) :
200 118 $ded_addy = $ref[1];
201 119 else :
202 120 $ded_addy = NULL;
203 121 endif;
204 -
122 +
205 123 // Hey ho, let's go...
206 124 ?>
207 125 <table class="edit-form">
208 126 <tr style="vertical-align: top">
209 -<th scope="row"><?php esc_html_e( 'Debugging mode:' ); ?></th>
127 +<th scope="row">Debugging mode:</th>
210 128 <td><select name="feedwordpress_debug" size="1">
211 -<option value="yes"<?php echo ( $settings['debug'] ? ' selected="selected"' : '' ); ?>><?php esc_html_e( 'on' ); ?></option>
212 -<option value="no"<?php echo ( $settings['debug'] ? '' : ' selected="selected"' ); ?>><?php esc_html_e( 'off' ); ?></option>
129 +<option value="yes"<?php echo ($settings['debug'] ? ' selected="selected"' : ''); ?>>on</option>
130 +<option value="no"<?php echo ($settings['debug'] ? '' : ' selected="selected"'); ?>>off</option>
213 131 </select>
214 132
215 -<p><?php esc_html_e( 'When debugging mode is <strong>ON</strong>, FeedWordPress displays many
133 +<p>When debugging mode is <strong>ON</strong>, FeedWordPress displays many
216 134 diagnostic error messages, warnings, and notices that are ordinarily suppressed,
217 135 and turns off all caching of feeds. Use with caution: this setting is useful for
218 -testing but absolutely inappropriate for a production server.' ); ?></p>
136 +testing but absolutely inappropriate for a production server.</p>
219 137
220 138 </td>
221 139 </tr>
222 140 <tr>
@@ -221,20 +139,20 @@
221 139 </tr>
222 140 <tr>
223 141 <th scope="row">Diagnostics output:</th>
224 142 <td><ul class="options">
225 -<li><input type="checkbox" name="diagnostics_output[]" value="error_log" <?php print ( in_array( 'error_log', $diagnostics_output ) ? ' checked="checked"' : ''); ?> /> Log in PHP error logs</label></li>
143 +<li><input type="checkbox" name="diagnostics_output[]" value="error_log" <?php print (in_array('error_log', $diagnostics_output) ? ' checked="checked"' : ''); ?> /> Log in PHP error logs</label></li>
226 144 <li><input type="checkbox" name="diagnostics_output[]" value="admin_footer" <?php print (in_array('admin_footer', $diagnostics_output) ? ' checked="checked"' : ''); ?> /> Display in WordPress admin footer</label></li>
227 145 <li><input type="checkbox" name="diagnostics_output[]" value="echo" <?php print (in_array('echo', $diagnostics_output) ? ' checked="checked"' : ''); ?> /> Echo in web browser as they are issued</label></li>
228 146 <li><input type="checkbox" name="diagnostics_output[]" value="echo_in_cronjob" <?php print (in_array('echo_in_cronjob', $diagnostics_output) ? ' checked="checked"' : ''); ?> /> Echo to output when they are issued during an update cron job</label></li>
229 147 <li><input type="checkbox" name="diagnostics_output[]" value="email" <?php print (in_array('email', $diagnostics_output) ? ' checked="checked"' : ''); ?> /> Send a daily email digest to:</label> <select name="diagnostics_email_destination" id="diagnostics-email-destination" size="1">
230 -<option value="admins"<?php if ( 'admins' == $ded ) : ?> selected="selected"<?php endif; ?>>the site administrators</option>
148 +<option value="admins"<?php if ('admins'==$ded) : ?> selected="selected"<?php endif; ?>>the site administrators</option>
231 149 <?php foreach ($users as $id => $name) : ?>
232 150 <option value="user:<?php print (int) $id; ?>"<?php if (sprintf('user:%d', (int) $id)==$ded) : ?> selected="selected"<?php endif; ?>><?php print esc_html($name); ?></option>
233 151 <?php endforeach; ?>
234 -<option value="mailto"<?php if ( !is_null($ded_addy)) : ?> selected="selected"<?php endif; ?>>another e-mail address...</option>
152 +<option value="mailto"<?php if (!is_null($ded_addy)) : ?> selected="selected"<?php endif; ?>>another e-mail address...</option>
235 153 </select>
236 -<input type="email" id="diagnostics-email-destination-address" name="diagnostics_email_destination_address" value="<?php print esc_attr( $ded_addy ); ?>" placeholder="email address" /></li>
154 +<input type="email" id="diagnostics-email-destination-address" name="diagnostics_email_destination_address" value="<?php print $ded_addy; ?>" placeholder="email address" /></li>
237 155 </ul></td>
238 156 </tr>
239 157 </table>
240 158
@@ -245,9 +163,9 @@
245 163 'diagnostics-email-destination-default',
246 164 'mailto',
247 165 'inline'
248 166 );
249 - jQuery( '#diagnostics-email-destination' ).change ( function () {
167 + jQuery('#diagnostics-email-destination').change ( function () {
250 168 contextual_appearance(
251 169 'diagnostics-email-destination',
252 170 'diagnostics-email-destination-address',
253 171 'diagnostics-email-destination-default',
@@ -253,60 +171,37 @@
253 171 'diagnostics-email-destination-default',
254 172 'mailto',
255 173 'inline'
256 174 );
257 - } );
175 + } );
258 176 </script>
259 177 <?php
260 178 } /* FeedWordPressDiagnosticsPage::diagnostics_box () */
261 -
262 - /**
263 - * Shows the box for the many possible update options.
264 - *
265 - * @param type $page description
266 - * @param type $box description
267 - *
268 - * @return void description
269 - */
270 - static function updates_box ($page, $box = NULL) {
271 - $hours = get_option( 'feedwordpress_diagnostics_persistent_errors_hours', 2 );
272 - $fields = apply_filters( 'feedwordpress_diagnostics', array(
179 +
180 + /*static*/ function updates_box ($page, $box = NULL) {
181 + $hours = get_option('feedwordpress_diagnostics_persistent_errors_hours', 2);
182 + $fields = apply_filters('feedwordpress_diagnostics', array(
273 183 'Update Diagnostics' => array(
274 - 'update_schedule:check' => 'whenever a FeedWordPress checks in on the update schedule',
275 - 'updated_feeds' => 'as each feed is checked for updates',
184 + 'updated_feeds' => 'as each feed checked for updates',
185 + 'updated_feeds:errors:persistent' => 'when attempts to update a feed have resulted in errors</label> <label>for at least <input type="number" min="1" max="360" step="1" name="diagnostics_persistent_error_hours" value="'.$hours.'" /> hours',
186 + 'updated_feeds:errors' => 'any time FeedWordPress encounters any errors while checking a feed for updates',
276 187 'syndicated_posts' => 'as each syndicated post is added to the database',
277 188 'feed_items' => 'as each syndicated item is considered on the feed',
278 189 'memory_usage' => 'indicating how much memory was used',
279 190 ),
280 - // Note: the embedded HTML gets filtered out, so this might require some refactoring. (gwyneth 20230917)
281 - 'Feed Retrieval' => array(
282 - 'updated_feeds:errors:persistent' => 'when attempts to update a feed have resulted in errors</label> <label>for at least <input type="number" min="1" max="360" step="1" name="diagnostics_persistent_error_hours" value="'.$hours.'" /> hours',
283 - 'updated_feeds:errors' => 'any time FeedWordPress encounters any errors while checking a feed for updates',
284 - 'updated_feeds:http' => "displaying the raw HTTP data passed to and from the feed being checked for updates",
285 - ),
286 191 'Syndicated Post Details' => array(
287 - 'feed_items:freshness' => 'as FeedWordPress decides whether to treat an item as a new post, an update, or a duplicate of an existing post',
288 - 'feed_items:rejected' => 'when FeedWordPress rejects a post without syndicating it',
289 - 'syndicated_posts:categories' => 'as categories, tags, and other terms are added on the post',
290 192 'syndicated_posts:meta_data' => 'as syndication meta-data is added on the post',
291 - 'syndicated_posts:do_pings' => 'when FeedWordPress holds or releases the pings WordPress sends out when new posts are created',
292 193 ),
293 - 'Advanced Diagnostics' => array(
294 - 'feed_items:freshness:reasons' => 'explaining the reason that a post was treated as an update to an existing post',
295 - 'feed_items:freshness:sql' => 'when FeedWordPress issues the SQL query it uses to decide whether to treat items as new, updates, or duplicates',
296 - 'syndicated_posts:categories:test' => 'as FeedWordPress checks for the familiarity of feed categories and tags',
297 - 'syndicated_posts:static_meta_data' => 'providing meta-data about syndicated posts in the Edit Posts interface',
298 - ),
299 - ), $page );
300 -
301 - foreach ( $fields as $section => $items ) :
302 - foreach ( $items as $key => $label ) :
194 + ), $page);
195 +
196 + foreach ($fields as $section => $items) :
197 + foreach ($items as $key => $label) :
303 198 $checked[$key] = '';
304 199 endforeach;
305 200 endforeach;
306 201
307 - $diagnostics_show = get_option( 'feedwordpress_diagnostics_show', array() );
308 - if ( is_array( $diagnostics_show ) ) : foreach ( $diagnostics_show as $thingy ) :
202 + $diagnostics_show = get_option('feedwordpress_diagnostics_show', array());
203 + if (is_array($diagnostics_show)) : foreach ($diagnostics_show as $thingy) :
309 204 $checked[$thingy] = ' checked="checked"';
310 205 endforeach; endif;
311 206
312 207 // Hey ho, let's go...
@@ -314,16 +209,16 @@
314 209 <table class="edit-form">
315 210 <?php foreach ($fields as $section => $ul) : ?>
316 211 <tr>
317 212 <th scope="row"><?php print esc_html($section); ?>:</th>
318 - <td><p><?php esc_html_e( 'Show a diagnostic message...' ); ?></p>
213 + <td><p>Show a diagnostic message...</p>
319 214 <ul class="options">
320 215 <?php foreach ($ul as $key => $label) : ?>
321 216 <li><label><input
322 217 type="checkbox" name="diagnostics_show[]"
323 - value="<?php print esc_html( $key ); ?>"
324 - <?php fwp_selected_flag( $checked, $key, "checked" ); ?> />
325 - <?php print esc_html( $label ); ?></label></li>
218 + value="<?php print esc_html($key); ?>"
219 + <?php print $checked[$key]; ?> />
220 + <?php print $label; ?></label></li>
326 221 <?php endforeach; ?>
327 222 </ul></td>
328 223 </tr>
329 224 <?php endforeach; ?>
@@ -329,167 +224,8 @@
329 224 <?php endforeach; ?>
330 225 </table>
331 226 <?php
332 227 } /* FeedWordPressDiagnosticsPage::updates_box () */
333 -
334 - static function tests_box ($page, $box = NULL) {
335 - $url = FeedWordPress::param( 'http_test_url' );
336 - $method = FeedWordPress::param( 'http_test_method' );
337 - $xpath = FeedWordPress::param( 'http_test_xpath' );
338 -
339 - $aMethods = array(
340 - 'wp_remote_request',
341 - 'FeedWordPie_File',
342 - 'FeedWordPress::fetch',
343 - );
344 -?>
345 -<script type="text/javascript">
346 -function clone_http_test_args_keyvalue_prototype () {
347 - var next = jQuery('#http-test-args').find('.http-test-args-keyvalue').length;
348 - var newRow = jQuery('#http-test-args-keyvalue-prototype').clone().attr('id', 'http-test-args-keyvalue-' + next);
349 - newRow.find('.http_test_args_key').attr('name', 'http_test_args_key['+next+']').val('');
350 - newRow.find('.http_test_args_value').attr('name', 'http_test_args_value['+next+']').val('');
351 -
352 - newRow.appendTo('#http-test-args');
353 - return false;
354 -}
355 -</script>
356 -
357 -<table class="edit-form">
358 - <tr>
359 - <th scope="row">HTTP:</th>
360 - <td><div><input type="url" name="http_test_url" value="<?php print esc_attr($url);?>" placeholder="http://www.example.com/" size="127" style="width: 80%; max-width: 80.0em;" />
361 - <input type="submit" name="feedwordpress_diagnostics_do[http_test]" value="Test &raquo;" /></div>
362 - <div><select name="http_test_method" size="1">
363 - <?php foreach ($aMethods as $sMethod) :?>
364 - <option value="<?php
365 - print esc_attr($sMethod);
366 - ?>"<?php
367 - if ($method==$sMethod) :
368 - print ' selected="selected"';
369 - endif;
370 - ?>><?php
371 - print esc_html( $sMethod );
372 - ?></option>
373 - <?php endforeach; ?>
374 - </select></div>
375 - <table>
376 - <tr>
377 - <td>
378 - <div id="http-test-args">
379 - <div id="http-test-args-keyvalue-prototype" class="http-test-args-keyvalue"><label><?php esc_html_e( 'Args' ); ?>:
380 - <input type="text" class='http_test_args_key' name="http_test_args_key[0]" value="" placeholder="key" /></label>
381 - <label>= <input type="text" class='http_test_args_value' name="http_test_args_value[0]" value="" placeholder="value" /></label>
382 - </div>
383 - </div>
384 - </td>
385 - <td><a href="#http-test-args" onclick="return clone_http_test_args_keyvalue_prototype();"><span class="dashicons dashicons-plus fwp-no-underline"></span> <?php esc_html_e( 'Add' ); ?></a></td>
386 - </tr>
387 - </table>
388 - </td>
389 - </tr>
390 -
391 - <tr>
392 - <th>XPath:</th>
393 - <td><div><input type="text" name="http_test_xpath" value="<?php print esc_attr($xpath); ?>" placeholder="xpath-like query" /></div>
394 - <div><p><?php esc_html_e( 'Leave blank to test HTTP, fill in to test a query.' ); ?></p></div>
395 - </td>
396 - </tr>
397 -
398 - <?php if (isset($page->test_html['http_test'])) : ?>
399 - <tr>
400 - <th scope="row"><?php esc_html_e( 'RESULTS:' ); ?></th>
401 - <td>
402 - <div>URL: <code><?php print esc_html($page->test_html['url']); ?></code></div>
403 - <div style="position: relative">
404 - <div style="width: 100%; overflow: scroll; background-color: #eed">
405 - <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -o-pre-wrap;"><?php print esc_html($page->test_html['http_test']); ?></pre>
406 - </div>
407 - </div>
408 - </td>
409 - </tr>
410 - <?php endif; ?>
411 -</table>
412 -
413 -<?php
414 - } /* FeedWordPressDiagnosticsPage::tests_box () */
415 -
416 - private $test_html;
417 - public function do_http_test () {
418 - $url = FeedWordPress::post( 'http_test_url' );
419 - $method = FeedWordPress::post( 'http_test_method' );
420 - if ( ! ( is_null( $url ) || is_null( $method ) ) ) :
421 -
422 - $args = array();
423 - $keys = FeedWordPress::post( 'http_test_args_key' );
424 - if ( ! is_null( $keys ) ) :
425 - foreach ( $keys as $idx => $name ) :
426 - $name = trim($name);
427 - if (strlen($name) > 0) :
428 - $values = FeedWordPress::post('http_test_args_value', array() );
429 -
430 - $value = null;
431 - if ( isset( $values[ $idx ] ) ) :
432 - $value = $values[$idx];
433 - endif;
434 -
435 - if ( preg_match('/^javascript:(.*)$/i', $value, $refs) ) :
436 - if ( function_exists('json_decode') ) :
437 - $json_value = json_decode( $refs[1] );
438 - if ( ! is_null($json_value) ) :
439 - $value = $json_value;
440 - endif;
441 - endif;
442 - endif;
443 -
444 - $args[ $name ] = $value;
445 - endif;
446 - endforeach;
447 - endif;
448 -
449 - switch ( $method ) :
450 - case 'wp_remote_request' :
451 - $out = wp_remote_request($url, $args);
452 - unset( $out[ 'http_response' ] );
453 - break;
454 - case 'FeedWordPie_File' :
455 - $out = new FeedWordPie_File($url);
456 - break;
457 - case 'FeedWordPress::fetch' :
458 - $out = FeedWordPress::fetch($url);
459 -
460 - $s_xpath = FeedWordPress::post( 'http_test_xpath', '' );
461 - if ( strlen( $s_xpath ) > 0 ) :
462 -
463 - $xpath = FeedWordPress::post( 'http_test_xpath' );
464 -
465 - if ( !is_wp_error($out) ) :
466 - $expr = new FeedWordPressParsedPostMeta($xpath);
467 -
468 - $feed = new MagpieMockLink( $out, $url );
469 - $posts = $feed->live_posts();
470 -
471 - $post = new SyndicatedPost($posts[0], $feed);
472 - $meta = $expr->do_substitutions($post);
473 -
474 - $out = array(
475 - "post_title" => $post->entry->get_title(),
476 - "post_link" => $post->permalink(),
477 - "guid" => $post->guid(),
478 - "expression" => $xpath,
479 - "results" => $meta,
480 - "pie" => $out,
481 - );
482 - endif;
483 - endif;
484 - break;
485 - endswitch;
486 -
487 - $this->test_html['url'] = $url;
488 - $this->test_html['http_test'] = esc_html( MyPHP::val($out) );
489 - endif;
490 - } /* FeedWordPressDiagnosticsPage::do_http_test () */
491 -
492 228 } /* class FeedWordPressDiagnosticsPage */
493 229
494 230 $diagnosticsPage = new FeedWordPressDiagnosticsPage;
495 231 $diagnosticsPage->display();