403Webshell
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/cvetdv.ru/bitrix/modules/catalog/admin/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/catalog/admin/cat_subscription_list.php
<?php
/** @global CUser $USER */
/** @global CMain $APPLICATION */
/** @global array $FIELDS */
/** @global CDatabase $DB */

use Bitrix\Main;
use Bitrix\Main\Loader;
use Bitrix\Main\Localization\Loc;
use Bitrix\Iblock;
use Bitrix\Catalog;
use Bitrix\Catalog\Access\AccessController;
use Bitrix\Catalog\Access\ActionDictionary;

require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_before.php');

/** @global CAdminPage $adminPage */
global $adminPage;
/** @global CAdminSidePanelHelper $adminSidePanelHelper */
global $adminSidePanelHelper;

Loader::includeModule('catalog');
Loc::loadMessages(__FILE__);

$APPLICATION->setTitle(Loc::getMessage('PSL_PAGE_TITLE'));

$publicMode = $adminPage->publicMode;
$selfFolderUrl = $adminPage->getSelfFolderUrl();

if (
	!AccessController::getCurrent()->check(ActionDictionary::ACTION_CATALOG_READ)
	&& !AccessController::getCurrent()->check(ActionDictionary::ACTION_CATALOG_VIEW)
)
{
	require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');
	ShowError(Loc::getMessage('PSL_ACCESS_DENIED'));
	require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/epilog_admin.php');
	die();
}

if(isset($_REQUEST['mode']) && ($_REQUEST['mode'] == 'list' || $_REQUEST['mode'] == 'frame'))
	CFile::disableJSFunction(true);

$request = Main\Context::getCurrent()->getRequest();
$adminSection = $request->isAdminSection();
if ($adminSection)
{
	$urlParams = [
		'find_section_section' => -1,
		'WF' => 'Y',
	];
}
else
{
	$urlParams = [
		'find_section_section' => -1,
		'WF' => 'Y',
		'return_url' => $APPLICATION->GetCurPageParam(
			'',
			[
				'mode',
				'table_id',
				'internal',
				'grid_id',
				'grid_action',
				'bxajaxid',
				'sessid',
			]
		),
	];
}
/** @var \Bitrix\Catalog\Url\AdminPage\CatalogBuilder $urlBuilder */
$urlBuilder = Iblock\Url\AdminPage\BuilderManager::getInstance()->getBuilder();
if ($urlBuilder === null)
{
	$APPLICATION->SetTitle(Loc::getMessage('PSL_PAGE_TITLE'));
	require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
	ShowError(GetMessage("PSL_ERR_BUILDER_ADSENT"));
	require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
	die();
}

$tableId = 'tbl_product_subscription_list';
$sortObject = new CAdminUiSorting($tableId, 'DATE_FROM', 'DESC');
$listObject = new CAdminUiList($tableId, $sortObject);

$by = mb_strtoupper($sortObject->getField());
$order = mb_strtoupper($sortObject->getOrder());
$listOrder = [
	$by => $order,
];
if ($by !== 'ID')
{
	$listOrder['ID'] = 'DESC';
}

$listContactTypes = array();
$contactType = Catalog\SubscribeTable::getContactTypes();
foreach ($contactType as $contactTypeId => $contactTypeData)
{
	$listContactTypes[$contactTypeId] = $contactTypeData["NAME"];
}

$filterFields = array(
	array(
		"id" => "ID",
		"name" => GetMessage('PSL_FILTER_ID'),
		"filterable" => "="
	),
	array(
		"id" => "USER_ID",
		"name" => GetMessage('PSL_FILTER_USER_ID'),
		"type" => "custom_entity",
		"selector" => array("type" => "user"),
		"filterable" => "=",
		"default" => true
	),
	array(
		"id" => "USER_CONTACT",
		"name" => GetMessage('PSL_FILTER_USER_CONTACT'),
		"filterable" => "%",
		"quickSearch" => "%"
	),
	array(
		"id" => "ITEM_ID",
		"name" => GetMessage('PSL_FILTER_ITEM_ID'),
		"type" => "number",
		"filterable" => "=",
		"default" => true
	),
	array(
		"id" => "DATE_FROM",
		"name" => GetMessage("PSL_FILTER_DATE_FROM"),
		"type" => "date",
		"filterable" => "",
		"default" => true
	),
	array(
		"id" => "DATE_TO",
		"name" => GetMessage("PSL_FILTER_DATE_TO"),
		"type" => "date",
		"filterable" => ""
	),
	array(
		"id" => "CONTACT_TYPE",
		"name" => GetMessage("PSL_FILTER_CONTACT_TYPE"),
		"type" => "list",
		"items" => $listContactTypes,
		"filterable" => "="
	),
	array(
		"id" => "ACTIVE",
		"name" => GetMessage("PSL_FILTER_ACTIVE"),
		"type" => "list",
		"items" => array(
			"Y" => GetMessage("PSL_FILTER_YES"),
			"N" => GetMessage("PSL_FILTER_NO")
		),
		"filterable" => ""
	),
);

$filter = array();

$listObject->AddFilter($filterFields, $filter);

if (isset($_REQUEST['ITEM_ID']))
{
	$filter["ITEM_ID"] = $_REQUEST['ITEM_ID'];
}
if (isset($filter["ACTIVE"]))
{
	if ($filter["ACTIVE"] == 'Y')
	{
		$filter[] = array(
			'LOGIC' => 'OR',
			array('=DATE_TO' => false),
			array('>DATE_TO' => date($DB->dateFormatToPHP(CLang::getDateFormat('FULL')), time()))
		);
	}
	else
	{
		$filter[] = array(
			'LOGIC' => 'AND',
			array('!=DATE_TO' => false),
			array('<DATE_TO' => date($DB->dateFormatToPHP(CLang::getDateFormat('FULL')), time()))
		);
	}
	unset($filter["ACTIVE"]);
}

$subscribeManager = new Catalog\Product\SubscribeManager();

if(($listRowId = $listObject->groupAction()))
{
	switch($_REQUEST['action'])
	{
		case 'delete':
			$itemId = 0;
			if (isset($_REQUEST['itemId']))
				$itemId = $_REQUEST['itemId'];
			$subscribeManager->deleteManySubscriptions($listRowId, $itemId);
			break;
		case 'activate':
			$subscribeManager->activateSubscription($listRowId);
			break;
		case 'deactivate':
			$subscribeManager->deactivateSubscription($listRowId);
			break;
	}

	$errorObject = current($subscribeManager->getErrors());
	if($errorObject)
	{
		$listObject->addGroupError($errorObject->getMessage());
	}

	if ($listObject->hasGroupErrors())
	{
		$adminSidePanelHelper->sendJsonErrorResponse($listObject->getGroupErrors());
	}
	else
	{
		$adminSidePanelHelper->sendSuccessResponse();
	}
}

$headers = array();
$headers['ID'] = array('id' => 'ID', 'content' => 'ID', 'sort' => 'ID', 'default' => true, 'align' => 'center');
$headers['DATE_FROM'] = array('id' => 'DATE_FROM','content' => Loc::getMessage('PSL_DATE_FROM'),
	'sort' => 'DATE_FROM', 'default' => true);
$headers['USER_CONTACT'] = array('id' => 'USER_CONTACT','content' => Loc::getMessage('PSL_USER_CONTACT'),
	'sort' => 'USER_CONTACT', 'default' => true);
$headers['USER_ID'] = array('id' => 'USER_ID', 'content' => Loc::getMessage('PSL_USER'),
	'sort' => 'USER_ID', 'default' => true);
$headers['CONTACT_TYPE'] = array('id' => 'CONTACT_TYPE','content' => Loc::getMessage('PSL_CONTACT_TYPE'),
	'sort' => 'CONTACT_TYPE', 'default' => true, 'align' => 'center');
$headers['ACTIVE'] = array('id' => 'ACTIVE', 'content' => Loc::getMessage('PSL_ACTIVE'),
	'default' => true, 'align' => 'center');
$headers['DATE_TO'] = array('id' => 'DATE_TO','content' => Loc::getMessage('PSL_DATE_TO'),
	'sort' => 'DATE_TO', 'default' => true);
$headers['ITEM_ID'] = array('id' => 'ITEM_ID','content' => Loc::getMessage('PSL_ITEM_ID'),
	'sort' => 'ITEM_ID', 'default' => false, 'align' => 'right');
$headers['PRODUCT_NAME'] = array('id' => 'PRODUCT_NAME','content' => Loc::getMessage('PSL_PRODUCT_NAME'),
	'sort' => 'PRODUCT_NAME', 'default' => true);
$headers['SITE_ID'] = array('id' => 'SITE_ID','content' => Loc::getMessage('PSL_SITE_ID'),
	'sort' => 'SITE_ID', 'default' => true, 'align' => 'center');

$listObject->addHeaders($headers);

$select = array();
$ignoreFields = array('ACTIVE');
$selectFields = array_keys($headers);
$selectFields = array_diff($selectFields, $ignoreFields);
foreach($selectFields as $fieldName)
{
	$select[$fieldName] = $fieldName;
}
$select['PRODUCT_NAME'] = 'IBLOCK_ELEMENT.NAME';
$select['IBLOCK_ID'] = 'IBLOCK_ELEMENT.IBLOCK_ID';

$queryObject = Catalog\SubscribeTable::getList(array(
	'select' => $select,
	'filter' => $filter,
	'order' => $listOrder,
));

$queryObject = new CAdminUiResult($queryObject, $tableId);
$queryObject->NavStart();

$listObject->SetNavigationParams($queryObject, array("BASE_LINK" => $selfFolderUrl."cat_subscription_list.php"));

$actionUrl = '&lang='.LANGUAGE_ID;
$listUserData = array();
$rowList = [];

while($subscribe = $queryObject->fetch())
{
	$subscribe['CONTACT_TYPE'] = $contactType[$subscribe['CONTACT_TYPE']]['NAME'];
	if(!empty($subscribe['USER_ID']))
	{
		$listUserData[$subscribe['USER_ID']][] = $subscribe['ID'];
	}

	$rowList[$subscribe['ID']] = $row = &$listObject->addRow($subscribe['ID'], $subscribe);

	if($subscribeManager->checkSubscriptionActivity($subscribe['DATE_TO']))
	{
		$row->addField('ACTIVE', Loc::getMessage('PSL_FILTER_YES'));
	}
	else
	{
		$row->addField('ACTIVE', Loc::getMessage('PSL_FILTER_NO'));
	}

	$urlBuilder->setIblockId((int)$subscribe['IBLOCK_ID']);
	if ($adminPage)
	{
		$editUrl = $urlBuilder->getElementDetailUrl(
			(int)$subscribe['ITEM_ID'],
			$urlParams
		);
	}
	else
	{
		$editUrl = $urlBuilder->getProductDetailUrl(
			(int)$subscribe['ITEM_ID'],
			$urlParams
		);
	}

	$row->addField('PRODUCT_NAME',
		'<a href="'.$editUrl.'">'.htmlspecialcharsbx($subscribe['PRODUCT_NAME']).'</a>');

	$actions = array();
	$actionUrl .= '&itemId='.$subscribe['ITEM_ID'];
	$actions[] = array(
		'ICON' => 'delete',
		'TEXT' => Loc::getMessage('PSL_ACTION_DELETE'),
		'ACTION' => "if(confirm('".GetMessageJS('PSL_ACTION_DELETE_CONFIRM')."')) ".
			$listObject->actionDoGroup($subscribe['ID'], 'delete', $actionUrl)
	);
	$actions[] = array(
		'TEXT' => Loc::getMessage('PSL_ACTION_ACTIVATE'),
		'ACTION' => $listObject->actionDoGroup($subscribe['ID'], 'activate')
	);
	$actions[] = array(
		'TEXT' => Loc::getMessage('PSL_ACTION_DEACTIVATE'),
		'ACTION' => $listObject->actionDoGroup($subscribe['ID'], 'deactivate')
	);

	$row->addActions($actions);
}
unset($row);

if (!empty($listUserData))
{
	$nameFormat = CSite::GetNameFormat();

	$userIterator = Main\UserTable::getList([
		'select' => [
			'ID',
			'LOGIN',
			'NAME',
			'LAST_NAME',
			'SECOND_NAME',
			'EMAIL',
			'TITLE',
		],
		'filter' => ['@ID' => array_keys($listUserData)],
	]);
	while ($user = $userIterator->fetch())
	{
		$urlToUser = $selfFolderUrl . "user_edit.php?ID=" . $user["ID"] . "&lang=" . LANGUAGE_ID;
		if ($publicMode)
		{
			$urlToUser = $selfFolderUrl . "sale_buyers_profile.php?USER_ID=" . $user["ID"] . "&lang=" . LANGUAGE_ID;
			$urlToUser = $adminSidePanelHelper->editUrlToPublicPage($urlToUser);
		}
		$userString =
			'<a href="' . $urlToUser . '">'
			. CUser::FormatName($nameFormat, $user, true, true)
			. '</a>'
		;
		foreach ($listUserData[$user['ID']] as $subscribeId)
		{
			$rowList[$subscribeId]->addField('USER_ID', $userString);
		}
	}
}

$listObject->addGroupActionTable(array(
	'delete' => Loc::getMessage('PSL_ACTION_DELETE'),
	'activate' => Loc::getMessage('PSL_ACTION_ACTIVATE'),
	'deactivate' => Loc::getMessage('PSL_ACTION_DEACTIVATE'),
));

$contextListMenu = array();
$listObject->setContextSettings(array("pagePath" => $selfFolderUrl."cat_subscription_list.php"));
$listObject->addAdminContextMenu($contextListMenu);

$listObject->checkListMode();

require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_admin_after.php');

$listObject->DisplayFilter($filterFields);
$listObject->displayList();

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");

Youez - 2016 - github.com/yon3zu
LinuXploit