- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/action/entity/preparedeletionaction.php
- Класс: Bitrix\Crm\Controller\Action\Entity\PrepareDeletionAction
- Вызов: PrepareDeletionAction::run
public function run(array $params)
{
if(!Crm\Security\EntityAuthorization::isAuthorized())
{
$this->addError(new Main\Error('Access denied.'));
return null;
}
$gridID = isset($params['gridId']) ? $params['gridId'] : '';
if($gridID === '')
{
$this->addError(new Main\Error('The parameter gridId is required.'));
return null;
}
$entityTypeID = isset($params['entityTypeId']) ? (int)$params['entityTypeId'] : \CCrmOwnerType::Undefined;
if($entityTypeID === \CCrmOwnerType::Undefined)
{
$this->addError(new Main\Error('The parameter entityTypeId is required.'));
return null;
}
if(!isset($_SESSION['CRM_ENTITY_DELETION_DATA']))
{
$_SESSION['CRM_ENTITY_DELETION_DATA'] = [];
}
$entityIDs = isset($params['entityIds']) && is_array($params['entityIds']) ? $params['entityIds'] : null;
if(is_array($entityIDs))
{
sort($entityIDs, SORT_NUMERIC);
$hash = md5(
\CCrmOwnerType::ResolveName($entityTypeID).':'.mb_strtoupper($gridID).':'.implode(',', $entityIDs)
);
$_SESSION['CRM_ENTITY_DELETION_DATA'][$hash] = [
'HASH' => $hash,
'GRID_ID' => $gridID,
'ENTITY_TYPE_ID' => $entityTypeID,
'ENTITY_IDS' => $entityIDs
];
}
else
{
$filterFields = isset($params['filter']) && is_array($params['filter']) ? $params['filter'] : null;
$filterFields = Factory::createEntityFilter(
Factory::createEntitySettings(
$entityTypeID,
$gridID,
Factory::convertSettingsParams(
$entityTypeID,
(isset($params['extras']) && is_array($params['extras']) ? $params['extras'] : [])
)
)
)->getValue($filterFields);
ksort($filterFields, SORT_STRING);
$hash = md5(
\CCrmOwnerType::ResolveName($entityTypeID)
.':'.mb_strtoupper($gridID)
.':'.implode(',', array_map(function($k, $v){ return "{$k}:{$v}"; }, array_keys($filterFields), $filterFields))
);
$_SESSION['CRM_ENTITY_DELETION_DATA'][$hash] = [
'HASH' => $hash,
'GRID_ID' => $gridID,
'ENTITY_TYPE_ID' => $entityTypeID,
'FILTER' => $filterFields
];
}
if(isset($_SESSION['CRM_ENTITY_DELETION_PROGRESS']))
{
unset($_SESSION['CRM_ENTITY_DELETION_PROGRESS'][$hash]);
}
return [ 'hash' => $hash ];
}