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