75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace ShortPixel\Controller;
 | |
| 
 | |
| if ( ! defined( 'ABSPATH' ) ) {
 | |
|  exit; // Exit if accessed directly.
 | |
| }
 | |
| 
 | |
| use ShortPixel\ShortPixelLogger\ShortPixelLogger as Log;
 | |
| use ShortPixel\Model\CacheModel as CacheModel;
 | |
| // Future replacement for everything that needs temporary storage
 | |
| // Storage agnostic -> called function should not need to know what is stored where, this is job of controller.
 | |
| // Works with cache-model, which handles the data representation and storage.
 | |
| //
 | |
| 
 | |
| class CacheController extends \ShortPixel\Controller
 | |
| {
 | |
|   protected static $cached_items = array();
 | |
| 
 | |
|   public function __construct()
 | |
|   {
 | |
|   }
 | |
| 
 | |
|   public function storeItem($name, $value, $expires = HOUR_IN_SECONDS)
 | |
|   {
 | |
|      $cache = $this->getItem($name);
 | |
|      $cache->setValue($value);
 | |
|      $cache->setExpires($expires);
 | |
| 
 | |
|      $cache->save();
 | |
|      $cache = apply_filters('shortpixel/cache/save', $cache, $name);
 | |
|      self::$cached_items[$name] = $cache;
 | |
| 
 | |
|      return $cache;
 | |
|   }
 | |
| 
 | |
|   /** Store a cacheModel Object.
 | |
|   * This can be used after requesting a cache item for instance.
 | |
|   *  @param CacheModel $cache The Cache Model Item.
 | |
|   */
 | |
|   public function storeItemObject(CacheModel $cache)
 | |
|   {
 | |
|        self::$cached_items[$cache->getName()] = $cache;
 | |
|        $cache->save();
 | |
|   }
 | |
| 
 | |
|   public function getItem($name)
 | |
|   {
 | |
|      if (isset(self::$cached_items[$name]))
 | |
|       return self::$cached_items[$name];
 | |
| 
 | |
|      $cache = new CacheModel($name);
 | |
|      $cache = apply_filters('shortpixel/cache/get', $cache, $name);
 | |
|      self::$cached_items[$name] = $cache;
 | |
| 
 | |
|      return $cache;
 | |
|   }
 | |
| 
 | |
|   public function deleteItem($name)
 | |
|   {
 | |
|     $cache = $this->getItem($name);
 | |
| 
 | |
|     if ($cache->exists())
 | |
|     {
 | |
|       $cache->delete();
 | |
|     }
 | |
| 
 | |
|   }
 | |
| 
 | |
|   public function deleteItemObject(CacheModel $cache)
 | |
|   {
 | |
|     $cache->delete();
 | |
|   }
 | |
| 
 | |
| }
 |