/** * Returns the stored url if it was already generated, false otherwise * * @param string $key * @return mixed */ public static function get($url, $full) { $keyUrl = $url; if (is_array($keyUrl)) { $keyUrl += self::$extras; # prevent different hashs on different orders ksort($keyUrl, SORT_STRING); # prevent different hashs on different types (int/string/bool) foreach ($keyUrl as $key => $val) { $keyUrl[$key] = (string) $val; } } self::$key = md5(serialize($keyUrl) . $full); if (Configure::read('UrlCache.pageFiles')) { self::$type = 'cachePage'; if (is_array($keyUrl)) { $res = array_diff_key($keyUrl, self::$extras); if (empty($res)) { self::$type = 'cache'; } } if (self::$type === 'cachePage') { return isset(self::$cachePage[self::$key]) ? self::$cachePage[self::$key] : false; } } return isset(self::$cache[self::$key]) ? self::$cache[self::$key] : false; }
/** * Returns the stored url if it was already generated, false otherwise * * @param string $key * @return mixed */ public static function get($url, $full) { $keyUrl = $url; if (is_array($keyUrl)) { $keyUrl += self::$extras; # prevent different hashs on different orders ksort($keyUrl, SORT_STRING); # prevent different hashs on different types (int/string/bool) foreach ($keyUrl as $key => $val) { $keyUrl[$key] = is_array($val) ? Hash::flatten($val) : (string) $val; } } self::$key = md5(serialize($keyUrl) . $full); if (Configure::read('UrlCache.pageFiles')) { self::$type = 'cachePage'; if (is_array($keyUrl)) { $res = array_diff_key($keyUrl, self::$extras); if (empty($res)) { self::$type = 'cache'; } } if (self::$type === 'cachePage') { if (isset(self::$cachePage[self::$key])) { if (Configure::read('debug')) { Configure::write('UrlCacheDebug.usedPage', (int) Configure::read('UrlCacheDebug.usedPage') + 1); } return self::$cachePage[self::$key]; } if (Configure::read('debug')) { $missed = (array) Configure::read('UrlCacheDebug.missedPage'); $missed[] = $url; Configure::write('UrlCacheDebug.missedPage', $missed); Configure::write('UrlCacheDebug.missedCountPage', (int) Configure::read('UrlCacheDebug.missedCountPage') + 1); } return false; } } if (isset(self::$cache[self::$key])) { if (Configure::read('debug')) { Configure::write('UrlCacheDebug.used', (int) Configure::read('UrlCacheDebug.used') + 1); } return self::$cache[self::$key]; } if (Configure::read('debug')) { $missed = (array) Configure::read('UrlCacheDebug.missed'); $missed[] = $url; Configure::write('UrlCacheDebug.missed', $missed); Configure::write('UrlCacheDebug.missedCount', (int) Configure::read('UrlCacheDebug.missedCount') + 1); } return false; }