EventHandler:OnAfterCopyToLive
From In-Portal Developers Guide
Path to article:
(→Ограничения: дополнение) |
Current revision (16:14, 28 February 2009) (view source) m (1 версия) |
Current revision
| ||
---|---|---|
Статьи в этой категории | ||
Данное событие вызывается для каждой записи после её копирования из временной таблицы в оригинальную.
Contents |
Вызывается из событий
Данное событие косвенно (через метод kTempTablesHandler::DoCopyTempToOriginal
) вызывается из события OnSave в процессе копирования данных из временной таблицы в оригинальную.
Входные параметры
название | описание |
---|---|
id (int) | ID , которое получила запись после её копирования из временной таблицы в оригинальную.
|
temp_id (int) | ID , которое было у записи во временной таблице. Данное ID будет отрицательным (для подчинённых записей) или нулём (для главных записей) в случае, когда запись была создана во временной таблице и ещё не была скопирована в оригинальную таблицу.
|
Объекты, которые будут получены из событий, вызываемых из класса 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, и следовательно будет работать только в случае, когда используются временные таблицы.
- До версии Core v 4.2.1 это событие вызывалось только, если у префикса были подчинённые префиксы.