/** * Checks if the current page matches the passed `$url`. * * @param string $url Regular expression or internal URL (full or partial) to check against. * @param boolean $exact Optional. Set to false if using regular expression or partial URL. * @return boolean True on success. */ private static function __isPageCurrent($url, $exact = true) { if (!$exact) { return preg_match('/' . preg_quote($url) . '/', Router::url()); } $params = Router::getParams(); $defaultRoute = Hash::normalize(array('plugin', 'controller', 'action', 'prefix', 'named', 'pass', 'lang')); if (!empty($params['prefix'])) { $defaultRoute[$params['prefix']] = null; } return Router::normalize(array_intersect_recursive($params, $defaultRoute)) == $url; }
function array_intersect_recursive($array1, $array2) { $array1 = array_intersect_key($array1, $array2); foreach (array_keys($array1) as $k) { if (!is_array($array1[$k]) || !is_array($array2[$k])) { continue; } $array1[$k] = array_intersect_recursive($array1[$k], $array2[$k]); } return $array1; }