In-Portal Developers Guide

This is a wiki-based Developers Guide for In-Portal Open Source CMS. The purpose of this guide is to provide advanced users, web developers and programmers with documentation on how to expand, customize and improve the functionality and the code the In-Portal software. Please consider contributing to our documentation writing effort.

EventHandler:OnBeforeItemDelete

From In-Portal Developers Guide

Jump to: navigation, search
События, которые изменяют данные События, которые изменяют данные
Статьи в этой категории

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

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

Данное событие косвенно вызывается из событий, удаляющих записи: 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 также не будет вызвано.