XF 1.4 Изменение пользователя без записи в журнал

Статус
В этой теме нельзя размещать новые ответы.

Egorpom

Проверенные
Сообщения
23
Реакции
35
Баллы
5,510
Имеется задача в планировщике, которая вызывает метод раз в 3 часа. Сам метод определенным образом изменяет дополнительное поле всех пользователей.
Он создан по этой теме: xf_user_field_value и работа с ним со стороны
PHP:
$userModel = XenForo_Model::create('XenForo_Model_User');
XenForo_Db::beginTransaction();
$user = $userModel->getUserById($userId);
$writer = XenForo_DataWriter::create('XenForo_DataWriter_User', XenForo_DataWriter::ERROR_SILENT);
$writer->setExistingData($userId); //ID юзера для изменения поля
$writer->setOption(XenForo_DataWriter_User::OPTION_ADMIN_EDIT, true); //это признак, что админ редактирует, чтобы игнорить запрет на редактирование
$writer->setCustomFields(array('playtime' => $playtime)); // собственно установка значения поля
$writer->save();
XenForo_Db::commit();
Вопрос: Есть ли какой-либо параметр, который отключит логирование этих изменений?
Имею ввиду то, что эти изменения отображаются в журнале изменений пользователя.
Или же придется изменять DataWriter/вручную чистить логи?

Второй вопрос:
Для этого же дополнительного поля мне нужно установить дефолтное значение.
Пока что есть идея сделать это с помощью расширения класса XenForo_ControllerPublic_Register, метода _completeRegistration
Т.е. вставить туда код, который задает нужное мне значение дополнительного поля.
Есть ли более правильный/простой способ сделать это?
Под изменением стандартных классов и методов движка я подразумеваю вынос изменений в отдельный плагин.
 
Также, если Вы знаете плагин, который так или иначе работает с дополнительными полями пользователей, я был бы рад услышать его название и разобрать в качестве примера.

1.
PHP:
$writer->setOption(XenForo_DataWriter_User::OPTION_LOG_CHANGES, false);
 
Может, кому пригодится.
Egorpom, за игнорирование полей журнала используется массив значений changeLogIgnoreFields в файле library/Xenforo/DataWriter/User.php

Вписываете в конец, я например, добавил строку значение 'avatar', чтобы в логи не заносились изменения аватарок юзеров. Значение должно совпадать с названием столбца в таблице xf_user

d7585a99b796d86d7ef6.png
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу