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/components/bitrix/subscribe.simple/ |
Upload File : |
<?php if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die(); } /** @var CBitrixComponent $this */ /** @var array $arParams */ /** @var array $arResult */ /** @var string $componentPath */ /** @var string $componentName */ /** @var string $componentTemplate */ /** @var CDatabase $DB */ /** @var CUser $USER */ /** @var CMain $APPLICATION */ if (!CModule::IncludeModule('subscribe')) { ShowError(GetMessage('CC_BSS_MODULE_NOT_INSTALLED')); return; } if (!isset($arParams['CACHE_TIME'])) { $arParams['CACHE_TIME'] = 3600; } if ($arParams['SHOW_HIDDEN'] !== 'Y') { $arParams['SHOW_HIDDEN'] = 'N'; } if ($arParams['SET_TITLE'] !== 'N') { $arParams['SET_TITLE'] = 'Y'; } $arResult['ERRORS'] = []; $bVarsFromForm = false; if (is_object($USER) && $USER->GetID() > 0) { $USER_ID = $USER->GetID(); } else { ShowError(GetMessage('CC_BSS_NOT_AUTHORIZED')); return; } /* @var $request \Bitrix\Main\HttpRequest */ $request = \Bitrix\Main\Context::getCurrent()->getRequest(); $arNewRubrics = []; if ( $USER_ID && $request->isPost() && ( (string)$request['Update'] !== '' ) && check_bitrix_sessid() ) { //Find out what rubrics was chosen by the user if (is_array($_POST['RUB_ID'])) { foreach ($_POST['RUB_ID'] as $rub_id) { $rub_id = intval($rub_id); if ($rub_id > 0) { $arNewRubrics[$rub_id] = $rub_id; } } } //Get his subscription $rsSubscription = CSubscription::GetList([], ['USER_ID' => $USER_ID]); $arSubscription = $rsSubscription->Fetch(); //And when hidden rubrics and rubrics from another site //not displayed we'll save their subscription (if exists) if (is_array($arSubscription)) { $rsRubrics = CSubscription::GetRubricList($arSubscription['ID']); while ($arRubric = $rsRubrics->Fetch()) { if ($arRubric['LID'] != SITE_ID) { $arNewRubrics[$arRubric['ID']] = $arRubric['ID']; } else { if ($arParams['SHOW_HIDDEN'] === 'N' && $arRubric['VISIBLE'] === 'N') { $arNewRubrics[$arRubric['ID']] = $arRubric['ID']; } } } } //No rubrics was checked so delete subscription if (!$arNewRubrics) { if (is_array($arSubscription)) { $rs = CSubscription::Delete($arSubscription['ID']); if (!$rs) { $arResult['ERRORS'][] = GetMessage('CC_BSS_DELETE_ERROR'); } else { $_SESSION['subscribe.simple.message'] = GetMessage('CC_BSS_UPDATE_SUCCESS'); } } } else //Add or change { $obSubscription = new CSubscription; if (is_array($arSubscription)) { $rs = $obSubscription->Update( $arSubscription['ID'], [ 'FORMAT' => ($_POST['FORMAT'] !== 'html' ? 'text' : 'html'), 'RUB_ID' => $arNewRubrics, ], false ); if (!$rs) { $arResult['ERRORS'][] = $obSubscription->LAST_ERROR; } else { $_SESSION['subscribe.simple.message'] = GetMessage('CC_BSS_UPDATE_SUCCESS'); } } else { $ID = $obSubscription->Add([ 'USER_ID' => $USER_ID, 'ACTIVE' => 'Y', 'EMAIL' => $USER->GetEmail(), 'FORMAT' => ($_POST['FORMAT'] !== 'html' ? 'text' : 'html'), 'CONFIRMED' => 'Y', 'SEND_CONFIRM' => 'N', 'RUB_ID' => $arNewRubrics, ]); if (!$ID) { $arResult['ERRORS'][] = $obSubscription->LAST_ERROR; } else { $_SESSION['subscribe.simple.message'] = GetMessage('CC_BSS_UPDATE_SUCCESS'); } } } if (!$arResult['ERRORS']) { LocalRedirect($APPLICATION->GetCurPageParam()); } else { $bVarsFromForm = true; } } if (array_key_exists('subscribe.simple.message', $_SESSION)) { $arResult['MESSAGE'] = $_SESSION['subscribe.simple.message']; unset($_SESSION['subscribe.simple.message']); } else { $arResult['MESSAGE'] = ''; } if ($arParams['SET_TITLE'] === 'Y') { $APPLICATION->SetTitle(GetMessage('CC_BSS_TITLE'), ['COMPONENT_NAME' => $this->getName()]); } $arResult['FORM_ACTION'] = $APPLICATION->GetCurPage(); $arResult['FORMAT'] = false; $arResult['RUB_ID'] = []; if ($bVarsFromForm) { $arResult['FORMAT'] = $_POST['FORMAT'] == 'html' ? 'html' : 'text'; $arResult['RUB_ID'] = $arNewRubrics; } elseif ($USER_ID) { $rsSubscription = CSubscription::GetList([], ['USER_ID' => $USER_ID]); $arSubscription = $rsSubscription->Fetch(); if ($arSubscription) { $arResult['FORMAT'] = $arSubscription['FORMAT']; $rsRubrics = CSubscription::GetRubricList($arSubscription['ID']); while ($arRubric = $rsRubrics->Fetch()) { $arResult['RUB_ID'][$arRubric['ID']] = $arRubric['ID']; } } } $obCache = new CPHPCache; $strCacheID = LANGUAGE_ID . $arParams['SHOW_HIDDEN'] . $this->getRelativePath(); if ($obCache->StartDataCache($arParams['CACHE_TIME'], $strCacheID, '/' . SITE_ID . $this->getRelativePath())) { $arFilter = [ 'ACTIVE' => 'Y', 'LID' => SITE_ID, ]; if ($arParams['SHOW_HIDDEN'] === 'N') { $arFilter['VISIBLE'] = 'Y'; } $rsRubrics = CRubric::GetList(['SORT' => 'ASC', 'NAME' => 'ASC'], $arFilter); $arRubrics = []; while ($arRubric = $rsRubrics->GetNext()) { $arRubrics[] = $arRubric; } $obCache->EndDataCache($arRubrics); } else { $arRubrics = $obCache->GetVars(); } $arResult['RUBRICS'] = []; foreach ($arRubrics as $arRubric) { $arResult['RUBRICS'][] = [ 'ID' => $arRubric['ID'], 'NAME' => $arRubric['NAME'], 'DESCRIPTION' => $arRubric['DESCRIPTION'], 'CHECKED' => array_key_exists($arRubric['ID'], $arResult['RUB_ID']), ]; } $this->includeComponentTemplate();