PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.1
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 13.7.2 13.8.3 13.9.2 14.0.1 All 504 releases
← All changes | modules/theme-tools/social-links.php +45 -174 13.6.216.3-a.1 View file →
@@ -12,104 +12,56 @@
12 12 *
13 13 * @package automattic/jetpack
14 14 */
15 15
16 +use Automattic\Jetpack\Status\Host;
17 +
18 +if ( ! defined( 'ABSPATH' ) ) {
19 + exit( 0 );
20 +}
21 +
16 22 // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files.
17 23
18 -/**
19 - * Init Social_Links if the theme declares support.
20 - */
21 -function jetpack_theme_supports_social_links() {
22 - if ( ! wp_is_block_theme() && current_theme_supports( 'social-links' ) && function_exists( 'publicize_init' ) ) {
23 - new Social_Links();
24 +if ( ! function_exists( 'jetpack_theme_supports_social_links' ) ) {
25 + /**
26 + * Init Social_Links if the theme declares support.
27 + */
28 + function jetpack_theme_supports_social_links() {
29 + new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links();
24 30 }
31 + if ( ! ( new Host() )->is_wpcom_platform() ) {
32 + add_action( 'init', 'jetpack_theme_supports_social_links', 30 );
33 + }
25 34 }
26 -add_action( 'init', 'jetpack_theme_supports_social_links', 30 );
27 35
28 36 if ( ! class_exists( 'Social_Links' ) ) {
29 37
30 38 /**
31 39 * Social_Links main class.
40 + *
41 + * @deprecated 13.8 Moved to Classic Theme Helper package.
32 42 */
33 43 class Social_Links {
34 44
35 45 /**
36 - * The links the user set for each service.
46 + * Constructor.
37 47 *
38 - * @var array
48 + * @deprecated 13.8 Moved to Classic Theme Helper package.
39 49 */
40 - private $links;
41 -
42 - /**
43 - * A Publicize object.
44 - *
45 - * @var Publicize
46 - */
47 - private $publicize;
48 -
49 - /**
50 - * An array with all services that are supported by both Publicize and the
51 - * currently active theme.
52 - *
53 - * @var array
54 - */
55 - private $services = array();
56 -
57 - /**
58 - * An array of the services the theme supports
59 - *
60 - * @var array
61 - */
62 - private $theme_supported_services = array();
63 -
64 - /**
65 - * Constructor.
66 - */
67 50 public function __construct() {
68 - $theme_support = get_theme_support( 'social-links' );
69 -
70 - /*
71 - An array of named arguments must be passed as the second parameter
72 - * of add_theme_support().
73 - */
74 - if ( empty( $theme_support[0] ) ) {
75 - return;
76 - }
77 -
78 - $this->theme_supported_services = $theme_support[0];
79 - $this->links = Jetpack_Options::get_option( 'social_links', array() );
80 -
81 - $this->admin_setup();
82 -
83 - add_filter( 'jetpack_has_social_links', array( $this, 'has_social_links' ) );
84 - add_filter( 'jetpack_get_social_links', array( $this, 'get_social_links' ) );
85 -
86 - foreach ( $theme_support[0] as $service ) {
87 - add_filter( "pre_option_jetpack-$service", array( $this, 'get_social_link_filter' ) ); // - `get_option( 'jetpack-service' );`
88 - add_filter( "theme_mod_jetpack-$service", array( $this, 'get_social_link_filter' ) ); // - `get_theme_mod( 'jetpack-service' );`
89 - }
51 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->__construct' );
52 + new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links();
90 53 }
91 54
92 55 /**
93 56 * Init the admin setup.
57 + *
58 + * @deprecated 13.8 Moved to Classic Theme Helper package.
94 59 */
95 60 public function admin_setup() {
96 - if ( ! current_user_can( 'manage_options' ) ) {
97 - return;
98 - }
99 -
100 - if ( ! is_admin() && ! $this->is_customize_preview() ) {
101 - return;
102 - }
103 -
104 - $this->publicize = publicize_init();
105 - $publicize_services = $this->publicize->get_services( 'connected' );
106 - $this->services = array_intersect( array_keys( $publicize_services ), $this->theme_supported_services );
107 -
108 - add_action( 'publicize_connected', array( $this, 'check_links' ), 20 );
109 - add_action( 'publicize_disconnected', array( $this, 'check_links' ), 20 );
110 - add_action( 'customize_register', array( $this, 'customize_register' ) );
111 - add_filter( 'sanitize_option_jetpack_options', array( $this, 'sanitize_link' ) );
61 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->admin_setup' );
62 + $social_links_instance = new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links();
63 + $social_links_instance->admin_setup();
112 64 }
113 65
114 66 /**
115 67 * Compares the currently saved links with the connected services and removes
@@ -114,87 +66,50 @@
114 66 /**
115 67 * Compares the currently saved links with the connected services and removes
116 68 * links from services that are no longer connected.
117 69 *
70 + * @deprecated 13.8 Moved to Classic Theme Helper package.
118 71 * @return void
119 72 */
120 73 public function check_links() {
121 - $active_links = array_intersect_key( $this->links, array_flip( $this->services ) );
122 -
123 - if ( $active_links !== $this->links ) {
124 - $this->links = $active_links;
125 - Jetpack_Options::update_option( 'social_links', $active_links );
126 - }
74 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->check_links' );
75 + $social_links_instance = new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links();
76 + $social_links_instance->check_links();
127 77 }
128 78
129 79 /**
130 80 * Add social link dropdown to the Customizer.
131 81 *
82 + * @deprecated 13.8 Moved to Classic Theme Helper package.
132 83 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
133 84 */
134 85 public function customize_register( $wp_customize ) {
135 - $wp_customize->add_section(
136 - 'jetpack_social_links',
137 - array(
138 - 'title' => esc_html__( 'Connect', 'jetpack' ),
139 - 'priority' => 35,
140 - )
141 - );
142 -
143 - foreach ( array_keys( $this->publicize->get_services( 'all' ) ) as $service ) {
144 - $choices = $this->get_customize_select( $service );
145 -
146 - if ( empty( $choices ) ) {
147 - continue;
148 - }
149 -
150 - $wp_customize->add_setting(
151 - "jetpack_options[social_links][$service]",
152 - array(
153 - 'type' => 'option',
154 - 'default' => '',
155 - )
156 - );
157 -
158 - $wp_customize->add_control(
159 - "jetpack-$service",
160 - array(
161 - 'label' => $this->publicize->get_service_label( $service ),
162 - 'section' => 'jetpack_social_links',
163 - 'settings' => "jetpack_options[social_links][$service]",
164 - 'type' => 'select',
165 - 'choices' => $choices,
166 - )
167 - );
168 - }
86 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->customize_register' );
87 + $social_links_instance = new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links();
88 + $social_links_instance->customize_register( $wp_customize );
169 89 }
170 90
171 91 /**
172 92 * Sanitizes social links.
173 93 *
94 + * @deprecated 13.8 Moved to Classic Theme Helper package.
174 95 * @param array $option The incoming values to be sanitized.
175 96 * @return array
176 97 */
177 98 public function sanitize_link( $option ) {
178 - foreach ( $this->services as $service ) {
179 - if ( ! empty( $option['social_links'][ $service ] ) ) {
180 - $option['social_links'][ $service ] = esc_url_raw( $option['social_links'][ $service ] );
181 - } else {
182 - unset( $option['social_links'][ $service ] );
183 - }
184 - }
185 -
186 - return $option;
99 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->sanitize_link' );
100 + return ( new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links() )->sanitize_link( $option );
187 101 }
188 102
189 103 /**
190 104 * Returns whether there are any social links set.
191 105 *
106 + * @deprecated 13.8 Moved to Classic Theme Helper package.
192 107 * @return bool
193 108 */
194 109 public function has_social_links() {
195 - return ! empty( $this->links );
196 - }
110 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->has_social_links' );
111 + return ( new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links() )->has_social_links(); }
197 112
198 113 /**
199 114 * Return available social links.
200 115 *
@@ -200,66 +115,22 @@
200 115 *
201 116 * @return array
202 117 */
203 118 public function get_social_links() {
204 - return $this->links;
119 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->get_social_links' );
120 + return ( new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links() )->get_social_links();
205 121 }
206 122
207 123 /**
208 124 * Short-circuits get_option and get_theme_mod calls.
209 125 *
126 + * @deprecated 13.8 Moved to Classic Theme Helper package.
210 127 * @param string $link The incoming value to be replaced.
211 128 * @return string $link The social link that we've got.
212 129 */
213 130 public function get_social_link_filter( $link ) {
214 - if ( preg_match( '/_jetpack-(.+)$/i', current_filter(), $matches ) && ! empty( $this->links[ $matches[1] ] ) ) {
215 - return $this->links[ $matches[1] ];
216 - }
217 -
218 - return $link;
219 - }
220 -
221 - /**
222 - * Puts together an array of choices for a specific service.
223 - *
224 - * @param string $service The social service.
225 - * @return array An associative array with profile links and display names.
226 - */
227 - private function get_customize_select( $service ) {
228 - $choices = array(
229 - '' => __( '— Select —', 'jetpack' ),
230 - );
231 -
232 - if ( isset( $this->links[ $service ] ) ) {
233 - $choices[ $this->links[ $service ] ] = $this->links[ $service ];
234 - }
235 -
236 - $connected_services = $this->publicize->get_services( 'connected' );
237 - if ( isset( $connected_services[ $service ] ) ) {
238 - foreach ( $connected_services[ $service ] as $c ) {
239 - $profile_link = $this->publicize->get_profile_link( $service, $c );
240 -
241 - if ( false === $profile_link ) {
242 - continue;
243 - }
244 -
245 - $choices[ $profile_link ] = $this->publicize->get_display_name( $service, $c );
246 - }
247 - }
248 -
249 - if ( 1 === count( $choices ) ) {
250 - return array();
251 - }
252 -
253 - return $choices;
254 - }
255 -
256 - /**
257 - * Back-compat function for versions prior to 4.0.
258 - */
259 - private function is_customize_preview() {
260 - global $wp_customize;
261 - return is_a( $wp_customize, 'WP_Customize_Manager' ) && $wp_customize->is_preview();
131 + _deprecated_function( __METHOD__, '13.8', 'Automattic\\Jetpack\\Classic_Theme_Helper\\Social_Links->get_social_link_filter' );
132 + return ( new \Automattic\Jetpack\Classic_Theme_Helper\Social_Links() )->get_social_link_filter( $link );
262 133 }
263 134 }
264 135
265 136 } // - end if ( ! class_exists( 'Social_Links' )