Skip to content
Snippets Groups Projects
Cache.php 1.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • <?php
    /**
     * @author Jaap Jansma <jaap.jansma@civicoop.org>
     * @license AGPL-3.0
     */
    
    class CRM_Dataprocessor_Utils_Cache {
    
      /**
       * @var CRM_DataProcessor_Utils_Cache
       */
      private static $singleton;
    
      /**
       * @var \CRM_Utils_Cache_Interface
       */
      protected $cache;
    
      private function __construct() {
        $this->cache = \CRM_Utils_Cache::create([
          'name' => 'dataprocessor',
          'type' => ['*memory*', 'SqlGroup', 'ArrayCache'],
          'prefetch' => FALSE,
        ]);
      }
    
    
      /**
       * Clear all data processor caches.
       *
       * This is a helper function which contains a clear cache for all caches.
       *
       */
      public static function clearAllDataProcessorCaches() {
          $cache = CRM_Dataprocessor_Utils_Cache::singleton();
          $cache->cache->clear();
          Civi\DataProcessor\Output\Api::clearCache();
      }
    
    
      /**
       * @return \CRM_DataProcessor_Utils_Cache
       */
      public static function singleton() {
        if (!self::$singleton) {
          self::$singleton = new CRM_DataProcessor_Utils_Cache();
        }
        return self::$singleton;
      }
    
      /**
       * @param $key
       * @param null $default
       *
       * @return mixed
       */
      public function get($key, $default=NULL) {
    
        $environment = CRM_Core_BAO_Setting::getItem('', 'environment');
        if ($environment == 'Production') {
          return $this->cache->get($key, $default);
        }
        return $default;
    
      }
    
      /**
       * @param $key
       * @param $value
       * @param null $ttl
       *
       * @return bool
       */
      public function set($key, $value, $ttl=NULL) {
        return $this->cache->set($key, $value, $ttl);
      }