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:OnAfterCopyToTemp

From In-Portal Developers Guide

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

Данное событие вызывается индивидуально для каждой записи после её копирования из оригинальной таблицы во временную таблицу.

Contents

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

Данное событие косвенно (через метод kTempTablesHandler::DoCopyLiveToTemp) вызывается из события OnEdit в процессе копирования данных из оригинальной таблицы во временную.

Входные параметры

название описание
id (int) ID записи в оригинальной таблице.
Image:Infobox Icon.gif Объекты, которые будут получены из событий, вызываемых из класса kTempTablesHandler никогда не содержат достоверной информации.
Поэтому в случае, когда нужен объект, загруженный по ID скопированной записи, то его нужно загружать самому. Это будет показано на ниже приведённом примере.
$object =& $this->Application->recallObject($event->Prefix . '.-item', null, Array ('skip_autoload' => true));
/* @var $object kDBItem */
 
$object->Load( $event->getEventParam('id') );

Потенциальное применение

Данное событие может применяться при необходимости сделать какие-либо действия с данными во временной таблице. К примеру для выставления флага, что данная запись редактируется, таким образом можно запретить одновременное редактирование одной записи двумя пользователями.

function OnAfterCopyToTemp(&$event)
{
	parent::OnAfterCopyToTemp($event);
 
	$sql = 'UPDATE ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . '
		SET InEdit = 1
		WHERE $this->Application->getUnitOption($event->Prefix, 'IDField') = ' . $event->getEventParam('id');
	$this->Conn->Query($sql);
}

Ограничения

Данное событие будет вызываться только при использовании события OnEdit, и следовательно будет работать только в случае, когда используются временные таблицы.

См. также