Многие пользователи, особенно после обноваления системы VtigerCRM с 7.0 на 7.1 столкнулись с проблемой - в карточке заказа, лида во вкладке история, все изменения отображаются так, как будто их осуществлял пользователь Администратор, а не тот, кто это делал на самом деле. Зачастую это связано с обработчиками, которые срабатывают после изменения записи и в итоге изменения относятся к администратору, а не пользователю.
Как исправить эту проблему:
Открываем следующий файл: modules/ModTracker/ModTrackerHandler.php
Это как раз тот файл, который фиксирует все изменения, которые делают пользователи в системе и фиксирует их в базе.
Находим следующий блок в этом файле:
$moduleName = $data->getModuleName();
$isTrackingEnabled = ModTracker::isTrackingEnabledForModule($moduleName);
if(!$isTrackingEnabled) {
return;
}
И до этого блока добавляем актуальную информацию о пользователе, который совершает правку записи:
$current_user_id=$_SESSION["authenticated_user_id"];
$current_user = Users_Record_Model::getInstanceById($current_user_id, 'Users');
$curid=$current_user->get('id');
global $current_user;
Далее находим следующую строчку:
global $adb, $current_user;
и убираем переменную current_user, она нам ну нужна. В итоге эта строчка выглядит так:
global $adb;
Далее ищем следующую строчку:
$adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status)
VALUES(?,?,?,?,?,?)', Array($this->id, $recordId, $moduleName,
$current_user->id, $changedOn, $status));
И заменяем её на следующую:
$adb->pquery('INSERT INTO vtiger_modtracker_basic(id, crmid, module, whodid, changedon, status)
VALUES(?,?,?,?,?,?)', Array($this->id, $recordId, $moduleName,
$curid, $changedOn, $status));
В итоге вы увидете, что теперь в истории у нас фиксируется не только администратор, а тот пользователь, который произвёл изменение записи на самом деле.