source: trunk/www.guidonia.net/wp/wp-content/plugins/feedwordpress/posts-page.php@ 44

Last change on this file since 44 was 44, checked in by luciano, 14 years ago
File size: 17.4 KB
Line 
1<?php
2require_once(dirname(__FILE__) . '/admin-ui.php');
3
4function fwp_posts_page () {
5 global $wpdb, $wp_db_version;
6
7 FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_posts_settings', /*capability=*/ 'manage_links');
8
9 if (isset($GLOBALS['fwp_post']['save']) or isset($GLOBALS['fwp_post']['fix_mismatch'])) :
10 $link_id = $_REQUEST['save_link_id'];
11 elseif (isset($_REQUEST['link_id'])) :
12 $link_id = $_REQUEST['link_id'];
13 else :
14 $link_id = NULL;
15 endif;
16
17 if (is_numeric($link_id) and $link_id) :
18 $link =& new SyndicatedLink($link_id);
19 else :
20 $link = NULL;
21 endif;
22
23 $mesg = null;
24
25 ////////////////////////////////////////////////
26 // Process POST request, if any /////////////////
27 ////////////////////////////////////////////////
28 if (isset($GLOBALS['fwp_post']['save'])) :
29 // custom post settings
30 foreach ($GLOBALS['fwp_post']['notes'] as $mn) :
31 $mn['key0'] = trim($mn['key0']);
32 $mn['key1'] = trim($mn['key1']);
33
34 if (strlen($mn['key0']) > 0) :
35 unset($custom_settings[$mn['key0']]); // out with the old
36 endif;
37
38 if (($mn['action']=='update') and (strlen($mn['key1']) > 0)) :
39 $custom_settings[$mn['key1']] = $mn['value']; // in with the new
40 endif;
41 endforeach;
42
43 if (is_object($link) and $link->found()) :
44 $alter = array ();
45
46 $link->settings['postmeta'] = serialize($custom_settings);
47
48 // Post status, comment status, ping status
49 foreach (array('post', 'comment', 'ping') as $what) :
50 $sfield = "feed_{$what}_status";
51 if (isset($GLOBALS['fwp_post'][$sfield])) :
52 if ($GLOBALS['fwp_post'][$sfield]=='site-default') :
53 unset($link->settings["{$what} status"]);
54 else :
55 $link->settings["{$what} status"] = $GLOBALS['fwp_post'][$sfield];
56 endif;
57 endif;
58 endforeach;
59
60 $alter[] = "link_notes = '".$wpdb->escape($link->settings_to_notes())."'";
61
62 $alter_set = implode(", ", $alter);
63
64 // issue update query
65 $result = $wpdb->query("
66 UPDATE $wpdb->links
67 SET $alter_set
68 WHERE link_id='$link_id'
69 ");
70 $updated_link = true;
71
72 // reload link information from DB
73 if (function_exists('clean_bookmark_cache')) :
74 clean_bookmark_cache($link_id);
75 endif;
76 $link =& new SyndicatedLink($link_id);
77 else :
78 // update_option ...
79 if (isset($GLOBALS['fwp_post']['feed_post_status'])) :
80 update_option('feedwordpress_syndicated_post_status', $GLOBALS['fwp_post']['feed_post_status']);
81 endif;
82
83 update_option('feedwordpress_custom_settings', serialize($custom_settings));
84
85 update_option('feedwordpress_munge_permalink', $_REQUEST['munge_permalink']);
86 update_option('feedwordpress_use_aggregator_source_data', $_REQUEST['use_aggregator_source_data']);
87 update_option('feedwordpress_formatting_filters', $_REQUEST['formatting_filters']);
88
89 if (isset($_REQUEST['feed_comment_status']) and ($_REQUEST['feed_comment_status'] == 'open')) :
90 update_option('feedwordpress_syndicated_comment_status', 'open');
91 else :
92 update_option('feedwordpress_syndicated_comment_status', 'closed');
93 endif;
94
95 if (isset($_REQUEST['feed_ping_status']) and ($_REQUEST['feed_ping_status'] == 'open')) :
96 update_option('feedwordpress_syndicated_ping_status', 'open');
97 else :
98 update_option('feedwordpress_syndicated_ping_status', 'closed');
99 endif;
100
101 $updated_link = true;
102 endif;
103 else :
104 $updated_link = false;
105 endif;
106
107 ////////////////////////////////////////////////
108 // Get defaults from database //////////////////
109 ////////////////////////////////////////////////
110
111 $post_status_global = get_option('feedwordpress_syndicated_post_status');
112 if (!$post_status_global) : $post_status_global = 'publish'; endif;
113
114 $comment_status_global = get_option('feedwordpress_syndicated_comment_status');
115 if (!$comment_status_global) : $comment_status_global = 'closed'; endif;
116
117 $ping_status_global = get_option('feedwordpress_syndicated_ping_status');
118 if (!$ping_status_global) : $ping_status_global = 'closed'; endif;
119
120 $status['post'] = array('publish' => '', 'private' => '', 'draft' => '');
121 if (SyndicatedPost::use_api('post_status_pending')) :
122 $status['post']['pending'] = '';
123 endif;
124
125 $status['comment'] = array('open' => '', 'closed' => '');
126 $status['ping'] = array('open' => '', 'closed' => '');
127
128 if (is_object($link) and $link->found()) :
129 $thePostsPhrase = __('posts from this feed');
130
131 foreach (array('post', 'comment', 'ping') as $what) :
132 $status[$what]['site-default'] = '';
133 if (isset($link->settings["{$what} status"])) :
134 $status[$what][$link->settings["{$what} status"]] = ' checked="checked"';
135 else :
136 $status[$what]['site-default'] = ' checked="checked"';
137 endif;
138 endforeach;
139
140 $custom_settings = $link->settings["postmeta"];
141 if ($custom_settings) :
142 $custom_settings = unserialize($custom_settings);
143 endif;
144
145 if (!is_array($custom_settings)) :
146 $custom_settings = array();
147 endif;
148 else :
149 $thePostsPhrase = __('syndicated posts');
150
151 $status['post'][$post_status_global] = ' checked="checked"';
152 $status['comment'][$comment_status_global] = ' checked="checked"';
153 $status['ping'][$ping_status_global] = ' checked="checked"';
154
155 $munge_permalink = get_option('feedwordpress_munge_permalink');
156 $formatting_filters = get_option('feedwordpress_formatting_filters');
157 $use_aggregator_source_data = get_option('feedwordpress_use_aggregator_source_data');
158
159 $custom_settings = get_option('feedwordpress_custom_settings');
160 if ($custom_settings) :
161 $custom_settings = unserialize($custom_settings);
162 endif;
163
164 if (!is_array($custom_settings)) :
165 $custom_settings = array();
166 endif;
167 endif;
168?>
169<script type="text/javascript">
170 function contextual_appearance (item, appear, disappear, value, visibleStyle, checkbox) {
171 if (typeof(visibleStyle)=='undefined') visibleStyle = 'block';
172
173 var rollup=document.getElementById(item);
174 var newuser=document.getElementById(appear);
175 var sitewide=document.getElementById(disappear);
176 if (rollup) {
177 if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) {
178 if (newuser) newuser.style.display=visibleStyle;
179 if (sitewide) sitewide.style.display='none';
180 } else {
181 if (newuser) newuser.style.display='none';
182 if (sitewide) sitewide.style.display=visibleStyle;
183 }
184 }
185 }
186</script>
187
188<?php if ($updated_link) : ?>
189<div class="updated"><p>Syndicated posts settings updated.</p></div>
190<?php elseif (!is_null($mesg)) : ?>
191<div class="updated"><p><?php print wp_specialchars($mesg, 1); ?></p></div>
192<?php endif; ?>
193
194<div class="wrap">
195<form style="position: relative" action="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php echo basename(__FILE__); ?>" method="post">
196<div><?php
197 FeedWordPressCompatibility::stamp_nonce('feedwordpress_posts_settings');
198
199 if (is_numeric($link_id) and $link_id) :
200?>
201<input type="hidden" name="save_link_id" value="<?php echo $link_id; ?>" />
202<?php
203 else :
204?>
205<input type="hidden" name="save_link_id" value="*" />
206<?php
207 endif;
208?>
209</div>
210
211<?php $links = FeedWordPress::syndicated_links(); ?>
212<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
213 <div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL.'/'.$GLOBALS['fwp_path'].'/feedwordpress.png'); ?>" alt="" /></div>
214<?php endif; ?>
215
216<h2>Syndicated Post Settings<?php if (!is_null($link) and $link->found()) : ?>: <?php echo wp_specialchars($link->link->link_name, 1); ?><?php endif; ?></h2>
217
218<style type="text/css">
219 table.edit-form th { width: 27%; vertical-align: top; }
220 table.edit-form td { width: 73%; vertical-align: top; }
221 table.edit-form td ul.options { margin: 0; padding: 0; list-style: none; }
222</style>
223
224<?php if (fwp_test_wp_version(FWP_SCHEMA_27)) : ?>
225 <style type="text/css">
226 #post-search {
227 float: right;
228 margin:11px 12px 0;
229 min-width: 130px;
230 position:relative;
231 }
232 .fwpfs {
233 color: #dddddd;
234 background:#797979 url(<?php bloginfo('home') ?>/wp-admin/images/fav.png) repeat-x scroll left center;
235 border-color:#777777 #777777 #666666 !important; -moz-border-radius-bottomleft:12px;
236 -moz-border-radius-bottomright:12px;
237 -moz-border-radius-topleft:12px;
238 -moz-border-radius-topright:12px;
239 border-style:solid;
240 border-width:1px;
241 line-height:15px;
242 padding:3px 30px 4px 12px;
243 }
244 .fwpfs.slide-down {
245 border-bottom-color: #626262;
246 -moz-border-radius-bottomleft:0;
247 -moz-border-radius-bottomright:0;
248 -moz-border-radius-topleft:12px;
249 -moz-border-radius-topright:12px;
250 background-image:url(<?php bloginfo('home') ?>/wp-admin/images/fav-top.png);
251 background-position:0 top;
252 background-repeat:repeat-x;
253 border-bottom-style:solid;
254 border-bottom-width:1px;
255 }
256 </style>
257
258 <script type="text/javascript">
259 jQuery(document).ready(function($){
260 $('.fwpfs').toggle(
261 function(){$('.fwpfs').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideDown') ) { $('.fwpfs').addClass('slide-down'); }}, 10) },
262 function(){$('.fwpfs').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideUp') ) { $('.fwpfs').removeClass('slide-down'); }}, 10) }
263 );
264 $('.fwpfs').bind(
265 'change',
266 function () { this.form.submit(); }
267 );
268 $('#post-search .button').css( 'display', 'none' );
269 });
270 </script>
271<?php endif; /* else : */?>
272<p id="post-search">
273<select name="link_id" class="fwpfs" style="max-width: 20.0em;">
274 <option value="*"<?php if (is_null($link) or !$link->found()) : ?> selected="selected"<?php endif; ?>>- defaults for all feeds -</option>
275<?php if ($links) : foreach ($links as $ddlink) : ?>
276 <option value="<?php print (int) $ddlink->link_id; ?>"<?php if (!is_null($link) and ($link->link->link_id==$ddlink->link_id)) : ?> selected="selected"<?php endif; ?>><?php print wp_specialchars($ddlink->link_name, 1); ?></option>
277<?php endforeach; endif; ?>
278</select>
279<input class="button" type="submit" name="go" value="<?php _e('Go') ?> &raquo;" />
280</p>
281<?php /* endif; */ ?>
282
283<?php if (!is_null($link) and $link->found()) : ?>
284 <p>These settings only affect posts syndicated from
285 <strong><?php echo wp_specialchars($link->link->link_name, 1); ?></strong>.</p>
286<?php else : ?>
287 <p>These settings affect posts syndicated from any feed unless they are overridden
288 by settings for that specific feed.</p>
289<?php endif; ?>
290
291<div id="poststuff">
292<div id="post-body">
293<?php fwp_option_box_opener('Publication', 'publicationdiv', 'postbox'); ?>
294<table class="form-table" cellspacing="2" cellpadding="5">
295<tr><th width="27%" scope="row" style="vertical-align:top">Status for new posts:</th>
296<td width="73%" style="vertical-align:top"><ul style="margin:0; list-style:none">
297
298<?php if (is_object($link) and $link->found()) : ?>
299<li><label><input type="radio" name="feed_post_status" value="site-default"
300<?php echo $status['post']['site-default']; ?> /> Use <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
301(currently: <strong><?php echo ($post_status_global ? $post_status_global : 'publish'); ?></strong>)</label></li>
302<?php endif; ?>
303
304<li><label><input type="radio" name="feed_post_status" value="publish"
305<?php echo $status['post']['publish']; ?> /> Publish <?php print $thePostsPhrase; ?> immediately</label></li>
306
307<?php if (SyndicatedPost::use_api('post_status_pending')) : ?>
308<li><label><input type="radio" name="feed_post_status" value="pending"
309<?php echo $status['post']['pending']; ?>/> Hold <?php print $thePostsPhrase; ?> for review; mark as Pending</label></li>
310<?php endif; ?>
311
312<li><label><input type="radio" name="feed_post_status" value="draft"
313<?php echo $status['post']['draft']; ?> /> Save <?php print $thePostsPhrase; ?> as drafts</label></li>
314<li><label><input type="radio" name="feed_post_status" value="private"
315<?php echo $status['post']['private']; ?> /> Save <?php print $thePostsPhrase; ?> as private posts</label></li>
316</ul></td>
317</tr>
318</table>
319<?php
320 fwp_option_box_closer();
321?>
322
323<?php if (!(is_object($link) and $link->found())) : ?>
324<?php fwp_option_box_opener('Formatting', 'formattingdiv', 'postbox'); ?>
325<table class="form-table" cellspacing="2" cellpadding="5">
326<tr><th scope="row">Formatting filters:</th>
327<td><select name="formatting_filters" size="1">
328<option value="no"<?php echo ($formatting_filters!='yes')?' selected="selected"':''; ?>>Protect syndicated posts from formatting filters</option>
329<option value="yes"<?php echo ($formatting_filters=='yes')?' selected="selected"':''; ?>>Expose syndicated posts to formatting filters</option>
330</select>
331<p class="setting-description">If you have trouble getting plugins to work that are supposed to insert
332elements after posts (like relevant links or a social networking
333<q>Share This</q> button), try changing this option to see if it fixes your
334problem.</p>
335</td></tr>
336</table>
337<?php fwp_option_box_closer(); ?>
338
339<?php
340 fwp_option_box_opener('Links', 'linksdiv', 'postbox');
341?>
342<table class="form-table" cellspacing="2" cellpadding="5">
343<tr><th scope="row">Permalinks:</th>
344<td><select name="munge_permalink" size="1">
345<option value="yes"<?php echo ($munge_permalink=='yes')?' selected="selected"':''; ?>>point to the copy on the original website</option>
346<option value="no"<?php echo ($munge_permalink=='no')?' selected="selected"':''; ?>>point to the local copy on this website</option>
347</select></td>
348</tr>
349
350<tr><th scope="row">Posts from aggregator feeds:</th>
351<td><ul class="options">
352<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>
353<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>
354</ul>
355<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.
356This setting controls what FeedWordPress will give as the source of posts from
357such an aggregator feed.</p>
358</td></tr>
359</table>
360<?php
361 fwp_option_box_closer();
362 fwp_linkedit_periodic_submit();
363endif;
364
365 fwp_option_box_opener(__('Comments & Pings'), 'commentstatus', 'postbox');
366?>
367<table class="form-table" cellspacing="2" cellpadding="5">
368<tr><th scope="row"><?php print __('Comments') ?>:</th>
369<td><ul class="options">
370<?php if (is_object($link) and $link->found()) : ?>
371<li><label><input type="radio" name="feed_comment_status" value="site-default"
372<?php echo $status['comment']['site-default']; ?> /> Use <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
373(currently: <strong><?php echo $comment_status_global; ?></strong>)</label></li>
374<?php endif; ?>
375
376<li><label><input type="radio" name="feed_comment_status" value="open"<?php echo $status['comment']['open'] ?> /> Allow comments on syndicated posts</label></li>
377<li><label><input type="radio" name="feed_comment_status" value="closed"<?php echo $status['comment']['closed']; ?> /> Don't allow comments on syndicated posts</label></li>
378</ul></td></tr>
379
380<tr><th scope="row"><?php print __('Pings') ?>:</th>
381<td><ul class="options">
382<?php if (is_object($link) and $link->found()) : ?>
383<li><label><input type="radio" name="feed_ping_status" value="site-default"
384<?php echo $status['ping']['site-default']; ?> /> Use <a href="admin.php?page=<?php print $GLOBALS['fwp_path'] ?>/<?php print basename(__FILE__); ?>">site-wide setting</a>
385(currently: <strong><?php echo $ping_status_global; ?></strong>)</label></li>
386<?php endif; ?>
387
388<li><label><input type="radio" name="feed_ping_status" value="open"<?php echo $status['ping']['open']; ?> /> Accept pings on syndicated posts</label></li>
389<li><label><input type="radio" name="feed_ping_status" value="closed"<?php echo $status['ping']['closed']; ?> /> Don't accept pings on syndicated posts</label></li>
390</ul></td></tr>
391</table>
392<?php
393 fwp_option_box_closer();
394 fwp_linkedit_periodic_submit();
395?>
396
397<?php fwp_option_box_opener('Custom Post Settings (to apply to each syndicated post)', 'postcustom', 'postbox'); ?>
398<div id="postcustomstuff">
399<table id="meta-list" cellpadding="3">
400 <tr>
401 <th>Key</th>
402 <th>Value</th>
403 <th>Action</th>
404 </tr>
405
406<?php
407 $i = 0;
408 foreach ($custom_settings as $key => $value) :
409?>
410 <tr style="vertical-align:top">
411 <th width="30%" scope="row"><input type="hidden" name="notes[<?php echo $i; ?>][key0]" value="<?php echo wp_specialchars($key, 'both'); ?>" />
412 <input id="notes-<?php echo $i; ?>-key" name="notes[<?php echo $i; ?>][key1]" value="<?php echo wp_specialchars($key, 'both'); ?>" /></th>
413 <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>
414 <td width="10%"><select name="notes[<?php echo $i; ?>][action]">
415 <option value="update">save changes</option>
416 <option value="delete">delete this setting</option>
417 </select></td>
418 </tr>
419<?php
420 $i++;
421 endforeach;
422?>
423 <tr>
424 <th scope="row"><input type="text" size="10" name="notes[<?php echo $i; ?>][key1]" value="" /></th>
425 <td><textarea name="notes[<?php echo $i; ?>][value]" rows="2" cols="40"></textarea></td>
426 <td><em>add new setting...</em><input type="hidden" name="notes[<?php echo $i; ?>][action]" value="update" /></td>
427 </tr>
428</table>
429<?php fwp_option_box_closer(); ?>
430
431</div>
432</div>
433
434<p class="submit">
435<input class="button-primary" type="submit" name="save" value="Save Changes" />
436</p>
437</form>
438</div> <!-- class="wrap" -->
439<?php
440} /* function fwp_posts_page () */
441
442 fwp_posts_page();
443
Note: See TracBrowser for help on using the repository browser.