PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
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-status / src / class-cookiestate.php
jetpack / jetpack_vendor / automattic / jetpack-status / src Last commit date
class-cache.php 2 years ago class-cookiestate.php 2 months ago class-errors.php 8 months ago class-files.php 2 years ago class-host.php 3 days ago class-modules.php 1 month ago class-paths.php 2 years ago class-request.php 8 months ago class-status.php 3 days ago class-visitor.php 3 days ago
class-cookiestate.php
102 lines
1 <?php
2 /**
3 * Pass state to subsequent requests via cookies.
4 *
5 * @package automattic/jetpack-status
6 */
7
8 namespace Automattic\Jetpack;
9
10 /**
11 * Class Automattic\Jetpack\Status
12 *
13 * Used to retrieve information about the current status of Jetpack and the site overall.
14 */
15 class CookieState {
16
17 /**
18 * State is passed via cookies from one request to the next, but never to subsequent requests.
19 * SET: state( $key, $value );
20 * GET: $value = state( $key );
21 *
22 * @param string $key State key.
23 * @param string $value Value.
24 * @param bool $restate Reset the cookie (private).
25 */
26 public function state( $key = null, $value = null, $restate = false ) {
27 static $state = array();
28 static $path, $domain; // this initializes values to null
29 if ( ! isset( $path ) ) {
30 require_once ABSPATH . 'wp-admin/includes/plugin.php';
31 $admin_url = ( new Paths() )->admin_url();
32 $bits = wp_parse_url( $admin_url );
33
34 if ( is_array( $bits ) ) {
35 $path = ( isset( $bits['path'] ) ) ? dirname( $bits['path'] ) : null;
36 $domain = $bits['host'] ?? null;
37 }
38 }
39
40 // Extract state from cookies and delete cookies.
41 if ( isset( $_COOKIE['jetpackState'] ) && is_array( $_COOKIE['jetpackState'] ) ) {
42 // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- User should sanitize if necessary.
43 $yum = wp_unslash( $_COOKIE['jetpackState'] );
44 unset( $_COOKIE['jetpackState'] );
45 foreach ( $yum as $k => $v ) {
46 if ( strlen( $v ) ) {
47 $state[ $k ] = $v;
48 }
49 // @phan-suppress-next-line PhanTypeMismatchArgumentInternal -- Setting cookie to false is valid and documented for deletion.
50 setcookie( "jetpackState[$k]", false, 0, $path, $domain, is_ssl(), true );
51 }
52 }
53
54 if ( $restate ) {
55 foreach ( $state as $k => $v ) {
56 setcookie( "jetpackState[$k]", $v, 0, $path, $domain, is_ssl(), true );
57 }
58 return;
59 }
60
61 // Get a state variable.
62 if ( isset( $key ) && ! isset( $value ) ) {
63 if ( array_key_exists( $key, $state ) ) {
64 return $state[ $key ];
65 }
66 return null;
67 }
68
69 // Set a state variable.
70 if ( isset( $key ) && isset( $value ) ) {
71 if ( is_array( $value ) && isset( $value[0] ) ) {
72 $value = $value[0];
73 }
74 $state[ $key ] = $value;
75 if ( ! headers_sent() ) {
76 if ( $this->should_set_cookie( $key ) ) {
77 setcookie( "jetpackState[$key]", $value, 0, $path, $domain, is_ssl(), true );
78 }
79 }
80 }
81 }
82
83 /**
84 * Determines whether the jetpackState[$key] value should be added to the
85 * cookie.
86 *
87 * @param string $key The state key.
88 *
89 * @return boolean Whether the value should be added to the cookie.
90 */
91 public function should_set_cookie( $key ) {
92 global $current_screen;
93 $page = $current_screen->base ?? null;
94
95 if ( 'toplevel_page_jetpack' === $page && 'display_update_modal' === $key ) {
96 return false;
97 }
98
99 return true;
100 }
101 }
102