process_requests(); } } public function process_requests() { if ( isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'sharing-options' ) ) { $sharer = new Sharing_Service(); $sharer->set_global_options( $_POST ); /** * Fires when updating sharing settings. * * @module sharedaddy * * @since 1.1.0 */ do_action( 'sharing_admin_update' ); wp_safe_redirect( admin_url( 'options-general.php?page=sharing&update=saved' ) ); die(); } } public function subscription_menu( $user ) { if ( ! defined( 'IS_WPCOM' ) || ! IS_WPCOM ) { $active = Jetpack::get_active_modules(); if ( ! in_array( 'publicize', $active ) && ! current_user_can( 'manage_options' ) ) { return; } } add_submenu_page( 'options-general.php', __( 'Sharing Settings', 'jetpack' ), __( 'Sharing', 'jetpack' ), 'publish_posts', 'sharing', array( &$this, 'wrapper_admin_page' ) ); } public function ajax_save_services() { if ( isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'sharing-options' ) && isset( $_POST['hidden'] ) && isset( $_POST['visible'] ) ) { $sharer = new Sharing_Service(); $sharer->set_blog_services( explode( ',', $_POST['visible'] ), explode( ',', $_POST['hidden'] ) ); die(); } } public function ajax_new_service() { if ( isset( $_POST['_wpnonce'] ) && isset( $_POST['sharing_name'] ) && isset( $_POST['sharing_url'] ) && isset( $_POST['sharing_icon'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'sharing-new_service' ) ) { $sharer = new Sharing_Service(); if ( $service = $sharer->new_service( stripslashes( $_POST['sharing_name'] ), stripslashes( $_POST['sharing_url'] ), stripslashes( $_POST['sharing_icon'] ) ) ) { $this->output_service( $service->get_id(), $service ); echo ''; $service->button_style = 'icon-text'; $this->output_preview( $service ); die(); } } // Fail die( '1' ); } public function ajax_delete_service() { if ( isset( $_POST['_wpnonce'] ) && isset( $_POST['service'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'sharing-options_' . $_POST['service'] ) ) { $sharer = new Sharing_Service(); $sharer->delete_service( $_POST['service'] ); } } public function ajax_save_options() { if ( isset( $_POST['_wpnonce'] ) && isset( $_POST['service'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'sharing-options_' . $_POST['service'] ) ) { $sharer = new Sharing_Service(); $service = $sharer->get_service( $_POST['service'] ); if ( $service && $service instanceof Sharing_Advanced_Source ) { $service->update_options( $_POST ); $sharer->set_service( $_POST['service'], $service ); } $this->output_service( $service->get_id(), $service, true ); echo ''; $service->button_style = 'icon-text'; $this->output_preview( $service ); die(); } } public function output_preview( $service ) { $klasses = array( 'advanced', 'preview-item' ); if ( $service->button_style != 'text' || $service->has_custom_button_style() ) { $klasses[] = 'preview-' . $service->get_class(); $klasses[] = 'share-' . $service->get_class(); if ( $service->is_deprecated() ) { $klasses[] = 'share-deprecated'; } if ( $service->get_class() != $service->get_id() ) { $klasses[] = 'preview-' . $service->get_id(); } } echo '
  • '; $service->display_preview(); echo '
  • '; } public function output_service( $id, $service, $show_dropdown = false ) { $title = ''; $klasses = array( 'service', 'advanced', 'share-' . $service->get_class() ); if ( $service->is_deprecated() ) { $title = sprintf( __( 'The %1$s service has shut down. This sharing button is not displayed to your visitors and should be removed.', 'jetpack' ), $service->get_name() ); $klasses[] = 'share-deprecated'; } ?>
  • get_name() ); ?> get_id(), 'custom-' ) || $service->has_advanced_options() ) : ?> ×
  • true ) ); } public function management_page() { $sharer = new Sharing_Service(); $enabled = $sharer->get_blog_services(); $global = $sharer->get_global_options(); $shows = array_values( get_post_types( array( 'public' => true ) ) ); array_unshift( $shows, 'index' ); if ( false == function_exists( 'mb_stripos' ) ) { echo '

    ' . __( 'Warning! Multibyte support missing!', 'jetpack' ) . '

    '; echo '

    ' . sprintf( __( 'This plugin will work without it, but multibyte support is used if available. You may see minor problems with Tweets and other sharing services.', 'jetpack' ), 'https://www.php.net/manual/en/mbstring.installation.php' ) . '

    '; } if ( isset( $_GET['update'] ) && $_GET['update'] == 'saved' ) { echo '

    ' . __( 'Settings have been saved', 'jetpack' ) . '

    '; } if ( ! isset( $global['sharing_label'] ) ) { $global['sharing_label'] = __( 'Share this:', 'jetpack' ); } ?>

      get_all_services_blog() as $id => $service ) : ?> output_service( $id, $service ); } ?>
    ' . __( 'Please note that your services have been restricted because your site is private.', 'jetpack' ) . '

    '; } ?>

    loading

    0 ) { echo ' style="display: none"';} ?>>

      $service ) : ?> output_service( $id, $service, true ); ?>

      $service ) : ?> output_service( $id, $service, true ); ?>

    0 ) ? ' style="display: none"' : ''; ?>>


    ' ); ?> ' ); ?>
    labels->name; } ?> '; } ?>

    ID, 'sharing_disabled' ); } else { return update_post_meta( $post_object->ID, 'sharing_disabled', true ); } } /** * Add Sharing post_meta to the REST API Post response. * * @action rest_api_init * @uses register_rest_field * @link https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/ */ function jetpack_post_sharing_register_rest_field() { $post_types = get_post_types( array( 'public' => true ) ); foreach ( $post_types as $post_type ) { register_rest_field( $post_type, 'jetpack_sharing_enabled', array( 'get_callback' => 'jetpack_post_sharing_get_value', 'update_callback' => 'jetpack_post_sharing_update_value', 'schema' => array( 'description' => __( 'Are sharing buttons enabled?', 'jetpack' ), 'type' => 'boolean', ), ) ); /** * Ensures all public internal post-types support `sharing` * This feature support flag is used by the REST API and Gutenberg. */ add_post_type_support( $post_type, 'jetpack-sharing-buttons' ); } } // Add Sharing post_meta to the REST API Post response. add_action( 'rest_api_init', 'jetpack_post_sharing_register_rest_field' ); // Some CPTs (e.g. Jetpack portfolios and testimonials) get registered with // restapi_theme_init because they depend on theme support, so let's also hook to that add_action( 'restapi_theme_init', 'jetpack_post_likes_register_rest_field', 20 ); function sharing_admin_init() { global $sharing_admin; $sharing_admin = new Sharing_Admin(); } /** * Set the Likes and Sharing Gutenberg extension as available */ function jetpack_sharing_set_extension_availability() { Jetpack_Gutenberg::set_extension_available( 'sharing' ); } add_action( 'jetpack_register_gutenberg_extensions', 'jetpack_sharing_set_extension_availability' ); add_action( 'init', 'sharing_admin_init' );