summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.php35
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 );