PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta
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-message-templates-placeholders.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-message-templates-placeholders.php
103 lines
1 <?php
2 /**
3 * Publicize Message Templates Placeholders 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 * Fetches and caches the canonical message-template placeholder catalogue from WPCOM.
15 *
16 * The value transient holds the catalogue and is only overwritten on a
17 * successful refetch — we never want to drop back to an empty list.
18 * The validity transient acts as a soft TTL: its expiry triggers the next refetch.
19 */
20 class Message_Templates_Placeholders {
21
22 const VALUE_TRANSIENT = 'jetpack_social_message_template_placeholders';
23 const VALIDITY_TRANSIENT = 'jetpack_social_message_template_placeholders_validity';
24
25 const VALIDITY_TTL = 3 * DAY_IN_SECONDS;
26 const FAILURE_RETRY_TTL = HOUR_IN_SECONDS;
27
28 /**
29 * Get the placeholder catalogue.
30 *
31 * @return array<int, array{id: string, label: string}>
32 */
33 public static function get_all() {
34 if ( Publicize_Utils::is_wpcom() ) {
35 return self::wpcom_get_placeholders();
36 }
37
38 $cached = get_transient( self::VALUE_TRANSIENT );
39 $is_valid = false !== get_transient( self::VALIDITY_TRANSIENT );
40
41 if ( $is_valid ) {
42 return is_array( $cached ) ? $cached : array();
43 }
44
45 return self::fetch_and_cache( $cached );
46 }
47
48 /**
49 * Fetch from WPCOM and update the cache.
50 *
51 * @param array|false $existing Existing cached value to fall back to on failure.
52 * @return array<int, array{id: string, label: string}>
53 */
54 public static function fetch_and_cache( $existing = false ) {
55 $placeholders = self::fetch_from_wpcom();
56
57 if ( is_wp_error( $placeholders ) || empty( $placeholders ) ) {
58 // Throttle retries so we don't hammer WPCOM while it's unreachable.
59 set_transient( self::VALIDITY_TRANSIENT, 1, self::FAILURE_RETRY_TTL );
60
61 return is_array( $existing ) ? $existing : array();
62 }
63
64 set_transient( self::VALUE_TRANSIENT, $placeholders, YEAR_IN_SECONDS );
65 set_transient( self::VALIDITY_TRANSIENT, 1, self::VALIDITY_TTL );
66
67 return $placeholders;
68 }
69
70 /**
71 * Proxy the request to WPCOM as blog.
72 *
73 * @return array|\WP_Error
74 */
75 public static function fetch_from_wpcom() {
76 $proxy = new Proxy_Requests( 'publicize/message-templates/placeholders' );
77 $request = new WP_REST_Request( 'GET' );
78
79 return $proxy->proxy_request_to_wpcom_as_blog( $request );
80 }
81
82 /**
83 * Read and reshape the catalogue directly from WPCOM's helper. WPCOM Simple only.
84 *
85 * @return array<int, array{id: string, label: string}>
86 */
87 public static function wpcom_get_placeholders() {
88 Publicize_Utils::assert_is_wpcom( __METHOD__ );
89
90 require_lib( 'publicize/util/message-templates' );
91
92 $placeholders = array();
93 foreach ( \Publicize\get_supported_placeholders() as $id => $entry ) {
94 $placeholders[] = array(
95 'id' => $id,
96 'label' => $entry['title'],
97 );
98 }
99
100 return $placeholders;
101 }
102 }
103