/** * Migrate social publisher settings * * @since 1.1 * @param array $options existing settings * @return result of update_option, if run */ public static function migrate_social_publisher($options) { if (!is_array($options) || empty($options)) { return; } $mentions = array('show_on' => array('post', 'page'), 'position' => 'both'); if (isset($options['mentions_position'])) { $mentions['position'] = $options['mentions_position']; } if (isset($options['show_on_homepage'])) { $mentions['show_on'][] = 'home'; } if (!class_exists('Facebook_Social_Publisher_Settings')) { require_once dirname(__FILE__) . '/settings-social-publisher.php'; } $mentions = Facebook_Social_Publisher_Settings::sanitize_mentions_options($mentions); if (!empty($mentions)) { update_option(Facebook_Social_Publisher_Settings::MENTIONS_OPTION_NAME, $mentions); } // publish to fan page info if (isset($options['publish_to_fan_page']) && $options['publish_to_fan_page'] !== 'disabled') { preg_match_all("/(.*?)@@!!(.*?)@@!!(.*?)\$/su", $options['publish_to_fan_page'], $fan_page_info, PREG_SET_ORDER); if (isset($fan_page_info) && isset($fan_page_info[0]) && is_array($fan_page_info[0]) && !empty($fan_page_info[0][1]) && !empty($fan_page_info[0][2]) && !empty($fan_page_info[0][3])) { Facebook_Social_Publisher_Settings::update_publish_to_page(array('access_token' => $fan_page_info[0][3], 'id' => $fan_page_info[0][2], 'name' => $fan_page_info[0][1])); } } }
/** * Add Facebook settings to the WordPress administration menu. * * @since 1.1 * * @global Facebook_Loader $facebook_loader Access loaded Facebook application credentials * @global $submenu array submenu created for the menu slugs * @return void */ public static function settings_menu_items() { global $facebook_loader, $submenu; // main settings page if (!class_exists('Facebook_Application_Settings')) { require_once dirname(__FILE__) . '/settings-app.php'; } $menu_hook = Facebook_Application_Settings::menu_item(); if (!$menu_hook) { return; } $app_credentials_exist = self::app_credentials_exist(); $menu_slug = Facebook_Application_Settings::PAGE_SLUG; // duplicate_hook $available_features = apply_filters('facebook_features', self::$features); // publisher could short-circuit all features if (!is_array($available_features) || empty($available_features)) { return; } // remove features for child directed sites if (get_option('facebook_kid_directed_site')) { unset($available_features['recommendations_bar']); unset($available_features['comments']); } if (isset($available_features['like'])) { if (!class_exists('Facebook_Like_Button_Settings')) { require_once dirname(__FILE__) . '/settings-like-button.php'; } Facebook_Like_Button_Settings::add_submenu_item($menu_slug); } if (isset($available_features['send'])) { if (!class_exists('Facebook_Send_Button_Settings')) { require_once dirname(__FILE__) . '/settings-send-button.php'; } Facebook_Send_Button_Settings::add_submenu_item($menu_slug); } if (isset($available_features['follow'])) { if (!class_exists('Facebook_Follow_Button_Settings')) { require_once dirname(__FILE__) . '/settings-follow-button.php'; } Facebook_Follow_Button_Settings::add_submenu_item($menu_slug); } // some features require stored Facbook application credentials. don't be a tease. if ($app_credentials_exist) { if (isset($available_features['recommendations_bar'])) { if (!class_exists('Facebook_Recommendations_Bar_Settings')) { require_once dirname(__FILE__) . '/settings-recommendations-bar.php'; } Facebook_Recommendations_Bar_Settings::add_submenu_item($menu_slug); } if (isset($available_features['comments'])) { if (!class_exists('Facebook_Comments_Settings')) { require_once dirname(__FILE__) . '/settings-comments.php'; } Facebook_Comments_Settings::add_submenu_item($menu_slug); } if (isset($available_features['social_publisher']) && wp_http_supports(array('ssl' => true))) { if (!class_exists('Facebook_Social_Publisher_Settings')) { require_once dirname(__FILE__) . '/settings-social-publisher.php'; } Facebook_Social_Publisher_Settings::add_submenu_item($menu_slug); } if (!class_exists('Facebook_Settings_Debugger')) { require_once dirname(__FILE__) . '/settings-debug.php'; } Facebook_Settings_Debugger::add_submenu_item($menu_slug); } // make an assumption about submenu mappings, but don't fail if our assumption is wrong // WordPress will automatically duplicate the top-level menu destination when a submenu is created // Change wording based on Facebook parent if (is_array($submenu) && isset($submenu[$menu_slug]) && is_array($submenu[$menu_slug]) && is_array($submenu[$menu_slug][0]) && is_string($submenu[$menu_slug][0][0])) { $submenu[$menu_slug][0][0] = __('General'); if ($app_credentials_exist) { $submenu[$menu_slug][] = array(_x('Insights', 'Facebook Insights', 'facebook'), 'manage_options', esc_url('https://www.facebook.com/insights/' . $facebook_loader->credentials['app_id'], array('https', 'http')), ''); } } }
/** * Migrate social publisher settings * * @since 1.1 * @param array $options existing settings * @return result of update_option, if run */ public static function migrate_social_publisher($options) { if (!is_array($options) || empty($options)) { return; } // publish to fan page info if (isset($options['publish_to_fan_page']) && $options['publish_to_fan_page'] !== 'disabled') { preg_match_all("/(.*?)@@!!(.*?)@@!!(.*?)\$/su", $options['publish_to_fan_page'], $fan_page_info, PREG_SET_ORDER); if (isset($fan_page_info) && isset($fan_page_info[0]) && is_array($fan_page_info[0]) && !empty($fan_page_info[0][1]) && !empty($fan_page_info[0][2]) && !empty($fan_page_info[0][3])) { Facebook_Social_Publisher_Settings::update_publish_to_page(array('access_token' => $fan_page_info[0][3], 'id' => $fan_page_info[0][2], 'name' => $fan_page_info[0][1])); } } }