PluginProbe
FeedWordPress / 2015.0514
FeedWordPress v2015.0514
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
feedwordpress / categories-page.php

categories-page.php in FeedWordPress 2015.0514, at categories-page.php

616 lines 21.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 require_once(dirname(__FILE__) . '/admin-ui.php');
3
4 class FeedWordPressCategoriesPage extends FeedWordPressAdminPage {
5 function FeedWordPressCategoriesPage ($link = -1) {
6 if (is_numeric($link) and -1 == $link) :
7 $link = $this->submitted_link();
8 endif;
9
10 FeedWordPressAdminPage::FeedWordPressAdminPage('feedwordpresscategories', $link);
11 $this->dispatch = 'feedwordpress_admin_page_categories';
12 $this->pagenames = array(
13 'default' => 'Categories & Tags',
14 'settings-update' => 'Syndicated Categories & Tags',
15 'open-sheet' => 'Categories & Tags',
16 );
17 $this->filename = __FILE__;
18 }
19
20 function unfamiliar_category_label ($name) {
21 if (preg_match('/^create:(.*)$/', $name, $refs)) :
22 $tax = get_taxonomy($refs[1]);
23 $name = sprintf(__('Create new %s to match them'), $tax->labels->name);
24 endif;
25 return $name;
26 }
27
28
29 function feed_categories_box ($page, $box = NULL) {
30 $link = $page->link;
31
32 $globalPostType = get_option('feedwordpress_syndicated_post_type', 'post');
33 if ($this->for_feed_settings()) :
34 $post_type = $link->setting('syndicated post type', 'syndicated_post_type', 'post');
35 else :
36 $post_type = $globalPostType;
37 endif;
38 $taxonomies = get_object_taxonomies(array('object_type' => $post_type), 'names');
39
40 $unmatched = array('category' => array(), 'post_tag' => array());
41 $matchUl = array('cats' => array(), 'tags' => array(), 'filter' => array());
42 $tagLikeTaxonomies = array();
43 foreach ($taxonomies as $tax) :
44 $taxonomy = get_taxonomy($tax);
45
46 if (!$taxonomy->hierarchical) :
47 $tagLikeTaxonomies[] = $tax;
48 endif;
49
50 $name = 'create:'.$tax;
51 foreach (array('category', 'post_tag') as $what) :
52 $unmatched[$what][$name] = array(
53 'label' => $this->unfamiliar_category_label($name),
54 );
55 $unmatchedRadio[$what][$name] = '';
56 endforeach;
57
58 foreach (array('cats', 'tags', 'filter') as $what) :
59 $matchUl[$what][$tax] = array(
60 'checked' => '',
61 'labels' => $taxonomy->labels,
62 );
63 endforeach;
64 endforeach;
65
66 foreach ($unmatched as $what => $um) :
67 $unmatched[$what]['null'] = array('label' => __('Don\'t create any matching terms'));
68 $unmatchedRadio[$what]['null'] = '';
69 endforeach;
70
71 $globalUnmatched = array(
72 'category' => FeedWordPress::on_unfamiliar('category'),
73 'post_tag' => FeedWordPress::on_unfamiliar('post_tag'),
74 );
75 foreach ($globalUnmatched as $what => $value) :
76 if ($value=='create') : $value = 'create:category'; endif;
77 if ($value=='tag') : $value = 'create:post_tag'; endif;
78 $globalUnmatched[$what] = $value;
79 endforeach;
80
81 $globalMatch['cats'] = get_option('feedwordpress_match_cats', $taxonomies);
82 $globalMatch['tags'] = get_option('feedwordpress_match_tags', $tagLikeTaxonomies);
83 $globalMatch['filter'] = get_option('feedwordpress_match_filter', array());
84
85 $globalMatchLabels = array();
86 $nothingDoing = array('cats' => "won't try to match", 'tags' => "won't try to match", "filter" => "won't filter");
87
88 foreach ($globalMatch as $what => $domain) :
89 $labels = array(); $domain = array_filter($domain, 'remove_dummy_zero');
90 foreach ($domain as $tax) :
91 $tax = get_taxonomy($tax);
92 $labels[] = $tax->labels->name;
93 endforeach;
94
95 if (count($labels) > 0) :
96 $globalMatchLabels[$what] = implode(", ", $labels);
97 else :
98 $globalMatchLabels[$what] = $nothingDoing[$what];
99 endif;
100 endforeach;
101
102 if ($this->for_feed_settings()) :
103 $href = $this->admin_page_href(basename(__FILE__));
104
105 foreach ($unmatched as $what => $um) :
106 // Is the global default setting appropriate to this post type?
107 $GUC = $globalUnmatched[$what];
108 if (isset($um[$GUC])) :
109 // Yup. Let's add a site-default option
110 $currently = $um[$GUC]['label'];
111 $defaultLi = array(
112 'site-default' => array(
113 'label' => sprintf(
114 __('Use the <a href="%s">site-wide setting</a> <span class="current-setting">Currently: <strong>%s</strong></span>'),
115 $href,
116 $currently
117 ),
118 ), );
119 $unmatchedColumns[$what] = array(
120 $defaultLi,
121 );
122 $unmatchedDefault[$what] = 'site-default';
123 $unmatchedRadio[$what]['site-default'] = '';
124 else :
125 $opts = array_keys($unmatched[$what]);
126 $unmatchedDefault[$what] = $opts[0];
127 $unmatchedColumns[$what] = array();
128 endif;
129
130 $ucKey[$what] = $link->setting("unfamiliar $what", NULL, NULL);
131 endforeach;
132
133 $match['cats'] = $this->link->setting('match/cats', NULL, NULL);
134 $match['tags'] = $this->link->setting('match/tags', NULL, NULL);
135 $match['filter'] = $this->link->setting('match/filter', NULL, NULL);
136 else :
137 foreach ($unmatched as $what => $um) :
138 $ucKey[$what] = FeedWordPress::on_unfamiliar($what);
139 endforeach;
140
141 $match = $globalMatch;
142 endif;
143
144 foreach ($ucKey as $what => $uck) :
145 if ($uck == 'tag') : $uck = 'create:post_tag'; endif;
146 if ($uck == 'create') : $uck = 'create:category'; endif;
147
148 if (!is_string($uck)) :
149 $uck = $unmatchedDefault[$what];
150 endif;
151 $ucKey[$what] = $uck;
152
153 if (!array_key_exists($uck, $unmatchedRadio[$what])) :
154 $obsoleteLi = array(
155 $uck => array(
156 'label' => ' <span style="font-style: italic; color: #777;">'.$this->unfamiliar_category_label($uck).'</span> <span style="background-color: #ffff90; color: black;">(This setting is no longer applicable to the type of post syndicated from this feed!)</span><p>Please change this one of the following settings:</p>',
157 ),
158 );
159 $unmatched[$what] = array_merge($obsoleteLi, $unmatched[$what]);
160 $unmatchedRadio[$what][$uck] = ' disabled="disabled"';
161 endif;
162
163 $unmatchedRadio[$what][$uck] .= ' checked="checked"';
164
165 $unmatchedColumns[$what][] = $unmatched[$what];
166 endforeach;
167
168 $defaulted = array();
169 foreach ($match as $what => $set) :
170 $defaulted[$what] = false;
171 if (is_null($set) or (count($set) < 1)) :
172 $defaulted[$what] = true;
173 if ($this->for_feed_settings()) :
174 $set = $globalMatch[$what];
175 $match[$what] = $globalMatch[$what];
176 endif;
177 endif;
178
179 if (!$defaulted[$what] or $this->for_feed_settings()) :
180 foreach ($set as $against) :
181 if (array_key_exists($against, $matchUl[$what])) :
182 $matchUl[$what][$against]['checked'] = ' checked="checked"';
183 endif;
184 endforeach;
185 endif;
186 endforeach;
187
188 // Hey ho, let's go...
189 $offerSiteWideSettings = ($page->for_feed_settings() and ($post_type==$globalPostType));
190 ?>
191 <table class="edit-form narrow">
192 <tr>
193 <th scope="row">Match feed categories:</th>
194 <td><input type="hidden" name="match_categories[cats][]" value="0" />
195 <?php if ($offerSiteWideSettings) : ?>
196 <table class="twofer">
197 <tbody>
198 <tr><td class="equals first <?php if ($defaulted['cats']) : ?>active<?php else: ?>inactive<?php endif; ?>"><p><label><input type="radio" name="match_default[cats]"
199 value="yes" <?php if ($defaulted['cats']) : ?> checked="checked"<?php endif; ?> />
200 Use the <a href="<?php print $href; ?>">site-wide setting</a>
201 <span class="current-setting">Currently: <strong><?php print $globalMatchLabels['cats']; ?></strong></span></label></p></td>
202 <td class="equals second <?php if ($defaulted['cats']) : ?>inactive<?php else: ?>active<?php endif; ?>"><p><label><input type="radio" name="match_default[cats]"
203 value="no" <?php if (!$defaulted['cats']) : ?> checked="checked"<?php endif; ?> />
204 Do something different with this feed.</label>
205 <?php else : ?>
206 <p>
207 <?php endif; ?>
208 When a feed provides categories for a post, try to match those categories
209 locally with:</p>
210 <ul class="options compact">
211 <?php foreach ($matchUl['cats'] as $name => $li) : ?>
212 <li><label><input type="checkbox"
213 name="match_categories[cats][]" value="<?php print $name; ?>"
214 <?php print $li['checked']; ?> /> <?php $l = $li['labels']; print $l->name; ?></label></li>
215 <?php endforeach; ?>
216 </ul>
217 <?php if ($offerSiteWideSettings) : ?>
218 </td></tr>
219 </tbody>
220 </table>
221 <?php endif; ?>
222 </td>
223 </tr>
224
225 <tr>
226 <th scope="row">Unmatched categories:</th>
227 <td><p>When <?php print $this->these_posts_phrase(); ?> have categories on
228 the feed that don't have any local matches yet...</p>
229
230 <?php if (count($unmatchedColumns['category']) > 1) : ?>
231 <table class="twofer">
232 <?php else : ?>
233 <table style="width: 100%">
234 <?php endif; ?>
235 <tbody>
236 <tr>
237 <?php foreach ($unmatchedColumns['category'] as $index => $column) : ?>
238 <td class="equals <?php print (($index == 0) ? 'first' : 'second'); ?> inactive"><ul class="options">
239 <?php foreach ($column as $name => $li) : ?>
240 <li><label><input type="radio" name="unfamiliar_category" value="<?php print $name; ?>"<?php print $unmatchedRadio['category'][$name]; ?> /> <?php print $li['label']; ?></label></li>
241 <?php endforeach; ?>
242 </ul></td>
243 <?php endforeach; ?>
244 </tr>
245 </tbody>
246 </table>
247 </td></tr>
248
249 <tr>
250 <th scope="row">Match inline tags:
251 <p class="setting-description">Applies only to inline tags marked
252 as links in the text of syndicated posts, using the
253 <code>&lt;a rel="tag"&gt;...&lt;/a&gt;</code> microformat.
254 Most feeds with "tags" just treat them as normal feed categories,
255 like those handled above.</p>
256 </th>
257 <td><input type="hidden" name="match_categories[tags][]" value="0" />
258 <?php if ($offerSiteWideSettings) : ?>
259 <table class="twofer">
260 <tbody>
261 <tr><td class="equals first <?php if ($defaulted['tags']) : ?>active<?php else: ?>inactive<?php endif; ?>"><p><label><input type="radio" name="match_default[tags]"
262 value="yes" <?php if ($defaulted['tags']) : ?> checked="checked"<?php endif; ?> />
263 Use the <a href="<?php print $href; ?>">site-wide setting</a>
264 <span class="current-setting">Currently: <strong><?php print $globalMatchLabels['tags']; ?></strong></span></label></p>
265 </td>
266 <td class="equals second <?php if ($defaulted['tags']) : ?>inactive<?php else: ?>active<?php endif; ?>"><p><label><input type="radio" name="match_default[tags]"
267 value="no" <?php if (!$defaulted['tags']) : ?> checked="checked"<?php endif; ?> />
268 Do something different with this feed.</label>
269 <?php else : ?>
270 <p>
271 <?php endif; ?>
272 When a feed provides tags inline in a post, try to match those tags
273 locally with:</p>
274 <ul class="options compact">
275 <?php foreach ($matchUl['tags'] as $name => $li) : ?>
276 <li><label><input type="checkbox"
277 name="match_categories[tags][]" value="<?php print $name; ?>"
278 <?php print $li['checked']; ?> /> <?php $l = $li['labels']; print $l->name; ?></label></li>
279 <?php endforeach; ?>
280 </ul>
281 <?php if ($offerSiteWideSettings) : ?>
282 </td></tr>
283 </tbody>
284 </table>
285 <?php endif; ?>
286 </td>
287 </tr>
288
289 <tr>
290 <th scope="row">Unmatched inline tags:</th>
291 <td><p>When the text of <?php print $this->these_posts_phrase(); ?> contains
292 inline tags that don't have any local matches yet...</p>
293
294 <?php if (count($unmatchedColumns['post_tag']) > 1) : ?>
295 <table class="twofer">
296 <?php else : ?>
297 <table style="width: 100%">
298 <?php endif; ?>
299 <tbody>
300 <tr>
301 <?php foreach ($unmatchedColumns['post_tag'] as $index => $column) : ?>
302 <td class="equals <?php print (($index == 0) ? 'first' : 'second'); ?> inactive"><ul class="options">
303 <?php foreach ($column as $name => $li) : ?>
304 <li><label><input type="radio" name="unfamiliar_post_tag" value="<?php print $name; ?>"<?php print $unmatchedRadio['post_tag'][$name]; ?> /> <?php print $li['label']; ?></label></li>
305 <?php endforeach; ?>
306 </ul></td>
307 <?php endforeach; ?>
308 </tr>
309 </tbody>
310 </table>
311
312 </td></tr>
313
314 <tr>
315 <th scope="row">Filter:</th>
316 <td><input type="hidden" name="match_categories[filter][]" value="0" />
317 <?php if ($offerSiteWideSettings) : ?>
318 <table class="twofer">
319 <tbody>
320 <tr>
321 <td class="equals first <?php if ($defaulted['filter']) : ?>active<?php else: ?>inactive<?php endif; ?>">
322 <p><label><input type="radio" name="match_default[filter]"
323 value="yes" <?php if ($defaulted['filter']) : ?> checked="checked"<?php endif; ?> />
324 Use the <a href="<?php print $href; ?>">site-wide setting</a>
325 <span class="current-setting">Currently: <strong><?php print $globalMatchLabels['filter']; ?></strong></span></label></p>
326 </td>
327 <td class="equals second <?php if ($defaulted['filter']) : ?>inactive<?php else: ?>active<?php endif; ?>">
328 <p><label><input type="radio" name="match_default[filter]"
329 value="no" <?php if (!$defaulted['filter']) : ?> checked="checked"<?php endif; ?> />
330 Do something different with this feed:</label></p>
331 <div style="margin-left: 3.0em;">
332 <?php endif; ?>
333
334 <ul class="options">
335 <?php foreach ($matchUl['filter'] as $tax => $li) : ?>
336 <li><label><input type="checkbox" name="match_categories[filter][]" value="<?php print $tax; ?>"
337 <?php print $li['checked']; ?> /> Don't syndicate posts unless they match at
338 least one local <strong><?php $l = $li['labels']; print $l->singular_name; ?></strong></label></li>
339 <?php endforeach; ?>
340 </ul>
341
342 <?php if ($offerSiteWideSettings) : ?>
343 </div>
344 </td></tr>
345 </tbody>
346 </table>
347 <?php endif; ?>
348 </td>
349 </tr>
350 <?php if ($page->for_feed_settings()) : ?>
351 <tr>
352 <th scope="row">Multiple categories:</th>
353 <td>
354 <input type="text" size="20" id="cat_split" name="cat_split" value="<?php if (isset($link->settings['cat_split'])) : echo htmlspecialchars($link->settings['cat_split']); endif; ?>" />
355 <p class="setting-description">Enter a <a href="http://us.php.net/manual/en/reference.pcre.pattern.syntax.php">Perl-compatible regular expression</a> here if the feed provides multiple
356 categories in a single category element. The regular expression should match
357 the characters used to separate one category from the next. If the feed uses
358 spaces (like <a href="http://del.icio.us/">del.icio.us</a>), use the pattern "\s".
359 If the feed does not provide multiple categories in a single element, leave this
360 blank.</p></td>
361 </tr>
362 <?php endif; ?>
363 </table>
364 <?php
365 } /* FeedWordPressCategoriesPage::feed_categories_box() */
366
367 function term_option_map () {
368 return array(
369 'category' => 'feedwordpress_syndication_cats',
370 'post_tag' => 'feedwordpress_syndication_tags',
371 );
372 }
373 function term_setting_map () {
374 return array(
375 'category' => 'cats',
376 'post_tag' => 'tags',
377 );
378 }
379
380 function categories_box ($page, $box = NULL) {
381 $link = $page->link;
382 $dummy = null;
383 $syndicatedlink = new SyndicatedLink($dummy);
384
385 if ($this->for_feed_settings()) :
386 $post_type = $link->setting('syndicated post type', 'syndicated_post_type', 'post');
387 else :
388 $post_type = get_option('feedwordpress_syndicated_post_type', 'post');
389 endif;
390 $taxonomies = get_object_taxonomies(array('object_type' => $post_type), 'names');
391
392 $option_map = $this->term_option_map();
393 $setting_map = $this->term_setting_map();
394 $globalTax = get_option('feedwordpress_syndication_terms', array());
395 if ($page->for_feed_settings()) :
396 $terms = $link->setting('terms', NULL, array());
397 endif;
398
399 ?>
400 <table class="edit-form narrow">
401 <tbody>
402 <?php
403 foreach ($taxonomies as $tax) :
404 $taxonomy = get_taxonomy($tax);
405 ?>
406 <tr><th><?php print $taxonomy->labels->name; ?></th>
407 <td><?php
408 if (isset($option_map[$tax])) :
409 $option = $option_map[$tax];
410 $globalCats = preg_split(FEEDWORDPRESS_CAT_SEPARATOR_PATTERN, get_option($option));
411 elseif (isset($globalTax[$tax])) :
412 $globalCats = $globalTax[$tax];
413 else :
414 $globalCats = array();
415 endif;
416 $globalCats = array_map('trim', $globalCats);
417
418 if ($page->for_feed_settings()) :
419 $add_global_categories = $link->setting("add/$tax", NULL, 'yes');
420 $checked = array('yes' => '', 'no' => '');
421 $checked[$add_global_categories] = ' checked="checked"';
422
423 if (isset($setting_map[$tax])) :
424 $setting = $setting_map[$tax];
425 $cats = $link->setting($setting, NULL, NULL);
426 if (is_null($cats)) : $cats = array(); endif;
427 elseif (isset($terms[$tax])) :
428 $cats = $terms[$tax];
429 else :
430 $cats = array();
431 endif;
432 else :
433 $cats = $globalCats;
434 endif;
435
436 if ($page->for_feed_settings()) :
437 ?>
438 <table class="twofer">
439 <tbody>
440 <tr>
441 <td class="primary">
442 <?php
443 endif;
444
445 $dogs = $syndicatedlink->category_ids(/*post=*/ NULL, $cats, /*unfamiliar=*/ NULL, /*taxonomies=*/ array($tax));
446
447 if ($taxonomy->hierarchical) : // Use a category-style checkbox
448 fwp_category_box($dogs, 'all '.$page->these_posts_phrase(), /*tags=*/ array(), /*params=*/ array('taxonomy' => $tax));
449 else : // Use a tag-style edit box
450 fwp_tags_box($cats, 'all '.$page->these_posts_phrase(), /*params=*/ array('taxonomy' => $tax));
451 endif;
452
453 $globalDogs = $syndicatedlink->category_ids(/*post=*/ NULL, $globalCats, /*unfamiliar=*/ 'create:'.$tax, /*taxonomies=*/ array($tax));
454
455 $siteWideHref = $this->admin_page_href(basename(__FILE__));
456
457 if ($page->for_feed_settings()) :
458 ?>
459 </td>
460 <td class="secondary">
461 <h4>Site-wide <?php print $taxonomy->labels->name; ?></h4>
462 <?php if (count($globalCats) > 0) : ?>
463 <ul class="current-setting">
464 <?php foreach ($globalDogs as $dog) : ?>
465 <li><?php $cat = get_term($dog, $tax); print $cat->name; ?></li>
466 <?php endforeach; ?>
467 </ul>
468 </div>
469 <p>
470 <?php else : ?>
471 <p>Site-wide settings may also assign categories to syndicated
472 posts.
473 <?php endif; ?>
474 Should <?php print $page->these_posts_phrase(); ?> be assigned
475 these <?php print $taxonomy->labels->name; ?> from the <a href="<?php print esc_html($siteWideHref); ?>">site-wide settings</a>, in
476 addition to the feed-specific <?php print $taxonomy->labels->name; ?> you set up here?</p>
477
478 <ul class="settings">
479 <li><p><label><input type="radio" name="add_global[<?php print $tax; ?>]" value="yes" <?php print $checked['yes']; ?> /> Yes. Place <?php print $page->these_posts_phrase(); ?> under all these categories.</label></p></li>
480 <li><p><label><input type="radio" name="add_global[<?php print $tax; ?>]" value="no" <?php print $checked['no']; ?> /> No. Only use the categories I set up on the left. Do not use the global defaults for <?php print $page->these_posts_phrase(); ?></label></p></li>
481 </ul>
482 </td>
483 </tr>
484 </tbody>
485 </table>
486 <?php
487 endif;
488 ?>
489 </td>
490 </tr>
491 <?php
492 endforeach;
493 ?>
494 </tbody>
495 </table>
496 <?php
497 } /* FeedWordPressCategoriesPage::categories_box () */
498
499 function save_settings ($post) {
500 if (isset($post['match_categories'])) :
501 foreach ($post['match_categories'] as $what => $set) :
502 // Defaulting is controlled by a separate radio button
503 if ($this->for_feed_settings()
504 and isset($post['match_default'])
505 and isset($post['match_default'][$what])
506 and $post['match_default'][$what]=='yes') :
507 $set = NULL; // Defaulted!
508 endif;
509
510 $this->update_setting("match/$what", $set, NULL);
511 endforeach;
512 endif;
513 $optionMap = $this->term_option_map();
514 $settingMap = $this->term_setting_map();
515
516 $saveTerms = array(); $separateSaveTerms = array('category' => array(), 'post_tag' => array());
517
518 if (!isset($post['tax_input'])) : $post['tax_input'] = array(); endif;
519
520 // Merge in data from older-notation category check boxes
521 if (isset($post['post_category'])) :
522 // Just merging in for processing below.
523 $post['tax_input']['category'] = array_merge(
524 (isset($post['tax_input']['category']) ? $post['tax_input']['category'] : array()),
525 $post['post_category']
526 );
527 endif;
528
529 // Process data from term tag boxes and check boxes
530 foreach ($post['tax_input'] as $tax => $terms) :
531 $saveTerms[$tax] = array();
532 if (is_array($terms)) : // Numeric IDs from checklist
533 foreach ($terms as $term) :
534 if ($term) :
535 $saveTerms[$tax][] = '{'.$tax.'#'.$term.'}';
536 endif;
537 endforeach;
538 else : // String from tag input
539 $saveTerms[$tax] = explode(",", $terms);
540 endif;
541 $saveTerms[$tax] = array_map('trim', $saveTerms[$tax]);
542
543 if (isset($optionMap[$tax])) :
544 $separateSaveTerms[$tax] = $saveTerms[$tax];
545 unset($saveTerms[$tax]);
546 endif;
547 endforeach;
548
549 if (isset($post['post_category'])) :
550 foreach ($post['post_category'] as $cat) :
551 $separateSaveTerms['category'][] = '{category#'.$cat.'}';
552 endforeach;
553 endif;
554
555 // Unmatched categories and tags
556 foreach (array('category', 'post_tag') as $what) :
557 if (isset($post["unfamiliar_{$what}"])) :
558 $this->update_setting(
559 "unfamiliar {$what}",
560 $post["unfamiliar_{$what}"],
561 'site-default'
562 );
563 endif;
564 endforeach;
565
566 // Categories and Tags
567 foreach ($separateSaveTerms as $tax => $terms) :
568 if ($this->for_feed_settings()) :
569 $this->link->update_setting($settingMap[$tax], $terms, array());
570 else :
571 if (!empty($terms)) :
572 update_option($optionMap[$tax], implode(FEEDWORDPRESS_CAT_SEPARATOR, $terms));
573 else :
574 delete_option($optionMap[$tax]);
575 endif;
576 endif;
577 endforeach;
578
579 // Other terms
580 $this->update_setting(array('feed'=>'terms', 'global'=>'syndication_terms'), $saveTerms, array());
581
582 if ($this->for_feed_settings()) :
583 // Category splitting regex
584 if (isset($post['cat_split'])) :
585 $this->link->update_setting('cat_split', trim($post['cat_split']), '');
586 endif;
587
588 // Treat global terms (cats, tags, etc.) as additional,
589 // or as defaults to be overridden and replaced?
590 if (isset($post['add_global'])) :
591 foreach ($post['add_global'] as $what => $value) :
592 $this->link->update_setting("add/$what", $value);
593 endforeach;
594 endif;
595 endif;
596 parent::save_settings($post);
597 } /* FeedWordPressCategoriesPage::save_settings() */
598
599 function display () {
600 ////////////////////////////////////////////////
601 // Display settings boxes //////////////////////
602 ////////////////////////////////////////////////
603
604 $this->boxes_by_methods = array(
605 'feed_categories_box' => __('Feed Categories & Tags'),
606 'categories_box' => array('title' => __('Categories'), 'id' => 'categorydiv'),
607 );
608
609 parent::display();
610 }
611 }
612
613 $categoriesPage = new FeedWordPressCategoriesPage;
614 $categoriesPage->display();
615
616