• Модуль: 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;
}