function admin_page_load()
{
$error = false;
if (!empty($_GET['jetpack_restate'])) {
// Should only be used in intermediate redirects to preserve state across redirects
Jetpack::restate();
}
if (isset($_GET['action'])) {
switch ($_GET['action']) {
case 'authorize':
if (Jetpack::is_active()) {
Jetpack::state('message', 'already_authorized');
wp_safe_redirect(Jetpack::admin_url());
exit;
}
$client_server =& new Jetpack_Client_Server();
$client_server->authorize();
exit;
case 'register':
check_admin_referer('jetpack-register');
$registered = Jetpack::try_registration();
if (is_wp_error($registered)) {
$error = $registered->get_error_code();
Jetpack::state('error_description', $registered->get_error_message());
break;
}
wp_redirect($this->build_connect_url(true));
exit;
case 'activate':
$module = stripslashes($_GET['module']);
check_admin_referer("jetpack_activate-{$module}");
Jetpack::activate_module($module);
wp_safe_redirect(Jetpack::admin_url());
exit;
case 'activate_default_modules':
check_admin_referer('activate_default_modules');
Jetpack::restate();
$min_version = isset($_GET['min_version']) ? $_GET['min_version'] : false;
$max_version = isset($_GET['max_version']) ? $_GET['max_version'] : false;
$other_modules = isset($_GET['other_modules']) && is_array($_GET['other_modules']) ? $_GET['other_modules'] : array();
Jetpack::activate_default_modules($min_version, $max_version, $other_modules);
wp_safe_redirect(Jetpack::admin_url());
exit;
case 'disconnect':
check_admin_referer('jetpack-disconnect');
$this->disconnect();
wp_safe_redirect(Jetpack::admin_url());
exit;
case 'deactivate':
$module = stripslashes($_GET['module']);
check_admin_referer("jetpack_deactivate-{$module}");
Jetpack::deactivate_module($module);
Jetpack::state('message', 'module_deactivated');
Jetpack::state('module', $module);
wp_safe_redirect(Jetpack::admin_url());
exit;
}
}
if (!($error = $error ? $error : Jetpack::state('error'))) {
Jetpack::activate_new_modules();
}
switch ($error) {
case 'access_denied':
$this->error = __('You need to authorize the Jetpack connection between your site and WordPress.com to enable the awesome features.', 'jetpack');
break;
case 'wrong_state':
$this->error = __("Don’t cross the streams! You need to stay logged in to your WordPress blog while you authorize Jetpack.", 'jetpack');
break;
case 'invalid_client':
// @todo re-register instead of deactivate/reactivate
$this->error = __('Return to sender. Whoops! It looks like you got the wrong Jetpack in the mail; deactivate then reactivate the Jetpack plugin to get a new one.', 'jetpack');
break;
case 'invalid_grant':
$this->error = __("Wrong size. Hm… it seems your Jetpack doesn’t quite fit. Have you lost weight? Click “Connect to WordPress.com” again to get your Jetpack adjusted.", 'jetpack');
break;
case 'site_inaccessible':
case 'site_requires_authorization':
$this->error = sprintf(__('Your website needs to be publicly accessible to use Jetpack: %s', 'jetpack'), "<code>{$error}</code>");
break;
case 'module_activation_failed':
$module = Jetpack::state('module');
if (!empty($module) && ($mod = Jetpack::get_module($module))) {
if ('sharedaddy' == $module && version_compare(PHP_VERSION, '5', '<')) {
$this->error = sprintf(__('The %1$s module requires <strong>PHP version %2$s</strong> or higher.', 'jetpack'), '<strong>' . $mod['name'] . '</strong>', '5');
} else {
$this->error = sprintf(__('%s could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?', 'jetpack'), $mod['name']);
if (isset($this->plugins_to_deactivate[$module])) {
$this->error .= ' ' . sprintf(__('Do you still have the %s plugin installed?', 'jetpack'), $this->plugins_to_deactivate[$module][1]);
}
}
} else {
$this->error = __('Module could not be activated because it triggered a <strong>fatal error</strong>. Perhaps there is a conflict with another plugin you have installed?', 'jetpack');
}
if ($php_errors = Jetpack::state('php_errors')) {
$this->error .= "<br />\n";
$this->error .= $php_errors;
}
break;
case 'not_public':
$this->error = __("<strong>Your Jetpack has a glitch.</strong> Connecting this site with WordPress.com is not possible. This usually means your site is not publicly accessible (localhost).", 'jetpack');
break;
case 'wpcom_408':
case 'wpcom_5??':
case 'wpcom_bad_response':
case 'wpcom_outage':
$this->error = __('WordPress.com is currently having problems and is unable to fuel up your Jetpack. Please try again later.', 'jetpack');
break;
case 'register_http_request_failed':
case 'token_http_request_failed':
$this->error = sprintf(__('Jetpack could not contact WordPress.com: %s. This usually means something is incorrectly configured on your web host.', 'jetpack'), "<code>{$error}</code>");
break;
default:
if (empty($error)) {
break;
}
$error = trim(substr(strip_tags($error), 0, 20));
// no break: fall through
// no break: fall through
case 'no_role':
case 'no_cap':
case 'no_code':
case 'no_state':
case 'invalid_state':
case 'invalid_request':
case 'invalid_scope':
case 'unsupported_response_type':
case 'invalid_token':
case 'no_token':
case 'missing_secrets':
case 'home_missing':
case 'siteurl_missing':
case 'gmt_offset_missing':
case 'site_name_missing':
case 'secret_1_missing':
case 'secret_2_missing':
case 'site_lang_missing':
case 'home_malformed':
case 'siteurl_malformed':
case 'gmt_offset_malformed':
case 'timezone_string_malformed':
case 'site_name_malformed':
case 'secret_1_malformed':
case 'secret_2_malformed':
case 'site_lang_malformed':
case 'secrets_mismatch':
case 'verify_secret_1_missing':
case 'verify_secret_1_malformed':
case 'verify_secrets_missing':
case 'verify_secrets_mismatch':
$error = esc_html($error);
$this->error = sprintf(__("<strong>Your Jetpack has a glitch.</strong> Something went wrong that’s never supposed to happen. Guess you’re just lucky: %s", 'jetpack'), "<code>{$error}</code>");
if (!Jetpack::is_active()) {
$this->error .= '<br />';
$this->error .= sprintf(__('Try connecting again.', 'jetpack'));
}
break;
}
$message_code = Jetpack::state('message');
$active_state = Jetpack::state('activated_modules');
if (!empty($active_state)) {
$available = Jetpack::get_available_modules();
$active_state = explode(',', $active_state);
$active_state = array_intersect($active_state, $available);
if (count($active_state)) {
foreach ($active_state as $mod) {
$this->stat('module-activated', $mod);
}
} else {
$active_state = false;
}
}
switch ($message_code) {
case 'modules_activated':
$this->message = sprintf(__('Welcome to <strong>Jetpack %s</strong>!', 'jetpack'), JETPACK__VERSION);
if ($active_state) {
$titles = array();
foreach ($active_state as $mod) {
if ($mod_headers = Jetpack::get_module($mod)) {
$titles[] = '<strong>' . preg_replace('/\\s+(?![^<>]++>)/', ' ', $mod_headers['name']) . '</strong>';
}
}
if ($titles) {
$this->message .= '<br /><br />' . wp_sprintf(__('The following new modules have been activated: %l.', 'jetpack'), $titles);
}
}
if ($reactive_state = Jetpack::state('reactivated_modules')) {
$titles = array();
foreach (explode(',', $reactive_state) as $mod) {
if ($mod_headers = Jetpack::get_module($mod)) {
$titles[] = '<strong>' . preg_replace('/\\s+(?![^<>]++>)/', ' ', $mod_headers['name']) . '</strong>';
}
}
if ($titles) {
$this->message .= '<br /><br />' . wp_sprintf(__('The following modules have been updated: %l.', 'jetpack'), $titles);
}
}
break;
case 'module_activated':
if ($module = Jetpack::get_module(Jetpack::state('module'))) {
$this->message = sprintf(__('<strong>%s Activated!</strong> You can deactivate at any time by clicking Learn More and then Deactivate on the module card.', 'jetpack'), $module['name']);
$this->stat('module-activated', Jetpack::state('module'));
}
break;
case 'module_deactivated':
if ($module = Jetpack::get_module(Jetpack::state('module'))) {
$this->message = sprintf(__('<strong>%s Deactivated!</strong> You can activate it again at any time using the activate button on the module card.', 'jetpack'), $module['name']);
$this->stat('module-deactivated', Jetpack::state('module'));
}
break;
case 'module_configured':
$this->message = __('<strong>Module settings were saved.</strong> ', 'jetpack');
break;
case 'already_authorized':
$this->message = __('<strong>Your Jetpack is already connected.</strong> ', 'jetpack');
break;
case 'authorized':
$this->message = __("<strong>You’re fueled up and ready to go.</strong> ", 'jetpack');
$this->message .= "<br />\n";
$this->message .= __('The features below are now active. Click the learn more buttons to explore each feature.', 'jetpack');
break;
}
$deactivated_plugins = Jetpack::state('deactivated_plugins');
if (!empty($deactivated_plugins)) {
$deactivated_plugins = explode(',', $deactivated_plugins);
$deactivated_titles = array();
foreach ($deactivated_plugins as $deactivated_plugin) {
if (!isset($this->plugins_to_deactivate[$deactivated_plugin])) {
continue;
}
$deactivated_titles[] = '<strong>' . str_replace(' ', ' ', $this->plugins_to_deactivate[$deactivated_plugin][1]) . '</strong>';
}
if ($deactivated_titles) {
if ($this->message) {
$this->message .= "<br /><br />\n";
}
$this->message .= wp_sprintf(_n('Jetpack contains the most recent version of the old %l plugin.', 'Jetpack contains the most recent versions of the old %l plugins.', count($deactivated_titles), 'jetpack'), $deactivated_titles);
$this->message .= "<br />\n";
$this->message .= _n('The old version has been deactivated and can be removed from your site.', 'The old versions have been deactivated and can be removed from your site.', count($deactivated_titles), 'jetpack');
}
}
if ($this->message || $this->error) {
add_action('jetpack_notices', array(&$this, 'admin_notices'));
}
if (isset($_GET['configure']) && Jetpack::is_module($_GET['configure'])) {
do_action('jetpack_module_configuration_load_' . $_GET['configure']);
}
add_filter('jetpack_short_module_description', 'wptexturize');
}