1C-Битрикс: Управление сайтом

OnBeforeUserUpdate

bool функция-обработчик(
   array &arParams 
);
Событие вызывается в методе CUser::Update до изменения параметров пользователя, и может быть использовано для отмены изменения или переопределения некоторых полей.

Параметры

ПараметрОписание
arParams Массив полей изменяемого пользователя.

Все параметры данного обработчика являются ссылками на исходные переменные. Поэтому если вы измените значение параметра внутри обработчика, это приведет к смене значения исходной переменной поступившей на вход функции-обработчика.

Возвращаемое значение

Для отмены изменения и прекращении выполнения метода CUser::Update необходимо в функции-обработчике создать исключение методом $APPLICATION->ThrowException() и вернуть false.

См. также

Пример функции-обработчика:

<?
// файл /bitrix/php_interface/init.php
// регистрируем обработчик
AddEventHandler("main", "OnBeforeUserUpdate", Array("MyClass", "OnBeforeUserUpdateHandler"));
class MyClass { // создаем обработчик события "OnBeforeUserUpdate" function OnBeforeUserUpdateHandler(&$arFields) { if(is_set($arFields, "LAST_NAME") && strlen($arFields["LAST_NAME"])<=0) { global $APPLICATION; $APPLICATION->throwException("Пожалуйста, введите фамилию. (ID:".$arFields["ID"].")"); return false; } } } ?>

Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
Алексей Хворостьянов
При интеграции корпортала с AD часто требуется запретить редактирование информации о пользователе, подгружаемой из домена.
Код
function OnBeforeUserUpdateHandler(&$arFields)
    {
        //массив проверяемых полей
      $arCheckingFields = array("NAME", "LAST_NAME", "SECOND_NAME", "EMAIL", "WORK_PHONE", "PERSONAL_PHONE", "PERSONAL_ICQ", "PERSONAL_BIRTHDAY", "PERSONAL_MOBILE", "UF_SKYPE", "WORK_POSITION");
      //получаем текущие значения полей, которые запрещаем редактировать и сравниваем значения
      $rsUser = CUser::GetByID($arFields["ID"]);
      $arUser = $rsUser->Fetch();
      
      foreach ($arCheckingFields as $fieldname) {
            if($arUser[$fieldname]<>$arFields[$fieldname]) {
               global $APPLICATION;
               $APPLICATION->throwException("Вы не можете редактировать эту информацию о себе, она импортируется из вашей учетной записи в домене компании. Пожалуйста, обратитесь к системному администратору для изменения этой информации.");
               return false;
               }
         }
    }
© «Битрикс», 2001-2012, «1C-Битрикс», 2012