Exemplo n.º 1
0
 /**
  *
  */
 public function generateUrls($fields = array())
 {
     global $DB;
     $id = $this->id();
     if (empty($id)) {
         return;
     }
     if (empty($fields)) {
         $fields = $this->fieldsData;
     }
     $DB->Query("DELETE FROM tao_urls WHERE item_id='{$id}'");
     $site = '';
     $sites = $this->infoblock()->sites();
     if (count($sites) == 1) {
         $site = array_pop($sites);
     }
     $icode = $this->infoblock()->getMnemocode();
     $time = time();
     $modes = array();
     foreach ($this->infoblock()->urls() as $mode => $data) {
         $url = trim($this["url_{$mode}"]->value());
         if (empty($url)) {
             if (isset($data['generate'])) {
                 $generate = $data['generate'];
                 if (is_callable($generate)) {
                     $url = call_user_func($generate, $this, $mode);
                 } else {
                     $url = str_replace('{id}', $this->id(), $generate);
                     $url = str_replace('{title}', strtolower(\TAO::translit($this->title())), $url);
                 }
             }
             if (!empty($url)) {
                 $this->saveProperty("url_{$mode}", $url);
             }
         }
         if (!empty($url)) {
             $DB->Query("INSERT INTO tao_urls SET url='{$url}', infoblock='{$icode}', item_id={$id}, mode='{$mode}', site='{$site}', time_update='{$time}'");
             $modes[$mode] = true;
         }
     }
     $mode = \TAO::getOption("infoblock.{$icode}.route_detail");
     if ($mode === true) {
         $mode = 'full';
     }
     if (is_string($mode) && !isset($modes[$mode])) {
         $ut = $this->infoblock()->getData('DETAIL_PAGE_URL');
         $sites = $this->infoblock()->sites();
         $fields['IBLOCK_CODE'] = $icode;
         foreach ($sites as $site) {
             $siteData = \TAO::getSiteData($site);
             $fields['LID'] = $site;
             $fields['LANG_DIR'] = $siteData['DIR'];
             $url = \CIBlock::ReplaceDetailUrl($ut, $fields, false, 'E');
             if (!empty($url)) {
                 $DB->Query("INSERT INTO tao_urls SET url='{$url}', infoblock='{$icode}', item_id={$id}, mode='{$mode}', site='{$site}', time_update='{$time}'");
             }
         }
     }
 }