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

From In-Portal Developers Guide

Jump to: navigation, search

События для изменения записей События для изменения записей
Статьи в этой категории

Используется для удаления одиночной записи.

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

Вызывается из шаблонов FrontEnd, например из списка Items в котором имеется кнопка или ссылка с параметром event=OnDelete и ID удаляемой записи.

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

Переписав данный метод в своем EventHandler, возможно поменять условия удаления необходимой записи или сделать дополнительные проверки при удалении записи. Пример: По условиям задачи необходимо проверить, что удаляемая запись была создана тем пользователем, который ее удаляет. Для этого каждой записи существует поле CreatorID в котором хранится ID хозяина этой записи

/**
		 * Delete's kDBItem object
		 *
		 * @param kEvent $event
		 * @access protected
		 */
		function OnDelete(&$event)
		{
			// проверка на то, что текущий пользователь не имеет прав READONLY
			if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) {
				return;
			}
			// создание экземпляра объекта
			$temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler');
			/* @var $temp kTempTablesHandler */
 
			//Получаем ID текущего пользователя
			$current_user_id = $this->Application->RecallVar('user_id');
			//Получаем ID хозяина записи 
			$CreatorID = $temp->GetDbField('CreatorID');
			//сравниваем полученный ID с ID хозяина записи
			if ($current_user_id != $CreatorID) {
				return;
			}
 
			// удаление записи
			$temp->DeleteItems($event->Prefix, $event->Special, Array($this->getPassedID($event)));
		}