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-services.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-services.php
162 lines
1 <?php
2 /**
3 * Publicize Services class.
4 *
5 * @package automattic/jetpack-publicize
6 */
7
8 namespace Automattic\Jetpack\Publicize;
9
10 use Automattic\Jetpack\Publicize\REST_API\Proxy_Requests;
11 use WP_REST_Request;
12
13 /**
14 * Publicize Services class.
15 */
16 class Services {
17
18 const SERVICES_TRANSIENT = 'jetpack_social_services_list_v2';
19
20 /**
21 * Get the available publicize services. Meant to be called directly only on WPCOM.
22 *
23 * @return array
24 */
25 public static function wpcom_get_all() {
26 // Ensure that we are on WPCOM.
27 Publicize_Utils::assert_is_wpcom( __METHOD__ );
28
29 require_lib( 'external-connections' );
30
31 $external_connections = \WPCOM_External_Connections::init();
32
33 $services = $external_connections->get_external_services_list( 'publicize', get_current_blog_id() );
34
35 $items = array();
36
37 foreach ( $services as $service ) {
38 // Set the fields as per the schema in Services_Controller.
39 $items[] = array(
40 'id' => $service['ID'],
41 'description' => $service['description'],
42 'label' => $service['label'],
43 'status' => $service['status'] ?? 'ok',
44 'supports' => array(
45 'additional_users' => $service['multiple_external_user_ID_support'],
46 'additional_users_only' => $service['external_users_only'],
47 ),
48 'url' => $service['connect_URL'],
49 );
50 }
51
52 return $items;
53 }
54
55 /**
56 * Get all services.
57 *
58 * @param array $args Arguments
59 * - 'ignore_cache': bool Whether to ignore the cache and fetch the connections from the API.
60 * @return array
61 */
62 public static function get_all( $args = array() ) {
63
64 if ( Publicize_Utils::is_wpcom() ) {
65 $services = self::wpcom_get_all();
66 } else {
67
68 $ignore_cache = $args['ignore_cache'] ?? false;
69
70 $services = get_transient( self::SERVICES_TRANSIENT );
71
72 if ( $ignore_cache || false === $services ) {
73 $services = self::fetch_and_cache_services();
74 }
75 // This is here for backwards compatibility
76 // TODO Remove this array_map() call after April 2025 release of Jetpack.
77 $services = array_map(
78 function ( $service ) {
79 global $publicize;
80
81 return array_merge(
82 $service,
83 array(
84 'ID' => $service['id'],
85 'connect_URL' => $publicize->connect_url( $service['id'], 'connect' ),
86 'external_users_only' => $service['supports']['additional_users_only'],
87 'multiple_external_user_ID_support' => $service['supports']['additional_users'],
88 )
89 );
90 },
91 $services
92 );
93 }
94
95 /**
96 * Filters the list of Publicize services available to the site.
97 *
98 * @since 0.84.3
99 *
100 * @param array $services List of services.
101 */
102 return (array) apply_filters( 'jetpack_publicize_services', $services );
103 }
104
105 /**
106 * Fetch services from the REST API and cache them.
107 *
108 * @return array
109 */
110 public static function fetch_and_cache_services() {
111 $proxy = new Proxy_Requests( 'publicize/services' );
112
113 $request = new WP_REST_Request( 'GET' );
114
115 $response = $proxy->proxy_request_to_wpcom_as_user( $request );
116
117 if ( is_wp_error( $response ) ) {
118 // @todo log error.
119 return array();
120 }
121
122 if ( is_array( $response ) ) {
123 /**
124 * Let us set the connect URL to null.
125 *
126 * Reason:
127 * We do not want to cache the connect URL, as it's user-specific,
128 * but the services are for all users.
129 * The intention is to get the connect URL on demand via an API call when needed.
130 */
131 $services = array_map(
132 function ( $service ) {
133 return array_merge(
134 $service,
135 array(
136 'url' => null,
137 )
138 );
139 },
140 $response
141 );
142
143 if ( ! set_transient( self::SERVICES_TRANSIENT, $services, DAY_IN_SECONDS ) ) {
144 // If the transient has beeen set in another request, the call to set_transient can fail.
145 // If so, we can delete the transient and try again.
146 self::clear_cache();
147
148 set_transient( self::SERVICES_TRANSIENT, $services, DAY_IN_SECONDS );
149 }
150 }
151
152 return $response;
153 }
154
155 /**
156 * Clear the services cache.
157 */
158 public static function clear_cache() {
159 delete_transient( self::SERVICES_TRANSIENT );
160 }
161 }
162