/** * Remove user and optionally reassign posts and links to another user. * * If the $reassign parameter is not assigned to a User ID, then all posts will * be deleted of that user. The action 'delete_user' that is passed the User ID * being deleted will be run after the posts are either reassigned or deleted. * The user meta will also be deleted that are for that User ID. * * @since 2.0.0 * * @global wpdb $wpdb WordPress database abstraction object. * * @param int $id User ID. * @param int $reassign Optional. Reassign posts and links to new User ID. * @return bool True when finished. */ function wp_delete_user($id, $reassign = null) { global $wpdb; if (!is_numeric($id)) { return false; } $id = (int) $id; $user = new WP_User($id); if (!$user->exists()) { return false; } // Normalize $reassign to null or a user ID. 'novalue' was an older default. if ('novalue' === $reassign) { $reassign = null; } elseif (null !== $reassign) { $reassign = (int) $reassign; } /** * Fires immediately before a user is deleted from the database. * * @since 2.0.0 * * @param int $id ID of the user to delete. * @param int|null $reassign ID of the user to reassign posts and links to. * Default null, for no reassignment. */ do_action('delete_user', $id, $reassign); if (null === $reassign) { $post_types_to_delete = array(); foreach (get_post_types(array(), 'objects') as $post_type) { if ($post_type->delete_with_user) { $post_types_to_delete[] = $post_type->name; } elseif (null === $post_type->delete_with_user && post_type_supports($post_type->name, 'author')) { $post_types_to_delete[] = $post_type->name; } } /** * Filter the list of post types to delete with a user. * * @since 3.4.0 * * @param array $post_types_to_delete Post types to delete. * @param int $id User ID. */ $post_types_to_delete = apply_filters('post_types_to_delete_with_user', $post_types_to_delete, $id); $post_types_to_delete = implode("', '", $post_types_to_delete); $post_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_author = %d AND post_type IN ('{$post_types_to_delete}')", $id)); if ($post_ids) { foreach ($post_ids as $post_id) { wp_delete_post($post_id); } } // Clean links $link_ids = $wpdb->get_col($wpdb->prepare("SELECT link_id FROM {$wpdb->links} WHERE link_owner = %d", $id)); if ($link_ids) { foreach ($link_ids as $link_id) { wp_delete_link($link_id); } } } else { $post_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_author = %d", $id)); $wpdb->update($wpdb->posts, array('post_author' => $reassign), array('post_author' => $id)); if (!empty($post_ids)) { foreach ($post_ids as $post_id) { clean_post_cache($post_id); } } $link_ids = $wpdb->get_col($wpdb->prepare("SELECT link_id FROM {$wpdb->links} WHERE link_owner = %d", $id)); $wpdb->update($wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id)); if (!empty($link_ids)) { foreach ($link_ids as $link_id) { clean_bookmark_cache($link_id); } } } // FINALLY, delete user if (is_multisite()) { remove_user_from_blog($id, get_current_blog_id()); } else { $meta = $wpdb->get_col($wpdb->prepare("SELECT umeta_id FROM {$wpdb->usermeta} WHERE user_id = %d", $id)); foreach ($meta as $mid) { delete_metadata_by_mid('user', $mid); } $wpdb->delete($wpdb->users, array('ID' => $id)); } clean_user_cache($user); /** * Fires immediately after a user is deleted from the database. * * @since 2.9.0 * * @param int $id ID of the deleted user. * @param int|null $reassign ID of the user to reassign posts and links to. * Default null, for no reassignment. */ do_action('deleted_user', $id, $reassign); return true; }
function link_library_insert_link($linkdata, $wp_error = false, $addlinknoaddress = false) { global $wpdb; $defaults = array('link_id' => 0, 'link_name' => '', 'link_url' => '', 'link_rating' => 0); $linkdata = wp_parse_args($linkdata, $defaults); $linkdata = sanitize_bookmark($linkdata, 'db'); extract(stripslashes_deep($linkdata), EXTR_SKIP); $update = false; if (!empty($link_id)) { $update = true; } if (isset($link_name) && trim($link_name) == '') { if (isset($link_url) && trim($link_url) != '') { $link_name = $link_url; } else { return 0; } } if ($addlinknoaddress == false) { if (trim($link_url) == '') { return 0; } } if (empty($link_rating)) { $link_rating = 0; } if (empty($link_image)) { $link_image = ''; } if (empty($link_target)) { $link_target = ''; } if (empty($link_visible)) { $link_visible = 'Y'; } if (empty($link_owner)) { $link_owner = get_current_user_id(); } if (empty($link_notes)) { $link_notes = ''; } if (empty($link_description)) { $link_description = ''; } if (empty($link_rss)) { $link_rss = ''; } if (empty($link_rel)) { $link_rel = ''; } // Make sure we set a valid category if (!isset($link_category) || 0 == count($link_category) || !is_array($link_category)) { $link_category = array(get_option('default_link_category')); } if ($update) { if (false === $wpdb->update($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_rating', 'link_rel', 'link_notes', 'link_rss'), compact('link_id'))) { if ($wp_error) { return new WP_Error('db_update_error', __('Could not update link in the database', 'link-library'), $wpdb->last_error); } else { return 0; } } } else { if (false === $wpdb->insert($wpdb->links, compact('link_url', 'link_name', 'link_image', 'link_target', 'link_description', 'link_visible', 'link_owner', 'link_rating', 'link_rel', 'link_notes', 'link_rss'))) { if ($wp_error) { return new WP_Error('db_insert_error', __('Could not insert link into the database', 'link-library'), $wpdb->last_error); } else { return 0; } } $link_id = (int) $wpdb->insert_id; } wp_set_link_cats($link_id, $link_category); if ($update) { do_action('edit_link', $link_id); } else { do_action('add_link', $link_id); } clean_bookmark_cache($link_id); return $link_id; }
/** * Remove user and optionally reassign posts and links to another user. * * If the $reassign parameter is not assigned to an User ID, then all posts will * be deleted of that user. The action 'delete_user' that is passed the User ID * being deleted will be run after the posts are either reassigned or deleted. * The user meta will also be deleted that are for that User ID. * * @since 2.0.0 * * @param int $id User ID. * @param int $reassign Optional. Reassign posts and links to new User ID. * @return bool True when finished. */ function wp_delete_user($id, $reassign = 'novalue') { global $wpdb; $id = (int) $id; $user = new WP_User($id); if (!$user->exists()) { return false; } // allow for transaction statement do_action('delete_user', $id); if ('novalue' === $reassign || null === $reassign) { $post_types_to_delete = array(); foreach (get_post_types(array(), 'objects') as $post_type) { if ($post_type->delete_with_user) { $post_types_to_delete[] = $post_type->name; } elseif (null === $post_type->delete_with_user && post_type_supports($post_type->name, 'author')) { $post_types_to_delete[] = $post_type->name; } } $post_types_to_delete = apply_filters('post_types_to_delete_with_user', $post_types_to_delete, $id); $post_types_to_delete = implode("', '", $post_types_to_delete); $post_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_author = %d AND post_type IN ('{$post_types_to_delete}')", $id)); if ($post_ids) { foreach ($post_ids as $post_id) { wp_delete_post($post_id); } } // Clean links $link_ids = $wpdb->get_col($wpdb->prepare("SELECT link_id FROM {$wpdb->links} WHERE link_owner = %d", $id)); if ($link_ids) { foreach ($link_ids as $link_id) { wp_delete_link($link_id); } } } else { $reassign = (int) $reassign; $post_ids = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} WHERE post_author = %d", $id)); $wpdb->update($wpdb->posts, array('post_author' => $reassign), array('post_author' => $id)); if (!empty($post_ids)) { foreach ($post_ids as $post_id) { clean_post_cache($post_id); } } $link_ids = $wpdb->get_col($wpdb->prepare("SELECT link_id FROM {$wpdb->links} WHERE link_owner = %d", $id)); $wpdb->update($wpdb->links, array('link_owner' => $reassign), array('link_owner' => $id)); if (!empty($link_ids)) { foreach ($link_ids as $link_id) { clean_bookmark_cache($link_id); } } } // FINALLY, delete user if (is_multisite()) { remove_user_from_blog($id, get_current_blog_id()); } else { $meta = $wpdb->get_col($wpdb->prepare("SELECT umeta_id FROM {$wpdb->usermeta} WHERE user_id = %d", $id)); foreach ($meta as $mid) { delete_metadata_by_mid('user', $mid); } $wpdb->delete($wpdb->users, array('ID' => $id)); } clean_user_cache($user); // allow for commit transaction do_action('deleted_user', $id); return true; }
function save_settings ($reload = false) { global $wpdb; // Save channel-level meta-data foreach (array('link_name', 'link_description', 'link_url') as $what) : $alter[] = "{$what} = '".$wpdb->escape($this->link->{$what})."'"; endforeach; // Save settings to the notes field $alter[] = "link_notes = '".$wpdb->escape($this->settings_to_notes())."'"; // Update the properties of the link from settings changes, etc. $update_set = implode(", ", $alter); $result = $wpdb->query(" UPDATE $wpdb->links SET $update_set WHERE link_id='$this->id' "); if ($reload) : // force reload of link information from DB if (function_exists('clean_bookmark_cache')) : clean_bookmark_cache($this->id); endif; endif; } /* SyndicatedLink::save_settings () */
/** * {@internal Missing Short Description}} * * @since unknown * * @param unknown_type $link_id * @param unknown_type $link_categories */ function wp_set_link_cats( $link_id = 0, $link_categories = array() ) { // If $link_categories isn't already an array, make it one: if ( !is_array( $link_categories ) || 0 == count( $link_categories ) ) $link_categories = array( get_option( 'default_link_category' ) ); $link_categories = array_map( 'intval', $link_categories ); $link_categories = array_unique( $link_categories ); wp_set_object_terms( $link_id, $link_categories, 'link_category' ); clean_bookmark_cache( $link_id ); } // wp_set_link_cats()
function save_settings($reload = false) { global $wpdb; // Save channel-level meta-data foreach (array('link_name', 'link_description', 'link_url') as $what) { $alter[] = "{$what} = '" . esc_sql($this->link->{$what}) . "'"; } // Save settings to the notes field $alter[] = "link_notes = '" . esc_sql($this->settings_to_notes()) . "'"; // Update the properties of the link from settings changes, etc. $update_set = implode(", ", $alter); $result = $wpdb->query("\n\t\tUPDATE {$wpdb->links}\n\t\tSET {$update_set}\n\t\tWHERE link_id='{$this->id}'\n\t\t"); if ($reload) { // force reload of link information from DB if (function_exists('clean_bookmark_cache')) { clean_bookmark_cache($this->id); } } }
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 <<?php echo wp_specialchars($link_rss_uri, 'both'); ?> > for validity">validate</a>) </td> <td width="20%"><input type="submit" name="feedfinder" value="switch →" 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 }
function save_settings($reload = false) { $link = get_bookmark($this->id, ARRAY_A); // Save channel-level meta-data foreach (array('link_name', 'link_description', 'link_url') as $what) { $link[$what] = $this->link->{$what}; } // Save settings to the notes field $link['link_notes'] = $this->settings_to_notes(); $result = wp_update_link($link); if ($reload) { // force reload of link information from DB if (function_exists('clean_bookmark_cache')) { clean_bookmark_cache($this->id); } } }
function fwp_authors_page() { global $wpdb, $wp_db_version; check_admin_referer(); // Make sure we arrived here from the Dashboard if (isset($GLOBALS['fwp_post']['save']) or isset($GLOBALS['fwp_post']['fix_mismatch'])) { $link_id = $_REQUEST['save_link_id']; } elseif (isset($_REQUEST['link_id'])) { $link_id = $_REQUEST['link_id']; } else { $link_id = NULL; } if (is_numeric($link_id) and $link_id) { $link =& new SyndicatedLink($link_id); } else { $link = NULL; } $mesg = null; if (!current_user_can('manage_links')) { die(__("Cheatin' uh ?")); } else { if (isset($GLOBALS['fwp_post']['fix_mismatch'])) { if ('newuser' == $GLOBALS['fwp_post']['fix_mismatch_to']) { $newuser_name = trim($GLOBALS['fwp_post']['fix_mismatch_to_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)) { $fix_mismatch_to_id = $newuser_id; } else { // TODO: Add some error detection and reporting } } else { // TODO: Add some error reporting } } else { $fix_mismatch_to_id = $GLOBALS['fwp_post']['fix_mismatch_to']; } $fix_mismatch_from_id = (int) $GLOBALS['fwp_post']['fix_mismatch_from']; if (is_numeric($fix_mismatch_from_id)) { // Make a list of all the items by this author syndicated from this feed... $post_ids = $wpdb->get_col("\n\t\t\t\tSELECT {$wpdb->posts}.id\n\t\t\t\tFROM {$wpdb->posts}, {$wpdb->postmeta}\n\t\t\t\tWHERE ({$wpdb->posts}.id = {$wpdb->postmeta}.post_id)\n\t\t\t\tAND {$wpdb->postmeta}.meta_key = 'syndication_feed_id'\n\t\t\t\tAND {$wpdb->postmeta}.meta_value = '{$link_id}'\n\t\t\t\tAND {$wpdb->posts}.post_author = '{$fix_mismatch_from_id}'\n\t\t\t\t"); if (count($post_ids) > 0) { // Re-assign them all to the correct author if (is_numeric($fix_mismatch_to_id)) { // re-assign to a particular user $post_set = "(" . implode(",", $post_ids) . ")"; // Getting the revisions too, if there are any if (fwp_test_wp_version(FWP_SCHEMA_26)) { $parent_in_clause = "OR {$wpdb->posts}.post_parent IN {$post_set}"; } else { $parent_in_clause = ''; } $wpdb->query("\n\t\t\t\t\t\tUPDATE {$wpdb->posts}\n\t\t\t\t\t\tSET post_author='{$fix_mismatch_to_id}'\n\t\t\t\t\t\tWHERE ({$wpdb->posts}.id IN {$post_set}\n\t\t\t\t\t\t{$parent_in_clause})\n\t\t\t\t\t\t"); $mesg = "Re-assigned " . count($post_ids) . " post" . (count($post_ids) == 1 ? '' : 's') . "."; // ... and kill them all } elseif ($fix_mismatch_to_id == 'filter') { foreach ($post_ids as $post_id) { wp_delete_post($post_id); } $mesg = "Deleted " . count($post_ids) . " post" . (count($post_ids) == 1 ? '' : 's') . "."; } } else { $mesg = "Couldn't find any posts that matched your criteria."; } } } elseif (isset($GLOBALS['fwp_post']['save'])) { if (is_object($link) and $link->found()) { $alter = array(); // Unfamiliar author rule if (isset($GLOBALS['fwp_post']["unfamiliar_author"])) { if ('site-default' == $GLOBALS['fwp_post']["unfamiliar_author"]) { unset($link->settings["unfamiliar author"]); } elseif ('newuser' == $GLOBALS['fwp_post']["unfamiliar_author"]) { $newuser_name = trim($GLOBALS['fwp_post']["unfamiliar_author_newuser"]); $link->map_name_to_new_user(NULL, $newuser_name); } else { $link->settings["unfamiliar author"] = $GLOBALS['fwp_post']["unfamiliar_author"]; } } // 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]); $link->map_name_to_new_user($name, $newuser_name); } 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']); $link->map_name_to_new_user($name, $newuser_name); } else { $link->settings['map authors']['name'][$name] = $author_action; } } } $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 { if ('newuser' == $GLOBALS['fwp_post']['unfamiliar_author']) { $newuser_name = trim($GLOBALS['fwp_post']['unfamiliar_author_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)) { update_option('feedwordpress_unfamiliar_author', $newuser_id); } else { // TODO: Add some error detection and reporting } } else { // TODO: Add some error reporting } } else { update_option('feedwordpress_unfamiliar_author', $GLOBALS['fwp_post']['unfamiliar_author']); } if (isset($GLOBALS['fwp_post']['match_author_by_email']) and $GLOBALS['fwp_post']['match_author_by_email'] == 'yes') { update_option('feedwordpress_do_not_match_author_by_email', 'no'); } else { update_option('feedwordpress_do_not_match_author_by_email', 'yes'); } if (isset($GLOBALS['fwp_post']['null_emails'])) { update_option('feedwordpress_null_email_set', $GLOBALS['fwp_post']['null_emails']); } $updated_link = true; } } else { $updated_link = false; } $unfamiliar = array('create' => '', 'default' => '', 'filter' => ''); if (is_object($link) and $link->found()) { if (is_string($link->settings["unfamiliar author"])) { $key = $link->settings["unfamiliar author"]; } else { $key = 'site-default'; } } else { $key = FeedWordPress::on_unfamiliar('author'); } $unfamiliar[$key] = ' selected="selected"'; $match_author_by_email = !('yes' == get_option("feedwordpress_do_not_match_author_by_email")); $null_emails = FeedWordPress::null_email_set(); ?> <script type="text/javascript"> function contextual_appearance (item, appear, disappear, value, visibleStyle, checkbox) { if (typeof(visibleStyle)=='undefined') visibleStyle = 'block'; var rollup=document.getElementById(item); var newuser=document.getElementById(appear); var sitewide=document.getElementById(disappear); if (rollup) { if ((checkbox && rollup.checked) || (!checkbox && value==rollup.value)) { if (newuser) newuser.style.display=visibleStyle; if (sitewide) sitewide.style.display='none'; } else { if (newuser) newuser.style.display='none'; if (sitewide) sitewide.style.display=visibleStyle; } } } </script> <?php if ($updated_link) { ?> <div class="updated"><p>Syndicated author settings updated.</p></div> <?php } elseif (!is_null($mesg)) { ?> <div class="updated"><p><?php print wp_specialchars($mesg, 1); ?> </p></div> <?php } ?> <div class="wrap"> <form style="position: relative" action="admin.php?page=<?php print $GLOBALS['fwp_path']; ?> /<?php echo basename(__FILE__); ?> " method="post"> <?php if (is_numeric($link_id) and $link_id) { ?> <input type="hidden" name="save_link_id" value="<?php echo $link_id; ?> " /> <?php } else { ?> <input type="hidden" name="save_link_id" value="*" /> <?php } ?> <?php $links = FeedWordPress::syndicated_links(); if (fwp_test_wp_version(FWP_SCHEMA_27)) { ?> <div class="icon32"><img src="<?php print htmlspecialchars(WP_PLUGIN_URL . '/' . $GLOBALS['fwp_path'] . '/feedwordpress.png'); ?> " alt="" /></div> <?php } ?> <h2>Syndicated Author Settings<?php if (!is_null($link) and $link->found()) { ?> : <?php echo wp_specialchars($link->link->link_name, 1); } ?> </h2> <?php if (fwp_test_wp_version(FWP_SCHEMA_27)) { ?> <style type="text/css"> #post-search { float: right; margin:11px 12px 0; min-width: 130px; position:relative; } .fwpfs { color: #dddddd; background:#797979 url(<?php bloginfo('home'); ?> /wp-admin/images/fav.png) repeat-x scroll left center; border-color:#777777 #777777 #666666 !important; -moz-border-radius-bottomleft:12px; -moz-border-radius-bottomright:12px; -moz-border-radius-topleft:12px; -moz-border-radius-topright:12px; border-style:solid; border-width:1px; line-height:15px; padding:3px 30px 4px 12px; } .fwpfs.slide-down { border-bottom-color: #626262; -moz-border-radius-bottomleft:0; -moz-border-radius-bottomright:0; -moz-border-radius-topleft:12px; -moz-border-radius-topright:12px; background-image:url(<?php bloginfo('home'); ?> /wp-admin/images/fav-top.png); background-position:0 top; background-repeat:repeat-x; border-bottom-style:solid; border-bottom-width:1px; } </style> <script type="text/javascript"> jQuery(document).ready(function($){ $('.fwpfs').toggle( function(){$('.fwpfs').removeClass('slideUp').addClass('slideDown'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideDown') ) { $('.fwpfs').addClass('slide-down'); }}, 10) }, function(){$('.fwpfs').removeClass('slideDown').addClass('slideUp'); setTimeout(function(){if ( $('.fwpfs').hasClass('slideUp') ) { $('.fwpfs').removeClass('slide-down'); }}, 10) } ); $('.fwpfs').bind( 'change', function () { this.form.submit(); } ); $('#post-search .button').css( 'display', 'none' ); }); </script> <?php } /* else : */ ?> <p id="post-search"> <select name="link_id" class="fwpfs" style="max-width: 20.0em;"> <option value="*"<?php if (is_null($link) or !$link->found()) { ?> selected="selected"<?php } ?> >- defaults for all feeds -</option> <?php if ($links) { foreach ($links as $ddlink) { ?> <option value="<?php print (int) $ddlink->link_id; ?> "<?php if (!is_null($link) and $link->link->link_id == $ddlink->link_id) { ?> selected="selected"<?php } ?> ><?php print wp_specialchars($ddlink->link_name, 1); ?> </option> <?php } } ?> </select> <input class="button" type="submit" name="go" value="<?php _e('Go'); ?> »" /> </p> <?php /* endif; */ ?> <?php if (!is_null($link) and $link->found()) { ?> <p>These settings only affect posts syndicated from <strong><?php echo wp_specialchars($link->link->link_name, 1); ?> </strong>.</p> <?php } else { ?> <p>These settings affect posts syndicated from any feed unless they are overridden by settings for that specific feed.</p> <?php } ?> <?php $authorlist = fwp_author_list(); ?> <table class="form-table"> <tbody> <tr> <th>New authors</th> <td><span>Authors who haven't been syndicated before</span> <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');"> <?php if (is_object($link) and $link->found()) { ?> <option value="site-default"<?php print $unfamiliar['site-default']; ?> >are handled according to the default for all feeds</option> <?php } ?> <option value="create"<?php $unfamiliar['create']; ?> >will have a new author account created for them</option> <?php foreach ($authorlist as $author_id => $author_name) { ?> <option value="<?php echo $author_id; ?> "<?php print $unfamiliar[$author_id]; ?> >will have their posts attributed to <?php echo $author_name; ?> </option> <?php } ?> <option value="newuser">will have their posts attributed to a new user...</option> <option value="filter"<?php print $unfamiliar['filter']; ?> >get filtered out</option> </select> <span id="unfamiliar-author-newuser">named <input type="text" name="unfamiliar_author_newuser" value="" /></span></p> </td> </tr> <?php if (is_object($link) and $link->found()) { ?> <tr><th>Syndicated authors</th> <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> <table style="width: 100%"> <?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; width: 15.0em">Posts by <input type="text" name="author_rules_name[]" value="<?php echo htmlspecialchars($author_name); ?> " size="11" /></th> <td> <select id="author-rules-<?php echo $i; ?> " name="author_rules_action[]" onchange="contextual_appearance('author-rules-<?php echo $i; ?> ', 'author-rules-<?php echo $i; ?> -newuser', 'author-rules-<?php echo $i; ?> -default', 'newuser', 'inline');"> <?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> <span id="author-rules-<?php echo $i; ?> -newuser">named <input type="text" name="author_rules_newuser[]" value="" /></span> </td> </tr> <?php } } } ?> <tr> <th style="text-align: left; width: 15.0em">Posts by <input type="text" name="add_author_rule_name" size="11" /></th> <td> <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');"> <?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> <span id="add-author-rule-newuser">named <input type="text" name="add_author_rule_newuser" value="" /></span> </td> </tr> </table> </td> </tr> <?php } ?> <?php if (!(is_object($link) and $link->found())) { ?> <tr> <th scope="row">Matching Authors</th> <td><ul style="list-style: none; margin: 0; padding: 0;"> <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 } ?> 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> <div id="unless-null-email"> <p>Unless the e-mail address is one of the following anonymous e-mail addresses:</p> <textarea name="null_emails" rows="3" style="width: 100%"> <?php print implode("\n", $null_emails); ?> </textarea> </div></li> </ul></td> </tr> <?php } else { ?> <th scope="row">Fixing mis-matched authors:</th> <td><p style="margin: 0.5em 0px">Take all the posts from this feed attributed to <select name="fix_mismatch_from"> <?php foreach ($authorlist as $author_id => $author_name) { ?> <option value="<?php echo $author_id; ?> "><?php echo $author_name; ?> </option> <?php } ?> </select> and instead <select id="fix-mismatch-to" name="fix_mismatch_to" onchange="contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline');"> <?php foreach ($authorlist as $author_id => $author_name) { ?> <option value="<?php echo $author_id; ?> ">re-assign them to <?php echo $author_name; ?> </option> <?php } ?> <option value="newuser">re-assign them to a new user...</option> <option value="filter">delete them</option> </select> <span id="fix-mismatch-to-newuser">named <input type="text" name="fix_mismatch_to_newuser" value="" /></span> <input type="submit" class="button" name="fix_mismatch" value="Fix it!" /> </td> </td> <?php } ?> </tbody> </table> <p class="submit"> <input class="button-primary" type="submit" name="save" value="Save Changes" /> </p> <script type="text/javascript"> contextual_appearance('unfamiliar-author', 'unfamiliar-author-newuser', 'unfamiliar-author-default', 'newuser', 'inline'); <?php if (is_object($link) and $link->found()) { for ($j = 1; $j <= $i; $j++) { ?> contextual_appearance('author-rules-<?php echo $j; ?> ', 'author-rules-<?php echo $j; ?> -newuser', 'author-rules-<?php echo $j; ?> -default', 'newuser', 'inline'); <?php } ?> contextual_appearance('add-author-rule', 'add-author-rule-newuser', 'add-author-rule-default', 'newuser', 'inline'); contextual_appearance('fix-mismatch-to', 'fix-mismatch-to-newuser', null, 'newuser', 'inline'); <?php } else { ?> contextual_appearance('match-author-by-email', 'unless-null-email', null, 'yes', 'block', /*checkbox=*/ true); <?php } ?> </script> </form> </div> <!-- class="wrap" --> <?php } }