<?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); } }