PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3
Jetpack – WP Security, Backup, Speed, & Growth v16.3
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.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 All 508 releases
← All changes | modules/sharedaddy/sharedaddy.php +219 -0 16.2-beta → 16.3 View file →
@@ -1,0 +1,219 @@
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 + * @deprecated 16.3 Sharing has not shipped as a standalone plugin for years.
157 + *
158 + * @param array $links An array of plugin action links.
159 + *
160 + * @return array The unchanged $links.
161 + */
162 +function sharing_plugin_settings( $links ) {
163 + _deprecated_function( __FUNCTION__, 'jetpack-16.3' );
164 + return $links;
165 +}
166 +
167 +/**
168 + * Add links to settings and support in the plugin row.
169 + *
170 + * @deprecated 16.3 Sharing has not shipped as a standalone plugin for years.
171 + *
172 + * @param array $links An array of the plugin's metadata, including the version, author, author URI, and plugin URI.
173 + * @param string $file Path to the plugin file relative to the plugins directory.
174 + *
175 + * @return array The unchanged $links.
176 + */
177 +function sharing_add_plugin_settings( $links, $file ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
178 + _deprecated_function( __FUNCTION__, 'jetpack-16.3' );
179 + return $links;
180 +}
181 +
182 +/**
183 + * Disable sharing on the frontend if disabled in the admin.
184 + *
185 + * @return void
186 + */
187 +function sharing_init() {
188 + if ( Jetpack_Options::get_option_and_ensure_autoload( 'sharedaddy_disable_resources', '0' ) ) {
189 + add_filter( 'sharing_js', '__return_false' );
190 + remove_action( 'wp_head', 'sharing_add_header', 1 );
191 + }
192 +}
193 +
194 +/**
195 + * Add settings to disable CSS and JS normally enqueued by our feature.
196 + *
197 + * @deprecated 16.3 Settings > Sharing renders the field itself.
198 + *
199 + * @return void
200 + */
201 +function sharing_global_resources() {
202 + _deprecated_function( __FUNCTION__, 'jetpack-16.3', 'Automattic\Jetpack\Sharing_Likes\Settings\Sharing_Resources::render' );
203 +}
204 +
205 +/**
206 + * Save settings to disable CSS and JS normally enqueued by our feature.
207 + *
208 + * @deprecated 16.3 Settings > Sharing saves the field itself.
209 + *
210 + * @return void
211 + */
212 +function sharing_global_resources_save() {
213 + _deprecated_function( __FUNCTION__, 'jetpack-16.3', 'Automattic\Jetpack\Sharing_Likes\Settings\Sharing_Resources::save' );
214 +}
215 +
216 +add_action( 'init', 'sharing_init' );
217 +add_action( 'add_meta_boxes', 'sharing_add_meta_box' );
218 +add_action( 'save_post', 'sharing_meta_box_save' );
219 +add_action( 'edit_attachment', 'sharing_meta_box_save' );