/** * */ 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}'"); } } } }