PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 9.1.2
Jetpack – WP Security, Backup, Speed, & Growth v9.1.2
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 in Jetpack – WP Security, Backup, Speed, & Growth 9.1.2, at modules/publicize.php

121 lines 3.8 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: Publicize
4 * Module Description: Publicize 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 * Auto Activate: No
10 * Module Tags: Social, Recommended
11 * Feature: Engagement
12 * 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
13 *
14 * @package Jetpack.
15 */
16
17 /**
18 * Class Jetpack_Publicize
19 */
20 class Jetpack_Publicize {
21
22 /**
23 * If Publicize is executing within Jetpack.
24 *
25 * @var bool
26 */
27 public $in_jetpack = true;
28
29 /**
30 * Jetpack_Publicize constructor.
31 */
32 public function __construct() {
33 global $publicize_ui;
34
35 $this->in_jetpack = ( class_exists( 'Jetpack' ) && method_exists( 'Jetpack', 'enable_module_configurable' ) ) ? true : false;
36
37 if ( $this->in_jetpack ) {
38 Jetpack::enable_module_configurable( __FILE__ );
39 }
40
41 require_once dirname( __FILE__ ) . '/publicize/publicize.php';
42
43 if ( $this->in_jetpack ) {
44 require_once dirname( __FILE__ ) . '/publicize/publicize-jetpack.php';
45 } else {
46 require_once dirname( dirname( __FILE__ ) ) . '/mu-plugins/keyring/keyring.php';
47 require_once dirname( __FILE__ ) . '/publicize/publicize-wpcom.php';
48 }
49
50 require_once dirname( __FILE__ ) . '/publicize/ui.php';
51 $publicize_ui = new Publicize_UI();
52 $publicize_ui->in_jetpack = $this->in_jetpack;
53
54 // Jetpack specific checks / hooks.
55 if ( $this->in_jetpack ) {
56 // if sharedaddy isn't active, the sharing menu hasn't been added yet.
57 $active = Jetpack::get_active_modules();
58 if ( in_array( 'publicize', $active, true ) && ! in_array( 'sharedaddy', $active, true ) ) {
59 add_action( 'admin_menu', array( &$publicize_ui, 'sharing_menu' ) );
60 }
61
62 /*
63 * The Publicize Options array does not currently have UI since it is being added
64 * for a specific purpose and not part of a broader Publicize sprint.
65 *
66 * In order to pass the settings up to WordPress.com, we are updating an option to Sync will pass it up.
67 * To make it relatively easy for use, we are creating a filter that checks if the option and filter match.
68 *
69 * This only runs when a post is saved to avoid it running too much.
70 */
71 add_action(
72 'save_post',
73 function() {
74 $publicize_options = get_option( 'jetpack_publicize_options', array() );
75
76 /**
77 * Filters the options for Publicize.
78 *
79 * As of Jetpack 8.5, the array keys could be:
80 * attach_media bool If Publicize should send the image to the social media platform. Default false.
81 *
82 * @module publicize
83 *
84 * @since 8.5.0
85 *
86 * @param array $options Array of Publicize options.
87 */
88 $filtered = (array) apply_filters( 'jetpack_publicize_options', $publicize_options );
89
90 if ( $publicize_options !== $filtered ) {
91 update_option( 'jetpack_publicize_options', $filtered, false );
92 }
93 }
94 );
95 }
96 }
97 }
98
99 global $publicize_ui;
100 new Jetpack_Publicize();
101
102 if ( ! ( defined( 'IS_WPCOM' ) && IS_WPCOM ) && ! function_exists( 'publicize_init' ) ) {
103 /**
104 * Helper for grabbing a Publicize object from the "front-end" (non-admin) of
105 * a site. Normally Publicize is only loaded in wp-admin, so there's a little
106 * set up that you might need to do if you want to use it on the front end.
107 * Just call this function and it returns a Publicize object.
108 *
109 * @return Publicize Object
110 */
111 function publicize_init() {
112 global $publicize;
113
114 if ( ! class_exists( 'Publicize' ) ) {
115 require_once dirname( __FILE__ ) . '/publicize/publicize.php';
116 }
117
118 return $publicize;
119 }
120 }
121