85 lines
2.3 KiB
PHP
85 lines
2.3 KiB
PHP
<?php
|
|
|
|
class CASDRobots {
|
|
|
|
public static function BeforeIndex($arFields) {
|
|
if ($arFields['MODULE_ID'] != 'main') {
|
|
if (mb_strlen($arFields['URL'])) {//iblock and other
|
|
$url = self::BuildURL($arFields);
|
|
if (mb_substr($url, 0, 1)!='/' && mb_substr($url, 0, 4)!='http') {
|
|
$url = '/'.$url;
|
|
}
|
|
if (CSearch::CheckPath($url) === false) {
|
|
$arFields['TITLE'] = $arFields['BODY'] = '';
|
|
}
|
|
} elseif (is_array($arFields['SITE_ID'])) {//forum, blogs
|
|
foreach ($arFields['SITE_ID'] as $url) {
|
|
if (CSearch::CheckPath($url) === false) {
|
|
$arFields['TITLE'] = $arFields['BODY'] = '';
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return $arFields;
|
|
}
|
|
|
|
public static function BuildURL($arFields) {
|
|
static $index = false;
|
|
static $arEvents = false;
|
|
$url = $arFields['URL'];
|
|
|
|
if (!is_array($arFields) || empty($arFields)) {
|
|
return $url;
|
|
}
|
|
if ($arEvents === false) {
|
|
$arEvents = array();
|
|
$events = GetModuleEvents('search', 'OnSearchGetURL');
|
|
while ($arEvent = $events->Fetch()) {
|
|
$arEvents[] = $arEvent;
|
|
}
|
|
}
|
|
|
|
if (mb_strlen($arFields['SITE_URL']) > 0) {
|
|
$url = $arFields['SITE_URL'];
|
|
}
|
|
if (mb_substr($url, 0, 1) == '=') {
|
|
foreach($arEvents as $arEvent) {
|
|
$newUrl = ExecuteModuleEventEx($arEvent, array($arFields));
|
|
if ($newUrl !== $url) {
|
|
$url = $newUrl;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
$url = str_replace(
|
|
array('#LANG#', '#SITE_DIR#', '#SERVER_NAME#'),
|
|
array($arFields['DIR'], $arFields['DIR'], $arFields['SERVER_NAME']),
|
|
$url
|
|
);
|
|
$url = preg_replace("'(?<!:)/+'s", "/", $url);
|
|
if (defined('BX_DISABLE_INDEX_PAGE') && BX_DISABLE_INDEX_PAGE) {
|
|
if (!$index) {
|
|
$index = '#/('.str_replace(' ', '|', preg_quote(implode(' ', GetDirIndexArray()), '#')).')$#';
|
|
}
|
|
$url = preg_replace($index, '/', $url);
|
|
}
|
|
if (($p = mb_strpos($url, '#')) !== false) {
|
|
$url = mb_substr($url, 0, $p);
|
|
}
|
|
if(!preg_match("/^[a-z]+:\\/\\//", $url)) {
|
|
$url = $arFields['SERVER_NAME'].$url;
|
|
}
|
|
$allSiteMap = new CAllSiteMap;
|
|
return $allSiteMap->LocationEncode($allSiteMap->URLEncode($url, 'UTF-8'));
|
|
}
|
|
|
|
public static function OnAfterUnRegisterModule($id) {
|
|
if ($id == 'search') {
|
|
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/asd.robots/install/index.php');
|
|
$module = new asd_robots();
|
|
$module->bNotOutput = true;
|
|
$module->DoUninstall();
|
|
}
|
|
}
|
|
} |