OnBeforeItemDelete

Data Source

Данное событие позволяет выполнить дополнительные действия перед удалением записи из базы данных.

Вызывается из событий

Данное событие косвенно вызывается из событий, удаляющих записи: OnDelete, OnDeleteAll, OnMassDelete. Все ранее упомянутые события в свою очередь вызывают метод kTempTablesHandler::DeleteItems, который при помощи метода kDBItem::raiseEvent вызывает данное событие. Более детально это продемонстрировано ниже:

OnDelete -> kTempTablesHandler::DeleteItems -> kDBItem::Delete -> kDBItem::raiseEvent

Входные параметры

название

описание

id (int)

ID той записи, для которой поступил запрос на удаление.

Потенциальное применение

Данное событие в основном применяется для проверки того, что пользователю разрешено удалять конкретную запись. Как это сделать продемонстрировано на ниже приведённом примере.

function OnBeforeItemDelete(&$event)
{
    parent::OnBeforeItemDelete($event);

    $object =& $event->getObject();
    /* @var $object kDBItem */

    if ($object->GetDBField('Status') != STATUS_ACTIVE) {
        // можно удалять только активные записи
        $event->status = erFAIL;
    }
}

В случае, когда запись, из выше приведённого примера, будет не активной, то она не будет удалена и событие OnAfterItemDelete также не будет вызвано.