Просмотр файла sdark.mobi/fs/resources/fotostrana.requestscache.php

Размер файла: 1.54Kb
<?php

/**
 * Класс, реализующий кэширование запросов к API
 * Пользователь SDK может переопределить методы хранения данных, например в MySQL
 */
class fotostranaRequestsCache
{

    private $cache_dir;

    function __construct()
    {
        $this->cache_dir = dirname(__FILE__) . '/cache/';
        if (!is_dir($this->cache_dir)) {
            mkdir($this->cache_dir, 0777, true);
        }
    }

    function storeCache($params, $data)
    {
        if ($params) {
            file_put_contents($this->cache_dir . $this->makeCacheKey($params), $this->encryptData($data));
            chmod($this->cache_dir . $this->makeCacheKey($params), 0777);
        }
    }

    function loadCache($params)
    {
        if ($params) {
            $f = $this->cache_dir . $this->makeCacheKey($params);
            if (file_exists($f)) {
                if (filemtime($f) < (time() - FOTOSTRANA_REQUESTS_CACHE_TIMEOUT)) {
                    @unlink($f);
                } else {
                    return $this->decryptData(file_get_contents($f));
                }
            }
        }
    }

    private function makeCacheKey($params)
    {
        if ($params) {
            // убираем всякие рандомные параметры
            unset($params['timestamp']);
            unset($params['rand']);
            return md5(serialize($params));
        }
    }

    // пользователь может добавить шифрование и дешифрование данных по вкусу
    private function encryptData($data) { return serialize($data); }
    private function decryptData($data) { return unserialize($data); }

}

?>