This question has been answered by BobRay. See the first response.
I don't think this is possible without hacking the MODX core. All that's stored in the DB table is the user's ID, and the function that saves the log item would crash if you sent it something else. The DB file is an integer field, so it wouldn't hold a string.
If you could find the code that *displays* the Manage Action log, you could modify it to get the user profile from the ID and display what you want about the user.
You'd have to make your change again every time you upgraded MODX.
I looked for that code, but couldn't find it.
public function prepareLog(modManagerLog $log) { $logArray = $log->toArray(); if (!empty($logArray['classKey']) && !empty($logArray['item']) && $logArray['item'] !== 'unknown') { $logArray['name'] = $logArray['classKey'] . ' (' . $logArray['item'] . ')'; /** @var xPDOObject $obj */ $obj = $this->modx->getObject($logArray['classKey'], $logArray['item']); if ($obj && ($obj->get($obj->getPK()) == $logArray['item'])) { $nameField = $this->getNameField($logArray['classKey']); $k = $obj->getField($nameField, true); if (!empty($k)) { $pk = $obj->get('id'); $logArray['name'] = $obj->get($nameField).(!empty($pk) ? ' ('.$pk.')' : ''); } } } else { $logArray['name'] = $log->get('item'); } $logArray['occurred'] = date($this->getProperty('dateFormat'), strtotime($logArray['occurred'])); /* Add this ******************************* */ $userId = $this->modx->getOption('user', $logArray, '', true); if (!empty($userId)) { $profile = $this->modx->getObject('modUserProfile', array('internalKey' => $userId)); if ($profile) { $logArray['username'] = $logArray['username'] . ' (' . $profile->get('fullname') . ')'; } } /* ******************************* */ return $logArray; }
It was a little tricky to work out. I assumed the grid would use the 'user' field, for the "User" column, but it used the 'username' field, so you can modify that in the prepareLog() method:
public function prepareLog(modManagerLog $log) { $logArray = $log->toArray(); if (!empty($logArray['classKey']) && !empty($logArray['item']) && $logArray['item'] !== 'unknown') { $logArray['name'] = $logArray['classKey'] . ' (' . $logArray['item'] . ')'; /** @var xPDOObject $obj */ $obj = $this->modx->getObject($logArray['classKey'], $logArray['item']); if ($obj && ($obj->get($obj->getPK()) == $logArray['item'])) { $nameField = $this->getNameField($logArray['classKey']); $k = $obj->getField($nameField, true); if (!empty($k)) { $pk = $obj->get('id'); $logArray['name'] = $obj->get($nameField).(!empty($pk) ? ' ('.$pk.')' : ''); } } } else { $logArray['name'] = $log->get('item'); } $logArray['occurred'] = date($this->getProperty('dateFormat'), strtotime($logArray['occurred'])); /* Add this ******************************* */ $userId = $this->modx->getOption('user', $logArray, '', true); if (!empty($userId)) { $profile = $this->modx->getObject('modUserProfile', array('internalKey' => $userId)); if ($profile) { $logArray['username'] = $logArray['username'] . ' (' . $profile->get('fullname') . ')'; } } /* ******************************* */ return $logArray; }