EventHandler:OnBeforeDeleteFromLive
From In-Portal Developers Guide
m (→Ограничения: внутренние ссылки) |
Current revision (16:14, 28 February 2009) (view source) m (1 версия) |
Current revision
| ||
---|---|---|
Статьи в этой категории | ||
|
Данное событие вызывается индивидуально для каждой записи перед её удалением из оригинальной таблицы и до её замещения записью из временной таблицы.
Contents |
Вызывается из событий
Данное событие косвенно (через метод kTempTablesHandler::DoCopyTempToOriginal
) вызывается из события OnSave в процессе копирования данных из временной таблицы в оригинальную.
Входные параметры
название | описание |
---|---|
id (int) | ID записи во временной таблице. Данное ID будет отрицательным (для подчинённых записей) или нулём (для главных записей) в случае, когда запись была создана во временной таблице и ещё не была скопирована в оригинальную таблицу.
|
foreign_key (int) | Данный необязательный для главных записей параметр содержит значение поля, по которому удаляемый объект связан его родительской записью. Данное значение получается из метода kTempTablesHandler::GetForeignKeys .
|
Объекты, которые будут получены из событий, вызываемых из класса kTempTablesHandler никогда не содержат достоверной информации.
|
ID
скопированной записи, то его нужно загружать самому. Это будет показано на ниже приведённом примере.
$object =& $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true)); /* @var $object kDBItem */ $object->Load( $event->getEventParam('id') );
Потенциальное применение
Данное событие можно использовать для сохранения данных, которые находятся в оригинальной таблице. К примеру можно сохранить оригинальные данные и далее сравнить их с новыми и выслать оповещения о каких либо критичных изменениях. Если id меньше или равно нулю, то запись ещё не была скопирована в оригинальную таблицу и оповещать никого конечно не нужно. Это будет показано на ниже приведённом примере.
function OnBeforeDeleteFromLive(&$event) { parent::OnBeforeDeleteFromLive($event); $object =& $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true)); /* @var $object kDBItem */ $object->Load( $event->getEventParam('id') ); if ($event->getEventParam('id') <= 0) { return ; } $prev_data = $this->Application->GetVar('prev_info'); if (!$prev_data) { $prev_data = Array (); } $prev_data[ $object->GetID() ] = $object->GetFieldValues(); $this->Application->SetVar('prev_info', $prev_data); }
Ограничения
Данное событие будет вызываться только при использовании события OnSave, и следовательно будет работать только в случае, когда используются временные таблицы.