OnBeforeDeleteFromLive
Данное событие вызывается индивидуально для каждой записи перед её удалением из оригинальной таблицы и до её замещения записью из временной таблицы.
Вызывается из событий
Данное событие косвенно (через метод kTempTablesHandler::DoCopyTempToOriginal) вызывается из
события OnSave в процессе копирования данных из
временной таблицы в оригинальную.
Входные параметры
название |
описание |
|---|---|
| id (int) |
|
| foreign_key (int) | Данный необязательный для
главных записей
параметр содержит значение поля, по которому удаляемый объект связан
его
родительской записью.
Данное значение получается из метода
|
Примечание
Объекты, которые будут получены из событий, вызываемых из класса 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, и следовательно будет работать только в случае, когда используются временные таблицы.
См. также