ez-pro/core/bitrix/modules/asd.robots/include.php
2025-11-13 19:04:05 +03:00

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();
}
}
}