diff options
Diffstat (limited to 'plugins/jetpack/modules/publicize.php')
-rw-r--r-- | plugins/jetpack/modules/publicize.php | 110 |
1 files changed, 78 insertions, 32 deletions
diff --git a/plugins/jetpack/modules/publicize.php b/plugins/jetpack/modules/publicize.php index f5738da3..dccc617b 100644 --- a/plugins/jetpack/modules/publicize.php +++ b/plugins/jetpack/modules/publicize.php @@ -1,4 +1,4 @@ -<?php +<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName /** * Module Name: Publicize * Module Description: Publicize makes it easy to share your site’s posts on several social media networks automatically when you publish a new post. @@ -6,17 +6,31 @@ * Recommendation Order: 7 * First Introduced: 2.0 * Requires Connection: Yes + * Requires User Connection: Yes * Auto Activate: No * Module Tags: Social, Recommended * Feature: Engagement * Additional Search Queries: facebook, jetpack publicize, twitter, tumblr, linkedin, social, tweet, connections, sharing, social media, automated, automated sharing, auto publish, auto tweet and like, auto tweet, facebook auto post, facebook posting + * + * @package automattic/jetpack */ +/** + * Class Jetpack_Publicize + */ class Jetpack_Publicize { + /** + * If Publicize is executing within Jetpack. + * + * @var bool + */ public $in_jetpack = true; - function __construct() { + /** + * Jetpack_Publicize constructor. + */ + public function __construct() { global $publicize_ui; $this->in_jetpack = ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'enable_module_configurable' ) ) ? true : false; @@ -25,50 +39,82 @@ class Jetpack_Publicize { Jetpack::enable_module_configurable( __FILE__ ); } - require_once dirname( __FILE__ ) . '/publicize/publicize.php'; + require_once __DIR__ . '/publicize/publicize.php'; - if ( $this->in_jetpack ) - require_once dirname( __FILE__ ) . '/publicize/publicize-jetpack.php'; - else { - require_once dirname( dirname( __FILE__ ) ) . '/mu-plugins/keyring/keyring.php'; - require_once dirname( __FILE__ ) . '/publicize/publicize-wpcom.php'; + if ( $this->in_jetpack ) { + require_once __DIR__ . '/publicize/publicize-jetpack.php'; + } else { + require_once dirname( __DIR__ ) . '/mu-plugins/keyring/keyring.php'; + require_once __DIR__ . '/publicize/publicize-wpcom.php'; } - require_once dirname( __FILE__ ) . '/publicize/ui.php'; - $publicize_ui = new Publicize_UI(); + require_once __DIR__ . '/publicize/ui.php'; + $publicize_ui = new Publicize_UI(); $publicize_ui->in_jetpack = $this->in_jetpack; - // Jetpack specific checks / hooks + // Jetpack specific checks / hooks. if ( $this->in_jetpack ) { - // if sharedaddy isn't active, the sharing menu hasn't been added yet + // if sharedaddy isn't active, the sharing menu hasn't been added yet. $active = Jetpack::get_active_modules(); - if ( in_array( 'publicize', $active ) && ! in_array( 'sharedaddy', $active ) ) { + if ( in_array( 'publicize', $active, true ) && ! in_array( 'sharedaddy', $active, true ) ) { add_action( 'admin_menu', array( &$publicize_ui, 'sharing_menu' ) ); } + + /* + * The Publicize Options array does not currently have UI since it is being added + * for a specific purpose and not part of a broader Publicize sprint. + * + * In order to pass the settings up to WordPress.com, we are updating an option to Sync will pass it up. + * To make it relatively easy for use, we are creating a filter that checks if the option and filter match. + * + * This only runs when a post is saved to avoid it running too much. + */ + add_action( + 'save_post', + function () { + $publicize_options = get_option( 'jetpack_publicize_options', array() ); + + /** + * Filters the options for Publicize. + * + * As of Jetpack 8.5, the array keys could be: + * attach_media bool If Publicize should send the image to the social media platform. Default false. + * + * @module publicize + * + * @since 8.5.0 + * + * @param array $options Array of Publicize options. + */ + $filtered = (array) apply_filters( 'jetpack_publicize_options', $publicize_options ); + + if ( $publicize_options !== $filtered ) { + update_option( 'jetpack_publicize_options', $filtered, false ); + } + } + ); } } } -global $publicize_ui; -new Jetpack_Publicize; +new Jetpack_Publicize(); -if( ! ( defined( 'IS_WPCOM' ) && IS_WPCOM ) && ! function_exists( 'publicize_init' ) ) { -/** - * Helper for grabbing a Publicize object from the "front-end" (non-admin) of - * a site. Normally Publicize is only loaded in wp-admin, so there's a little - * set up that you might need to do if you want to use it on the front end. - * Just call this function and it returns a Publicize object. - * - * @return Publicize Object - */ -function publicize_init() { - global $publicize; - - if ( ! class_exists( 'Publicize' ) ) { - require_once dirname( __FILE__ ) . '/publicize/publicize.php'; - } +if ( ! ( defined( 'IS_WPCOM' ) && IS_WPCOM ) && ! function_exists( 'publicize_init' ) ) { + /** + * Helper for grabbing a Publicize object from the "front-end" (non-admin) of + * a site. Normally Publicize is only loaded in wp-admin, so there's a little + * set up that you might need to do if you want to use it on the front end. + * Just call this function and it returns a Publicize object. + * + * @return Publicize Object + */ + function publicize_init() { + global $publicize; - return $publicize; -} + if ( ! class_exists( 'Publicize' ) ) { + require_once __DIR__ . '/publicize/publicize.php'; + } + return $publicize; + } } |