Example #1
0
/**
 * Получает список аналогично 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;
}
Example #2
0
 /**
  * Определяет какие из списка страниц виджетов
  * совпадают по маске с текущей страницей
  *
  * @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;
 }