его метода $USER->GetId.
Хочу создать этот метод на событии OnBeforeProlog. Чтобы $USER->GetId начал выдавать заранее созданного мной пользователя "крон".
Какие есть подводные камни такого решения?
Изначально необходимость в этом возникла, т.к. в Б24 активити "пауза" продолжает выполнение бизнес процесса уже через крон, поэтому бизнесс процесс крашится при использовании $USER->GetId
инициализировать CUser и авторизовать его с пользователем "крон" или сразу использовать айдишник юзера крон
Думаю проверять наличие метода $USER->GetId. И просто создавать свой метод, который будет возвращать нучное число. Объект CUSER создавать не буду
$USER в принципе на этот момент не существует, поэтому в коде получается обращение к строке "$USER"
В итоге сделал так, буду тестировать (файл init.php).
Потом когда в колено прилетит использование глобального объекта $USER не наследуемого от CUser, можешь вспомнишь что сделал не так
Например? Я потому в чат и написал, что хотел услышать мнение со стороны
Я предложил вариант сразу использовать айдишник конкретного пользователя. Вместо конструкции получения айдишника от $USER. Это будет нормально работать при условии если в дальнейшем к объекту пользователя не происходит обращений. Если уж происходит дальнейшая работа с объектом, то и сделай чтоб в объекте был требуемый пользователь со всеми параметрами - авторизуйся под ним.
Дело в том что на сколько я могу судить, при запуске через крон $USER это всегда строка. Даже возникающая ошибка пишет: не могу вызвать GetID от строки
Если не объявлен глобально объект $USER, а пытаешься что то с ним делать, то пхп на обращение к неопределенной ранее глобальной переменной вернёт строку. Следовательно и получается такая ошибка. GetID вызывается из локального кода. Если в нем нужен текущий пользователь - авторизуй по условию крона. Если всегда крон - вставляй айдишник вместо $USER->GetID()
До выполнения моего кода переменная $USER уже определена. Имеет тип строку и содержит имя пользователя linux из под которого выполняется cron_events.php Впрочем возможно я не до конца понимаю что ты имеешь ввиду
А должен быть либо объектом класса CUser, либо его наследником
Ну так из коробки там строка =)
Это в ваших кронах, а битрикс и соответственно используемый код требует стандартного наличия в $USER объекта определенного класса
То понятно. Речь то только про крон. Понятно что для обычных сессиях такое переоределение все поломает
Я знать не знаю что там дальше творится после $USER->GetID(). Но если оно ожидает CUser, то предоставь его.
Обсуждают сегодня