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

From In-Portal Developers Guide

Jump to: navigation, search

События общего применения События общего применения
Статьи в этой категории

При создании объекта класса kDBItem требуется производить сопутствующие действия - такие как подготовка SQL-запроса для загрузки данных, проверка прав доступа к данным, загрузка данных в объект при необходимости, создание и инициализация переменных окружения, инициализация свойств объекта. Для логического выделения этих операций в общем потоке предназначено особое событие - OnItemBuild.

Это событие задаётся в Unit Configs, под ключом 'build_event' для 'ItemClass'.

'ItemClass' => Array ('class' => 'kDBItem', 'file' => '', 'build_event' => 'OnItemBuild'),

Это событие вызывается в классе kFactory, после того как создан новый экземпляр объекта. Если в создании нового экземпляра нет необходимости, то методы kFactory возвращают ссылку на ранее созданный экземпляр, и событие OnItemBuild не происходит.

Contents

Вызывается из шаблона

Не вызывается из шаблонов.

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

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

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

название описание
skip_autoload (boolean) Значение true озволяет избежать автоматического подгружения данных в объект. Этот параметр следует использовать в случаях, когда идентификатор объекта не определён, либо когда идентификатор в запросе имеется, но планируется подгружать данные другого объекта. В подобных случаях использование параметра 'skip_autoload' позволяет избежать лишних запросов к базе данных.

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

Не вызывает событий

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

Для того, чтобы объект типа kDBItem мог инициализироваться на пользовательской части сайта без ошибки отсутствия прав, наиболее простым решением является прописывание события OnItemBuild в методе mapPermissions соответствующего обработчика событий.

function mapPermissions()
{
	parent::mapPermissions();
	$permissions = Array(
		'OnItemBuild'	=>	Array('self' => true, 'subitem' => true),
	);
	$this->permMapping = array_merge($this->permMapping, $permissions);
}


Потенциально, событие OnItemBuild возможно переписать в случае каких-то объектов, требующих нестандартной настройки, например, вследствие необычных взаимосвязей с другими объектами.

Ограничения

Особых ограничений нет.

Использует вспомогательные методы класса

dbBuild, ItemPrepareQuery, CheckPermission, LoadItem, checkItemStatus