function admin_page_load()
{
if (isset($_GET['action'])) {
if (isset($_GET['service'])) {
$service_name = $_GET['service'];
}
switch ($_GET['action']) {
case 'error':
add_action('pre_admin_screen_sharing', array($this, 'display_connection_error'), 9);
break;
case 'request':
check_admin_referer('keyring-request', 'kr_nonce');
check_admin_referer("keyring-request-{$service_name}", 'nonce');
$verification = Jetpack::create_nonce('publicize');
$stats_options = get_option('stats_options');
$wpcom_blog_id = Jetpack::get_option('id');
$wpcom_blog_id = !empty($wpcom_blog_id) ? $wpcom_blog_id : $stats_options['blog_id'];
$user = wp_get_current_user();
$redirect = $this->api_url($service_name, urlencode_deep(array('action' => 'request', 'redirect_uri' => add_query_arg(array('action' => 'done'), menu_page_url('sharing', false)), 'for' => 'publicize', 'siteurl' => site_url(), 'state' => $user->ID, 'blog_id' => $wpcom_blog_id, 'secret_1' => $verification['secret_1'], 'secret_2' => $verification['secret_2'], 'eol' => $verification['eol'])));
wp_redirect($redirect);
exit;
break;
case 'completed':
// Jetpack blog requests Publicize Connections via new XML-RPC method
Jetpack::load_xml_rpc_client();
$xml = new Jetpack_IXR_Client();
$xml->query('jetpack.fetchPublicizeConnections');
if (!$xml->isError()) {
$response = $xml->getResponse();
Jetpack::update_option('publicize_connections', $response);
}
break;
case 'delete':
$id = $_GET['id'];
check_admin_referer('keyring-request', 'kr_nonce');
check_admin_referer("keyring-request-{$service_name}", 'nonce');
Jetpack::load_xml_rpc_client();
$xml = new Jetpack_IXR_Client();
$xml->query('jetpack.deletePublicizeConnection', $id);
if (!$xml->isError()) {
$response = $xml->getResponse();
Jetpack::update_option('publicize_connections', $response);
}
add_action('admin_notices', array($this, 'display_disconnected'));
break;
}
}
// Errors encountered on WordPress.com's end are passed back as a code
if (isset($_GET['action']) && 'error' == $_GET['action']) {
// Load Jetpack's styles to handle the box
Jetpack::init()->admin_styles();
}
}