affirmative() static public method

* FeedWordPress::negative ()
static public affirmative ( $f, $setting )
コード例 #1
0
	function get_settings_from_notes () {
		// Read off feed settings from link_notes
		$notes = explode("\n", $this->link->link_notes);
		foreach ($notes as $note):
			$pair = explode(": ", $note, 2);
			$key = (isset($pair[0]) ? $pair[0] : null);
			$value = (isset($pair[1]) ? $pair[1] : null);
			if (!is_null($key) and !is_null($value)) :
				// Unescape and trim() off the whitespace.
				// Thanks to Ray Lischner for pointing out the
				// need to trim off whitespace.
				$this->settings[$key] = stripcslashes (trim($value));
			endif;
		endforeach;

		// "Magic" feed settings
		$this->settings['link/uri'] = $this->link->link_rss;
		$this->settings['link/name'] = $this->link->link_name;
		$this->settings['link/id'] = $this->link->link_id;
		
		// `hardcode categories` and `unfamiliar categories` are
		// deprecated in favor of `unfamiliar category`
		if (
			isset($this->settings['unfamiliar categories'])
			and !isset($this->settings['unfamiliar category'])
		) :
			$this->settings['unfamiliar category'] = $this->settings['unfamiliar categories'];
		endif;
		if (
			FeedWordPress::affirmative($this->settings, 'hardcode categories')
			and !isset($this->settings['unfamiliar category'])
		) :
			$this->settings['unfamiliar category'] = 'default';
		endif;

		// Set this up automagically for del.icio.us
		$bits = parse_url($this->link->link_rss);
		$tagspacers = array('del.icio.us', 'feeds.delicious.com');
		if (!isset($this->settings['cat_split']) and in_array($bits['host'], $tagspacers)) : 
			$this->settings['cat_split'] = '\s'; // Whitespace separates multiple tags in del.icio.us RSS feeds
		endif;

		// Simple lists
		foreach ($this->imploded_settings() as $what) :
			if (isset($this->settings[$what])):
				$this->settings[$what] = explode(
					FEEDWORDPRESS_CAT_SEPARATOR,
					$this->settings[$what]
				);
			endif;
		endforeach;

		if (isset($this->settings['terms'])) :
			// Look for new format
			$this->settings['terms'] = maybe_unserialize($this->settings['terms']);
			
			if (!is_array($this->settings['terms'])) :
				// Deal with old format instead. Ugh.

				// Split on two *or more* consecutive breaks
				// because in the old format, a taxonomy
				// without any associated terms would
				// produce tax_name#1\n\n\ntax_name#2\nterm,
				// and the naive split on the first \n\n
				// would screw up the tax_name#2 list.
				//
				// Props to David Morris for pointing this
				// out.

				$this->settings['terms'] = preg_split(
					"/".FEEDWORDPRESS_CAT_SEPARATOR."{2,}/",
					$this->settings['terms']
				);
				$terms = array();
				foreach ($this->settings['terms'] as $line) :
					$line = explode(FEEDWORDPRESS_CAT_SEPARATOR, $line);
					$tax = array_shift($line);
					$terms[$tax] = $line;
				endforeach;
				$this->settings['terms'] = $terms;
			endif;
		endif;

		if (isset($this->settings['map authors'])) :
			$author_rules = explode("\n\n", $this->settings['map authors']);
			$ma = array();
			foreach ($author_rules as $rule) :
				list($rule_type, $author_name, $author_action) = explode("\n", $rule);
				
				// Normalize for case and whitespace
				$rule_type = strtolower(trim($rule_type));
				$author_name = strtolower(trim($author_name));
				$author_action = strtolower(trim($author_action));
				
				$ma[$rule_type][$author_name] = $author_action;
			endforeach;
			$this->settings['map authors'] = $ma;
		endif;

	} /* SyndicatedLink::get_settings_from_notes () */
コード例 #2
0
 function save_settings($post)
 {
     if ($this->for_feed_settings()) {
         if (isset($post['link_rss_params_key'])) {
             $qp = array();
             foreach ($post['link_rss_params_key'] as $index => $key) {
                 if (strlen($key) > 0) {
                     if (isset($post['link_rss_params_value'][$index]) and strlen($post['link_rss_params_value'][$index])) {
                         $value = $post['link_rss_params_value'][$index];
                         $qp[] = array($key, $value);
                     }
                 }
             }
             $this->update_setting('query parameters', serialize($qp));
         }
         // custom feed settings first
         foreach ($post['notes'] as $mn) {
             $mn['key0'] = isset($mn['key0']) ? trim($mn['key0']) : NULL;
             $mn['key1'] = trim($mn['key1']);
             if (preg_match("^((" . implode(')|(', $this->special_settings) . "))\$i", $mn['key1'])) {
                 $mn['key1'] = 'user/' . $mn['key1'];
             }
             if (strlen($mn['key0']) > 0) {
                 unset($this->link->settings[$mn['key0']]);
                 // out with the old
             }
             if ($mn['action'] == 'update' and strlen($mn['key1']) > 0) {
                 $this->link->settings[$mn['key1']] = $mn['value'];
                 // in with the new
             }
         }
         // now stuff through the web form
         // hardcoded feed info
         foreach (array('name', 'description', 'url') as $what) {
             // We have a checkbox for "No," so if it's unchecked, mark as "Yes."
             $this->link->settings["hardcode {$what}"] = isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes';
             if (FeedWordPress::affirmative($this->link->settings, "hardcode {$what}")) {
                 $this->link->link->{'link_' . $what} = $post['link' . $what];
             }
         }
         // Update scheduling
         if (isset($post['update_schedule'])) {
             $this->link->settings['update/hold'] = $post['update_schedule'];
         }
         if (isset($post['use_default_update_window']) and strtolower($post['use_default_update_window']) == 'yes') {
             unset($this->link->settings['update/window']);
         } elseif (isset($post['update_window'])) {
             if ((int) $post['update_window'] > 0) {
                 $this->link->settings['update/window'] = (int) $post['update_window'];
             }
         }
     } else {
         // Global
         update_option('feedwordpress_cat_id', $post['syndication_category']);
         if (!isset($post['automatic_updates']) or !in_array($post['automatic_updates'], array('init', 'shutdown'))) {
             $automatic_updates = NULL;
         } else {
             $automatic_updates = $post['automatic_updates'];
         }
         update_option('feedwordpress_automatic_updates', $automatic_updates);
         if (isset($post['update_window'])) {
             if ((int) $post['update_window'] > 0) {
                 update_option('feedwordpress_update_window', (int) $post['update_window']);
             }
         }
         update_option('feedwordpress_update_time_limit', $post['update_time_limit'] == 'yes' ? (int) $post['time_limit_seconds'] : 0);
         foreach (array('name', 'description', 'url') as $what) {
             // We have a checkbox for "No," so if it's unchecked, mark as "Yes."
             $hardcode = isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes';
             update_option("feedwordpress_hardcode_{$what}", $hardcode);
         }
     }
     if (isset($post['fetch_timeout'])) {
         if (isset($post['fetch_timeout_default']) and $post['fetch_timeout_default'] == 'yes') {
             $timeout = NULL;
         } else {
             $timeout = $post['fetch_timeout'];
         }
         if (is_int($timeout)) {
             $timeout = intval($timeout);
         }
         $this->update_setting('fetch timeout', $timeout);
     }
     if (isset($post['update_minimum'])) {
         $this->update_setting('update/minimum', $post['update_minimum']);
     }
     if (isset($post['link_rss_auth_method']) and $post['link_rss_auth_method'] and '-' != $post['link_rss_auth_method']) {
         $this->update_setting('http auth method', $post['link_rss_auth_method']);
     } else {
         $this->update_setting('http auth method', NULL);
     }
     if (isset($post['link_rss_username']) and strlen($post['link_rss_username']) > 0 and '-' != $post['link_rss_auth_method']) {
         $this->update_setting('http username', $post['link_rss_username']);
     } else {
         $this->update_setting('http username', NULL);
     }
     if (isset($post['link_rss_password']) and strlen($post['link_rss_password']) > 0 and '-' != $post['link_rss_auth_method']) {
         $this->update_setting('http password', $post['link_rss_password']);
     } else {
         $this->update_setting('http password', NULL);
     }
     $this->updatedPosts->accept_POST($post);
     parent::save_settings($post);
 }
function fwp_linkedit_page()
{
    global $wpdb, $wp_db_version;
    check_admin_referer();
    // Make sure we arrived here from the Dashboard
    $special_settings = array('cats', 'cat_split', 'hardcode name', 'hardcode url', 'hardcode description', 'hardcode categories', 'post status', 'comment status', 'ping status', 'unfamiliar author', 'unfamliar categories', 'unfamiliar category', 'map authors', 'tags', 'update/.*', 'feed/.*', 'link/.*');
    if (!current_user_can('manage_links')) {
        die(__("Cheatin' uh ?"));
    } elseif (isset($_REQUEST['feedfinder'])) {
        return fwp_feedfinder_page();
        // re-route to Feed Finder page
    } else {
        $link_id = (int) $_REQUEST['link_id'];
        $link =& new SyndicatedLink($link_id);
        if ($link->found()) {
            if (isset($GLOBALS['fwp_post']['save'])) {
                $alter = array();
                // custom feed settings first
                foreach ($GLOBALS['fwp_post']['notes'] as $mn) {
                    $mn['key0'] = trim($mn['key0']);
                    $mn['key1'] = trim($mn['key1']);
                    if (preg_match("^((" . implode(')|(', $special_settings) . "))\$i", $mn['key1'])) {
                        $mn['key1'] = 'user/' . $mn['key1'];
                    }
                    if (strlen($mn['key0']) > 0) {
                        unset($link->settings[$mn['key0']]);
                        // out with the old
                    }
                    if ($mn['action'] == 'update' and strlen($mn['key1']) > 0) {
                        $link->settings[$mn['key1']] = $mn['value'];
                        // in with the new
                    }
                }
                // now stuff through the web form
                // hardcoded feed info
                if (isset($GLOBALS['fwp_post']['hardcode_name'])) {
                    $link->settings['hardcode name'] = $GLOBALS['fwp_post']['hardcode_name'];
                    if (FeedWordPress::affirmative($link->settings, 'hardcode name')) {
                        $alter[] = "link_name = '" . $wpdb->escape($GLOBALS['fwp_post']['name']) . "'";
                    }
                }
                if (isset($GLOBALS['fwp_post']['hardcode_description'])) {
                    $link->settings['hardcode description'] = $GLOBALS['fwp_post']['hardcode_description'];
                    if (FeedWordPress::affirmative($link->settings, 'hardcode description')) {
                        $alter[] = "link_description = '" . $wpdb->escape($GLOBALS['fwp_post']['description']) . "'";
                    }
                }
                if (isset($GLOBALS['fwp_post']['hardcode_url'])) {
                    $link->settings['hardcode url'] = $GLOBALS['fwp_post']['hardcode_url'];
                    if (FeedWordPress::affirmative($link->settings, 'hardcode url')) {
                        $alter[] = "link_url = '" . $wpdb->escape($GLOBALS['fwp_post']['linkurl']) . "'";
                    }
                }
                // Update scheduling
                if (isset($GLOBALS['fwp_post']['update_schedule'])) {
                    $link->settings['update/hold'] = $GLOBALS['fwp_post']['update_schedule'];
                }
                // Categories
                if (isset($GLOBALS['fwp_post']['post_category'])) {
                    $link->settings['cats'] = array();
                    foreach ($GLOBALS['fwp_post']['post_category'] as $cat_id) {
                        $link->settings['cats'][] = '{#' . $cat_id . '}';
                    }
                } else {
                    unset($link->settings['cats']);
                }
                // Tags
                if (isset($GLOBALS['fwp_post']['tags_input'])) {
                    $link->settings['tags'] = array();
                    foreach (explode(',', $GLOBALS['fwp_post']['tags_input']) as $tag) {
                        $link->settings['tags'][] = trim($tag);
                    }
                }
                // Post status, comment status, ping status
                foreach (array('post', 'comment', 'ping') as $what) {
                    $sfield = "feed_{$what}_status";
                    if (isset($GLOBALS['fwp_post'][$sfield])) {
                        if ($GLOBALS['fwp_post'][$sfield] == 'site-default') {
                            unset($link->settings["{$what} status"]);
                        } else {
                            $link->settings["{$what} status"] = $GLOBALS['fwp_post'][$sfield];
                        }
                    }
                }
                // Unfamiliar author, unfamiliar categories
                foreach (array("author", "category") as $what) {
                    $sfield = "unfamiliar_{$what}";
                    if (isset($GLOBALS['fwp_post'][$sfield])) {
                        if ('site-default' == $GLOBALS['fwp_post'][$sfield]) {
                            unset($link->settings["unfamiliar {$what}"]);
                        } elseif ('newuser' == $GLOBALS['fwp_post'][$sfield]) {
                            $newuser_name = trim($GLOBALS['fwp_post']["{$sfield}_newuser"]);
                            if (strlen($newuser_name) > 0) {
                                $userdata = array();
                                $userdata['ID'] = NULL;
                                $userdata['user_login'] = sanitize_user($newuser_name);
                                $userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
                                $userdata['user_nicename'] = sanitize_title($newuser_name);
                                $userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
                                $userdata['display_name'] = $wpdb->escape($newuser_name);
                                $newuser_id = wp_insert_user($userdata);
                                if (is_numeric($newuser_id)) {
                                    $link->settings["unfamiliar {$what}"] = $newuser_id;
                                } else {
                                    // TODO: Add some error detection and reporting
                                }
                            } else {
                                // TODO: Add some error reporting
                            }
                        } else {
                            $link->settings["unfamiliar {$what}"] = $GLOBALS['fwp_post'][$sfield];
                        }
                    }
                }
                // Handle author mapping rules
                if (isset($GLOBALS['fwp_post']['author_rules_name']) and isset($GLOBALS['fwp_post']['author_rules_action'])) {
                    unset($link->settings['map authors']);
                    foreach ($GLOBALS['fwp_post']['author_rules_name'] as $key => $name) {
                        // Normalize for case and whitespace
                        $name = strtolower(trim($name));
                        $author_action = strtolower(trim($GLOBALS['fwp_post']['author_rules_action'][$key]));
                        if (strlen($name) > 0) {
                            if ('newuser' == $author_action) {
                                $newuser_name = trim($GLOBALS['fwp_post']['author_rules_newuser'][$key]);
                                if (strlen($newuser_name) > 0) {
                                    $userdata = array();
                                    $userdata['ID'] = NULL;
                                    $userdata['user_login'] = sanitize_user($newuser_name);
                                    $userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
                                    $userdata['user_nicename'] = sanitize_title($newuser_name);
                                    $userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
                                    $userdata['display_name'] = $wpdb->escape($newuser_name);
                                    $newuser_id = wp_insert_user($userdata);
                                    if (is_numeric($newuser_id)) {
                                        $link->settings['map authors']['name'][$name] = $newuser_id;
                                    } else {
                                        // TODO: Add some error detection and reporting
                                    }
                                } else {
                                    // TODO: Add some error reporting
                                }
                            } else {
                                $link->settings['map authors']['name'][$name] = $author_action;
                            }
                        }
                    }
                }
                if (isset($GLOBALS['fwp_post']['add_author_rule_name']) and isset($GLOBALS['fwp_post']['add_author_rule_action'])) {
                    $name = strtolower(trim($GLOBALS['fwp_post']['add_author_rule_name']));
                    $author_action = strtolower(trim($GLOBALS['fwp_post']['add_author_rule_action']));
                    if (strlen($name) > 0) {
                        if ('newuser' == $author_action) {
                            $newuser_name = trim($GLOBALS['fwp_post']['add_author_rule_newuser']);
                            if (strlen($newuser_name) > 0) {
                                $userdata = array();
                                $userdata['ID'] = NULL;
                                $userdata['user_login'] = sanitize_user($newuser_name);
                                $userdata['user_login'] = apply_filters('pre_user_login', $userdata['user_login']);
                                $userdata['user_nicename'] = sanitize_title($newuser_name);
                                $userdata['user_nicename'] = apply_filters('pre_user_nicename', $userdata['user_nicename']);
                                $userdata['display_name'] = $wpdb->escape($newuser_name);
                                $newuser_id = wp_insert_user($userdata);
                                if (is_numeric($newuser_id)) {
                                    $link->settings['map authors']['name'][$name] = $newuser_id;
                                } else {
                                    // TODO: Add some error detection and reporting
                                }
                            } else {
                                // TODO: Add some error reporting
                            }
                        } else {
                            $link->settings['map authors']['name'][$name] = $author_action;
                        }
                    }
                }
                if (isset($GLOBALS['fwp_post']['cat_split'])) {
                    if (strlen(trim($GLOBALS['fwp_post']['cat_split'])) > 0) {
                        $link->settings['cat_split'] = trim($GLOBALS['fwp_post']['cat_split']);
                    } else {
                        unset($link->settings['cat_split']);
                    }
                }
                $alter[] = "link_notes = '" . $wpdb->escape($link->settings_to_notes()) . "'";
                $alter_set = implode(", ", $alter);
                // issue update query
                $result = $wpdb->query("\n\t\t\t\tUPDATE {$wpdb->links}\n\t\t\t\tSET {$alter_set}\n\t\t\t\tWHERE link_id='{$link_id}'\n\t\t\t\t");
                $updated_link = true;
                // reload link information from DB
                if (function_exists('clean_bookmark_cache')) {
                    clean_bookmark_cache($link_id);
                }
                $link =& new SyndicatedLink($link_id);
            } else {
                $updated_link = false;
            }
            $db_link = $link->link;
            $link_url = wp_specialchars($db_link->link_url, 1);
            $link_name = wp_specialchars($db_link->link_name, 1);
            $link_description = wp_specialchars($db_link->link_description, 'both');
            $link_rss_uri = wp_specialchars($db_link->link_rss, 'both');
            $post_status_global = get_option('feedwordpress_syndicated_post_status');
            $comment_status_global = get_option('feedwordpress_syndicated_comment_status');
            $ping_status_global = get_option('feedwordpress_syndicated_ping_status');
            $status['post'] = array('publish' => '', 'private' => '', 'draft' => '', 'site-default' => '');
            if (SyndicatedPost::use_api('post_status_pending')) {
                $status['post']['pending'] = '';
            }
            $status['comment'] = array('open' => '', 'closed' => '', 'site-default' => '');
            $status['ping'] = array('open' => '', 'closed' => '', 'site-default' => '');
            foreach (array('post', 'comment', 'ping') as $what) {
                if (isset($link->settings["{$what} status"])) {
                    $status[$what][$link->settings["{$what} status"]] = ' checked="checked"';
                } else {
                    $status[$what]['site-default'] = ' checked="checked"';
                }
            }
            $unfamiliar['author'] = array('create' => '', 'default' => '', 'filter' => '');
            $unfamiliar['category'] = array('create' => '', 'tag' => '', 'default' => '', 'filter' => '');
            foreach (array('author', 'category') as $what) {
                if (is_string($link->settings["unfamiliar {$what}"]) and array_key_exists($link->settings["unfamiliar {$what}"], $unfamiliar[$what])) {
                    $key = $link->settings["unfamiliar {$what}"];
                } else {
                    $key = 'site-default';
                }
                $unfamiliar[$what][$key] = ' checked="checked"';
            }
            if (is_array($link->settings['cats'])) {
                $cats = $link->settings['cats'];
            } else {
                $cats = array();
            }
            $dogs = SyndicatedPost::category_ids($cats, NULL);
        } else {
            die(__('Link not found.'));
        }
        ?>
<script type="text/javascript">
	function flip_hardcode (item) {
		ed=document.getElementById('basics-'+item+'-edit');
		view=document.getElementById('basics-'+item+'-view');
		
		o = document.getElementById('basics-hardcode-'+item);
		if (o.value=='yes') { ed.style.display='inline'; view.style.display='none'; }
		else { ed.style.display='none'; view.style.display='inline'; }
	}
	function flip_newuser (item) {
		rollup=document.getElementById(item);
		newuser=document.getElementById(item+'-newuser');
		sitewide=document.getElementById(item+'-default');
		if (rollup) {
			if ('newuser'==rollup.value) {
				if (newuser) newuser.style.display='block';
				if (sitewide) sitewide.style.display='none';
			} else if ('site-default'==rollup.value) {
				if (newuser) newuser.style.display='none';
				if (sitewide) sitewide.style.display='block';
			} else {
				if (newuser) newuser.style.display='none';
				if (sitewide) sitewide.style.display='none';
			}
		}
	}
</script>

<?php 
        if ($updated_link) {
            ?>
<div class="updated"><p>Syndicated feed settings updated.</p></div>
<?php 
        }
        ?>

<form action="admin.php?page=<?php 
        print $GLOBALS['fwp_path'];
        ?>
/<?php 
        echo basename(__FILE__);
        ?>
" method="post">
<div class="wrap">
<input type="hidden" name="link_id" value="<?php 
        echo $link_id;
        ?>
" />
<input type="hidden" name="action" value="linkedit" />
<input type="hidden" name="save" value="link" />

<h2>Edit a syndicated feed:</h2>
<div id="poststuff">
<?php 
        fwp_linkedit_single_submit($status);
        ?>

<div id="post-body">
<?php 
        fwp_option_box_opener('Feed Information', 'feedinformationdiv');
        ?>
	<table class="editform" width="100%" cellspacing="2" cellpadding="5">
	<tr>
	<th scope="row" width="20%"><?php 
        _e('Feed URI:');
        ?>
</th>
	<td width="60%"><a href="<?php 
        echo wp_specialchars($link_rss_uri, 'both');
        ?>
"><?php 
        echo $link_rss_uri;
        ?>
</a>
	(<a href="<?php 
        echo FEEDVALIDATOR_URI;
        ?>
?url=<?php 
        echo urlencode($link_rss_uri);
        ?>
"
	title="Check feed &lt;<?php 
        echo wp_specialchars($link_rss_uri, 'both');
        ?>
&gt; for validity">validate</a>)
	</td>
	<td width="20%"><input type="submit" name="feedfinder" value="switch &rarr;" style="font-size:smaller" /></td>
	</tr>
	<tr>
	<th scope="row" width="20%"><?php 
        _e('Link Name:');
        ?>
</th>
	<td width="60%"><input type="text" id="basics-name-edit" name="name"
	value="<?php 
        echo $link_name;
        ?>
" style="width: 95%" />
	<span id="basics-name-view"><strong><?php 
        echo $link_name;
        ?>
</strong></span>
	</td>
	<td>
	<select id="basics-hardcode-name" onchange="flip_hardcode('name')" name="hardcode_name">
	<option value="no" <?php 
        echo $link->hardcode('name') ? '' : 'selected="selected"';
        ?>
>update automatically</option>
	<option value="yes" <?php 
        echo $link->hardcode('name') ? 'selected="selected"' : '';
        ?>
>edit manually</option>
	</select>
	</td>
	</tr>
	<tr>
	<th scope="row" width="20%"><?php 
        _e('Short description:');
        ?>
</th>
	<td width="60%">
	<input id="basics-description-edit" type="text" name="description" value="<?php 
        echo $link_description;
        ?>
" style="width: 95%" />
	<span id="basics-description-view"><strong><?php 
        echo $link_description;
        ?>
</strong></span>
	</td>
	<td>
	<select id="basics-hardcode-description" onchange="flip_hardcode('description')"
	name="hardcode_description">
	<option value="no" <?php 
        echo $link->hardcode('description') ? '' : 'selected="selected"';
        ?>
>update automatically</option>
	<option value="yes" <?php 
        echo $link->hardcode('description') ? 'selected="selected"' : '';
        ?>
>edit manually</option>
	</select></td>
	</tr>
	<tr>
	<th width="20%" scope="row"><?php 
        _e('Homepage:');
        ?>
</th>
	<td width="60%">
	<input id="basics-url-edit" type="text" name="linkurl" value="<?php 
        echo $link_url;
        ?>
" style="width: 95%;" />
	<a id="basics-url-view" href="<?php 
        echo $link_url;
        ?>
"><?php 
        echo $link_url;
        ?>
</a></td>
	<td>
	<select id="basics-hardcode-url" onchange="flip_hardcode('url')" name="hardcode_url">
	<option value="no"<?php 
        echo $link->hardcode('url') ? '' : ' selected="selected"';
        ?>
>update automatically</option>
	<option value="yes"<?php 
        echo $link->hardcode('url') ? ' selected="selected"' : '';
        ?>
>edit manually</option>
	</select></td></tr>
	
	<tr>
	<th width="20%"><?php 
        _e('Last update');
        ?>
:</th>
	<td colspan="2"><?php 
        if (isset($link->settings['update/last'])) {
            echo fwp_time_elapsed($link->settings['update/last']) . " ";
        } else {
            echo " none yet";
        }
        ?>
</td></tr>
	<tr><th width="20%">Next update:</th>
	<td colspan="2"><?php 
        $holdem = isset($link->settings['update/hold']) ? $link->settings['update/hold'] : 'scheduled';
        ?>
	<select name="update_schedule">
	<option value="scheduled"<?php 
        echo $holdem == 'scheduled' ? ' selected="selected"' : '';
        ?>
>update on schedule <?php 
        echo " (";
        if (isset($link->settings['update/ttl']) and is_numeric($link->settings['update/ttl'])) {
            if (isset($link->settings['update/timed']) and $link->settings['update/timed'] == 'automatically') {
                echo 'next: ';
                $next = $link->settings['update/last'] + (int) $link->settings['update/ttl'] * 60;
                if (strftime('%x', time()) != strftime('%x', $next)) {
                    echo strftime('%x', $next) . " ";
                }
                echo strftime('%X', $link->settings['update/last'] + (int) $link->settings['update/ttl'] * 60);
            } else {
                echo "every " . $link->settings['update/ttl'] . " minute" . ($link->settings['update/ttl'] != 1 ? "s" : "");
            }
        } else {
            echo "next scheduled update";
        }
        echo ")";
        ?>
</option>
	<option value="next"<?php 
        echo $holdem == 'next' ? ' selected="selected"' : '';
        ?>
>update ASAP</option>
	<option value="ping"<?php 
        echo $holdem == 'ping' ? ' selected="selected"' : '';
        ?>
>update only when pinged</option>
	</select></tr>
	</table>
<?php 
        fwp_option_box_closer();
        ?>

<script type="text/javascript">
flip_hardcode('name');
flip_hardcode('description');
flip_hardcode('url');
</script>

<?php 
        fwp_linkedit_periodic_submit();
        ?>

<?php 
        if (!(isset($wp_db_version) and $wp_db_version >= FWP_SCHEMA_25)) {
            fwp_option_box_opener('Syndicated Posts', 'syndicatedpostsdiv', 'postbox');
            ?>
<table class="editform" width="75%" cellspacing="2" cellpadding="5">
<tr><th width="27%" scope="row" style="vertical-align:top">Publication:</th>
<td width="73%" style="vertical-align:top"><ul style="margin:0; list-style:none">
<li><label><input type="radio" name="feed_post_status" value="site-default"
<?php 
            echo $status['post']['site-default'];
            ?>
 /> Use site-wide setting from <a href="admin.php?page=<?php 
            print $GLOBALS['fwp_path'];
            ?>
/syndication-options.php">Syndication Options</a>
(currently: <strong><?php 
            echo $post_status_global ? $post_status_global : 'publish';
            ?>
</strong>)</label></li>
<li><label><input type="radio" name="feed_post_status" value="publish"
<?php 
            echo $status['post']['publish'];
            ?>
 /> Publish posts from this feed immediately</label></li>

<?php 
            if (SyndicatedPost::use_api('post_status_pending')) {
                ?>
<li><label><input type="radio" name="feed_post_status" value="pending"
<?php 
                echo $status['post']['pending'];
                ?>
/> Hold posts from this feed for review; mark as Pending</label></li>
<?php 
            }
            ?>

<li><label><input type="radio" name="feed_post_status" value="draft"
<?php 
            echo $status['post']['draft'];
            ?>
 /> Save posts from this feed as drafts</label></li>
<li><label><input type="radio" name="feed_post_status" value="private"
<?php 
            echo $status['post']['private'];
            ?>
 /> Save posts from this feed as private posts</label></li>
</ul></td>
</tr>
</table>
<?php 
            fwp_option_box_closer();
            fwp_linkedit_periodic_submit();
        }
        fwp_option_box_opener(__('Categories'), 'categorydiv', 'postbox');
        fwp_category_box($dogs, 'all syndicated posts from this feed');
        ?>
<table>
<tr>
<th width="20%" scope="row" style="vertical-align:top">Unfamiliar categories:</th>
<td width="80%"><p>When one of the categories on a syndicated post is a category that FeedWordPress has not encountered before ...</p>

<ul style="margin: 0; list-style:none">
<li><label><input type="radio" name="unfamiliar_category" value="site-default"<?php 
        echo $unfamiliar['category']['site-default'];
        ?>
 /> use the site-wide setting from <a href="admin.php?page=<?php 
        print $GLOBALS['fwp_path'];
        ?>
/syndication-options.php">Syndication Options</a>
(currently <strong><?php 
        echo FeedWordPress::on_unfamiliar('category');
        ?>
</strong>)</label></li>
<li><label><input type="radio" name="unfamiliar_category" value="create"<?php 
        echo $unfamiliar['category']['create'];
        ?>
 /> create a new category</label></li>
<?php 
        if (fwp_test_wp_version(FWP_SCHEMA_23)) {
            ?>
<li><label><input type="radio" name="unfamiliar_category" value="tag"<?php 
            echo $unfamiliar['category']['tag'];
            ?>
/> create a new tag</label></li>
<?php 
        }
        ?>
<li><label><input type="radio" name="unfamiliar_category" value="default"<?php 
        echo $unfamiliar['category']['default'];
        ?>
 /> don't create new categories<?php 
        if (fwp_test_wp_version(FWP_SCHEMA_23)) {
            ?>
 or tags<?php 
        }
        ?>
</label></li>
<li><label><input type="radio" name="unfamiliar_category" value="filter"<?php 
        echo $unfamiliar['category']['filter'];
        ?>
 /> don't create new categories<?php 
        if (fwp_test_wp_version(FWP_SCHEMA_23)) {
            ?>
 or tags<?php 
        }
        ?>
 and don't syndicate posts unless they match at least one familiar category</label></li>
</ul></td>
</tr>

<tr>
<th width="20%" scope="row" style="vertical-align:top">Multiple categories:</th>
<td width="80%"> 
<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']);
        }
        ?>
" /><br/>
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
categories in a single category element. The regular expression should match
the characters used to separate one category from the next. If the feed uses
spaces (like <a href="http://del.icio.us/">del.icio.us</a>), use the pattern "\s".
If the feed does not provide multiple categories in a single element, leave this
blank.</td>
</tr>
</table>
<?php 
        fwp_option_box_closer();
        fwp_linkedit_periodic_submit();
        if (isset($wp_db_version) and $wp_db_version >= FWP_SCHEMA_25) {
            fwp_tags_box($link->settings['tags']);
            fwp_linkedit_periodic_submit();
        }
        ?>

<?php 
        fwp_option_box_opener('Syndicated Authors', 'authordiv', 'postbox');
        $authorlist = fwp_author_list();
        ?>
<table>
<tr><th colspan="3" style="text-align: left; padding-top: 1.0em; border-bottom: 1px dotted black;">For posts by authors that haven't been syndicated before:</th></tr>
<tr>
  <th style="text-align: left">Posts by new authors</th>
  <td> 
  <select id="unfamiliar-author" name="unfamiliar_author" onchange="flip_newuser('unfamiliar-author');">
    <option value="site-default"<?php 
        if (!isset($link->settings['unfamiliar author'])) {
            ?>
selected="selected"<?php 
        }
        ?>
>are handled using site-wide settings</option>
    <option value="create"<?php 
        if ('create' == $link->settings['unfamiliar author']) {
            ?>
selected="selected"<?php 
        }
        ?>
>create a new author account</option>
    <?php 
        foreach ($authorlist as $author_id => $author_name) {
            ?>
      <option value="<?php 
            echo $author_id;
            ?>
"<?php 
            if ($author_id == $link->settings['unfamiliar author']) {
                ?>
selected="selected"<?php 
            }
            ?>
>are assigned to <?php 
            echo $author_name;
            ?>
</option>
    <?php 
        }
        ?>
    <option value="newuser">will be assigned to a new user...</option>
    <option value="filter"<?php 
        if ('filter' == $link->settings['unfamiliar author']) {
            ?>
selected="selected"<?php 
        }
        ?>
>get filtered out</option>
  </select>
  </td>
  <td>
  <div id="unfamiliar-author-default">Site-wide settings can be set in <a href="admin.php?page=<?php 
        print $GLOBALS['fwp_path'];
        ?>
/syndication-options.php">Syndication Options</a></div>
  <div id="unfamiliar-author-newuser">named <input type="text" name="unfamiliar_author_newuser" value="" /></div>
  </td>
</tr>

<tr><th colspan="3" style="text-align: left; padding-top: 1.0em; border-bottom: 1px dotted black;">For posts by specific authors. Blank out a name to delete the rule.</th></tr>

<?php 
        if (isset($link->settings['map authors'])) {
            $i = 0;
            foreach ($link->settings['map authors'] as $author_rules) {
                foreach ($author_rules as $author_name => $author_action) {
                    $i++;
                    ?>
<tr>
  <th style="text-align: left">Posts by <input type="text" name="author_rules_name[]" value="<?php 
                    echo htmlspecialchars($author_name);
                    ?>
" /></th>
  <td>
  <select id="author-rules-<?php 
                    echo $i;
                    ?>
" name="author_rules_action[]" onchange="flip_newuser('author-rules-<?php 
                    echo $i;
                    ?>
');">
    <?php 
                    foreach ($authorlist as $local_author_id => $local_author_name) {
                        ?>
    <option value="<?php 
                        echo $local_author_id;
                        ?>
"<?php 
                        if ($local_author_id == $author_action) {
                            echo ' selected="selected"';
                        }
                        ?>
>are assigned to <?php 
                        echo $local_author_name;
                        ?>
</option>
    <?php 
                    }
                    ?>
    <option value="newuser">will be assigned to a new user...</option>
    <option value="filter"<?php 
                    if ('filter' == $author_action) {
                        echo ' selected="selected"';
                    }
                    ?>
>get filtered out</option>
  </select>
  </td>
  <td><div id="author-rules-<?php 
                    echo $i;
                    ?>
-newuser">named <input type="text" name="author_rules_newuser[]" value="" /></div></td>
</tr>
<?php 
                }
            }
        }
        ?>

<tr><th colspan="3" style="text-align: left; padding-top: 1.0em; border-bottom: 1px dotted black;">Fill in to set up a new rule:</th></tr>

<tr>
  <th style="text-align: left">Posts by <input type="text" name="add_author_rule_name" /></th>
  <td>
    <select id="add-author-rule" name="add_author_rule_action" onchange="flip_newuser('add-author-rule');">
      <?php 
        foreach ($authorlist as $author_id => $author_name) {
            ?>
      <option value="<?php 
            echo $author_id;
            ?>
">are assigned to <?php 
            echo $author_name;
            ?>
</option>
      <?php 
        }
        ?>
      <option value="newuser">will be assigned to a new user...</option>
      <option value="filter">get filtered out</option>
    </select>
  </td>
  <td><div id="add-author-rule-newuser">named <input type="text" name="add_author_rule_newuser" value="" /></div></td>
</tr>

</table>
<?php 
        fwp_option_box_closer();
        ?>

<script>
	flip_newuser('unfamiliar-author');
<?php 
        for ($j = 1; $j <= $i; $j++) {
            ?>
	flip_newuser('author-rules-<?php 
            echo $j;
            ?>
');
<?php 
        }
        ?>
	flip_newuser('add-author-rule');
</script>

<?php 
        fwp_linkedit_periodic_submit();
        fwp_option_box_opener('Comments & Pings', 'commentstatusdiv', 'postbox');
        ?>
<table class="editform" width="75%" cellspacing="2" cellpadding="5">
<tr><th width="27%" scope="row" style="vertical-align:top"><?php 
        print __('Comments');
        ?>
:</th>
<td width="73%"><ul style="margin:0; list-style:none">
<li><label><input type="radio" name="feed_comment_status" value="site-default"
<?php 
        echo $status['comment']['site-default'];
        ?>
 /> Use site-wide setting from <a href="admin.php?page=<?php 
        print $GLOBALS['fwp_path'];
        ?>
/syndication-options.php">Syndication Options</a>
(currently: <strong><?php 
        echo $comment_status_global ? $comment_status_global : 'closed';
        ?>
)</strong></label></li>
<li><label><input type="radio" name="feed_comment_status" value="open"
<?php 
        echo $status['comment']['open'];
        ?>
 /> Allow comments on syndicated posts from this feed</label></li>
<li><label><input type="radio" name="feed_comment_status" value="closed"
<?php 
        echo $status['comment']['closed'];
        ?>
 /> Don't allow comments on syndicated posts from this feed</label></li>
</ul></td></tr>

<tr><th width="27%" scope="row" style="vertical-align:top"><?php 
        print __('Pings');
        ?>
:</th>
<td width="73%"><ul style="margin:0; list-style:none">
<li><label><input type="radio" name="feed_ping_status" value="site-default"
<?php 
        echo $status['ping']['site-default'];
        ?>
 /> Use site-wide setting from <a href="admin.php?page=<?php 
        print $GLOBALS['fwp_path'];
        ?>
/syndication-options.php">Syndication Options</a>
(currently: <strong><?php 
        echo $ping_status_global ? $ping_status_global : 'closed';
        ?>
)</strong></label></li>
<li><label><input type="radio" name="feed_ping_status" value="open"
<?php 
        echo $status['ping']['open'];
        ?>
 /> Accept pings on syndicated posts from this feed</label></li>
<li><label><input type="radio" name="feed_ping_status" value="closed"
<?php 
        echo $status['ping']['closed'];
        ?>
 /> Don't accept pings on syndicated posts from this feed</label></li>
</ul></td></tr>

</table>
<?php 
        fwp_option_box_closer();
        fwp_linkedit_periodic_submit();
        ?>

<?php 
        fwp_option_box_opener('Custom Settings (for use in templates)', 'postcustom', 'postbox');
        ?>
<div id="postcustomstuff">
<table id="meta-list" cellpadding="3">
	<tr>
	<th>Key</th>
	<th>Value</th>
	<th>Action</th>
	</tr>

<?php 
        $i = 0;
        foreach ($link->settings as $key => $value) {
            if (!preg_match("^((" . implode(')|(', $special_settings) . "))\$i", $key)) {
                ?>
			<tr style="vertical-align:top">
			<th width="30%" scope="row"><input type="hidden" name="notes[<?php 
                echo $i;
                ?>
][key0]" value="<?php 
                echo wp_specialchars($key, 'both');
                ?>
" />
			<input id="notes-<?php 
                echo $i;
                ?>
-key" name="notes[<?php 
                echo $i;
                ?>
][key1]" value="<?php 
                echo wp_specialchars($key, 'both');
                ?>
" /></th>
			<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>
			<td width="10%"><select name="notes[<?php 
                echo $i;
                ?>
][action]">
			<option value="update">save changes</option>
			<option value="delete">delete this setting</option>
			</select></td>
			</tr>
<?php 
                $i++;
            }
        }
        ?>
	<tr>
	<th scope="row"><input type="text" size="10" name="notes[<?php 
        echo $i;
        ?>
][key1]" value="" /></th>
	<td><textarea name="notes[<?php 
        echo $i;
        ?>
][value]" rows="2" cols="40"></textarea></td>
	<td><em>add new setting...</em><input type="hidden" name="notes[<?php 
        echo $i;
        ?>
][action]" value="update" /></td>
	</tr>
</table>
<?php 
        fwp_option_box_closer();
        ?>

<?php 
        fwp_linkedit_periodic_submit();
        fwp_linkedit_single_submit_closer();
        ?>
</div> <!-- id="post-body" -->
</div> <!-- id="poststuff" -->
</div>
	<?php 
    }
    return false;
    // Don't continue
}
コード例 #4
0
 function accept_POST($post)
 {
     // User mashed a Save Changes button
     if (isset($post['save']) or isset($post['submit'])) {
         if ($this->for_feed_settings()) {
             $alter = array();
             // custom feed settings first
             foreach ($post['notes'] as $mn) {
                 $mn['key0'] = trim($mn['key0']);
                 $mn['key1'] = trim($mn['key1']);
                 if (preg_match("^((" . implode(')|(', $this->special_settings) . "))\$i", $mn['key1'])) {
                     $mn['key1'] = 'user/' . $mn['key1'];
                 }
                 if (strlen($mn['key0']) > 0) {
                     unset($this->link->settings[$mn['key0']]);
                     // out with the old
                 }
                 if ($mn['action'] == 'update' and strlen($mn['key1']) > 0) {
                     $this->link->settings[$mn['key1']] = $mn['value'];
                     // in with the new
                 }
             }
             // now stuff through the web form
             // hardcoded feed info
             foreach (array('name', 'description', 'url') as $what) {
                 // We have a checkbox for "No," so if it's unchecked, mark as "Yes."
                 $this->link->settings["hardcode {$what}"] = isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes';
                 if (FeedWordPress::affirmative($this->link->settings, "hardcode {$what}")) {
                     $this->link->link->{'link_' . $what} = $post['link' . $what];
                 }
             }
             // Update scheduling
             if (isset($post['update_schedule'])) {
                 $this->link->settings['update/hold'] = $post['update_schedule'];
             }
             if (isset($post['use_default_update_window']) and strtolower($post['use_default_update_window']) == 'yes') {
                 unset($this->link->settings['update/window']);
             } elseif (isset($post['update_window'])) {
                 if ((int) $post['update_window'] > 0) {
                     $this->link->settings['update/window'] = (int) $post['update_window'];
                 }
             }
         } else {
             // Global
             update_option('feedwordpress_cat_id', $post['syndication_category']);
             if (!isset($post['automatic_updates']) or !in_array($post['automatic_updates'], array('init', 'shutdown'))) {
                 $automatic_updates = false;
             } else {
                 $automatic_updates = $post['automatic_updates'];
             }
             update_option('feedwordpress_automatic_updates', $automatic_updates);
             if (isset($post['update_window'])) {
                 if ((int) $post['update_window'] > 0) {
                     update_option('feedwordpress_update_window', (int) $post['update_window']);
                 }
             }
             update_option('feedwordpress_update_time_limit', $post['update_time_limit'] == 'yes' ? (int) $post['time_limit_seconds'] : 0);
             foreach (array('name', 'description', 'url') as $what) {
                 // We have a checkbox for "No," so if it's unchecked, mark as "Yes."
                 $hardcode = isset($post["hardcode_{$what}"]) ? $post["hardcode_{$what}"] : 'yes';
                 update_option("feedwordpress_hardcode_{$what}", $hardcode);
             }
             $this->updated = true;
         }
         $this->updatedPosts->accept_POST($post);
         if ($this->for_feed_settings()) {
             // Save settings
             $this->link->save_settings(true);
             $this->updated = true;
             // Reset, reload
             $link_id = $this->link->id;
             unset($this->link);
             $this->link = new SyndicatedLink($link_id);
         }
         // Probably a "Go" button for the drop-down
     } else {
         $this->updated = false;
     }
 }
コード例 #5
0
 function hardcode($what)
 {
     $default = get_option("feedwordpress_hardcode_{$what}");
     if ($default === 'yes') {
         // If the default is to hardcode, then we want the
         // negation of negative(): TRUE by default and FALSE if
         // the setting is explicitly "no"
         $ret = !FeedWordPress::negative($this->settings, "hardcode {$what}");
     } else {
         // If the default is NOT to hardcode, then we want
         // affirmative(): FALSE by default and TRUE if the
         // setting is explicitly "yes"
         $ret = FeedWordPress::affirmative($this->settings, "hardcode {$what}");
     }
     return $ret;
 }