- Модуль: forum
- Путь к файлу: ~/bitrix/modules/forum/classes/general/user.php
- Класс: CAllForumUser
- Вызов: CAllForumUser::Update
static function Update($ID, $arFields, $strUploadDir = false, $UpdateByUserId = false)
{
if (!is_array($arFields) || empty($arFields))
{
return false;
}
if ($UpdateByUserId)
{
if ($res = BitrixForumUserTable::getList([
"select" => ["ID"],
"filter" => ["USER_ID" => $ID]
])->fetch())
{
$ID = intval($res["ID"]);
}
}
if ($ID <= 0)
{
return false;
}
if (is_set($arFields, "ALLOW_POST"))
{
if (CACHED_b_forum_user !== false)
$GLOBALS["CACHE_MANAGER"]->CleanDir("b_forum_user");
}
unset($GLOBALS["FORUM_CACHE"]["USER"]);
unset($GLOBALS["FORUM_CACHE"]["USER_ID"]);
$entity = BitrixForumUserTable::getEntity();
$data = [];
foreach ($arFields as $k => $v)
{
$k = (mb_strpos($k, "=") === 0? mb_substr($k, 1) : $k);
if ($entity->hasField($k))
{
$field = $entity->getField($k);
$data[$k] = $v;
if ($field instanceof BitrixMainORMFieldsDateField)
{
$data[$k] = new BitrixMainTypeDateTime(BitrixMainTypeDateTime::isCorrect($v) ? $v : null);
}
else if (
!is_array($v)
&& preg_match("/{$k}s*(+|-)s*(d+)/", $v, $matches)
)
{
$data[$k] = new BitrixMainDBSqlExpression("?# $matches[1] $matches[2]", $k);
}
}
}
$result = BitrixForumUser::update($ID, $data);
if (!$result->isSuccess())
{
return false;
}
return $ID;
}