PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta.2
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta.2
16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / jetpack_vendor / automattic / jetpack-publicize / src / class-publicize-setup.php
jetpack / jetpack_vendor / automattic / jetpack-publicize / src Last commit date
jetpack-social-settings 3 months ago rest-api 3 weeks ago social-image-generator 3 weeks ago class-connections.php 3 weeks ago class-focal-point.php 2 months ago class-keyring-helper.php 2 months ago class-keyring-result-handler.php 2 months ago class-message-templates-placeholders.php 3 months ago class-publicize-assets.php 2 months ago class-publicize-base.php 4 weeks ago class-publicize-script-data.php 1 month ago class-publicize-setup.php 4 weeks ago class-publicize-ui.php 4 weeks ago class-publicize-utils.php 4 weeks ago class-publicize.php 2 months ago class-services.php 3 weeks ago class-share-status.php 9 months ago class-social-admin-page.php 3 weeks ago
class-publicize-setup.php
247 lines
1 <?php
2 /**
3 * Main Publicize class.
4 *
5 * @package automattic/jetpack
6 */
7
8 namespace Automattic\Jetpack\Publicize;
9
10 use Automattic\Jetpack\Current_Plan;
11 use Automattic\Jetpack\Status;
12 use Automattic\Jetpack\Status\Host;
13
14 /**
15 * The class to configure and initialize the publicize package.
16 */
17 class Publicize_Setup {
18
19 /**
20 * Whether to update the plan information from WPCOM when initialising the package.
21 *
22 * @var bool
23 */
24 public static $refresh_plan_info = false;
25
26 /**
27 * Whether the class has been initialized.
28 *
29 * @var bool
30 */
31 public static $initialized = false;
32
33 /**
34 * To configure the publicize package, when called via the Config package.
35 */
36 public static function configure() {
37 add_action( 'jetpack_feature_publicize_enabled', array( __CLASS__, 'on_jetpack_feature_publicize_enabled' ) );
38 }
39
40 /**
41 * Whether to load the Publicize module.
42 *
43 * @return bool
44 */
45 private static function should_load() {
46
47 /**
48 * We do not want to load Publicize on WPCOM private sites.
49 */
50 $is_wpcom_platform_private_site = ( new Host() )->is_wpcom_platform() && ( new Status() )->is_private_site();
51
52 $should_load = ! $is_wpcom_platform_private_site;
53
54 /**
55 * Filters the flag to decide whether to load the Publicize module.
56 *
57 * @since 0.64.0
58 *
59 * @param bool $should_load Whether to load the Publicize module.
60 */
61 return (bool) apply_filters( 'jetpack_publicize_should_load', $should_load );
62 }
63
64 /**
65 * Initialization of publicize logic that should always be loaded,
66 * regardless of whether Publicize is enabled or not.
67 *
68 * You should justify everyting that is done here, as it will be loaded on every pageload.
69 */
70 public static function pre_initialization() {
71 if ( ! self::should_load() ) {
72 return;
73 }
74
75 $is_wpcom_simple = ( new Host() )->is_wpcom_simple();
76
77 /**
78 * Assets are to be loaded in all cases.
79 *
80 * To allow loading of admin page and
81 * the editor placeholder when publicize is OFF.
82 */
83 Publicize_Assets::configure();
84
85 /**
86 * Social admin page is to be always registered.
87 */
88 Social_Admin_Page::init();
89
90 /**
91 * The connect popup (auth_flow=v2) is redirected back to a same-origin admin-post
92 * endpoint that broadcasts the result to the opener, so it must always be available.
93 */
94 Keyring_Result_Handler::init();
95
96 if ( ! $is_wpcom_simple ) {
97 /**
98 * We need this only on Jetpack sites for Google Site auto-verification.
99 */
100 add_action( 'init', array( Keyring_Helper::class, 'init' ), 9 );
101 }
102
103 if ( $is_wpcom_simple ) {
104 /**
105 * Publicize is always enabled on WPCOM,
106 * we can call the initialization method directly.
107 */
108 add_action( 'plugins_loaded', array( self::class, 'on_jetpack_feature_publicize_enabled' ) );
109 }
110 }
111
112 /**
113 * To configure the publicize package, when called via the Config package.
114 */
115 public static function on_jetpack_feature_publicize_enabled() {
116 if ( self::$initialized || ! self::should_load() ) {
117 return;
118 }
119
120 self::$initialized = true;
121
122 $is_wpcom_simple = ( new Host() )->is_wpcom_simple();
123
124 global $publicize;
125 /**
126 * If publicize is not initialzed on WPCOM,
127 * it means that we are either on a public facing page
128 * or a page where Publicize is not needed.
129 * So, we will skip the whole set up here.
130 */
131 if ( $is_wpcom_simple && ! $publicize ) {
132 return;
133 }
134
135 global $publicize_ui;
136
137 if ( ! isset( $publicize_ui ) ) {
138 $publicize_ui = new Publicize_UI();
139 }
140
141 $rest_controllers = array(
142 REST_API\Connections_Controller::class,
143 REST_API\Connections_Post_Field::class,
144 REST_API\Keyring_Result_Controller::class,
145 REST_API\Scheduled_Actions_Controller::class,
146 REST_API\Services_Controller::class,
147 REST_API\Share_Post_Controller::class,
148 REST_API\Share_Status_Controller::class,
149 REST_API\Social_Image_Generator_Controller::class,
150 REST_API\Render_Messages_Controller::class,
151 REST_API\Message_Templates_Placeholders_Controller::class,
152 Jetpack_Social_Settings\Settings::class,
153 );
154
155 // Load the REST controllers.
156 foreach ( $rest_controllers as $controller ) {
157 if ( $is_wpcom_simple ) {
158 wpcom_rest_api_v2_load_plugin( $controller );
159 } else {
160 new $controller();
161 }
162 }
163
164 add_action( 'current_screen', array( self::class, 'add_filters_and_actions_for_screen' ), 5 );
165
166 ( new Social_Image_Generator\Setup() )->init();
167 }
168
169 /**
170 * If the current_screen has 'edit' as the base, add filter to change the post list tables.
171 *
172 * @param object $current_screen The current screen.
173 */
174 public static function add_filters_and_actions_for_screen( $current_screen ) {
175 if ( 'edit' !== $current_screen->base ) {
176 return;
177 }
178
179 /**
180 * Filter to enable/disable the Share action on the post list screen.
181 *
182 * The Share action allows users to reshare published posts via Jetpack Social.
183 * It is automatically enabled for plans that support the 'republicize' feature,
184 * but can be disabled via this filter.
185 *
186 * @since 0.2.0 Originally in jetpack-post-list package.
187 * @since $$NEXT_VERSION$$ Moved to jetpack-publicize package.
188 *
189 * @param bool $show_share Whether to show the share action. Default true.
190 * @param string $post_type The current post type.
191 */
192 $show_share_action = Current_Plan::supports( 'republicize' )
193 && apply_filters( 'jetpack_post_list_display_share_action', true, $current_screen->post_type );
194
195 if ( $show_share_action ) {
196 self::maybe_add_share_action( $current_screen->post_type );
197 }
198 }
199
200 /**
201 * Add the Share action for post types that support publicize.
202 *
203 * @param string $post_type The post type.
204 */
205 public static function maybe_add_share_action( $post_type ) {
206 if (
207 post_type_supports( $post_type, 'publicize' ) &&
208 use_block_editor_for_post_type( $post_type )
209 ) {
210 add_filter( 'post_row_actions', array( self::class, 'add_share_action' ), 20, 2 );
211 add_filter( 'page_row_actions', array( self::class, 'add_share_action' ), 20, 2 );
212 }
213 }
214
215 /**
216 * Add the Share action link to the post row actions.
217 *
218 * @param array $post_actions The current post actions.
219 * @param \WP_Post $post The post object.
220 * @return array Modified post actions.
221 */
222 public static function add_share_action( $post_actions, $post ) {
223 $edit_url = get_edit_post_link( $post->ID, 'raw' );
224 if ( ! $edit_url || 'publish' !== $post->post_status ) {
225 return $post_actions;
226 }
227
228 $url = add_query_arg( 'jetpack-editor-action', 'share_post', $edit_url );
229 $text = _x( 'Share', 'Share the post on social networks', 'jetpack-publicize-pkg' );
230 $title = _draft_or_post_title( $post );
231 /* translators: post title */
232 $label = sprintf( __( 'Share "%s" via Jetpack Social', 'jetpack-publicize-pkg' ), $title );
233 $post_actions['share'] = sprintf( '<a href="%s" aria-label="%s">%s</a>', esc_url( $url ), esc_attr( $label ), esc_html( $text ) );
234
235 return $post_actions;
236 }
237
238 /**
239 * Retrieves the blog ID based on the environment we're running in.
240 *
241 * @return int The WPCOM blog ID.
242 */
243 public static function get_blog_id() {
244 return defined( 'IS_WPCOM' ) && IS_WPCOM ? get_current_blog_id() : \Jetpack_Options::get_option( 'id' );
245 }
246 }
247