ГлавнаяБлогОтработка событий *::Add, *::Update, *::Delete

Отработка событий *::Add, *::Update, *::Delete

Рамиль Юналиев
Рамиль Юналиев
E-Commerce Lead
20 февраля 2014 г.
1 мин чтения

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

Пример реализации — редактирование полей пользователя через прямой запрос к базе данных, минуя вызов CUser::Update() и связанные с ним события:

function updateUserField($i_UserID, $ar_Fields)
{
	$ID = intval($i_UserID);
	
	if(intval($ID) <= 0 || count($ar_Fields) == 0) return false; 
	global $DB; 
	$res = $DB->Query("UPDATE b_user SET ".$DB->PrepareUpdate("b_user", $ar_Fields)." WHERE ID=".$ID, true);
	return (!$res) ? false : true;
}

Функция принимает ID пользователя и массив полей для обновления, формирует и выполняет прямой SQL-запрос через объект $DB. Таким образом события OnBeforeUserUpdate и OnAfterUserUpdate не срабатывают.