46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace WebPExpress;
|
||
|
|
|
||
|
|
use \WebPExpress\Option;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Store state in db
|
||
|
|
* We are using update_option WITHOUT autoloading.
|
||
|
|
* So this class is not intended for storing stuff that is needed on every page load.
|
||
|
|
* For such things, use update_option / get_option directly
|
||
|
|
*/
|
||
|
|
|
||
|
|
|
||
|
|
class State
|
||
|
|
{
|
||
|
|
|
||
|
|
public static function getStateObj() {
|
||
|
|
// TODO: cache
|
||
|
|
$json = Option::getOption('webp-express-state', '[]');
|
||
|
|
return json_decode($json, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Return state by key. Returns supplied default if key doesn't exist, or state object is corrupt
|
||
|
|
*/
|
||
|
|
public static function getState($key, $default = null) {
|
||
|
|
$obj = self::getStateObj();
|
||
|
|
if ($obj != false) {
|
||
|
|
if (isset($obj[$key])) {
|
||
|
|
return $obj[$key];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $default;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function setState($key, $value) {
|
||
|
|
$currentStateObj = self::getStateObj();
|
||
|
|
$currentStateObj[$key] = $value;
|
||
|
|
$json = json_encode($currentStateObj, JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);
|
||
|
|
|
||
|
|
// Store in db. No autoloading.
|
||
|
|
Option::updateOption('webp-express-state', $json, false);
|
||
|
|
}
|
||
|
|
}
|