PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 11.9.1
Jetpack – WP Security, Backup, Speed, & Growth v11.9.1
16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 All 501 releases
jetpack / modules / publicize.php
publicize.php
140 lines 4.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Module Name: Jetpack Social
4 * Module Description: Jetpack Social makes it easy to share your site’s posts on several social media networks automatically when you publish a new post.
5 * Sort Order: 10
6 * Recommendation Order: 7
7 * First Introduced: 2.0
8 * Requires Connection: Yes
9 * Requires User Connection: Yes
10 * Auto Activate: No
11 * Module Tags: Social, Recommended
12 * Feature: Engagement
13 * 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
14 *
15 * @package automattic/jetpack
16 */
17
18 // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files.
19
20 /**
21 * Class Jetpack_Publicize
22 */
23 class Jetpack_Publicize {
24
25 /**
26 * If Publicize is executing within Jetpack.
27 *
28 * @var bool
29 */
30 public $in_jetpack = true;
31
32 /**
33 * Jetpack_Publicize constructor.
34 */
35 public function __construct() {
36 global $publicize_ui;
37
38 $this->modules = new Automattic\Jetpack\Modules();
39 $this->in_jetpack = ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'enable_module_configurable' ) ) ? true : false;
40
41 if ( $this->in_jetpack ) {
42 Jetpack::enable_module_configurable( __FILE__ );
43
44 // if sharedaddy isn't active, the sharing menu hasn't been added yet.
45 if ( $this->modules->is_active( 'publicize' ) && ! $this->modules->is_active( 'sharedaddy' ) ) {
46 add_action( 'admin_menu', array( &$publicize_ui, 'sharing_menu' ) );
47 }
48
49 /*
50 * The Publicize Options array does not currently have UI since it is being added
51 * for a specific purpose and not part of a broader Publicize sprint.
52 *
53 * In order to pass the settings up to WordPress.com, we are updating an option to Sync will pass it up.
54 * To make it relatively easy for use, we are creating a filter that checks if the option and filter match.
55 *
56 * This only runs when a post is saved to avoid it running too much.
57 */
58 add_action(
59 'save_post',
60 function () {
61 $publicize_options = get_option( 'jetpack_publicize_options', array() );
62
63 /**
64 * Filters the options for Publicize.
65 *
66 * As of Jetpack 8.5, the array keys could be:
67 * attach_media bool If Publicize should send the image to the social media platform. Default false.
68 *
69 * @module publicize
70 *
71 * @since 8.5.0
72 *
73 * @param array $options Array of Publicize options.
74 */
75 $filtered = (array) apply_filters( 'jetpack_publicize_options', $publicize_options );
76
77 if ( $publicize_options !== $filtered ) {
78 update_option( 'jetpack_publicize_options', $filtered, false );
79 }
80 }
81 );
82 } else {
83 global $publicize;
84 require_once WP_CONTENT_DIR . '/mu-plugins/keyring/keyring.php';
85 require_once WP_CONTENT_DIR . '/admin-plugins/publicize/publicize-wpcom.php';
86 $publicize = new Publicize();
87 $publicize_ui = new Automattic\Jetpack\Publicize\Publicize_UI();
88 }
89
90 add_action(
91 'jetpack_register_gutenberg_extensions',
92 function () {
93 global $publicize;
94 if ( $publicize->current_user_can_access_publicize_data() ) {
95 Jetpack_Gutenberg::set_extension_available( 'jetpack/publicize' );
96 } else {
97 Jetpack_Gutenberg::set_extension_unavailable( 'jetpack/publicize', 'unauthorized' );
98 }
99 }
100 );
101 $publicize_ui->in_jetpack = $this->in_jetpack;
102 }
103 }
104
105 // On Jetpack, we instantiate Jetpack_Publicize only if the Publicize module is active.
106 if ( ! ( defined( 'IS_WPCOM' ) && IS_WPCOM ) ) {
107 global $publicize;
108
109 // None of this should be the case, but we can get here with a broken user connection. If that's the case
110 // then we want to stop loading any more of the module code.
111 if (
112 ! ( new Automattic\Jetpack\Modules() )->is_active( 'publicize' )
113 || ! Jetpack::connection()->has_connected_user()
114 || ! $publicize
115 ) {
116 return;
117 }
118
119 new Jetpack_Publicize();
120
121 if ( ! function_exists( 'publicize_init' ) ) {
122 /**
123 * Helper for grabbing a Publicize object from the "front-end" (non-admin) of
124 * a site. Normally Publicize is only loaded in wp-admin, so there's a little
125 * set up that you might need to do if you want to use it on the front end.
126 * Just call this function and it returns a Publicize object.
127 *
128 * @return Publicize Object
129 */
130 function publicize_init() {
131 global $publicize;
132
133 return $publicize;
134 }
135 }
136 } else {
137 // On wpcom, instantiate Jetpack_Publicize without any other checks.
138 new Jetpack_Publicize();
139 }
140