Exemplo n.º 1
0
 public function getUrlById($id, $module = null)
 {
     if (empty($id)) {
         return '';
     }
     // загружаем сразу пачку
     $id = (array) $id;
     // что потом вернуть, массив или один элемент
     $isSingle = 1 == count($id);
     if (is_null($module)) {
         // если модуль не передан, надо рассортировать все id по их модул¤м
         $moduleToIds = $this->_determineModules($id);
     } else {
         // если передан модуль, считаем, что он дл¤ всех id одинаковый
         $moduleToIds = array((string) $module => $id);
     }
     $result = array();
     foreach ($moduleToIds as $module => $ids) {
         switch ($module) {
             case 'articles':
                 $articleMapper = new MH_Articles_ArticleMapper();
                 foreach ($articleMapper->getByIds($ids) as $aid => $article) {
                     $result[$aid] = $article->url;
                 }
                 break;
             case 'authors':
                 $authorMapper = new MH_Authors_AuthorMapper();
                 foreach ($authorMapper->getById($ids) as $aid => $author) {
                     $result[$aid] = $author->url;
                 }
                 break;
             default:
                 // кака¤-то фигн¤
                 $result = array_merge($result, array_fill_keys($ids, ''));
                 break;
         }
     }
     return $isSingle ? array_shift($result) : $result;
 }
Exemplo n.º 2
0
 public function isMatch()
 {
     if ($pos = strpos($this->_url, '?')) {
         $url = substr($this->_url, 0, $pos);
     } else {
         $url = $this->_url;
     }
     if (!preg_match('~^/(?:[a-z_]+/)?(?:[a-z_]+/)?(\\d{3,})/?$~', $url, $m)) {
         return false;
     }
     require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php";
     $id = (int) $m[1];
     $articleMapper = new MH_Articles_ArticleMapper();
     // пробуем найти по id
     $article = $articleMapper->getByIds($id, array('getNonPublished' => true));
     if ($article->isExists()) {
         $this->_newUrl = $article->url;
         return true;
     } else {
         return false;
     }
 }