PluginProbe
FeedWordPress / 2010.0528
FeedWordPress v2010.0528
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 | posts-page.php +255 -146 2009.11112010.0528 View file →
@@ -1,9 +1,11 @@
1 1 <?php
2 2 require_once(dirname(__FILE__) . '/admin-ui.php');
3 +require_once(dirname(__FILE__) . '/updatedpostscontrol.class.php');
3 4
4 5 class FeedWordPressPostsPage extends FeedWordPressAdminPage {
5 6 var $link = NULL;
7 + var $updatedPosts = NULL;
6 8
7 9 /**
8 10 * Construct the posts page object.
9 11 *
@@ -12,10 +14,107 @@
12 14 function FeedWordPressPostsPage ($link = NULL) {
13 15 FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpresspostspage', $link);
14 16 $this->dispatch = 'feedwordpress_posts_settings';
15 17 $this->filename = __FILE__;
18 + $this->updatedPosts = new UpdatedPostsControl($this);
16 19 } /* FeedWordPressPostsPage constructor */
17 20
21 + function accept_POST ($post) {
22 + global $wpdb;
23 +
24 + // User mashed a Save Changes button
25 + if (isset($post['save']) or isset($post['submit'])) :
26 + // custom post settings
27 + $custom_settings = $this->custom_post_settings();
28 +
29 + foreach ($post['notes'] as $mn) :
30 + $mn['key0'] = trim($mn['key0']);
31 + $mn['key1'] = trim($mn['key1']);
32 +
33 + if (strlen($mn['key0']) > 0) :
34 + unset($custom_settings[$mn['key0']]); // out with the old
35 + endif;
36 +
37 + if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
38 + $custom_settings[$mn['key1']] = $mn['value']; // in with the new
39 + endif;
40 + endforeach;
41 +
42 + $this->updatedPosts->accept_POST($post);
43 + if ($this->for_feed_settings()) :
44 + $alter = array ();
45 +
46 + $this->link->settings['postmeta'] = serialize($custom_settings);
47 +
48 + if (isset($post['resolve_relative'])) :
49 + $this->link->settings['resolve relative'] = $post['resolve_relative'];
50 + endif;
51 + if (isset($post['munge_permalink'])) :
52 + $this->link->settings['munge permalink'] = $post['munge_permalink'];
53 + endif;
54 + if (isset($post['munge_comments_feed_links'])) :
55 + $this->link->settings['munge comments feed links'] = $post['munge_comments_feed_links'];
56 + endif;
57 +
58 + // Post status, comment status, ping status
59 + foreach (array('post', 'comment', 'ping') as $what) :
60 + $sfield = "feed_{$what}_status";
61 + if (isset($post[$sfield])) :
62 + if ($post[$sfield]=='site-default') :
63 + unset($this->link->settings["{$what} status"]);
64 + else :
65 + $this->link->settings["{$what} status"] = $post[$sfield];
66 + endif;
67 + endif;
68 + endforeach;
69 +
70 + // Save settings
71 + $this->link->save_settings(/*reload=*/ true);
72 + $this->updated = true;
73 +
74 + // Reset, reload
75 + $link_id = $this->link->id;
76 + unset($this->link);
77 + $this->link = new SyndicatedLink($link_id);
78 + else :
79 + // update_option ...
80 + if (isset($post['feed_post_status'])) :
81 + update_option('feedwordpress_syndicated_post_status', $post['feed_post_status']);
82 + endif;
83 +
84 + update_option('feedwordpress_custom_settings', serialize($custom_settings));
85 +
86 + update_option('feedwordpress_munge_permalink', $_REQUEST['munge_permalink']);
87 + update_option('feedwordpress_use_aggregator_source_data', $_REQUEST['use_aggregator_source_data']);
88 + update_option('feedwordpress_formatting_filters', $_REQUEST['formatting_filters']);
89 +
90 + if (isset($post['resolve_relative'])) :
91 + update_option('feedwordpress_resolve_relative', $post['resolve_relative']);
92 + endif;
93 + if (isset($post['munge_comments_feed_links'])) :
94 + update_option('feedwordpress_munge_comments_feed_links', $post['munge_comments_feed_links']);
95 + endif;
96 + if (isset($_REQUEST['feed_comment_status']) and ($_REQUEST['feed_comment_status'] == 'open')) :
97 + update_option('feedwordpress_syndicated_comment_status', 'open');
98 + else :
99 + update_option('feedwordpress_syndicated_comment_status', 'closed');
100 + endif;
101 +
102 + if (isset($_REQUEST['feed_ping_status']) and ($_REQUEST['feed_ping_status'] == 'open')) :
103 + update_option('feedwordpress_syndicated_ping_status', 'open');
104 + else :
105 + update_option('feedwordpress_syndicated_ping_status', 'closed');
106 + endif;
107 +
108 + $this->updated = true;
109 + endif;
110 +
111 + // Probably a "Go" button for the drop-down
112 + else :
113 + $this->updated = false;
114 + endif;
115 + }
116 +
18 117 /**
19 118 * Outputs "Publication" settings box.
20 119 *
21 120 * @since 2009.0713
@@ -26,10 +125,8 @@
26 125 * @uses FeedWordPressPostsPage::these_posts_phrase()
27 126 * @uses FeedWordPress::syndicated_status()
28 127 * @uses SyndicatedLink::syndicated_status()
29 128 * @uses SyndicatedPost::use_api()
30 - * @uses fwp_option_box_opener()
31 - * @uses fwp_option_box_closer()
32 129 */
33 130 /*static*/ function publication_box ($page, $box = NULL) {
34 131 global $fwp_path;
35 132
@@ -44,8 +141,10 @@
44 141 );
45 142 if (SyndicatedPost::use_api('post_status_pending')) :
46 143 $setting['pending'] = array('label' => "Hold %s for review; mark as Pending", 'checked' => '');
47 144 endif;
145 +
146 +
48 147 if ($page->for_feed_settings()) :
49 148 $href = $fwp_path.'/'.basename(__FILE__);
50 149 $currently = str_replace('%s', '', strtolower(strtok($setting[$post_status_global]['label'], ';')));
51 150 $setting['site-default'] = array('label' => "Use <a href=\"admin.php?page=${href}\">site-wide setting</a>", 'checked' => '');
@@ -79,9 +178,9 @@
79 178 #syndicated-publication-form td { width: 73%; vertical-align: top; }
80 179 </style>
81 180
82 181 <table id="syndicated-publication-form" class="form-table" cellspacing="2" cellpadding="5">
83 - <tr><th scope="row">Status for new posts:</th>
182 + <tr><th scope="row"><?php _e('New posts:'); ?></th>
84 183 <td><ul class="options">
85 184 <?php foreach ($selector as $code => $li) : ?>
86 185 <li><label><input type="radio" name="feed_post_status"
87 186 value="<?php print $code; ?>"<?php print $li['checked']; ?> />
@@ -88,8 +187,10 @@
88 187 <?php print str_replace('%s', $thesePosts, $li['label']); ?></label></li>
89 188 <?php endforeach; ?>
90 189 </ul></td>
91 190 </tr>
191 +
192 + <?php $page->updatedPosts->display(); ?>
92 193 </table>
93 194
94 195 <?php
95 196 } /* FeedWordPressPostsPage::publication_box () */
@@ -101,25 +202,61 @@
101 202 * @param object $page of class FeedWordPressPostsPage tells us whether this is
102 203 * a page for one feed's settings or for global defaults
103 204 * @param array $box
104 205 *
105 - * @uses fwp_option_box_opener()
106 - * @uses fwp_option_box_closer()
107 206 */
108 207 function formatting_box ($page, $box = NULL) {
109 - $formatting_filters = get_option('feedwordpress_formatting_filters');
208 + global $fwp_path;
209 + $thesePosts = $page->these_posts_phrase();
210 + $global_resolve_relative = get_option('feedwordpress_resolve_relative', 'yes');
211 + if ($page->for_feed_settings()) :
212 + $formatting_filters = null;
213 + $resolve_relative = $page->link->setting('resolve relative', NULL, 'default');
214 + $url = preg_replace('|/+$|', '', $page->link->homepage());
215 + $setting = array(
216 + 'yes' => __('resolve relative URIs'),
217 + 'no' => __('leave relative URIs unresolved'),
218 + );
219 + $href = $fwp_path.'/'.basename(__FILE__);
220 + else :
221 + $formatting_filters = get_option('feedwordpress_formatting_filters', 'no');
222 + $resolve_relative = $global_resolve_relative;
223 + $url = 'http://example.com';
224 + endif;
110 225 ?>
111 226 <table class="form-table" cellspacing="2" cellpadding="5">
112 - <tr><th scope="row">Formatting filters:</th>
113 - <td><select name="formatting_filters" size="1">
114 - <option value="no"<?php echo ($formatting_filters!='yes')?' selected="selected"':''; ?>>Protect syndicated posts from formatting filters</option>
115 - <option value="yes"<?php echo ($formatting_filters=='yes')?' selected="selected"':''; ?>>Expose syndicated posts to formatting filters</option>
116 - </select>
117 - <p class="setting-description">If you have trouble getting plugins to work that are supposed to insert
118 - elements after posts (like relevant links or a social networking
119 - <q>Share This</q> button), try changing this option to see if it fixes your
120 - problem.</p>
227 + <?php if (!is_null($formatting_filters)) : ?>
228 +
229 + <tr><th scope="row">Formatting filters:</th>
230 + <td><select name="formatting_filters" size="1">
231 + <option value="no"<?php echo ($formatting_filters!='yes')?' selected="selected"':''; ?>>Protect syndicated posts from formatting filters</option>
232 + <option value="yes"<?php echo ($formatting_filters=='yes')?' selected="selected"':''; ?>>Expose syndicated posts to formatting filters</option>
233 + </select>
234 + <p class="setting-description">If you have trouble getting plugins to work that are supposed to insert
235 + elements after posts (like relevant links or a social networking
236 + <q>Share This</q> button), try changing this option to see if it fixes your
237 + problem.</p>
238 + </td></tr>
239 +
240 + <?php endif; ?>
241 +
242 + <tr><th scope="row">Relative URIs:</th>
243 + <td>If link or image in a syndicated post from <code><?php print $url; ?></code>
244 + refers to a partial URI like <code>/about</code>, where should
245 + the syndicated copy point to?</p>
246 +
247 + <ul>
248 + <?php if ($page->for_feed_settings()) : ?>
249 + <li><p><label><input type="radio" name="resolve_relative" value='default' <?php echo ($resolve_relative=='default')?' checked="checked"':''; ?>/> Use <a href="admin.php?page=<?php print $href; ?>">site-wide setting</a><br/>
250 + <small style="margin-left: 2.0em;">Currently: <strong><?php print $setting[$global_resolve_relative]; ?></strong></small></label></p></li>
251 + <?php endif; ?>
252 + <li><p><label><input type="radio" name="resolve_relative" value="yes"<?php echo ($resolve_relative!='no' and $resolve_relative!='default')?' checked="checked"':''; ?>/> Resolve the URI so it points to <code><?php print $url; ?></code><br/>
253 + <small style="margin-left: 2.0em;"><code>/contact</code> is rewritten as <code><?php print $url; ?>/contact</code></label></small></p></li>
254 + <li><p><label><input type="radio" name="resolve_relative" value="no"<?php echo ($resolve_relative=='no')?' checked="checked"':''; ?>/> Leave relative URIs unchanged, so they point to this site<br/>
255 + <small style="margin-left: 2.0em;"><code>/contact</code> is left as <code>/contact</code></small></label></li>
256 + </ul>
121 257 </td></tr>
258 +
122 259 </table>
123 260 <?php
124 261 } /* FeedWordPressPostsPage::formatting_box() */
125 262
@@ -130,23 +267,38 @@
130 267 * @param object $page of class FeedWordPressPostsPage tells us whether this is
131 268 * a page for one feed's settings or for global defaults
132 269 * @param array $box
133 270 *
134 - * @uses fwp_option_box_opener()
135 - * @uses fwp_option_box_closer()
136 271 */
137 272 /*static*/ function links_box ($page, $box = NULL) {
138 - $munge_permalink = get_option('feedwordpress_munge_permalink');
139 - $use_aggregator_source_data = get_option('feedwordpress_use_aggregator_source_data');
273 + $setting = array(
274 + 'munge_permalink' => array(
275 + 'yes' => 'the copy on the original website',
276 + 'no' => 'the local copy on this website',
277 + ),
278 + );
279 +
280 + $global_munge_permalink = get_option('feedwordpress_munge_permalink');
281 + if ($page->for_feed_settings()) :
282 + $munge_permalink = $page->link->setting('munge permalink', NULL);
283 + else :
284 + $munge_permalink = $global_munge_permalink;
285 + $use_aggregator_source_data = get_option('feedwordpress_use_aggregator_source_data');
286 + endif;
287 +
140 288 ?>
141 289 <table class="form-table" cellspacing="2" cellpadding="5">
142 - <tr><th scope="row">Permalinks:</th>
143 - <td><select name="munge_permalink" size="1">
144 - <option value="yes"<?php echo ($munge_permalink=='yes')?' selected="selected"':''; ?>>point to the copy on the original website</option>
145 - <option value="no"<?php echo ($munge_permalink=='no')?' selected="selected"':''; ?>>point to the local copy on this website</option>
146 - </select></td>
290 + <tr><th scope="row">Permalinks point to:</th>
291 + <td><ul class="options">
292 + <?php if ($page->for_feed_settings()) : ?>
293 + <li><label><input type="radio" name="munge_permalink" value="default"<?php echo ($munge_permalink!='yes' and $munge_permalink != 'no')?' checked="checked"':''; ?>/> use site-wide setting (currently <?php print $setting['munge_permalink'][$global_munge_permalink]; ?>)</label></li>
294 + <?php endif; ?>
295 + <li><label><input type="radio" name="munge_permalink" value="yes"<?php echo ($munge_permalink=='yes')?' checked="checked"':''; ?>><?php print $setting['munge_permalink']['yes']; ?></label></li>
296 + <li><label><input type="radio" name="munge_permalink" value="no"<?php echo ($munge_permalink=='no')?' checked="checked"':''; ?>><?php print $setting['munge_permalink']['no']; ?></label></li>
297 + </ul></td>
147 298 </tr>
148 299
300 + <?php if (!$page->for_feed_settings()) : ?>
149 301 <tr><th scope="row">Posts from aggregator feeds:</th>
150 302 <td><ul class="options">
151 303 <li><label><input type="radio" name="use_aggregator_source_data" value="no"<?php echo ($use_aggregator_source_data!="yes")?' checked="checked"':''; ?>> Give the aggregator itself as the source of posts from an aggregator feed.</label></li>
152 304 <li><label><input type="radio" name="use_aggregator_source_data" value="yes"<?php echo ($use_aggregator_source_data=="yes")?' checked="checked"':''; ?>> Give the original source of the post as the source, not the aggregator.</label></li>
@@ -154,8 +306,9 @@
154 306 <p class="setting-description">Some feeds (for example, those produced by FeedWordPress) aggregate content from several different sources, and include information about the original source of the post.
155 307 This setting controls what FeedWordPress will give as the source of posts from
156 308 such an aggregator feed.</p>
157 309 </td></tr>
310 + <?php endif; ?>
158 311 </table>
159 312
160 313 <?php
161 314 } /* FeedWordPressPostsPage::links_box() */
@@ -167,12 +320,12 @@
167 320 * @param object $page of class FeedWordPressPostsPage tells us whether this is
168 321 * a page for one feed's settings or for global defaults
169 322 * @param array $box
170 323 *
171 - * @uses fwp_option_box_opener()
172 - * @uses fwp_option_box_closer()
173 324 */
174 325 /*static*/ function comments_and_pings_box ($page, $box = NULL) {
326 + global $fwp_path;
327 +
175 328 $setting = array();
176 329 $selector = array();
177 330
178 331 $whatsits = array(
@@ -180,8 +333,26 @@
180 333 'ping' => array('label' => __('Pings'), 'accept' => 'Accept pings'),
181 334 );
182 335 $onThesePosts = 'on '.$page->these_posts_phrase();
183 336
337 + $selected = array(
338 + 'munge_comments_feed_links' => array('yes' => '', 'no' => '')
339 + );
340 +
341 + $globalMungeCommentsFeedLinks = get_option('feedwordpress_munge_comments_feed_links', 'yes');
342 + if ($page->for_feed_settings()) :
343 + $selected['munge_comments_feed_links']['default'] = '';
344 +
345 + $sel = $page->link->setting('munge comments feed links', NULL, 'default');
346 + else :
347 + $sel = $globalMungeCommentsFeedLinks;
348 + endif;
349 + $selected['munge_comments_feed_links'][$sel] = ' checked="checked"';
350 +
351 + if ($globalMungeCommentsFeedLinks != 'no') : $siteWide = __('comment feeds from the original website');
352 + else : $siteWide = __('local comment feeds on this website');
353 + endif;
354 +
184 355 foreach ($whatsits as $what => $how) :
185 356 $whatsits[$what]['default'] = FeedWordPress::syndicated_status($what, /*default=*/ 'closed');
186 357
187 358 // Set up array for selector
@@ -227,13 +398,46 @@
227 398 <?php print trim(str_replace('%s', $onThesePosts, $li['label'])); ?></label></li>
228 399 <?php endforeach; ?>
229 400 </ul></td></tr>
230 401 <?php endforeach; ?>
402 + <tr><th scope="row"><?php _e('Comment feeds'); ?></th>
403 + <td><p>When WordPress feeds and templates link to comments
404 + feeds for <?php print $page->these_posts_phrase(); ?>, the
405 + URLs for the feeds should...</p>
406 + <ul class="options">
407 + <?php if ($page->for_feed_settings()) : ?>
408 + <li><label><input type="radio" name="munge_comments_feed_links" value="default"<?php print $selected['munge_comments_feed_links']['default']; ?> /> Use <a href="admin.php?page=<?php print $href; ?>">site-wide setting</a> (currently: <strong><?php _e($siteWide); ?></strong>)</label></li>
409 + <?php endif; ?>
410 + <li><label><input type="radio" name="munge_comments_feed_links" value="yes"<?php print $selected['munge_comments_feed_links']['yes']; ?> /> <?php _e('Point to comment feeds from the original website (when provided by the syndicated feed)'); ?></label></li>
411 + <li><label><input type="radio" name="munge_comments_feed_links" value="no"<?php print $selected['munge_comments_feed_links']['no']; ?> /> <?php _e('Point to local comment feeds on this website'); ?></label></li>
412 + </ul></td></tr>
231 413 </table>
232 414
233 415 <?php
234 416 } /* FeedWordPressPostsPage::comments_and_pings_box() */
235 417
418 + /*static*/ function custom_post_settings ($page = NULL) {
419 + if (is_null($page)) :
420 + $page = $this;
421 + endif;
422 +
423 + if ($page->for_feed_settings()) :
424 + $custom_settings = $page->link->settings["postmeta"];
425 + else :
426 + $custom_settings = get_option('feedwordpress_custom_settings');
427 + endif;
428 +
429 + if ($custom_settings and !is_array($custom_settings)) :
430 + $custom_settings = unserialize($custom_settings);
431 + endif;
432 +
433 + if (!is_array($custom_settings)) :
434 + $custom_settings = array();
435 + endif;
436 +
437 + return $custom_settings;
438 + } /* FeedWordPressPostsPage::custom_post_settings() */
439 +
236 440 /**
237 441 * Output "Custom Post Settings" settings box
238 442 *
239 443 * @since 2009.0713
@@ -239,35 +443,14 @@
239 443 * @since 2009.0713
240 444 * @param object $page of class FeedWordPressPostsPage tells us whether this is
241 445 * a page for one feed's settings or for global defaults
242 446 * @param array $box
243 - *
244 - * @uses fwp_option_box_opener()
245 - * @uses fwp_option_box_closer()
246 447 */
247 448 /*static*/ function custom_post_settings_box ($page, $box = NULL) {
248 - if ($page->for_feed_settings()) :
249 - $custom_settings = $page->link->settings["postmeta"];
250 - if ($custom_settings and !is_array($custom_settings)) :
251 - $custom_settings = unserialize($custom_settings);
252 - endif;
253 -
254 - if (!is_array($custom_settings)) :
255 - $custom_settings = array();
256 - endif;
257 - else :
258 - $custom_settings = get_option('feedwordpress_custom_settings');
259 - if ($custom_settings and !is_array($custom_settings)) :
260 - $custom_settings = unserialize($custom_settings);
261 - endif;
262 -
263 - if (!is_array($custom_settings)) :
264 - $custom_settings = array();
265 - endif;
266 - endif;
267 -
449 + $custom_settings = FeedWordPressPostsPage::custom_post_settings($page);
268 450 ?>
269 451 <div id="postcustomstuff">
452 + <p>Custom fields can be used to add extra metadata to a post that you can <a href="http://codex.wordpress.org/Using_Custom_Fields">use in your theme</a>.</p>
270 453 <table id="meta-list" cellpadding="3">
271 454 <tr>
272 455 <th>Key</th>
273 456 <th>Value</th>
@@ -278,11 +461,11 @@
278 461 $i = 0;
279 462 foreach ($custom_settings as $key => $value) :
280 463 ?>
281 464 <tr style="vertical-align:top">
282 - <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo wp_specialchars($key, 'both'); ?>" />
283 - <input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo wp_specialchars($key, 'both'); ?>" /></th>
284 - <td width="60%"><textarea rows="2" cols="40" id="notes-<?php echo $i; ?>-value" name="notes[<?php echo $i; ?>][value]"><?php echo wp_specialchars($value, 'both'); ?></textarea></td>
465 + <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo esc_html($key); ?>" />
466 + <input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo esc_html($key); ?>" /></th>
467 + <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>
285 468 <td width="10%"><select name="notes[<?php echo $i; ?>][action]">
286 469 <option value="update">save changes</option>
287 470 <option value="delete">delete this setting</option>
288 471 </select></td>
@@ -292,11 +475,17 @@
292 475 $i++;
293 476 endforeach;
294 477 ?>
295 478
296 - <tr>
479 + <tr style="vertical-align: top">
297 480 <th scope="row"><input type="text" size="10" name="notes[<?php echo $i; ?>][key1]" value="" /></th>
298 - <td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea></td>
481 + <td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea>
482 + <p>Enter a text value, or a path to a data element from the syndicated item.<br/>
483 + For data elements, you can use an XPath-like syntax wrapped in <code>$( ... )</code>.<br/>
484 + <code>hello</code> = the text value <code><span style="background-color: #30FFA0;">hello</span></code><br/>
485 + <code>$(author/email)</code> = the contents of <code>&lt;author&gt;&lt;email&gt;<span style="background-color: #30FFA0">...</span>&lt;/email&gt;&lt;/author&gt;</code><br/>
486 + <code>$(media:content/@url)</code> = the contents of <code>&lt;media:content url="<span style="background-color: #30FFA0">...</span>"&gt;...&lt;/media:content&gt;</code></p>
487 + </td>
299 488 <td><em>add new setting...</em><input type="hidden" name="notes[<?php echo $i; ?>][action]" value="update" /></td>
300 489 </tr>
301 490 </table>
302 491 </div> <!-- id="postcustomstuff" -->
@@ -306,112 +495,38 @@
306 495 }
307 496
308 497 function fwp_posts_page () {
309 498 global $wpdb, $wp_db_version;
310 -
499 + global $fwp_post;
500 +
311 501 if (FeedWordPress::needs_upgrade()) :
312 502 fwp_upgrade_page();
313 503 return;
314 504 endif;
315 505
506 + // If this is a POST, validate source and user credentials
316 507 FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_posts_settings', /*capability=*/ 'manage_links');
317 508
318 509 $link = FeedWordPressAdminPage::submitted_link();
319 - $link_id = $link->id;
510 +
320 511 $postsPage = new FeedWordPressPostsPage($link);
321 512
322 513 $mesg = null;
323 514
324 515 ////////////////////////////////////////////////
325 - // Process POST request, if any /////////////////
516 + // Process POST request, if any ////////////////
326 517 ////////////////////////////////////////////////
327 - if (isset($GLOBALS['fwp_post']['save']) or isset($GLOBALS['fwp_post']['submit'])) :
328 - // custom post settings
329 - foreach ($GLOBALS['fwp_post']['notes'] as $mn) :
330 - $mn['key0'] = trim($mn['key0']);
331 - $mn['key1'] = trim($mn['key1']);
332 -
333 - if (strlen($mn['key0']) > 0) :
334 - unset($custom_settings[$mn['key0']]); // out with the old
335 - endif;
336 -
337 - if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
338 - $custom_settings[$mn['key1']] = $mn['value']; // in with the new
339 - endif;
340 - endforeach;
341 -
342 - if (is_object($link) and $link->found()) :
343 - $alter = array ();
344 -
345 - $link->settings['postmeta'] = serialize($custom_settings);
346 -
347 - // Post status, comment status, ping status
348 - foreach (array('post', 'comment', 'ping') as $what) :
349 - $sfield = "feed_{$what}_status";
350 - if (isset($GLOBALS['fwp_post'][$sfield])) :
351 - if ($GLOBALS['fwp_post'][$sfield]=='site-default') :
352 - unset($link->settings["{$what} status"]);
353 - else :
354 - $link->settings["{$what} status"] = $GLOBALS['fwp_post'][$sfield];
355 - endif;
356 - endif;
357 - endforeach;
358 -
359 - $alter[] = "link_notes = '".$wpdb->escape($link->settings_to_notes())."'";
360 -
361 - $alter_set = implode(", ", $alter);
362 -
363 - // issue update query
364 - $result = $wpdb->query("
365 - UPDATE $wpdb->links
366 - SET $alter_set
367 - WHERE link_id='$link_id'
368 - ");
369 - $updated_link = true;
370 -
371 - // reload link information from DB
372 - if (function_exists('clean_bookmark_cache')) :
373 - clean_bookmark_cache($link_id);
374 - endif;
375 - $link =& new SyndicatedLink($link_id);
376 - else :
377 - // update_option ...
378 - if (isset($GLOBALS['fwp_post']['feed_post_status'])) :
379 - update_option('feedwordpress_syndicated_post_status', $GLOBALS['fwp_post']['feed_post_status']);
380 - endif;
381 -
382 - update_option('feedwordpress_custom_settings', serialize($custom_settings));
383 -
384 - update_option('feedwordpress_munge_permalink', $_REQUEST['munge_permalink']);
385 - update_option('feedwordpress_use_aggregator_source_data', $_REQUEST['use_aggregator_source_data']);
386 - update_option('feedwordpress_formatting_filters', $_REQUEST['formatting_filters']);
387 -
388 - if (isset($_REQUEST['feed_comment_status']) and ($_REQUEST['feed_comment_status'] == 'open')) :
389 - update_option('feedwordpress_syndicated_comment_status', 'open');
390 - else :
391 - update_option('feedwordpress_syndicated_comment_status', 'closed');
392 - endif;
393 -
394 - if (isset($_REQUEST['feed_ping_status']) and ($_REQUEST['feed_ping_status'] == 'open')) :
395 - update_option('feedwordpress_syndicated_ping_status', 'open');
396 - else :
397 - update_option('feedwordpress_syndicated_ping_status', 'closed');
398 - endif;
399 -
400 - $updated_link = true;
401 - endif;
402 -
403 - do_action('feedwordpress_admin_page_posts_save', $GLOBALS['fwp_post'], $postsPage);
404 - else :
405 - $updated_link = false;
518 + if (strtoupper($_SERVER['REQUEST_METHOD'])=='POST') :
519 + $postsPage->accept_POST($fwp_post);
520 + do_action('feedwordpress_admin_page_posts_save', $fwp_post, $postsPage);
406 521 endif;
407 522
408 523 $postsPage->ajax_interface_js();
409 524
410 - if ($updated_link) : ?>
525 + if ($postsPage->updated) : ?>
411 526 <div class="updated"><p>Syndicated posts settings updated.</p></div>
412 527 <?php elseif (!is_null($mesg)) : ?>
413 -<div class="updated"><p><?php print wp_specialchars($mesg, 1); ?></p></div>
528 +<div class="updated"><p><?php print esc_html($mesg); ?></p></div>
414 529 <?php endif; ?>
415 530
416 531 <?php
417 532 $links = FeedWordPress::syndicated_links();
@@ -424,20 +539,14 @@
424 539 </style>
425 540 <div id="post-body">
426 541 <?php
427 542 $boxes_by_methods = array(
428 - 'publication_box' => __('Publication'),
543 + 'publication_box' => __('Syndicated Posts'),
544 + 'links_box' => __('Links'),
429 545 'formatting_box' => __('Formatting'),
430 - 'links_box' => __('Links'),
431 546 'comments_and_pings_box' => __('Comments & Pings'),
432 547 'custom_post_settings_box' => __('Custom Post Settings (to apply to each syndicated post)'),
433 548 );
434 -
435 -// Feed-level settings don't exist for these.
436 -if ($postsPage->for_feed_settings()) :
437 - unset($boxes_by_methods['formatting_box']);
438 - unset($boxes_by_methods['links_box']);
439 -endif;
440 549
441 550 foreach ($boxes_by_methods as $method => $title) :
442 551 fwp_add_meta_box(
443 552 /*id=*/ 'feedwordpress_'.$method,