public static getCacheUrl ( string $type, array $params = [] ) : Horde_Url | ||
$type | string | The cache type ('app', 'css', 'js'). |
$params | array | Optional parameters: - app: REQUIRED for $type == 'app'. Identifies the application to call the 'cacheOutput' API call, which is passed in the value of the entire $params array (which may include parameters other than those listed here). The return from cacheOutput should be a 2-element array: 'data' (the cached data) and 'type' (the content-type of the data). - cid: REQUIRED for $type == 'css' || 'js'. The cacheid of the data (stored in Horde_Cache). - nocache: If true, sets the cache limiter to 'nocache' instead of the default 'public'. |
return | Horde_Url | The URL to the cache page. |
public static function getCacheUrl($type, $params = array())
{
$url = $GLOBALS['registry']->getserviceLink('cache', 'horde')->add('cache', $type);
foreach ($params as $key => $val) {
$url .= '/' . $key . '=' . rawurlencode(strval($val));
}
return self::url($url, true, array('append_session' => -1));
}
/** */ public function process($css, $cacheid) { global $injector; if (!empty($this->_params['filemtime'])) { foreach ($css as &$val) { $val['mtime'] = @filemtime($val['fs']); } } $cache = $injector->getInstance('Horde_Cache'); $sig = hash(version_compare(PHP_VERSION, '5.4', '>=') ? 'fnv164' : 'sha1', json_encode($css) . $cacheid); // Do lifetime checking here, not on cache display page. if (!$cache->exists($sig, empty($this->_params['lifetime']) ? 0 : $this->_params['lifetime'])) { $compress = new Horde_Themes_Css_Compress(); $cache->set($sig, $compress->compress($css)); } return array(Horde::getCacheUrl('css', array('cid' => $sig))); }