PluginProbe ʕ •ᴥ•ʔ
Kubio AI Page Builder / 2.2.3
Kubio AI Page Builder v2.2.3
2.8.1 trunk 1.0.0 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.9.0 2.0.0 2.1.1 2.1.2 2.1.3 2.2.0 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.5 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.6.1 2.6.2 2.6.3 2.6.5 2.6.6 2.6.7 2.7.0 2.7.1 2.7.2 2.7.3 2.8.0
kubio / lib / src / Flags.php
kubio / lib / src Last commit date
CLI 2 years ago Core 2 years ago DemoSites 2 years ago AssetsDependencyInjector.php 3 years ago Config.php 3 years ago FileLog.php 2 years ago Flags.php 2 years ago GoogleFontsLocalLoader.php 2 years ago Migrations.php 4 years ago NotificationsManager.php 2 years ago PluginsManager.php 2 years ago
Flags.php
183 lines
1 <?php
2
3 namespace Kubio;
4
5 use IlluminateAgnostic\Arr\Support\Arr;
6
7 class Flags {
8 private static $instance = null;
9 private $flags = array();
10 private $is_dirty_value = false;
11
12
13 private function __construct() {
14
15 $this->flags = get_option( '__kubio_instance_flags', array() );
16 add_action( 'shutdown', array( $this, 'save' ) );
17
18 $default_settings = require_once KUBIO_ROOT_DIR . '/defaults/settings.php';
19
20 $this->flags['_settings'] = array_replace_recursive(
21 $default_settings,
22 Arr::get( $this->flags, '_settings', array() )
23 );
24 }
25
26 /**
27 * @param string $flag
28 * @param mixed $value
29 *
30 */
31 public static function set( $flag, $value ) {
32 static::getInstance()->setFlag( $flag, $value );
33 }
34
35 /**
36 * @param string $flag
37 * @param mixed $value
38 *
39
40 */
41 function setFlag( $flag, $value ) {
42 $this->withFlags( 'set', $flag, $value );
43 }
44
45 /**
46 * @param $action
47 * @param null $flag
48 * @param null $data
49 *
50 * @return mixed|null
51 */
52 private function withFlags( $action, $flag = null, $data = null ) {
53 if ( $action === 'get-all' ) {
54 return $this->flags;
55 }
56
57 if ( $action === 'get' ) {
58 if ( isset( $this->flags[ $flag ] ) ) {
59 return $this->flags[ $flag ];
60 }
61
62 $kubio_flags_defaults = apply_filters( 'kubio/instance-flags-default', array() );
63
64 if ( isset( $kubio_flags_defaults[ $flag ] ) ) {
65 return $kubio_flags_defaults[ $flag ];
66 }
67
68 return $data;
69 }
70
71 if ( $action === 'set' ) {
72 $this->flags[ $flag ] = $data;
73 $this->is_dirty_value = true;
74 $this->save();
75 return $data;
76 }
77
78 if ( $action === 'delete' ) {
79 if ( isset( $this->flags[ $flag ] ) ) {
80 unset( $this->flags[ $flag ] );
81 $this->is_dirty_value = true;
82 }
83 $this->save();
84 return null;
85 }
86 }
87
88 /**
89 * @return static
90 */
91 private static function getInstance() {
92
93 if ( ! self::$instance ) {
94 self::$instance = new self();
95 }
96
97 return self::$instance;
98 }
99
100 /**
101 * @param string $flag
102 *
103 */
104 public static function delete( $flag ) {
105 static::getInstance()->deleteFlag( $flag );
106 }
107
108 /**
109 * @param string $flag
110 *
111 */
112 function deleteFlag( $flag ) {
113 $this->withFlags( 'delete', $flag );
114 }
115
116 /**
117 * @param string $flag
118 * @param mixed $fallback
119 *
120 * @return mixed|null
121 */
122 public static function get( $flag, $fallback = null ) {
123 return static::getInstance()->getFlag( $flag, $fallback );
124 }
125
126 /**
127 * @param string $flag
128 * @param mixed $fallback
129 *
130 * @return mixed|null
131 */
132 function getFlag( $flag, $fallback = null ) {
133 return $this->withFlags( 'get', $flag, $fallback );
134
135 }
136
137 public function save() {
138 if ( $this->is_dirty_value ) {
139 update_option( '__kubio_instance_flags', $this->flags, false );
140 $this->is_dirty_value = false;
141 }
142 }
143
144 public static function touch( $flag ) {
145 static::set( $flag, time() );
146 }
147
148 public static function getSetting( $path, $fallback = null ) {
149 $settings = static::getSettings();
150 return Arr::get( $settings, $path, $fallback );
151 }
152
153 public static function getSettings( $raw = false ) {
154 $settings = static::get( '_settings', array() );
155
156 if ( $raw ) {
157 return $settings;
158 }
159
160 return apply_filters( 'kubio/flags/settings', $settings );
161 }
162
163 public static function setSettings( $settings ) {
164 static::set( '_settings', $settings );
165 }
166
167 public static function setSetting( $path, $value ) {
168 $settings = static::getSettings( true );
169 Arr::set( $settings, $path, $value );
170 static::setSettings( $settings );
171 }
172
173 public static function getSiteUUID() {
174 $uuid = static::getSetting( 'site_uuid', null );
175 if ( ! $uuid ) {
176 $uuid = wp_generate_uuid4();
177 static::setSetting( 'site_uuid', $uuid );
178 }
179
180 return $uuid;
181 }
182 }
183