PluginProbe
FeedWordPress / 2011.0211.2
FeedWordPress v2011.0211.2
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 | syndication.php +2 -691 2009.11112011.0211.2 View file →
@@ -1,695 +1,6 @@
1 1 <?php
2 -require_once(dirname(__FILE__) . '/admin-ui.php');
2 + require_once(dirname(__FILE__).'/feedwordpresssyndicationpage.class.php');
3 3
4 -################################################################################
5 -## ADMIN MENU ADD-ONS: implement Dashboard management pages ####################
6 -################################################################################
7 -
8 -if (fwp_test_wp_version(0, FWP_SCHEMA_25)) :
9 - define('FWP_UPDATE_CHECKED', 'Update Checked Links');
10 - define('FWP_UNSUB_CHECKED', 'Unsubscribe from Checked Links');
11 - define('FWP_SYNDICATE_NEW', 'Syndicate ...');
12 -else :
13 - define('FWP_UPDATE_CHECKED', 'Update Checked');
14 - define('FWP_UNSUB_CHECKED', 'Unsubscribe');
15 - define('FWP_SYNDICATE_NEW', 'Syndicate ...');
16 -endif;
17 -
18 -class FeedWordPressSyndicationPage extends FeedWordPressAdminPage {
19 - function FeedWordPressSyndicationPage () {
20 - FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpresssyndication', /*link=*/ NULL);
21 -
22 - // No over-arching form element
23 - $this->dispatch = NULL;
24 - $this->filename = __FILE__;
25 - } /* FeedWordPressSyndicationPage constructor */
26 -
27 - function has_link () { return false; }
28 -
29 - function display () {
30 - global $wpdb;
31 -
32 - if (FeedWordPress::needs_upgrade()) :
33 - fwp_upgrade_page();
34 - return;
35 - endif;
36 -
37 - ?>
38 - <?php $cont = true;
39 - if (isset($_REQUEST['action'])):
40 - if ($_REQUEST['action'] == 'feedfinder' or $_REQUEST['action']==FWP_SYNDICATE_NEW) : $cont = fwp_feedfinder_page();
41 - elseif ($_REQUEST['action'] == 'switchfeed') : $cont = fwp_switchfeed_page();
42 - elseif ($_REQUEST['action'] == FWP_UNSUB_CHECKED or $_REQUEST['action'] == 'Unsubscribe') : $cont = fwp_multidelete_page();
43 - endif;
44 - endif;
45 -
46 - if ($cont):
47 - ?>
48 - <style type="text/css">
49 - .heads-up {
50 - background-color: #d0d0d0;
51 - color: black;
52 - padding: 1.0em;
53 - margin: 0.5em 4.0em !important;
54 - }
55 - .update-form.with-donation {
56 - margin-right: 50%;
57 - min-height: 255px;
58 - }
59 - .donation-form, .donation-thanks {
60 - background-color: #ffffcc;
61 - text-align: left;
62 - padding: 0.5em 0.5em;
63 - border-left: thin dashed #777777;
64 - font-size: 70%;
65 - position: absolute;
66 - top: 0; bottom: 0; right: 0; left: auto;
67 - width: 50%;
68 - }
69 - .donation-thanks {
70 - background-color: #ccffcc;
71 - }
72 - .donation-thanks .signature {
73 - text-align: right;
74 - font-style: italic;
75 - }
76 - .donation-form h4, .donation-thanks h4 {
77 - font-size: 10px;
78 - text-align: center;
79 - border-bottom: 1px solid #777777;
80 - margin: 0px;
81 - }
82 - .donation-form .donate {
83 - text-align: center;
84 - }
85 - .donation-form .sod-off {
86 - padding-top: 0.5em;
87 - margin-top: 0.5em;
88 - border-top: thin solid #777777;
89 - }
90 - </style>
91 - <?php
92 - $links = FeedWordPress::syndicated_links();
93 - $this->open_sheet('Syndicated Sites');
94 - ?>
95 - <div id="post-body">
96 - <?php
97 - if ($links) :
98 - fwp_add_meta_box(
99 - /*id=*/ 'feedwordpress_update_box',
100 - /*title=*/ __('Update feeds now'),
101 - /*callback=*/ 'fwp_syndication_manage_page_update_box',
102 - /*page=*/ $this->meta_box_context(),
103 - /*context =*/ $this->meta_box_context()
104 - );
105 - endif;
106 - fwp_add_meta_box(
107 - /*id=*/ 'feedwordpress_feeds_box',
108 - /*title=*/ __('Syndicated sources'),
109 - /*callback=*/ 'fwp_syndication_manage_page_links_box',
110 - /*page=*/ $this->meta_box_context(),
111 - /*context =*/ $this->meta_box_context()
112 - );
113 - if (FeedWordPressCompatibility::test_version(0, FWP_SCHEMA_25)) :
114 - fwp_add_meta_box(
115 - /*id=*/ 'feedwordpress_add_feed_box',
116 - /*title=*/ 'Add a new syndicated source',
117 - /*callback=*/ 'fwp_syndication_manage_page_add_feed_box',
118 - /*page=*/ $this->meta_box_context(),
119 - /*context=*/ $this->meta_box_context()
120 - );
121 - endif;
122 -
123 - do_action('feedwordpress_admin_page_syndication_meta_boxes', $this);
124 - ?>
125 - <div class="metabox-holder">
126 - <?php
127 - fwp_do_meta_boxes($this->meta_box_context(), $this->meta_box_context(), $this);
128 - ?>
129 - </div> <!-- class="metabox-holder" -->
130 - </div> <!-- id="post-body" -->
131 -
132 - <?php $this->close_sheet(/*dispatch=*/ NULL); ?>
133 -
134 - <div style="display: none">
135 - <div id="tags-input"></div> <!-- avoid JS error from WP 2.5 bug -->
136 - </div>
137 - <?php
138 - endif;
139 - } /* FeedWordPressSyndicationPage::display () */
140 -
141 - function bleg_thanks ($page, $box = NULL) {
142 - ?>
143 - <div class="donation-thanks">
144 - <h4>Thank you!</h4>
145 - <p><strong>Thank you</strong> for your contribution to <a href="http://feedwordpress.radgeek.com/">FeedWordPress</a> development.
146 - Your generous gifts make ongoing support and development for
147 - FeedWordPress possible.</p>
148 - <p>If you have any questions about FeedWordPress, or if there
149 - is anything I can do to help make FeedWordPress more useful for
150 - you, please <a href="http://feedwordpress.radgeek.com/contact">contact me</a>
151 - and let me know what you're thinking about.</p>
152 - <p class="signature">&#8212;<a href="http://radgeek.com/">Charles Johnson</a>, Developer, <a href="http://feedwordpress.radgeek.com/">FeedWordPress</a>.</p>
153 - </div>
154 - <?php
155 - } /* FeedWordPressSyndicationPage::bleg_thanks () */
156 -
157 - function bleg_box ($page, $box = NULL) {
158 - ?>
159 -<div class="donation-form">
160 -<h4>Keep FeedWordPress improving</h4>
161 -<form action="https://www.paypal.com/cgi-bin/webscr" accept-charset="UTF-8" method="post"><div>
162 -<p><a href="http://feedwordpress.radgeek.com/">FeedWordPress</a> makes syndication
163 -simple and empowers you to stream content from all over the web into your
164 -WordPress hub. That's got to be worth a few lattes. If you're finding FWP useful,
165 -<a href="http://feedwordpress.radgeek.com/donation/">a modest gift</a>
166 -is the best way to support steady progress on development, enhancements,
167 -support, and documentation.</p>
168 -<div class="donate">
169 -<input type="hidden" name="business" value="commerce@radgeek.com" />
170 -<input type="hidden" name="cmd" value="_xclick" />
171 -<input type="hidden" name="item_name" value="FeedWordPress donation" />
172 -<input type="hidden" name="no_shipping" value="1" />
173 -<input type="hidden" name="return" value="<?php bloginfo('url'); ?>/wp-admin/admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>&amp;paid=yes" />
174 -<input type="hidden" name="currency_code" value="USD" />
175 -<input type="hidden" name="notify_url" value="http://feedwordpress.radgeek.com/ipn/donation" />
176 -<input type="hidden" name="custom" value="1" />
177 -<input type="image" name="submit" src="https://www.paypal.com/en_GB/i/btn/btn_donate_SM.gif" alt="Donate through PayPal" />
178 -</div>
179 -</div></form>
180 -
181 -<p>You can make a gift online (or
182 -<a href="http://feedwordpress.radgeek.com/donation">set up an automatic
183 -regular donation</a>) using an existing PayPal account or any major credit card.</p>
184 -
185 -<div class="sod-off">
186 -<form style="text-align: center" action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>" method="POST"><div>
187 -<input class="button-primary" type="submit" name="maybe_later" value="Maybe Later" />
188 -<input class="button-secondary" type="submit" name="go_away" value="Dismiss" />
189 -</div></form>
190 -</div>
191 -</div> <!-- class="donation-form" -->
192 - <?php
193 - } /* FeedWordPressSyndicationPage::bleg_box () */
194 -
195 - /**
196 - * Override the default display of a save-settings button and replace
197 - * it with nothing.
198 - */
199 - function interstitial () {
200 - /* NOOP */
201 - } /* FeedWordPressSyndicationPage::interstitial() */
202 -} /* class FeedWordPressSyndicationPage */
203 -
204 -function fwp_dashboard_update_if_requested () {
205 - global $wpdb;
206 -
207 - if (isset($_POST['update']) or isset($_POST['action']) or isset($_POST['update_uri'])) :
208 - $fwp_update_invoke = 'post';
209 - else :
210 - $fwp_update_invoke = 'get';
211 - endif;
212 -
213 - $update_set = array();
214 - if (isset($_POST['link_ids']) and is_array($_POST['link_ids']) and ($_POST['action']==FWP_UPDATE_CHECKED)) :
215 - $targets = $wpdb->get_results("
216 - SELECT * FROM $wpdb->links
217 - WHERE link_id IN (".implode(",",$_POST['link_ids']).")
218 - ");
219 - if (is_array($targets)) :
220 - foreach ($targets as $target) :
221 - $update_set[] = $target->link_rss;
222 - endforeach;
223 - else : // This should never happen
224 - FeedWordPress::critical_bug('fwp_syndication_manage_page::targets', $targets, __LINE__);
225 - endif;
226 - elseif (isset($_POST['update_uri'])) :
227 - $update_set[] = $_POST['update_uri'];
228 - endif;
229 -
230 - shuffle($update_set); // randomize order for load balancing purposes...
231 - if ($fwp_update_invoke != 'get' and count($update_set) > 0) : // Only do things with side-effects for HTTP POST or command line
232 - $feedwordpress =& new FeedWordPress;
233 - add_action('feedwordpress_check_feed', 'update_feeds_mention');
234 - add_action('feedwordpress_check_feed_complete', 'update_feeds_finish', 10, 3);
235 -
236 - $crash_dt = (int) get_option('feedwordpress_update_time_limit');
237 - if ($crash_dt > 0) :
238 - $crash_ts = time() + $crash_dt;
239 - else :
240 - $crash_ts = NULL;
241 - endif;
242 -
243 - if (fwp_test_wp_version(FWP_SCHEMA_25)) :
244 - echo "<div class=\"youare\">\n";
245 - else :
246 - echo "<div class=\"updated\">\n";
247 - endif;
248 - echo "<ul>\n";
249 - $tdelta = NULL;
250 - foreach ($update_set as $uri) :
251 - if (!is_null($crash_ts) and (time() > $crash_ts)) :
252 - echo "<li><p><strong>Further updates postponed:</strong> update time limit of ".$crash_dt." second".(($crash_dt==1)?"":"s")." exceeded.</p></li>";
253 - break;
254 - endif;
255 -
256 - if ($uri == '*') : $uri = NULL; endif;
257 - $delta = $feedwordpress->update($uri, $crash_ts);
258 - if (!is_null($delta)) :
259 - if (is_null($tdelta)) :
260 - $tdelta = $delta;
261 - else :
262 - $tdelta['new'] += $delta['new'];
263 - $tdelta['updated'] += $delta['updated'];
264 - endif;
265 - else :
266 - echo "<li><p><strong>Error:</strong> There was a problem updating <a href=\"$uri\">$uri</a></p></li>\n";
267 - endif;
268 - endforeach;
269 - echo "</ul>\n";
270 -
271 - if (!is_null($tdelta)) :
272 - $mesg = array();
273 - if (isset($delta['new'])) : $mesg[] = ' '.$tdelta['new'].' new posts were syndicated'; endif;
274 - if (isset($delta['updated'])) : $mesg[] = ' '.$tdelta['updated'].' existing posts were updated'; endif;
275 - echo "<p>Update complete.".implode(' and', $mesg)."</p>";
276 - echo "\n"; flush();
277 - endif;
278 - echo "</div> <!-- class=\"updated\" -->\n";
279 - endif;
280 -}
281 -
282 -function fwp_syndication_manage_page_add_feed_box ($object = NULL, $box = NULL) {
283 - ?>
284 - <form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>" method="post">
285 - <div>
286 - <?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?>
287 - <label for="add-uri">Website or feed:</label>
288 - <input type="text" name="lookup" id="add-uri" value="URI" size="64" />
289 - <input type="hidden" name="action" value="feedfinder" />
290 - </div>
291 - <div class="submit"><input type="submit" value="<?php print FWP_SYNDICATE_NEW; ?>" /></div>
292 - </form>
293 - <?php
294 -}
295 -
296 -define('FEEDWORDPRESS_BLEG_MAYBE_LATER_OFFSET', (60 /*sec/min*/ * 60 /*min/hour*/ * 24 /*hour/day*/ * 31 /*days*/));
297 -define('FEEDWORDPRESS_BLEG_ALREADY_PAID_OFFSET', (60 /*sec/min*/ * 60 /*min/hour*/ * 24 /*hour/day*/ * 183 /*days*/));
298 -function fwp_syndication_manage_page_update_box ($object = NULL, $box = NULL) {
299 - $bleg_box_hidden = null;
300 - if (isset($_POST['maybe_later'])) :
301 - $bleg_box_hidden = time() + FEEDWORDPRESS_BLEG_MAYBE_LATER_OFFSET;
302 - elseif (isset($_REQUEST['paid']) and $_REQUEST['paid']) :
303 - $bleg_box_hidden = time() + FEEDWORDPRESS_BLEG_ALREADY_PAID_OFFSET;
304 - elseif (isset($_POST['go_away'])) :
305 - $bleg_box_hidden = 'permanent';
306 - endif;
307 -
308 - if (!is_null($bleg_box_hidden)) :
309 - update_option('feedwordpress_bleg_box_hidden', $bleg_box_hidden);
310 - else :
311 - $bleg_box_hidden = get_option('feedwordpress_bleg_box_hidden');
312 - endif;
313 -?>
314 - <?php
315 - $bleg_box_ready = (!$bleg_box_hidden or (is_numeric($bleg_box_hidden) and $bleg_box_hidden < time()));
316 - if (isset($_REQUEST['paid']) and $_REQUEST['paid']) :
317 - $object->bleg_thanks($subject, $box);
318 - elseif ($bleg_box_ready) :
319 - $object->bleg_box($object, $box);
320 - endif;
321 - ?>
322 -
323 - <form
324 - action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>"
325 - method="POST"
326 - class="update-form<?php if ($bleg_box_ready) : ?> with-donation<?php endif; ?>"
327 - >
328 - <div><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?></div>
329 - <p>Check currently scheduled feeds for new and updated posts.</p>
330 -
331 - <?php
332 - fwp_dashboard_update_if_requested();
333 -
334 - if (!get_option('feedwordpress_automatic_updates')) :
335 - ?>
336 - <p class="heads-up"><strong>Note:</strong> Automatic updates are currently turned
337 - <strong>off</strong>. New posts from your feeds will not be syndicated
338 - until you manually check for them here. You can turn on automatic
339 - updates under <a href="admin.php?page=<?php print $GLOBALS['fwp_path']; ?>/feeds-page.php">Feed &amp; Update Settings<a></a>.</p>
340 - <?php
341 - endif;
342 - ?>
343 -
344 - <div class="submit"><input type="hidden" name="update_uri" value="*" /><input class="button-primary" type="submit" name="update" value="Update" /></div>
345 -
346 - <?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
347 - <br style="clear: both" />
348 - <?php /* elseif (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_27)) :
349 - </div> <!-- id="rightnow" -->
350 - <?php */ endif; ?>
351 - </form>
352 -<?php
353 -} /* function fwp_syndication_manage_page_update_box () */
354 -
355 -function fwp_syndication_manage_page_links_box ($object = NULL, $box = NULL) {
356 - $links = FeedWordPress::syndicated_links();
357 -?>
358 - <form id="syndicated-links" action="admin.php?page=<?php print $GLOBALS['fwp_path']; ?>/<?php echo basename(__FILE__); ?>" method="post">
359 - <div><?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?></div>
360 -
361 -<?php $alt_row = true; ?>
362 -
363 - <?php if (fwp_test_wp_version(FWP_SCHEMA_25)) : ?>
364 - <div class="tablenav">
365 - <div class="alignright">
366 - <label for="add-uri">Add new source:</label>
367 - <input type="text" name="lookup" id="add-uri" value="Website or feed URI" />
368 - <?php FeedWordPressSettingsUI::magic_input_tip_js('add-uri'); ?>
369 -
370 - <input type="hidden" name="action" value="feedfinder" />
371 - <input type="submit" class="button-secondary" name="action" value="<?php print FWP_SYNDICATE_NEW; ?>" /></div>
372 -
373 -<?php if (count($links) > 0) : ?>
374 - <div class="alignleft">
375 - <input class="button-secondary" type="submit" name="action" value="<?php print FWP_UPDATE_CHECKED; ?>" />
376 - <input class="button-secondary delete" type="submit" class="delete" name="action" value="<?php print FWP_UNSUB_CHECKED; ?>" />
377 - </div>
378 -<?php endif; ?>
379 -
380 - <br class="clear" />
381 - </div>
382 - <br class="clear" />
383 -
384 - <table class="widefat">
385 - <?php else : ?>
386 - <table width="100%" cellpadding="3" cellspacing="3">
387 - <?php endif; ?>
388 -<thead>
389 -<tr>
390 -<th class="check-column" scope="col"><?php if (fwp_test_wp_version(FWP_SCHEMA_25)) : ?>
391 -<input type="checkbox" <?php if (fwp_test_wp_version(FWP_SCHEMA_25, FWP_SCHEMA_26)) : ?>onclick="checkAll(document.getElementById('syndicated-links'));"<?php endif; ?> />
392 -<?php endif; ?></th>
393 -<th scope="col"><?php _e('Name'); ?></th>
394 -<th scope="col"><?php _e('Feed'); ?></th>
395 -<th scope="col"><?php _e('Updated'); ?></th>
396 -</tr>
397 -</thead>
398 -
399 -<tbody>
400 -<?php if (count($links) > 0): foreach ($links as $link):
401 - $alt_row = !$alt_row; ?>
402 -<tr<?php echo ($alt_row?' class="alternate"':''); ?>>
403 -<th class="check-column" scope="row"><input type="checkbox" name="link_ids[]" value="<?php echo $link->link_id; ?>" /></th>
404 -<?php
405 - if (strlen($link->link_rss) > 0):
406 - $caption=__('Switch Feed');
407 - else :
408 - $caption=__('Find Feed');
409 - endif;
410 -?>
411 -<td>
412 -<strong><a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/feeds-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php echo wp_specialchars($link->link_name, 'both'); ?></a></strong>
413 -<div class="row-actions"><div><strong>Settings &gt;</strong>
414 -<a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/feeds-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php _e('Feed'); ?></a>
415 -| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/posts-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php _e('Posts'); ?></a>
416 -| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/authors-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php _e('Authors'); ?></a>
417 -| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/categories-page.php&amp;link_id=<?php echo $link->link_id; ?>"><?php print htmlspecialchars(__('Categories'.FEEDWORDPRESS_AND_TAGS)); ?></a></div>
418 -<div><strong>Actions &gt;</strong>
419 -<a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link->link_id; ?>&amp;action=feedfinder"><?php echo $caption; ?></a>
420 -| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>&amp;link_id=<?php echo $link->link_id; ?>&amp;action=Unsubscribe"><?php _e('Unsubscribe'); ?></a>
421 -| <a href="<?php echo wp_specialchars($link->link_url, 'both'); ?>"><?php _e('View')?></a></div>
422 -</div>
423 -</td>
424 -<?php
425 - if (strlen($link->link_rss) > 0):
426 - $uri_bits = parse_url($link->link_rss);
427 - $uri_bits['host'] = preg_replace('/^www\./i', '', $uri_bits['host']);
428 - $display_uri =
429 - (isset($uri_bits['user'])?$uri_bits['user'].'@':'')
430 - .(isset($uri_bits['host'])?$uri_bits['host']:'')
431 - .(isset($uri_bits['port'])?':'.$uri_bits['port']:'')
432 - .(isset($uri_bits['path'])?$uri_bits['path']:'')
433 - .(isset($uri_bits['query'])?'?'.$uri_bits['query']:'');
434 - if (strlen($display_uri) > 32) : $display_uri = substr($display_uri, 0, 32).'&#8230;'; endif;
435 -?>
436 - <td><a href="<?php echo wp_specialchars($link->link_rss, 'both'); ?>"><?php echo wp_specialchars($display_uri, 'both'); ?></a></td>
437 - <?php else: ?>
438 - <td style="background-color:#FFFFD0"><p><strong>no
439 - feed assigned</strong></p></td>
440 - <?php endif; ?>
441 -
442 - <td><?php
443 - $sLink =& new SyndicatedLink($link->link_id);
444 - if (isset($sLink->settings['update/last'])) :
445 - print fwp_time_elapsed($sLink->settings['update/last']);
446 - else :
447 - _e('None yet');
448 - endif;
449 -
450 - print "<div style='font-style:italic;size:0.9em'>Ready for next update ";
451 - if (isset($sLink->settings['update/ttl']) and is_numeric($sLink->settings['update/ttl'])) :
452 - if (isset($sLink->settings['update/timed']) and $sLink->settings['update/timed']=='automatically') :
453 - $next = $sLink->settings['update/last'] + ((int) $sLink->settings['update/ttl'] * 60);
454 - print fwp_time_elapsed($next);
455 - if (FEEDWORDPRESS_DEBUG) : print " [".(($next-time())/60)." minutes]"; endif;
456 - else :
457 - echo "every ".$sLink->settings['update/ttl']." minute".(($sLink->settings['update/ttl']!=1)?"s":"");
458 - endif;
459 - else:
460 - echo "as soon as possible";
461 - endif;
462 - print "</div>";
463 -?>
464 - </td>
465 - </tr>
466 -<?php
467 - endforeach;
468 - else :
469 -?>
470 -<tr><td colspan="<?php print $span+2; ?>"><p>There are no websites currently listed for syndication.</p></td></tr>
471 -<?php
472 - endif;
473 -?>
474 -</tbody>
475 -</table>
476 -
477 -<?php if (count($links) > 0 and fwp_test_wp_version(0, FWP_SCHEMA_25)) : ?>
478 -<br/><hr/>
479 -<div class="submit"><input type="submit" class="delete" name="action" value="<?php print FWP_UNSUB_CHECKED; ?>" />
480 -<input type="submit" name="action" value="<?php print FWP_UPDATE_CHECKED; ?>" /></div>
481 -<?php endif; ?>
482 -
483 - </form>
484 -<?php
485 -} /* function fwp_syndication_manage_page_links_box() */
486 -
487 -function fwp_feedfinder_page () {
488 - global $post_source;
489 -
490 - $post_source = 'feedwordpress_feeds';
491 -
492 - // With action=feedfinder, this goes directly to the feedfinder page
493 - include_once(dirname(__FILE__) . '/feeds-page.php');
494 - return false;
495 -} /* function fwp_feedfinder_page () */
496 -
497 -function fwp_switchfeed_page () {
498 - global $wpdb, $wp_db_version;
499 - global $fwp_post;
500 -
501 - // If this is a POST, validate source and user credentials
502 - FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_switchfeed', /*capability=*/ 'manage_links');
503 -
504 - $changed = false;
505 - if (!isset($fwp_post['Cancel'])):
506 - if (isset($fwp_post['save_link_id']) and ($fwp_post['save_link_id']=='*')) :
507 - $changed = true;
508 - $link_id = FeedWordPress::syndicate_link($fwp_post['feed_title'], $fwp_post['feed_link'], $fwp_post['feed']);
509 - if ($link_id): ?>
510 -<div class="updated"><p><a href="<?php print $fwp_post['feed_link']; ?>"><?php print wp_specialchars($fwp_post['feed_title'], 'both'); ?></a>
511 -has been added as a contributing site, using the feed at
512 -&lt;<a href="<?php print $fwp_post['feed']; ?>"><?php print wp_specialchars($fwp_post['feed'], 'both'); ?></a>&gt;.
513 -| <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/feeds-page.php&amp;link_id=<?php print $link_id; ?>">Configure settings</a>.</p></div>
514 -<?php else: ?>
515 -<div class="updated"><p>There was a problem adding the feed. [SQL: <?php echo wp_specialchars(mysql_error(), 'both'); ?>]</p></div>
516 -<?php endif;
517 - elseif (isset($fwp_post['save_link_id'])):
518 - $existingLink = new SyndicatedLink($fwp_post['save_link_id']);
519 - $changed = $existingLink->set_uri($fwp_post['feed']);
520 -
521 - if ($changed):
522 - $home = $existingLink->homepage(/*from feed=*/ false);
523 - $name = $existingLink->name(/*from feed=*/ false);
524 - ?>
525 -<div class="updated"><p>Feed for <a href="<?php echo wp_specialchars($home, 'both'); ?>"><?php echo wp_specialchars($name, 'both'); ?></a>
526 -updated to &lt;<a href="<?php echo wp_specialchars($fwp_post['feed'], 'both'); ?>"><?php echo wp_specialchars($fwp_post['feed'], 'both'); ?></a>&gt;.</p></div>
527 - <?php
528 - endif;
529 - endif;
530 - endif;
531 -
532 - if (!$changed) :
533 - ?>
534 -<div class="updated"><p>Nothing was changed.</p></div>
535 - <?php
536 - endif;
537 - return true; // Continue
538 -}
539 -
540 -function fwp_multidelete_page () {
541 - global $wpdb;
542 -
543 - // If this is a POST, validate source and user credentials
544 - FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_feeds', /*capability=*/ 'manage_links');
545 -
546 - $link_ids = (isset($_REQUEST['link_ids']) ? $_REQUEST['link_ids'] : array());
547 - if (isset($_REQUEST['link_id'])) : array_push($link_ids, $_REQUEST['link_id']); endif;
548 -
549 - if (isset($GLOBALS['fwp_post']['confirm']) and $GLOBALS['fwp_post']['confirm']=='Delete'):
550 - if (isset($GLOBALS['fwp_post']['link_action']) and is_array($GLOBALS['fwp_post']['link_action'])) :
551 - $actions = $GLOBALS['fwp_post']['link_action'];
552 - else :
553 - $actions = array();
554 - endif;
555 -
556 - foreach ($actions as $link_id => $what) :
557 - $do_it[$what][] = $link_id;
558 - endforeach;
559 -
560 - $alter = array();
561 - if (count($do_it['hide']) > 0) :
562 - $hidem = "(".implode(', ', $do_it['hide']).")";
563 - $alter[] = "
564 - UPDATE $wpdb->links
565 - SET link_visible = 'N'
566 - WHERE link_id IN {$hidem}
567 - ";
568 - endif;
569 -
570 - if (count($do_it['nuke']) > 0) :
571 - $nukem = "(".implode(', ', $do_it['nuke']).")";
572 -
573 - // Make a list of the items syndicated from this feed...
574 - $post_ids = $wpdb->get_col("
575 - SELECT post_id FROM $wpdb->postmeta
576 - WHERE meta_key = 'syndication_feed_id'
577 - AND meta_value IN {$nukem}
578 - ");
579 -
580 - // ... and kill them all
581 - if (count($post_ids) > 0) :
582 - foreach ($post_ids as $post_id) :
583 - wp_delete_post($post_id);
584 - endforeach;
585 - endif;
586 -
587 - $alter[] = "
588 - DELETE FROM $wpdb->links
589 - WHERE link_id IN {$nukem}
590 - ";
591 - endif;
592 -
593 - if (count($do_it['delete']) > 0) :
594 - $deletem = "(".implode(', ', $do_it['delete']).")";
595 -
596 - // Make the items syndicated from this feed appear to be locally-authored
597 - $alter[] = "
598 - DELETE FROM $wpdb->postmeta
599 - WHERE meta_key = 'syndication_feed_id'
600 - AND meta_value IN {$deletem}
601 - ";
602 -
603 - // ... and delete the links themselves.
604 - $alter[] = "
605 - DELETE FROM $wpdb->links
606 - WHERE link_id IN {$deletem}
607 - ";
608 - endif;
609 -
610 - $errs = array(); $success = array ();
611 - foreach ($alter as $sql) :
612 - $result = $wpdb->query($sql);
613 - if (!$result):
614 - $errs[] = mysql_error();
615 - endif;
616 - endforeach;
617 -
618 - if (count($alter) > 0) :
619 - echo "<div class=\"updated\">\n";
620 - if (count($errs) > 0) :
621 - echo "There were some problems processing your ";
622 - echo "unsubscribe request. [SQL: ".implode('; ', $errs)."]";
623 - else :
624 - echo "Your unsubscribe request(s) have been processed.";
625 - endif;
626 - echo "</div>\n";
627 - endif;
628 -
629 - return true; // Continue on to Syndicated Sites listing
630 - else :
631 - $targets = $wpdb->get_results("
632 - SELECT * FROM $wpdb->links
633 - WHERE link_id IN (".implode(",",$link_ids).")
634 - ");
635 -?>
636 -<form action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
637 -<div class="wrap">
638 -<?php FeedWordPressCompatibility::stamp_nonce('feedwordpress_feeds'); ?>
639 -<input type="hidden" name="action" value="Unsubscribe" />
640 -<input type="hidden" name="confirm" value="Delete" />
641 -
642 -<h2>Unsubscribe from Syndicated Links:</h2>
643 -<?php foreach ($targets as $link) :
644 - $link_url = wp_specialchars($link->link_url, 1);
645 - $link_name = wp_specialchars($link->link_name, 1);
646 - $link_description = wp_specialchars($link->link_description, 'both');
647 - $link_rss = wp_specialchars($link->link_rss, 'both');
648 -?>
649 -<fieldset>
650 -<legend><?php echo $link_name; ?></legend>
651 -<table class="editform" width="100%" cellspacing="2" cellpadding="5">
652 -<tr><th scope="row" width="20%"><?php _e('Feed URI:') ?></th>
653 -<td width="80%"><a href="<?php echo $link_rss; ?>"><?php echo $link_rss; ?></a></td></tr>
654 -<tr><th scope="row" width="20%"><?php _e('Short description:') ?></th>
655 -<td width="80%"><?php echo $link_description; ?></span></td></tr>
656 -<tr><th width="20%" scope="row"><?php _e('Homepage:') ?></th>
657 -<td width="80%"><a href="<?php echo $link_url; ?>"><?php echo $link_url; ?></a></td></tr>
658 -<tr style="vertical-align:top"><th width="20%" scope="row">Subscription <?php _e('Options') ?>:</th>
659 -<td width="80%"><ul style="margin:0; padding: 0; list-style: none">
660 -<li><input type="radio" id="hide-<?php echo $link->link_id; ?>"
661 -name="link_action[<?php echo $link->link_id; ?>]" value="hide" />
662 -<label for="hide-<?php echo $link->link_id; ?>">Turn off the subscription for this
663 -syndicated link<br/><span style="font-size:smaller">(Keep the feed information
664 -and all the posts from this feed in the database, but don't syndicate any
665 -new posts from the feed.)</span></label></li>
666 -<li><input type="radio" id="nuke-<?php echo $link->link_id; ?>"
667 -name="link_action[<?php echo $link->link_id; ?>]" value="nuke" />
668 -<label for="nuke-<?php echo $link->link_id; ?>">Delete this syndicated link and all the
669 -posts that were syndicated from it</label></li>
670 -<li><input type="radio" id="delete-<?php echo $link->link_id; ?>"
671 -name="link_action[<?php echo $link->link_id; ?>]" value="delete" />
672 -<label for="delete-<?php echo $link->link_id; ?>">Delete this syndicated link, but
673 -<em>keep</em> posts that were syndicated from it (as if they were authored
674 -locally).</label></li>
675 -<li><input type="radio" id="nothing-<?php echo $link->link_id; ?>"
676 -name="link_action[<?php echo $link->link_id; ?>]" value="nothing" />
677 -<label for="nothing-<?php echo $link->link_id; ?>">Keep this feed as it is. I changed
678 -my mind.</label></li>
679 -</ul>
680 -</table>
681 -</fieldset>
682 -<?php endforeach; ?>
683 -
684 -<div class="submit">
685 -<input class="delete" type="submit" name="submit" value="<?php _e('Unsubscribe from selected feeds &raquo;') ?>" />
686 -</div>
687 -</div>
688 -<?php
689 - return false; // Don't continue on to Syndicated Sites listing
690 - endif;
691 -}
692 -
693 - $syndicationPage = new FeedWordPressSyndicationPage;
4 + $syndicationPage = new FeedWordPressSyndicationPage(__FILE__);
694 5 $syndicationPage->display();
695 6