- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/userprofilehistory.php
- Класс: BitrixMainUserProfileHistoryTable
- Вызов: UserProfileHistoryTable::addHistory
static function addHistory($userId, $type, array $before = null, array $after = null)
{
global $USER;
$server = Context::getCurrent()->getServer();
$request = Context::getCurrent()->getRequest();
$url = preg_replace("/(&?sessid=[0-9a-z]+)/", "", $request->getDecodedUri());
$remoteAddr = $server->get("REMOTE_ADDR");
$userAgent = $server->get("HTTP_USER_AGENT");
$updatedBy = (is_object($USER) && ($USER->GetID() > 0)? $USER->GetID() : null);
$changedFields = array();
if(is_array($before) && is_array($after))
{
//we shouldn't display some values
static $hiddenFields = array("PASSWORD" => 1, "CHECKWORD" => 1, "CONFIRM_CODE" => 1);
static $ignoredFields = array("TIMESTAMP_X" => 1);
foreach($after as $field => $value)
{
if(isset($ignoredFields[$field]))
{
continue;
}
if($before[$field] <> $value)
{
$data = array(
"before" => (isset($hiddenFields[$field])? "***" : $before[$field]),
"after" => (isset($hiddenFields[$field])? "***" : $value)
);
$changedFields[] = array(
"FIELD" => $field,
"DATA" => $data,
);
}
}
}
$result = null;
if(!empty($changedFields) || $type <> self::TYPE_UPDATE)
{
$result = static::add(array(
"USER_ID" => $userId,
"EVENT_TYPE" => $type,
"REMOTE_ADDR" => $remoteAddr,
"USER_AGENT" => $userAgent,
"REQUEST_URI" => $url,
"UPDATED_BY_ID" => $updatedBy,
));
}
if(!empty($changedFields) && $result->isSuccess())
{
foreach($changedFields as $value)
{
UserProfileRecordTable::add(array(
"HISTORY_ID" => $result->getId(),
"FIELD" => $value["FIELD"],
"DATA" => $value["DATA"],
));
}
}
return $result;
}