• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/publicaction/repo.php
  • Класс: BitrixLandingPublicActionRepo
  • Вызов: Repo::unbind
static function unbind($code, $handler = null)
{
	$result = new PublicActionResult();
	$error = new BitrixLandingError;

	if (!is_string($code))
	{
		return $result;
	}

	$code = trim($code);
	$wasDeleted = false;

	if (($app = BitrixLandingPublicAction::restApplication()))
	{
		$fields['APP_ID'] = $app['ID'];
	}
	if (
		!isset($fields['APP_ID']) ||
		!$fields['APP_ID']
	)
	{
		return $result;
	}

	// common ORM params
	$params = [
		'select' => [
			'ID'
		],
		'filter' => [
			'APP_ID' => $fields['APP_ID'],
			'=PLACEMENT' => $code
		]
	];
	if ($handler)
	{
		$params['filter']['=PLACEMENT_HANDLER'] = trim($handler);
	}

	// at first, delete local binds
	$res = Placement::getList($params);
	while ($row = $res->fetch())
	{
		$wasDeleted = true;
		Placement::delete($row['ID']);
	}
	unset($res, $row);

	// then delete from rest placements
	if (BitrixMainLoader::includeModule('rest'))
	{
		$res = PlacementTable::getList($params);
		while ($row = $res->fetch())
		{
			PlacementTable::delete($row['ID']);
		}
		unset($res, $row);
	}

	// make answer
	if ($wasDeleted)
	{
		$result->setResult(true);
	}
	else
	{
		$error->addError(
			'PLACEMENT_NO_EXIST',
			Loc::getMessage('LANDING_APP_PLACEMENT_NO_EXIST')
		);
		$result->setError($error);
	}

	return $result;
}