ActivityController::erase

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. ActivityController
  4. erase
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/recycling/activitycontroller.php
  • Класс: Bitrix\Crm\Recycling\ActivityController
  • Вызов: ActivityController::erase
public function erase($entityID, array $params = [])
{
	if($entityID <= 0)
	{
		throw new Main\ArgumentException('Must be greater than zero.', 'entityID');
	}

	$recyclingEntityID = isset($params['ID']) ? (int)$params['ID'] : 0;
	if($recyclingEntityID <= 0)
	{
		throw new Main\ArgumentException('Could not find parameter named: "ID".', 'params');
	}

	$slots = isset($params['SLOTS']) && is_array($params['SLOTS']) ? $params['SLOTS'] : [];
	$fields = isset($slots['FIELDS']) && is_array($slots['FIELDS']) ? $slots['FIELDS'] : [];

	$this->eraseSuspendedTimeline($recyclingEntityID);
	$this->eraseSuspendedLiveFeed($recyclingEntityID);
	$this->eraseSuspendedUserFields($recyclingEntityID);
	$this->eraseSuspendedBadges($recyclingEntityID);
	$this->eraseSuspendedNotes($recyclingEntityID);

	//region Files
	$files = isset($params['FILES']) ? $params['FILES'] : null;
	if(is_array($files))
	{
		$storageElementIDs = [];
		foreach($files as $file)
		{
			$storageElementIDs[] = (int)$file['FILE_ID'];
		}

		$storageTypeID = isset($fields['STORAGE_TYPE_ID'])
			? (int)$fields['STORAGE_TYPE_ID'] : \CCrmActivity::GetDefaultStorageTypeID();
		\CCrmActivity::DoDeleteStorageElements($storageTypeID, $storageElementIDs);
	}
	//endregion

	$provider = \CCrmActivity::GetActivityProvider($fields);
	$associatedEntityID = isset($fields['ASSOCIATED_ENTITY_ID']) ? (int)$fields['ASSOCIATED_ENTITY_ID'] : 0;
	if($provider && $associatedEntityID > 0)
	{
		$deleteParams = ['IS_ERASING_FROM_RECYCLE_BIN' => true];
		if ($provider === Crm\Activity\Provider\Task::class)
		{
			$deleteParams['SKIP_TASKS'] = $params['SKIP_TASKS'] ?? true;
		}
		$provider::deleteAssociatedEntity($associatedEntityID, $fields, $deleteParams);
	}

	Relation::deleteByRecycleBin($recyclingEntityID);

	unset($this->entityIdToRecyclingEntityId[$entityID]);
	$this->fireAfterEraseEvent($recyclingEntityID);
}

Добавить комментарий