| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace NSL\Persistent\Storage;
- abstract class StorageAbstract {
- protected $sessionId = null;
- protected $data = array();
- public function set($key, $value) {
- $this->load(true);
- $this->data[$key] = $value;
- $this->store();
- }
- public function get($key) {
- $this->load();
- if (isset($this->data[$key])) {
- return $this->data[$key];
- }
- return null;
- }
- public function delete($key) {
- $this->load();
- if (isset($this->data[$key])) {
- unset($this->data[$key]);
- $this->store();
- }
- }
- public function clear() {
- $this->data = array();
- $this->store();
- }
- protected function load($createSession = false) {
- static $isLoaded = false;
- if (!$isLoaded) {
- $data = maybe_unserialize(get_site_transient($this->sessionId));
- if (is_array($data)) {
- $this->data = $data;
- }
- $isLoaded = true;
- }
- }
- private function store() {
- if (empty($this->data)) {
- delete_site_transient($this->sessionId);
- } else {
- set_site_transient($this->sessionId, $this->data, apply_filters('nsl_persistent_expiration', HOUR_IN_SECONDS));
- }
- }
- /**
- * @param StorageAbstract $storage
- */
- public function transferData($storage) {
- $this->data = $storage->data;
- $this->store();
- $storage->clear();
- }
- }
|