Вот сценарий, который я хочу исправить для коммерческого магазина:
Администратор сайта входит в систему, создает заказы для пользователей, создает платежи и / или применяет кредиты к заказам для пользователей.
Watchdog регистрирует все это, но как пользователь-администратор, когда нам нужно, чтобы он был как пользователь-клиент, против которого предпринимаются действия (поэтому мы можем перечислить на этом аккаунте лиц все действия, которые система выполняла в отношении их аккаунта или заказов).
Я вижу, что сторожевой таймер имеет:
function watchdog($type, $message, $variables = array(), $severity = WATCHDOG_NOTICE, $link = NULL) {
global $user, $base_root;
// Prepare the fields to be logged
$log_message = array(
'type' => $type,
'message' => $message,
'variables' => $variables,
'severity' => $severity,
'link' => $link,
'user' => $user,
'request_uri' => $base_root . request_uri(),
'referer' => referer_uri(),
'ip' => ip_address(),
'timestamp' => time(),
);
// Call the logging hooks to log/process the message
foreach (module_implements('watchdog') as $module) {
module_invoke($module, 'watchdog', $log_message);
}
}
Есть ли способ переопределить глобальный $ user без взлома основной функции и без ее дублирования?
Могу ли я передать$ user как переменная как-то?Могу ли я вызвать $ user = user_load ($ customer-> uid) до watchdog (), чтобы обманным путем заставить его войти в систему?Я хотел бы, чтобы записанный UID не был 0 или 1, если я могу помочь, потому что действительно сложно отслеживать журналы для определенных аспектов системы по профилю пользователя (учетная запись, биллинг, заказы и т. Д.).