PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 / modules / sharedaddy / sharedaddy.php
jetpack / modules / sharedaddy Last commit date
images 2 months ago services 7 months ago admin-sharing-rtl.css 4 months ago admin-sharing-rtl.min.css 1 month ago admin-sharing.css 4 months ago admin-sharing.js 2 months ago admin-sharing.min.css 1 month ago amp-sharing.css 4 months ago recaptcha.php 1 month ago sharedaddy.php 7 months ago sharing-service.php 1 month ago sharing-sources.php 1 month ago sharing.css 4 months ago sharing.js 3 years ago sharing.php 2 months ago
sharedaddy.php
235 lines
1 <?php
2 /**
3 * Jetpack's Sharing feature, nee Sharedaddy.
4 * The most super duper sharing tool on the interwebs.
5 *
6 * @package automattic/jetpack
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit( 0 );
11 }
12
13 // Set up Sharing in wp-admin.
14 require_once plugin_dir_path( __FILE__ ) . 'sharing.php';
15
16 /**
17 * Add a meta box to the post editing screen for sharing.
18 *
19 * @return void
20 */
21 function sharing_add_meta_box() {
22 global $post;
23 if ( empty( $post ) ) { // If a current post is not defined, such as when editing a comment.
24 return;
25 }
26
27 /**
28 * Filter whether to display the Sharing Meta Box or not.
29 *
30 * @module sharedaddy
31 *
32 * @since 3.8.0
33 *
34 * @param bool true Display Sharing Meta Box.
35 * @param $post Post.
36 */
37 if ( ! apply_filters( 'sharing_meta_box_show', true, $post ) ) {
38 return;
39 }
40
41 $post_types = get_post_types( array( 'public' => true ) );
42 /**
43 * Filter the Sharing Meta Box title.
44 *
45 * @module sharedaddy
46 *
47 * @since 2.2.0
48 *
49 * @param string $var Sharing Meta Box title. Default is "Sharing".
50 */
51 $title = apply_filters( 'sharing_meta_box_title', __( 'Sharing', 'jetpack' ) );
52 if ( $post->ID !== get_option( 'page_for_posts' ) ) {
53 foreach ( $post_types as $post_type ) {
54 add_meta_box( 'sharing_meta', $title, 'sharing_meta_box_content', $post_type, 'side', 'default', array( '__back_compat_meta_box' => true ) );
55 }
56 }
57 }
58
59 /**
60 * Content of the meta box.
61 *
62 * @param WP_Post $post The post to share.
63 *
64 * @return void
65 */
66 function sharing_meta_box_content( $post ) {
67 /**
68 * Fires before the sharing meta box content.
69 *
70 * @module sharedaddy
71 *
72 * @since 2.2.0
73 *
74 * @param WP_Post $post The post to share.
75 */
76 do_action( 'start_sharing_meta_box_content', $post );
77
78 $disabled = get_post_meta( $post->ID, 'sharing_disabled', true ); ?>
79
80 <p>
81 <label for="enable_post_sharing">
82 <input type="checkbox" name="enable_post_sharing" id="enable_post_sharing" value="1" <?php checked( ! $disabled ); ?>>
83 <?php esc_html_e( 'Show sharing buttons.', 'jetpack' ); ?>
84 </label>
85 <input type="hidden" name="sharing_status_hidden" value="1" />
86 </p>
87
88 <?php
89 /**
90 * Fires after the sharing meta box content.
91 *
92 * @module sharedaddy
93 *
94 * @since 2.2.0
95 *
96 * @param WP_Post $post The post to share.
97 */
98 do_action( 'end_sharing_meta_box_content', $post );
99 }
100
101 /**
102 * Save new sharing status in post meta in the meta box.
103 *
104 * @param int $post_id Post ID.
105 *
106 * @return int
107 */
108 function sharing_meta_box_save( $post_id ) {
109 if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
110 return $post_id;
111 }
112
113 if ( ! isset( $_POST['post_type'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Core takes care of the validation.
114 return $post_id;
115 }
116
117 $post_type_object = get_post_type_object( sanitize_key( $_POST['post_type'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Core takes care of the validation.
118
119 // Record sharing disable.
120 if (
121 $post_type_object instanceof \WP_Post_Type
122 && $post_type_object->public
123 && current_user_can( 'edit_post', $post_id )
124 && isset( $_POST['sharing_status_hidden'] ) // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Core takes care of the validation.
125 ) {
126 if ( ! isset( $_POST['enable_post_sharing'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing -- Core takes care of the validation.
127 update_post_meta( $post_id, 'sharing_disabled', 1 );
128 } else {
129 delete_post_meta( $post_id, 'sharing_disabled' );
130 }
131 }
132
133 return $post_id;
134 }
135
136 /**
137 * If Sharing is disabled, disable the meta box.
138 *
139 * @param bool $protected Whether the key is considered protected.
140 * @param string $meta_key Metadata key.
141 *
142 * @return bool
143 */
144 function sharing_meta_box_protected( $protected, $meta_key ) {
145 if ( 'sharing_disabled' === $meta_key ) {
146 $protected = true;
147 }
148
149 return $protected;
150 }
151 add_filter( 'is_protected_meta', 'sharing_meta_box_protected', 10, 2 );
152
153 /**
154 * Add link to sharing settings in the Plugins screen.
155 *
156 * @param array $links An array of plugin action links.
157 *
158 * @return array
159 */
160 function sharing_plugin_settings( $links ) {
161 $settings_link = '<a href="options-general.php?page=sharing.php">' . __( 'Settings', 'jetpack' ) . '</a>';
162 array_unshift( $links, $settings_link );
163 return $links;
164 }
165
166 /**
167 * Add links to settings and support in the plugin row.
168 *
169 * @param array $links An array of the plugin's metadata, including the version, author, author URI, and plugin URI.
170 * @param string $file Path to the plugin file relative to the plugins directory.
171 *
172 * @return array
173 */
174 function sharing_add_plugin_settings( $links, $file ) {
175 if ( $file === basename( __DIR__ ) . '/' . basename( __FILE__ ) ) {
176 $links[] = '<a href="options-general.php?page=sharing.php">' . __( 'Settings', 'jetpack' ) . '</a>';
177 $links[] = '<a href="https://support.wordpress.com/sharing/" rel="noopener noreferrer" target="_blank">' . __( 'Support', 'jetpack' ) . '</a>';
178 }
179
180 return $links;
181 }
182
183 /**
184 * Disable sharing on the frontend if disabled in the admin.
185 *
186 * @return void
187 */
188 function sharing_init() {
189 if ( Jetpack_Options::get_option_and_ensure_autoload( 'sharedaddy_disable_resources', '0' ) ) {
190 add_filter( 'sharing_js', '__return_false' );
191 remove_action( 'wp_head', 'sharing_add_header', 1 );
192 }
193 }
194
195 /**
196 * Add settings to disable CSS and JS normally enqueued by our feature.
197 *
198 * @return void
199 */
200 function sharing_global_resources() {
201 $disable = get_option( 'sharedaddy_disable_resources' );
202 ?>
203 <tr valign="top">
204 <th scope="row"><label for="disable_css"><?php esc_html_e( 'Disable CSS and JS', 'jetpack' ); ?></label></th>
205 <td>
206 <?php
207 printf(
208 '<input id="disable_css" type="checkbox" name="disable_resources"%1$s /> <small><em>%2$s</em></small>',
209 ( 1 == $disable ) ? ' checked="checked"' : '', // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual
210 esc_html__( 'Advanced. If this option is checked, you must include these files in your theme manually for the sharing links to work.', 'jetpack' )
211 );
212 ?>
213 </td>
214 </tr>
215 <?php
216 }
217
218 /**
219 * Save settings to disable CSS and JS normally enqueued by our feature.
220 *
221 * @return void
222 */
223 function sharing_global_resources_save() {
224 update_option( 'sharedaddy_disable_resources', isset( $_POST['disable_resources'] ) ? 1 : 0 ); // phpcs:ignore WordPress.Security.NonceVerification.Missing -- nonce handling is handled for all elements at once.
225 }
226
227 add_action( 'init', 'sharing_init' );
228 add_action( 'add_meta_boxes', 'sharing_add_meta_box' );
229 add_action( 'save_post', 'sharing_meta_box_save' );
230 add_action( 'edit_attachment', 'sharing_meta_box_save' );
231 add_action( 'sharing_global_options', 'sharing_global_resources', 30 );
232 add_action( 'sharing_admin_update', 'sharing_global_resources_save' );
233 add_action( 'plugin_action_links_' . basename( __DIR__ ) . '/' . basename( __FILE__ ), 'sharing_plugin_settings', 10, 4 );
234 add_filter( 'plugin_row_meta', 'sharing_add_plugin_settings', 10, 2 );
235