PluginProbe
FeedWordPress / 2010.0903
FeedWordPress v2010.0903
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 | authors-page.php +228 -316 trunk2010.0903 View file →
@@ -1,85 +1,54 @@
1 1 <?php
2 -require_once dirname(__FILE__) . '/admin-ui.php';
2 +require_once(dirname(__FILE__) . '/admin-ui.php');
3 3
4 4 class FeedWordPressAuthorsPage extends FeedWordPressAdminPage {
5 5 var $authorlist = NULL;
6 6 var $rule_count = 0;
7 -
8 - /**
9 - * Class constructor
10 - *
11 - * @param int $link ID of the feed in the Links.
12 - */
13 - public function __construct( $link = -1 ) {
14 - if ( is_numeric( $link ) and -1 == $link ) :
15 - $link = $this->submitted_link();
16 - endif;
17 -
18 - parent::__construct( 'feedwordpressauthors', $link );
7 +
8 + function FeedWordPressAuthorsPage ($link) {
9 + FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpressauthors', $link);
19 10 $this->refresh_author_list();
20 11 $this->dispatch = 'feedwordpress_author_settings';
21 12 $this->filename = __FILE__;
22 -
23 - $this->pagenames = array(
24 - 'default' => 'Authors',
25 - 'settings-update' => 'Syndicated Authors',
26 - 'open-sheet' => 'Syndicated Author',
27 - );
28 - } /* construct() */
29 -
30 - /**
31 - * Refreshes the author list and optionally sort it with the natural
32 - * alphanumeric sort algorithm.
33 - */
34 - function refresh_author_list() {
13 + }
14 +
15 + function refresh_author_list () {
35 16 $this->authorlist = fwp_author_list();
17 + }
18 +
19 + /*static*/ function syndicated_authors_box ($page, $box = NULL) {
20 + $link = $page->link;
21 + $unfamiliar = array ('create' => '','default' => '','filter' => '');
36 22
37 - // Case-insensitive "natural" alphanumeric sort. Preserves key/value associations.
38 - if ( function_exists( 'natcasesort' ) ) :
39 - natcasesort( $this->authorlist );
40 - endif;
41 - } /* FeedWordPressAuthorsPage::refresh_author_list) */
42 -
43 - /**
44 - * Displays the page box for the syndicated authors.
45 - *
46 - * @param FeedWordPressAuthorsPage $page FWP dashboard page.
47 - * @param string|null $box Page box (unused).
48 - */
49 - /*static*/ function syndicated_authors_box( $page, $box = NULL ) {
50 - /** @var SyndicatedLink|null An object of class {@link SyndicatedLink} if created for one feed's settings, NULL if created for global default settings. */
51 - $link = $page->link; // unused? (gwyneth 20230920)
52 - $unfamiliar = array( 'create' => '','default' => '','filter' => '' );
53 -
54 - if ( $page->for_feed_settings() ) :
55 - $key = $this->link->setting( 'unfamiliar author', NULL, 'site-default' );
23 + if ($page->for_feed_settings()) :
24 + $key = $link->setting('unfamiliar author', NULL, 'site-default');
56 25 $unfamiliar['site-default'] = '';
57 26 else :
58 27 $key = FeedWordPress::on_unfamiliar('author');
59 28 endif;
60 - $unfamiliar[$key] = true;
29 + $unfamiliar[$key] = ' selected="selected"';
61 30
62 - $match_author_by_email = ! ( 'yes' == get_option( "feedwordpress_do_not_match_author_by_email" ) );
31 + $match_author_by_email = !('yes' == get_option("feedwordpress_do_not_match_author_by_email"));
63 32 $null_emails = FeedWordPress::null_email_set();
64 33
65 34 // Hey ho, let's go...
66 35 ?>
67 36 <table class="form-table">
68 -<?php
69 -if ( $page->for_default_settings() ) :
70 -?>
71 -<tr><th>Unmatched authors</th>
72 -<td><span>Authors who haven&rsquo;t been syndicated before</span>
37 +<tbody>
38 +<tr>
39 + <th>New authors</th>
40 + <td><span>Authors who haven't been syndicated before</span>
73 41 <select style="max-width: 27.0em" id="unfamiliar-author" name="unfamiliar_author" onchange="contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');">
74 - <option value="create"<?php fwp_selected_flag($unfamiliar, 'create'); ?>>will have a new author account created for them</option>
75 - <?php foreach ($page->authorlist as $author_id => $author_name) :
76 - if ( !isset($unfamiliar[$author_id])) : $unfamiliar[$author_id] = false; endif;
77 - ?>
78 - <option value="<?php echo esc_attr($author_id); ?>"<?php fwp_selected_flag($unfamiliar, $author_id); ?>>will have their posts attributed to <?php echo esc_html($author_name); ?></option>
42 +<?php if ($page->for_feed_settings()) : ?>
43 + <option value="site-default"<?php print $unfamiliar['site-default']; ?>>are handled according to the default for all feeds</option>
44 +<?php endif; ?>
45 + <option value="create"<?php print $unfamiliar['create']; ?>>will have a new author account created for them</option>
46 + <?php foreach ($page->authorlist as $author_id => $author_name) : ?>
47 + <option value="<?php echo $author_id; ?>"<?php print (isset($unfamiliar[$author_id]) ? $unfamiliar[$author_id] : ''); ?>>will have their posts attributed to <?php echo $author_name; ?></option>
79 48 <?php endforeach; ?>
80 49 <option value="newuser">will have their posts attributed to a new user...</option>
81 - <option value="filter"<?php fwp_selected_flag($unfamiliar, 'filter'); ?>>get filtered out</option>
50 + <option value="filter"<?php print $unfamiliar['filter'] ?>>get filtered out</option>
82 51 </select>
83 52
84 53 <span id="unfamiliar-author-newuser">named <input type="text" name="unfamiliar_author_newuser" value="" /></span></p>
85 54 </td>
@@ -85,71 +54,37 @@
85 54 </td>
86 55 </tr>
87 56
88 57 <?php
89 -endif;
90 -
91 58 if ($page->for_feed_settings()) :
92 - $map = $this->link->setting('map authors', NULL, array());
93 59 ?>
94 -<tr><th>Matching authors</th>
95 -<td><p>How should FeedWordPress attribute posts from this feed to WordPress
96 -authors?</p>
97 -<ul class="settings">
98 -<li><p><input type="radio" name="author_rules_name[all]" value="*"
99 -<?php if (isset($map['name']['*'])) : $author_action = $map['name']['*']; ?>
100 - checked="checked"
101 -<?php
102 - else :
103 - $author_action = NULL;
104 - endif; ?>
105 - /> All posts syndicated
106 -from this feed <select class="author-rules" id="author-rules-all"
107 -name="author_rules_action[all]" onchange="contextual_appearance('author-rules-all', 'author-rules-all-newuser', 'author-rules-all-default', 'newuser', 'inline');">
108 - <?php foreach ($page->authorlist as $local_author_id => $local_author_name) : ?>
109 - <option value="<?php echo esc_attr($local_author_id); ?>"<?php fwp_selected_flag($local_author_id==$author_action); ?>>are assigned to <?php echo esc_html($local_author_name); ?></option>
110 - <?php endforeach; ?>
111 - <option value="newuser">will be assigned to a new user...</option>
112 - <option value="filter"<?php fwp_selected_flag('filter'==$author_action); ?>>get filtered out</option>
113 - </select>
114 - <span class="author-rules-newuser" id="author-rules-all-newuser">named
115 - <input type="text" name="author_rules_newuser[all]" value="" /></span></p></li>
116 -<li><p><input type="radio" name="author_rules_name[all]" value=""
117 -<?php if ( !isset($map['name']['*'])) : ?>
118 - checked="checked"
119 -<?php endif; ?>
120 -/> Attribute posts to authors based on automatic mapping rules. (Blank out a
121 -name to delete the rule. Fill in a new name at the bottom to create a new rule.)</p>
122 -
60 +<tr><th>Syndicated authors</th>
61 +<td>For attributing posts by specific authors. Blank out a name to delete the rule. Fill in a new name at the bottom to create a new rule.</p>
123 62 <table style="width: 100%">
124 63 <?php
125 - if (isset($this->link->settings['map authors'])) :
64 + if (isset($link->settings['map authors'])) :
126 65 ?>
127 66 <?php
128 67 $page->rule_count=0;
129 - foreach ($this->link->settings['map authors'] as $author_rules) :
68 + foreach ($link->settings['map authors'] as $author_rules) :
130 69 foreach ($author_rules as $author_name => $author_action) :
131 - if ($author_name != '*') :
132 - $page->rule_count++;
133 - $authorRulesId = sanitize_html_class(sprintf("author-rules-%d", $page->rule_count));
70 + $page->rule_count++;
134 71 ?>
135 72 <tr>
136 -<th style="text-align: left; width: 15.0em">Posts by <input type="text" name="author_rules_name[]" value="<?php echo esc_attr($author_name); ?>" size="11" /></th>
73 +<th style="text-align: left; width: 15.0em">Posts by <input type="text" name="author_rules_name[]" value="<?php echo htmlspecialchars($author_name); ?>" size="11" /></th>
137 74 <td>
138 - <select class="author-rules" id="<?php echo esc_attr($authorRulesId); ?>" name="author_rules_action[]" onchange="contextual_appearance('<?php echo esc_attr($authorRulesId); ?>', '<?php echo esc_attr($authorRulesId); ?>-newuser', '<?php echo esc_attr($authorRulesId); ?>-default', 'newuser', 'inline');">
75 + <select id="author-rules-<?php echo $page->rule_count; ?>" name="author_rules_action[]" onchange="contextual_appearance('author-rules-<?php echo $page->rule_count; ?>', 'author-rules-<?php echo $page->rule_count; ?>-newuser', 'author-rules-<?php echo $page->rule_count; ?>-default', 'newuser', 'inline');">
139 76 <?php foreach ($page->authorlist as $local_author_id => $local_author_name) : ?>
140 - <option value="<?php echo esc_attr($local_author_id); ?>"<?php fwp_selected_flag($local_author_id==$author_action); ?>>are assigned to <?php echo esc_attr($local_author_name); ?></option>
77 + <option value="<?php echo $local_author_id; ?>"<?php if ($local_author_id==$author_action) : echo ' selected="selected"'; endif; ?>>are assigned to <?php echo $local_author_name; ?></option>
141 78 <?php endforeach; ?>
142 79 <option value="newuser">will be assigned to a new user...</option>
143 - <option value="filter"<?php fwp_selected_flag('filter'==$author_action); ?>>get filtered out</option>
80 + <option value="filter"<?php if ('filter'==$author_action) : echo ' selected="selected"'; endif; ?>>get filtered out</option>
144 81 </select>
145 -
146 - <span class="author-rules-newuser" id="<?php echo esc_attr($authorRulesId); ?>-newuser">named <input type="text" name="author_rules_newuser[]" value="" /></span>
82 +
83 + <span id="author-rules-<?php echo $page->rule_count; ?>-newuser">named <input type="text" name="author_rules_newuser[]" value="" /></span>
147 84 </td>
148 85 </tr>
149 -<?php
150 - endif;
151 - endforeach;
86 +<?php endforeach;
152 87 endforeach;
153 88 endif;
154 89 ?>
155 90
@@ -157,53 +92,31 @@
157 92 <th style="text-align: left; width: 15.0em">Posts by <input type="text" name="add_author_rule_name" size="11" /></th>
158 93 <td>
159 94 <select id="add-author-rule" name="add_author_rule_action" onchange="contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline');">
160 95 <?php foreach ($page->authorlist as $author_id => $author_name) : ?>
161 - <option value="<?php echo esc_attr($author_id); ?>">are assigned to <?php echo esc_html($author_name); ?></option>
96 + <option value="<?php echo $author_id; ?>">are assigned to <?php echo $author_name; ?></option>
162 97 <?php endforeach; ?>
163 98 <option value="newuser">will be assigned to a new user...</option>
164 99 <option value="filter">get filtered out</option>
165 100 </select>
166 -
101 +
167 102 <span id="add-author-rule-newuser">named <input type="text" name="add_author_rule_newuser" value="" /></span>
168 103 </td>
169 104 </tr>
170 -
171 -<tr>
172 -<th style="text-align: left; width: 15.0em">Unmatched authors</th>
173 -<td>
174 -<span>Authors who haven't been syndicated before</span>
175 - <select style="max-width: 27.0em" id="unfamiliar-author" name="unfamiliar_author" onchange="contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');">
176 -<?php if ($page->for_feed_settings()) : ?>
177 - <option value="site-default"<?php fwp_selected_flag($unfamiliar, 'site-default'); ?>>are handled according to the default for all feeds</option>
178 -<?php endif; ?>
179 - <option value="create"<?php fwp_selected_flag($unfamiliar, 'create'); ?>>will have a new author account created for them</option>
180 - <?php foreach ( $page->authorlist as $author_id => $author_name ) : ?>
181 - <option value="<?php echo esc_attr($author_id); ?>"<?php fwp_selected_flag($unfamiliar, $author_id); ?>>will have their posts attributed to <?php echo esc_html($author_name); ?></option>
182 - <?php endforeach; ?>
183 - <option value="newuser">will have their posts attributed to a user named ...</option>
184 - <option value="filter"<?php fwp_selected_flag($unfamiliar, 'filter'); ?>>get filtered out</option>
185 - </select>
186 -
187 - <span id="unfamiliar-author-newuser"><input type="text" name="unfamiliar_author_newuser" value="" /></span></p>
105 +</table>
188 106 </td>
189 107 </tr>
190 -</table></li>
191 -</ul>
192 -
193 -</td>
194 -</tr>
195 108 <?php endif; ?>
196 109
197 -<?php if ( $page->for_default_settings() ) : ?>
110 +<?php if ($page->for_default_settings()) : ?>
198 111 <tr>
199 112 <th scope="row">Matching Authors</th>
200 113 <td><ul style="list-style: none; margin: 0; padding: 0;">
201 -<li><div><label><input id="match-author-by-email" type="checkbox" name="match_author_by_email" value="yes" <?php fwp_selected_flag($match_author_by_email, null, "checked"); ?> onchange="contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);" /> Treat syndicated authors with the same e-mail address as the same author.</label></div>
114 +<li><div><label><input id="match-author-by-email" type="checkbox" name="match_author_by_email" value="yes" <?php if ($match_author_by_email) : ?>checked="checked" <?php endif; ?>onchange="contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);" /> Treat syndicated authors with the same e-mail address as the same author.</label></div>
202 115 <div id="unless-null-email">
203 116 <p>Unless the e-mail address is one of the following anonymous e-mail addresses:</p>
204 117 <textarea name="null_emails" rows="3" style="width: 100%">
205 -<?php print esc_html(implode("\n", $null_emails)); ?>
118 +<?php print implode("\n", $null_emails); ?>
206 119 </textarea>
207 120 </div></li>
208 121 </ul></td>
209 122 </tr>
@@ -210,18 +123,11 @@
210 123 <?php endif; ?>
211 124 </tbody>
212 125 </table>
213 126 <?php
214 - } /* FeedWordPressAuthorsPage::syndicated_authors_box() */
215 -
216 - /**
217 - * Displays a box for fixing mismatched authors.
218 - *
219 - * @param FeedWordPressAuthorsPage $page FWP dashboard page.
220 - * @param string|null $box Page box (unused).
221 - */
222 - /*static*/ function fix_authors_box( $page, $box = NULL )
223 - {
127 + } /* FeedWordPressAuthorsPage::syndicated_authors_box () */
128 +
129 + /*static*/ function fix_authors_box ($page, $box = NULL) {
224 130 ?>
225 131 <table class="form-table">
226 132 <tbody>
227 133 <tr>
@@ -227,16 +133,16 @@
227 133 <tr>
228 134 <th scope="row">Fixing mis-matched authors:</th>
229 135 <td><p style="margin: 0.5em 0px">Take all the posts from this feed attributed to
230 136 <select name="fix_mismatch_from">
231 - <?php foreach ( $page->authorlist as $author_id => $author_name ) : ?>
232 - <option value="<?php echo esc_attr( $author_id ); ?>"><?php echo esc_html( $author_name ); ?></option>
137 + <?php foreach ($page->authorlist as $author_id => $author_name) : ?>
138 + <option value="<?php echo $author_id; ?>"><?php echo $author_name; ?></option>
233 139 <?php endforeach; ?>
234 140 </select>
235 141 and instead
236 142 <select id="fix-mismatch-to" name="fix_mismatch_to" onchange="contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');">
237 143 <?php foreach ($page->authorlist as $author_id => $author_name) : ?>
238 - <option value="<?php echo esc_attr($author_id); ?>">re-assign them to <?php echo esc_html($author_name); ?></option>
144 + <option value="<?php echo $author_id; ?>">re-assign them to <?php echo $author_name; ?></option>
239 145 <?php endforeach; ?>
240 146 <option value="newuser">re-assign them to a new user...</option>
241 147 <option value="filter">delete them</option>
242 148 </select>
@@ -247,232 +153,238 @@
247 153 </tr>
248 154 </tbody>
249 155 </table>
250 156 <?php
251 - } /* FeedWordPressAuthorsPage::fix_authors_box() */
157 + } /* FeedWordPressAuthorsPage::fix_authors_box () */
158 +} /* class FeedWordPressAuthorsPage */
252 159
253 - function display() {
254 - $this->boxes_by_methods = array(
255 - 'syndicated_authors_box' => __('Syndicated Authors'),
256 - 'fix_authors_box' => __('Reassign Authors'),
257 - );
258 - if ($this->for_default_settings()) :
259 - unset($this->boxes_by_methods['fix_authors_box']);
260 - endif;
160 +function fwp_authors_page () {
161 + global $wpdb, $wp_db_version;
261 162
262 - parent::display();
263 - ?>
264 -<script type="text/javascript">
265 - contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');
266 -</script>
163 + if (FeedWordPress::needs_upgrade()) :
164 + fwp_upgrade_page();
165 + return;
166 + endif;
267 167
268 -<?php if ($this->for_feed_settings()) : ?>
269 -<script type="text/javascript">
270 - jQuery('.author-rules').each ( function () {
271 - contextual_appearance(this.id, this.id+'-newuser', this.id+'-default', 'newuser', 'inline');
272 - } );
168 + FeedWordPressCompatibility::validate_http_request(/*action=*/ 'feedwordpress_author_settings', /*capability=*/ 'manage_links');
273 169
274 - contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline');
275 - contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');
276 -</script>
277 -<?php else : ?>
278 -<script type="text/javascript">
279 - contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);
280 -</script>
281 -<?php endif;
282 - } /* FeedWordPressAuthorsPage::display () */
170 + $link = FeedWordPressAdminPage::submitted_link();
171 + $authorsPage = new FeedWordPressAuthorsPage($link);
283 172
284 - /**
285 - * Checks if a mismatch fix was requested.
286 - *
287 - * @return bool True if a fix was requested and not empty.
288 - */
289 - public function fix_mismatch_requested() {
290 - /** @var string|null */
291 - $fix = FeedWordPress::post( 'fix_mismatch' );
292 - return ( ! is_null( $fix ) && strlen( $fix ) > 0 ); // possibly the same as `( ! empty( $fix ) )`.
293 - } /* FeedWordPressAuthorsPage::fix_mismatch_requested() */
173 + $mesg = null;
174 + $updated_link = false;
294 175
295 - /**
296 - * If a mismatch fix was requested, handles it here;
297 - * else sends it to the parent class for processing.
298 - */
299 - public function accept_POST() {
300 - if ( self::fix_mismatch_requested() ) :
301 - $this->fix_mismatch();
176 + if (isset($GLOBALS['fwp_post']['fix_mismatch'])) :
177 + if ('newuser'==$GLOBALS['fwp_post']['fix_mismatch_to']) :
178 + $newuser_name = trim($GLOBALS['fwp_post']['fix_mismatch_to_newuser']);
179 + $fix_mismatch_to_id = fwp_insert_new_user($newuser_name);
302 180 else :
303 - parent::accept_POST();
181 + $fix_mismatch_to_id = $GLOBALS['fwp_post']['fix_mismatch_to'];
304 182 endif;
305 - } /* FeedWordPressAuthorsPage::accept_POST() */
306 -
307 - /**
308 - * Fixes an author mismatch.
309 - */
310 - function fix_mismatch() {
311 - global $wpdb;
312 -
313 - $to = FeedWordPress::post( 'fix_mismatch_to' );
314 -// if ( 'newuser' === $fix_to ) : // will _always_ be false, since $fix_to is not called from anywhere (gwyneth 20230915)
315 - if ( 'newuser' === $to ) : // probably this is what was intended! (gwyneth 20230920)
316 - $newuser_name = trim( FeedWordPress::post( 'fix_mismatch_to_newuser', '' ) );
317 - $to = fwp_insert_new_user( $newuser_name );
318 - endif;
319 -
320 - $from = (int) FeedWordPress::post( 'fix_mismatch_from' );
321 - if ( is_numeric( $from ) ) :
322 -
323 - // Make a list of all the items by this author
324 - // syndicated from this feed...
183 + $fix_mismatch_from_id = (int) $GLOBALS['fwp_post']['fix_mismatch_from'];
184 + if (is_numeric($fix_mismatch_from_id)) :
185 + // Make a list of all the items by this author syndicated from this feed...
325 186 $post_ids = $wpdb->get_col("
326 187 SELECT {$wpdb->posts}.id
327 188 FROM {$wpdb->posts}, {$wpdb->postmeta}
328 189 WHERE ({$wpdb->posts}.id = {$wpdb->postmeta}.post_id)
329 190 AND {$wpdb->postmeta}.meta_key = 'syndication_feed_id'
330 - AND {$wpdb->postmeta}.meta_value = '{$this->link->id}'
331 - AND {$wpdb->posts}.post_author = '{$from}'
191 + AND {$wpdb->postmeta}.meta_value = '{$link->id}'
192 + AND {$wpdb->posts}.post_author = '{$fix_mismatch_from_id}'
332 193 ");
333 -
334 - if ( count( $post_ids ) > 0 ) :
335 - $N = count( $post_ids );
336 -
337 - // $posts = 'post'.(($N==1) ? '' : 's'); // Wordpress has _n() for plurals... (gwyneth 20230920)
338 - $posts = sprintf( _n( '%s post', '%s posts', $N, 'text-domain' ), number_format_i18n( $N ) );
339 -
194 +
195 + if (count($post_ids) > 0) :
340 196 // Re-assign them all to the correct author
341 - if ( is_numeric( $to ) ) : // re-assign to a particular user
342 - $post_set = "(" . implode( ",", $post_ids ) . ")";
343 -
197 + if (is_numeric($fix_mismatch_to_id)) : // re-assign to a particular user
198 + $post_set = "(".implode(",", $post_ids).")";
199 +
344 200 // Getting the revisions too, if there are any
345 201 $parent_in_clause = "OR {$wpdb->posts}.post_parent IN $post_set";
346 -
202 +
347 203 $wpdb->query("
348 - UPDATE {$wpdb->posts}
349 - SET post_author='{$to}'
350 - WHERE ({$wpdb->posts}.id IN $post_set
351 - $parent_in_clause)
204 + UPDATE {$wpdb->posts}
205 + SET post_author='{$fix_mismatch_to_id}'
206 + WHERE ({$wpdb->posts}.id IN $post_set
207 + $parent_in_clause)
352 208 ");
353 - // $this->mesg = sprintf(__("Re-assigned %d {$posts}."), $N); // see comment abpve
354 - $this->mesg = __( "Re-assigned " ) . $posts;
209 + $mesg = "Re-assigned ".count($post_ids)." post".((count($post_ids)==1)?'':'s').".";
355 210
356 211 // ... and kill them all
357 - elseif ( 'filter' == $to ) :
358 - foreach ( $post_ids as $post_id ) :
359 - wp_delete_post( $post_id );
360 - endforeach;
361 -
362 - $this->mesg = __( "Deleted " ) . $posts;
212 + elseif ($fix_mismatch_to_id=='filter') :
213 + foreach ($post_ids as $post_id) :
214 + wp_delete_post($post_id);
215 + endforeach;
216 + $mesg = "Deleted ".count($post_ids)." post".((count($post_ids)==1)?'':'s').".";
363 217 endif;
364 218 else :
365 - $this->mesg = __("Couldn't find any posts that matched your criteria.");
219 + $mesg = "Couldn't find any posts that matched your criteria.";
366 220 endif;
367 221 endif;
368 - $this->updated = false;
369 - } /* FeedWordPressAuthorsPage::fix_mismatch() */
222 + $updated_link = false;
223 + elseif (isset($GLOBALS['fwp_post']['save'])) :
224 + if (is_object($link) and $link->found()) :
225 + $alter = array ();
370 226
371 - /**
372 - * Presumably saves settings...
373 - *
374 - * @return void description
375 - */
376 - function save_settings () {
377 - if ($this->for_feed_settings()) :
378 - // $alter = array(); // what is this array? It's never used. (gwyneth 20230920)
379 -
380 227 // Unfamiliar author rule
381 - $unfamiliar_author = FeedWordPress::post( 'unfamiliar_author' );
382 - if ( ! is_null( $unfamiliar_author ) ) :
383 - if ( 'newuser' == $unfamiliar_author ) :
384 - $new_name = trim( FeedWordPress::post( "unfamiliar_author_newuser" ) );
385 - $this->link->map_name_to_new_user(/*name=*/ null, $new_name);
228 + if (isset($GLOBALS['fwp_post']["unfamiliar_author"])) :
229 + if ('site-default'==$GLOBALS['fwp_post']["unfamiliar_author"]) :
230 + unset($link->settings["unfamiliar author"]);
231 + elseif ('newuser'==$GLOBALS['fwp_post']["unfamiliar_author"]) :
232 + $newuser_name = trim($GLOBALS['fwp_post']["unfamiliar_author_newuser"]);
233 + $link->map_name_to_new_user(/*name=*/ NULL, $newuser_name);
386 234 else :
387 - $this->link->update_setting(
388 - "unfamiliar author",
389 - $unfamiliar_author,
390 - 'site-default'
391 - );
235 + $link->settings["unfamiliar author"] = $GLOBALS['fwp_post']["unfamiliar_author"];
392 236 endif;
393 237 endif;
394 -
238 +
395 239 // Handle author mapping rules
396 - $author_rules_name = FeedWordPress::post( 'author_rules_name' );
397 - $author_rules_action = FeedWordPress::post('author_rules_action' );
398 - if ( ! ( is_null( $author_rules_name ) || is_null( $author_rules_action ) ) ) :
399 - if ( isset( $author_rules_name['all'] ) ) :
400 - if ( strlen( $author_rules_name['all']) > 0 ) :
401 - $author_rules_name = array(
402 - 'all' => $author_rules_name['all'],
403 - );
404 -
405 - // Erase all the rest.
406 - endif;
407 - endif;
408 -
409 - unset($this->link->settings['map authors']);
410 - foreach ($author_rules_name as $key => $name) :
240 + if (isset($GLOBALS['fwp_post']['author_rules_name']) and isset($GLOBALS['fwp_post']['author_rules_action'])) :
241 + unset($link->settings['map authors']);
242 + foreach ($GLOBALS['fwp_post']['author_rules_name'] as $key => $name) :
411 243 // Normalize for case and whitespace
412 - $name = strtolower( trim( $name ) );
413 - $author_action = strtolower( trim( $author_rules_action[$key] ) );
414 -
415 - $author_rules_newuser = FeedWordPress::post('author_rules_newuser' );
416 - if ( strlen($name) > 0 ) :
417 - if ( 'newuser' == $author_action ) :
418 - $new_name = trim( $author_rules_newuser[ $key ] );
419 - $this->link->map_name_to_new_user($name, $new_name);
244 + $name = strtolower(trim($name));
245 + $author_action = strtolower(trim($GLOBALS['fwp_post']['author_rules_action'][$key]));
246 +
247 + if (strlen($name) > 0) :
248 + if ('newuser' == $author_action) :
249 + $newuser_name = trim($GLOBALS['fwp_post']['author_rules_newuser'][$key]);
250 + $link->map_name_to_new_user($name, $newuser_name);
420 251 else :
421 - $this->link->settings['map authors']['name'][$name] = $author_action;
252 + $link->settings['map authors']['name'][$name] = $author_action;
422 253 endif;
423 254 endif;
424 255 endforeach;
425 256 endif;
426 257
427 - $name = FeedWordPress::post( 'add_author_rule_name');
428 - $author_action = FeedWordPress::post( 'add_author_rule_action' );
429 - if ( ! ( is_null( $name ) || is_null( $author_action ) ) ) :
430 - $name = strtolower( trim( $name ) );
431 - $author_action = strtolower( trim( $author_action ) );
432 -
258 + if (isset($GLOBALS['fwp_post']['add_author_rule_name']) and isset($GLOBALS['fwp_post']['add_author_rule_action'])) :
259 + $name = strtolower(trim($GLOBALS['fwp_post']['add_author_rule_name']));
260 + $author_action = strtolower(trim($GLOBALS['fwp_post']['add_author_rule_action']));
433 261 if (strlen($name) > 0) :
434 262 if ('newuser' == $author_action) :
435 - $new_name = trim( FeedWordPress::post( 'add_author_rule_newuser' ));
436 - $this->link->map_name_to_new_user($name, $new_name);
263 + $newuser_name = trim($GLOBALS['fwp_post']['add_author_rule_newuser']);
264 + $link->map_name_to_new_user($name, $newuser_name);
437 265 else :
438 - $this->link->settings['map authors']['name'][$name] = $author_action;
266 + $link->settings['map authors']['name'][$name] = $author_action;
439 267 endif;
440 268 endif;
441 269 endif;
442 -
270 +
271 + // Save settings
272 + $link->save_settings(/*reload=*/ true);
273 + $updated_link = true;
274 +
275 + // Reset, reload
276 + $link_id = $link->id;
277 + unset($link);
278 + $link = new SyndicatedLink($link_id);
443 279 else :
444 -
445 - $unfamiliar_author = FeedWordPress::post( 'unfamiliar_author' );
446 - if ( 'newuser' === $unfamiliar_author ) :
447 - $new_name = FeedWordPress::post( 'unfamiliar_author_newuser' );
448 - $new_id = fwp_insert_new_user( trim( $new_name ) );
449 - if ( is_numeric( $new_id ) ) :
450 - update_option( 'feedwordpress_unfamiliar_author', $new_id );
280 + if ('newuser'==$GLOBALS['fwp_post']['unfamiliar_author']) :
281 + $newuser_name = trim($GLOBALS['fwp_post']['unfamiliar_author_newuser']);
282 + $newuser_id = fwp_insert_new_user($newuser_name);
283 + if (is_numeric($newuser_id)) :
284 + update_option('feedwordpress_unfamiliar_author', $newuser_id);
451 285 else :
452 286 // TODO: Add some error detection and reporting
453 - // Put WP_Error stuff into $this->mesg ?
454 287 endif;
455 288 else :
456 - update_option( 'feedwordpress_unfamiliar_author', $unfamiliar_author );
289 + update_option('feedwordpress_unfamiliar_author', $GLOBALS['fwp_post']['unfamiliar_author']);
457 290 endif;
458 291
459 - $by_email = FeedWordPress::post( 'match_author_by_email' );
460 - update_option(
461 - 'feedwordpress_do_not_match_author_by_email',
462 - ( isset( $by_email ) && 'yes' == $by_email ) ? 'no' : 'yes'
463 - );
292 + if (isset($GLOBALS['fwp_post']['match_author_by_email']) and $GLOBALS['fwp_post']['match_author_by_email']=='yes') :
293 + update_option('feedwordpress_do_not_match_author_by_email', 'no');
294 + else :
295 + update_option('feedwordpress_do_not_match_author_by_email', 'yes');
296 + endif;
464 297
465 - $null_emails = FeedWordPress::post( 'null_emails', null, 'textarea' );
466 - if ( ! is_null( $null_emails ) ) :
467 - update_option( 'feedwordpress_null_email_set', $null_emails );
298 + if (isset($GLOBALS['fwp_post']['null_emails'])) :
299 + update_option('feedwordpress_null_email_set', $GLOBALS['fwp_post']['null_emails']);
468 300 endif;
301 +
302 + $updated_link = true;
469 303 endif;
470 304
471 - parent::save_settings();
472 - $this->refresh_author_list();
473 - } /* FeedWordPressAuthorsPage::save_settings() */
305 + do_action('feedwordpress_admin_page_authors_save', $GLOBALS['fwp_post'], $authorsPage);
306 + $authorsPage->refresh_author_list();
307 + else :
308 + $updated_link = false;
309 + endif;
310 +
311 + ////////////////////////////////////////////////
312 + // Prepare settings page ///////////////////////
313 + ////////////////////////////////////////////////
474 314
475 -} /* class FeedWordPressAuthorsPage */
315 + if ($updated_link) :
316 +?>
317 +<div class="updated"><p>Syndicated author settings updated.</p></div>
318 +<?php elseif (!is_null($mesg)) : ?>
319 +<div class="updated"><p><?php print esc_html($mesg); ?></p></div>
320 +<?php endif;
476 321
477 -$authorsPage = new FeedWordPressAuthorsPage;
478 -$authorsPage->display();
322 + if (function_exists('add_meta_box')) :
323 + add_action(
324 + FeedWordPressCompatibility::bottom_script_hook(__FILE__),
325 + /*callback=*/ array($authorsPage, 'fix_toggles'),
326 + /*priority=*/ 10000
327 + );
328 + FeedWordPressSettingsUI::ajax_nonce_fields();
329 + endif;
330 +
331 + $authorsPage->open_sheet('Syndicated Author');
332 + ?>
333 + <div id="post-body">
334 + <?php
335 + ////////////////////////////////////////////////
336 + // Display settings boxes //////////////////////
337 + ////////////////////////////////////////////////
338 +
339 + $boxes_by_methods = array(
340 + 'syndicated_authors_box' => __('Syndicated Authors'),
341 + 'fix_authors_box' => __('Reassign Authors'),
342 + );
343 + if ($authorsPage->for_default_settings()) :
344 + unset($boxes_by_methods['fix_authors_box']);
345 + endif;
346 +
347 + foreach ($boxes_by_methods as $method => $row) :
348 + if (is_array($row)) :
349 + $id = $row['id'];
350 + $title = $row['title'];
351 + else :
352 + $id = 'feedwordpress_'.$method;
353 + $title = $row;
354 + endif;
355 +
356 + add_meta_box(
357 + /*id=*/ $id,
358 + /*title=*/ $title,
359 + /*callback=*/ array('FeedWordPressAuthorsPage', $method),
360 + /*page=*/ $authorsPage->meta_box_context(),
361 + /*context=*/ $authorsPage->meta_box_context()
362 + );
363 + endforeach;
364 + do_action('feedwordpress_admin_page_authors_meta_boxes', $authorsPage);
365 +?>
366 + <div class="metabox-holder">
367 +<?php
368 + fwp_do_meta_boxes($authorsPage->meta_box_context(), $authorsPage->meta_box_context(), $authorsPage);
369 +?>
370 + </div> <!-- class="metabox-holder" -->
371 +</div> <!-- id="post-body" -->
372 +<?php $authorsPage->close_sheet(); ?>
373 +
374 +<script type="text/javascript">
375 + contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline');
376 +<?php if (is_object($link) and $link->found()) : ?>
377 +<?php for ($j=1; $j<=$authorsPage->rule_count; $j++) : ?>
378 + contextual_appearance('author-rules-<?php echo $j; ?>', 'author-rules-<?php echo $j; ?>-newuser', 'author-rules-<?php echo $j; ?>-default', 'newuser', 'inline');
379 +<?php endfor; ?>
380 + contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline');
381 + contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');
382 +<?php else : ?>
383 + contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true);
384 +<?php endif; ?>
385 +</script>
386 +<?php
387 +} /* function fwp_authors_page () */
388 +
389 + fwp_authors_page();
390 +