diff options
Diffstat (limited to 'plugins/jetpack/_inc/lib/class.jetpack-keyring-service-helper.php')
-rw-r--r-- | plugins/jetpack/_inc/lib/class.jetpack-keyring-service-helper.php | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/plugins/jetpack/_inc/lib/class.jetpack-keyring-service-helper.php b/plugins/jetpack/_inc/lib/class.jetpack-keyring-service-helper.php index c8005ea1..720f59a9 100644 --- a/plugins/jetpack/_inc/lib/class.jetpack-keyring-service-helper.php +++ b/plugins/jetpack/_inc/lib/class.jetpack-keyring-service-helper.php @@ -38,16 +38,43 @@ class Jetpack_Keyring_Service_Helper { ) ); + /** + * Constructor + */ private function __construct() { + add_action( 'admin_menu', array( __CLASS__, 'add_sharing_menu' ), 21 ); + add_action( 'load-settings_page_sharing', array( __CLASS__, 'admin_page_load' ), 9 ); } - function get_services( $filter = 'all' ) { - $services = array( + /** + * We need a `sharing` submenu page to be able to connect and disconnect services. + */ + public static function add_sharing_menu() { + global $submenu; + + if ( + ! isset( $submenu['options-general.php'] ) + || ! is_array( $submenu['options-general.php'] ) + ) { + return; + } + $general_settings_names = array_map( + function ( $menu ) { + return array_values( $menu )[0]; + }, + $submenu['options-general.php'] ); + if ( ! in_array( 'Sharing', $general_settings_names, true ) ) { + add_submenu_page( 'options-general.php', '', '', 'manage_options', 'sharing', '__return_empty_string' ); + } + } + + function get_services( $filter = 'all' ) { + $services = array(); - if ( 'all' == $filter ) { + if ( 'all' === $filter ) { return $services; } else { $connected_services = array(); @@ -161,7 +188,6 @@ class Jetpack_Keyring_Service_Helper { break; case 'completed': - Jetpack::load_xml_rpc_client(); $xml = new Jetpack_IXR_Client(); $xml->query( 'jetpack.fetchPublicizeConnections' ); @@ -190,7 +216,6 @@ class Jetpack_Keyring_Service_Helper { * Remove a Publicize connection */ static function disconnect( $service_name, $connection_id, $_blog_id = false, $_user_id = false, $force_delete = false ) { - Jetpack::load_xml_rpc_client(); $xml = new Jetpack_IXR_Client(); $xml->query( 'jetpack.deletePublicizeConnection', $connection_id ); |