Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/linkor.redirectpro/lib/ |
Upload File : |
<? namespace Linkor\Redirectpro; class Events { public static function onBeforeElementUpdate($arFields) { $siteArr = GetAllSites(); foreach ($siteArr as $arSite) { $configRoot = $arSite['DOC_ROOT_FULL'] . "/local/config/" . ID; $siteOptions = Options($configRoot . '/options.php'); if ($siteOptions["track_ib"][$arFields["IBLOCK_ID"]] && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ACTIVE"] === "Y" && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ELEMENT"]) { $fromURL = namespace\Events::_getElementUrl( $arFields["ID"], $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ELEMENT"] ); if ($fromURL) { $csvData = Select(true, $configRoot . "/upload_urls.csv", $configRoot . "/urls.csv"); $csvData = array_filter($csvData, function ($row) use ($fromURL) { return $row[0] != $fromURL; }); $csvData[] = [ $fromURL, "/", "301" ]; Update([ $arSite["LID"] . "_redirect_urls" => $csvData ], $arSite["LID"]); } } } } public static function onAfterElementUpdate($arFields) { $siteArr = GetAllSites(); foreach ($siteArr as $arSite) { $configRoot = $arSite['DOC_ROOT_FULL'] . "/local/config/" . ID; $siteOptions = Options($configRoot . '/options.php'); if ($siteOptions["track_ib"][$arFields["IBLOCK_ID"]] && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ACTIVE"] === "Y" && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ELEMENT"]) { $toURL = namespace\Events::_getElementUrl( $arFields["ID"], $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ELEMENT"] ); if ($toURL) { $csvData = Select(true, $configRoot . "/upload_urls.csv", $configRoot . "/urls.csv"); $lastRow = array_pop($csvData); if ($lastRow[0] != $toURL) { $lastRow[1] = $toURL; $csvData[] = $lastRow; /** Check for loop redirect **/ $csvData = array_filter($csvData, function ($row) use ($toURL) { return $row[0] != $toURL; }); } Update([ $arSite["LID"] . "_redirect_urls" => $csvData ], $arSite["LID"]); } } } } public static function onBeforeSectionUpdate($arFields) { $siteArr = GetAllSites(); foreach ($siteArr as $arSite) { $configRoot = $arSite['DOC_ROOT_FULL'] . "/local/config/" . ID; $siteOptions = Options($configRoot . '/options.php'); if ($siteOptions["track_ib"][$arFields["IBLOCK_ID"]] && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ACTIVE"] === "Y" && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["SECTION"]) { $fromURL = namespace\Events::_getSectionUrl( $arFields["ID"], $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["SECTION"] ); if ($fromURL) { $csvData = Select(true, $configRoot . "/upload_urls.csv", $configRoot . "/urls.csv"); $csvData = array_filter($csvData, function ($row) use ($fromURL) { return $row[0] != $fromURL; }); $csvData[] = [ $fromURL, "/", "301" ]; $csvData[] = [ $fromURL, "/", "301", "Y" ]; Update([ $arSite["LID"] . "_redirect_urls" => $csvData ], $arSite["LID"]); } } } } public static function onAfterSectionUpdate($arFields) { $siteArr = GetAllSites(); foreach ($siteArr as $arSite) { $configRoot = $arSite['DOC_ROOT_FULL'] . "/local/config/" . ID; $siteOptions = Options($configRoot . '/options.php'); if ($siteOptions["track_ib"][$arFields["IBLOCK_ID"]] && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ACTIVE"] === "Y" && $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["ELEMENT"]) { $toURL = namespace\Events::_getSectionUrl( $arFields["ID"], $siteOptions["track_ib"][$arFields["IBLOCK_ID"]]["SECTION"] ); if ($toURL) { $csvData = Select(true, $configRoot . "/upload_urls.csv", $configRoot . "/urls.csv"); $regexRow = array_pop($csvData); $singleRow = array_pop($csvData); if ($singleRow[0] != $toURL) { /** Check for loop redirect **/ $csvData = array_filter($csvData, function ($row) use ($toURL) { return $row[0] != $toURL && $row[0] != $toURL . "*"; }); $singleRow[1] = $toURL; $csvData[] = $singleRow; $regexRow[0] .= "*"; $regexRow[1] = $toURL . "{1}"; $csvData[] = $regexRow; } Update([ $arSite["LID"] . "_redirect_urls" => $csvData ], $arSite["LID"]); } } } } public static function _getElementUrl($elementID, $urlTpl) { $res = \CIBlockElement::GetList([], ["ID" => $elementID], false, false, ["DETAIL_PAGE_URL"]); $res->SetUrlTemplates($urlTpl); $res = $res->GetNext(); return $res["DETAIL_PAGE_URL"]; } public static function _getSectionUrl($sectionID, $urlTpl) { $res = \CIBlockSection::GetList([], ["ID" => $sectionID], false, false, ["SECTION_PAGE_URL"]); $res->SetUrlTemplates(false, $urlTpl); $res = $res->GetNext(); return $res["SECTION_PAGE_URL"]; } }