PluginProbe ʕ •ᴥ•ʔ
Custom Twitter Feeds – A Tweets Widget or X Feed Widget / 2.8.0
Custom Twitter Feeds – A Tweets Widget or X Feed Widget v2.8.0
2.8.0 2.7.0 2.6.1 2.6.0 1.0 1.0.1 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.2 1.2.1 1.2.10 1.2.11 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3 1.4 1.4.1 1.5 1.5.1 1.6 1.6.1 1.7 1.8 1.8.1 1.8.2 1.8.3 1.8.4 2.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1 2.1.1 2.1.2 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.5.4 2.5.5 trunk
custom-twitter-feeds / inc / UsageTracking / Core / RegisterSite.php
custom-twitter-feeds / inc / UsageTracking / Core Last commit date
PayloadBuilder.php 3 weeks ago RegisterSite.php 3 weeks ago Scheduler.php 3 weeks ago Sender.php 3 weeks ago
RegisterSite.php
77 lines
1 <?php
2 /**
3 * Register-site API client. Fetches site_token from the API and stores it.
4 *
5 * @package TwitterFeed\UsageTracking\Core
6 * @since 2.6
7 */
8
9 namespace TwitterFeed\UsageTracking\Core;
10
11 use TwitterFeed\UsageTracking\Config;
12 use TwitterFeed\UsageTracking\ReporterInterface;
13
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit;
16 }
17
18 class RegisterSite {
19
20 /**
21 * Register the site with the API and store the returned site_token.
22 *
23 * @param ReporterInterface $reporter Plugin reporter (for slug/version).
24 * @return string|null Site token on success, null on failure.
25 */
26 public function register( ReporterInterface $reporter ) {
27 $existing = get_option( Config::OPTION_SITE_TOKEN, '' );
28 if ( '' !== $existing && is_string( $existing ) ) {
29 return $existing;
30 }
31
32 $url = Config::get_register_site_url();
33 $body = array(
34 'site_url' => home_url(),
35 'plugin_slug' => $reporter->get_plugin_slug(),
36 'plugin_version' => defined( 'CTF_VERSION' ) ? CTF_VERSION : '',
37 );
38
39 $response = wp_remote_post(
40 $url,
41 array(
42 'method' => 'POST',
43 'timeout' => 15,
44 'redirection' => 5,
45 'headers' => array(
46 'Content-Type' => 'application/json',
47 ),
48 'body' => wp_json_encode( $body ),
49 )
50 );
51
52 if ( is_wp_error( $response ) ) {
53 return null;
54 }
55
56 $code = wp_remote_retrieve_response_code( $response );
57 if ( $code < 200 || $code >= 300 ) {
58 return null;
59 }
60
61 $body_raw = wp_remote_retrieve_body( $response );
62 $data = json_decode( $body_raw, true );
63 if ( ! is_array( $data ) ) {
64 return null;
65 }
66
67 $token = isset( $data['site_token'] ) ? $data['site_token'] : (isset( $data['token'] ) ? $data['token'] : null);
68 if ( null === $token || '' === $token || ! is_string( $token ) ) {
69 return null;
70 }
71
72 $token = sanitize_text_field( $token );
73 update_option( Config::OPTION_SITE_TOKEN, $token, false );
74 return $token;
75 }
76 }
77