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-stats / src / class-options.php
jetpack / jetpack_vendor / automattic / jetpack-stats / src Last commit date
abilities 1 week ago class-main.php 2 days ago class-options.php 3 weeks ago class-package-version.php 2 days ago class-rest-provider.php 2 years ago class-tracking-pixel.php 3 weeks ago class-transient-cleanup.php 1 week ago class-wpcom-stats.php 2 days ago class-xmlrpc-provider.php 2 days ago
class-options.php
177 lines
1 <?php
2 /**
3 * Stats Options
4 *
5 * @package automattic/jetpack-stats
6 */
7
8 namespace Automattic\Jetpack\Stats;
9
10 use Jetpack_Options;
11
12 /**
13 * Stats Options class.
14 */
15 class Options {
16
17 /**
18 * Option name.
19 *
20 * @var string $option_name The 'stats' option name
21 */
22 const OPTION_NAME = 'stats_options';
23
24 /**
25 * Stats Options.
26 *
27 * @var array $options An array of associated Stats options (default empty)
28 */
29 protected static $options = array();
30
31 /**
32 * Stats Get Options.
33 *
34 * @return array
35 */
36 public static function get_options() {
37 // Make sure we only get options from the database once per connection.
38 if ( array() !== self::$options ) {
39 return self::$options;
40 }
41
42 self::$options = get_option( self::OPTION_NAME, array() );
43 self::$options = array_merge( self::get_defaults(), self::$options );
44
45 if ( self::$options['version'] < Main::STATS_VERSION ) {
46 self::upgrade_options( self::$options );
47 }
48
49 return self::$options;
50 }
51
52 /**
53 * Get Stats Option.
54 *
55 * @param string $option Option name.
56 * @return mixed|null
57 */
58 public static function get_option( $option ) {
59 if ( 'blog_id' === $option ) {
60 return Jetpack_Options::get_option( 'id' );
61 }
62
63 $options = self::get_options();
64
65 if ( isset( $options[ $option ] ) ) {
66 return $options[ $option ];
67 }
68
69 return null;
70 }
71
72 /**
73 * Stats Set Option.
74 *
75 * @param string $option The option name.
76 * @param mixed $value The option Value.
77 * @return bool
78 */
79 public static function set_option( $option, $value ) {
80 $options = self::get_options();
81
82 $options[ $option ] = $value;
83
84 return self::set_options( $options );
85 }
86
87 /**
88 * Stats Set Options.
89 *
90 * @access public
91 * @param array $options Options.
92 * @return bool
93 */
94 public static function set_options( $options ) {
95 if ( ! is_array( $options ) ) {
96 return false;
97 }
98
99 $defaults = self::get_defaults();
100 $stored_options = get_option( self::OPTION_NAME, array() );
101 $all_options = array_merge( $defaults, $stored_options );
102 $options = array_merge( $all_options, $options );
103
104 $allowed_options = array_keys( $defaults );
105 foreach ( $options as $option_name => $option_value ) {
106 if ( ! in_array( $option_name, $allowed_options, true ) ) {
107 unset( $options[ $option_name ] );
108 }
109 }
110
111 $options['blog_id'] = Jetpack_Options::get_option( 'id' );
112 $options['version'] = Main::STATS_VERSION;
113
114 $success = update_option( self::OPTION_NAME, $options );
115
116 if ( true === $success ) {
117 self::$options = $options;
118 }
119
120 return $success;
121 }
122
123 /**
124 * Stats Upgrade Options.
125 *
126 * Ideally this should be a protected method but keeping it public
127 * to maintain backwards compatibility with stats_upgrade_options.
128 *
129 * @access public
130 * @param array $options The stats options.
131 * @return array|bool
132 */
133 public static function upgrade_options( $options ) {
134 if ( isset( $options['reg_users'] ) ) {
135 if ( ! function_exists( 'get_editable_roles' ) ) {
136 require_once ABSPATH . 'wp-admin/includes/user.php';
137 }
138 if ( $options['reg_users'] ) {
139 $options['count_roles'] = array_keys( get_editable_roles() );
140 }
141 unset( $options['reg_users'] );
142 }
143
144 if ( false === self::set_options( $options ) ) {
145 return false;
146 }
147
148 return self::$options;
149 }
150
151 /**
152 * Default Stats related options.
153 *
154 * Exposed so consumers (e.g. the Abilities API surface) can introspect
155 * each option's default value and infer its type without redeclaring
156 * a parallel allow-list of bool/array fields.
157 *
158 * @return array
159 */
160 public static function get_defaults() {
161 return array(
162 'admin_bar' => true,
163 'roles' => array( 'administrator' ),
164 'count_roles' => array(),
165 'do_not_track' => true, // @todo
166 'blog_id' => Jetpack_Options::get_option( 'id' ),
167 'version' => Main::STATS_VERSION,
168 'collapse_nudges' => false,
169 'enable_odyssey_stats' => true,
170 'odyssey_stats_changed_at' => 0,
171 'notices' => array(),
172 'views' => 0,
173 'honor_cookie_consent' => false,
174 );
175 }
176 }
177