- Модуль: 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;
}