/** * Add an app access token and an app namespace to existing Facebook application data * * @since 1.1.6 */ public static function app_settings() { if (!class_exists('Facebook_Application_Settings')) { require_once dirname(__FILE__) . '/settings-app.php'; } $app_options = get_option(Facebook_Application_Settings::OPTION_NAME); if (is_array($app_options) && isset($app_options['app_id'])) { update_option(Facebook_Application_Settings::OPTION_NAME, Facebook_Application_Settings::sanitize_options($app_options)); } }
/** * migrate options from Facebook plugin 1.0 style to 1.1 * * @since 1.1 */ public static function migrate() { $old_options = get_option('fb_options'); if (!is_array($old_options) || empty($old_options)) { return; } $app_settings = array(); foreach (array('app_id', 'app_secret', 'app_namespace') as $option_name) { if (isset($old_options[$option_name])) { $app_settings[$option_name] = trim($old_options[$option_name]); } } if (!empty($app_settings)) { if (!class_exists('Facebook_Application_Settings')) { require_once dirname(__FILE__) . '/settings-app.php'; } $app_settings = Facebook_Application_Settings::sanitize_options($app_settings); if (!empty($app_settings)) { update_option(Facebook_Application_Settings::OPTION_NAME, $app_settings); } } unset($app_settings); if (isset($old_options['comments'])) { self::migrate_comments($old_options['comments']); } if (isset($old_options['like'])) { self::migrate_like_button($old_options['like']); } if (isset($old_options['recommendations_bar'])) { self::migrate_recommendations_bar($old_options['recommendations_bar']); } if (isset($old_options['send'])) { self::migrate_send_button($old_options['send']); } if (isset($old_options['social_publisher'])) { self::migrate_social_publisher($old_options['social_publisher']); } if (isset($old_options['follow'])) { self::migrate_follow_button($old_options['follow']); } }
/** * 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')), ''); } } }