OnAfterCopyToLive
Данное событие вызывается для каждой записи после её копирования из временной таблицы в оригинальную.
Вызывается из событий
Данное событие косвенно (через метод kTempTablesHandler::DoCopyTempToOriginal) вызывается из
события OnSave в процессе копирования данных из
временной таблицы в оригинальную.
Входные параметры
название |
описание |
|---|---|
| id (int) |
|
| temp_id (int) |
|
Примечание
Объекты, которые будут получены из событий, вызываемых из класса kTempTablesHandler никогда
не содержат достоверной информации.
Поэтому в случае, когда нужен объект, загруженный по ID скопированной записи, то его нужно
загружать самому. Это будет показано на ниже приведённом примере.
$object =& $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true));
/* @var $object kDBItem */
$object->SwitchToLive(); // для того, чтобы объект был загружен из оригинальной таблицы, а не из временной
$object->Load( $event->getEventParam('id') );
Потенциальное применение
Данное событие можно использовать для автоматического обновления или добавления данных в другие таблицы
на основе только что сохранённых в оригинальную таблицу данных. Это примерно тоже самое, что и используя
параметр ids события OnSave, но только здесь можно работать
с ID также и подчинённых записей. Ниже приведён пример
добавления записи в журнал изменений:
function OnAfterCopyToLive(&$event)
{
parent::OnAfterCopyToLive($event);
$log_object =& $this->Application->recallObject('log');
/* @var $log_object kDBItem */
$log_object->addEntry($event->Prefix, $event->getEventParam('id'));
}
Ограничения
Данное событие будет вызываться только при использовании события OnSave, и следовательно будет работать только в случае, когда используются временные таблицы.
Изменено в версии 4.2.1.
Это событие вызывается и в случае, когда у префикса нету подчинённых префиксов.
См. также