/** * Получает список аналогично string_parse_list() и ищет вхождение в него * заданной строки * * @param string $string * @param string $mask_list * @return boolean */ function string_in_mask_list($string, $mask_list) { if (!$mask_list) { return false; } $mask_list = explode("\n", $mask_list); foreach ($mask_list as $item) { $regular = string_mask_to_regular($item); $regular = "/^{$regular}\$/iu"; if (preg_match($regular, $string)) { return true; } } return false; }
/** * Определяет какие из списка страниц виджетов * совпадают по маске с текущей страницей * * @param type $pages * @return type */ private function detectMatchedWidgetPages($pages) { if ($this->uri == '') { return array(0, 1); } $matched_pages = array(0); // // Перебираем все точки привязок и проверяем совпадение // маски URL с текущим URL // foreach ($pages as $page) { if (empty($page['url_mask'])) { continue; } $is_mask_match = false; $is_stop_match = false; foreach ($page['url_mask'] as $mask) { $regular = string_mask_to_regular($mask); $regular = "/^{$regular}\$/iu"; $is_mask_match = $is_mask_match || preg_match($regular, $this->uri); } if (!empty($page['url_mask_not'])) { foreach ($page['url_mask_not'] as $mask) { $regular = string_mask_to_regular($mask); $regular = "/^{$regular}\$/iu"; $is_stop_match = $is_stop_match || preg_match($regular, $this->uri); } } if ($is_mask_match && !$is_stop_match) { $matched_pages[] = $page['id']; } } return $matched_pages; }