• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/user.php
  • Класс: CAllForumUser
  • Вызов: CAllForumUser::CheckFields
static function CheckFields($ACTION, &$arFields, $ID=false)
{
	if (is_set($arFields, "AVATAR") && $arFields["AVATAR"]["name"] == '' && $arFields["AVATAR"]["del"] == '')
	{
		unset($arFields["AVATAR"]);
	}

	$aMsg = array();
	// Checking user for updating or adding
	// USER_ID as value
	if ((is_set($arFields, "USER_ID") || $ACTION=="ADD") && intval($arFields["USER_ID"]) <= 0)
	{
		$aMsg[] = array(
			"id" => 'EMPTY_USER_ID',
			"text" => GetMessage("F_GL_ERR_EMPTY_USER_ID"));
	}
	elseif (is_set($arFields, "USER_ID"))
	{
		$user = CUser::GetByID($arFields["USER_ID"])->fetch();
		if (empty($user))
		{
			$aMsg[] = array(
				"id" => 'USER_DOES_NOT_EXIST',
				"text" => GetMessage("F_GL_ERR_USER_NOT_EXIST", array("#UID#" => htmlspecialcharsbx($arFields["USER_ID"]))));
		}

		$res = CForumUser::GetByUSER_ID($arFields["USER_ID"]);

		if ($ACTION == "UPDATE")
		{
			unset($arFields["USER_ID"]);
		}
		else if (!empty($res))
		{
			$aMsg[] = array(
				"id" => 'USER_EXISTS',
				"text" => GetMessage("F_GL_ERR_USER_IS_EXIST", array("#UID#" => htmlspecialcharsbx($arFields["USER_ID"]))));
		}
		else if (!array_key_exists("AVATAR", $arFields) && $user["PERSONAL_PHOTO"] > 0)
		{
			$arFields["AVATAR"] = CFile::MakeFileArray($user["PERSONAL_PHOTO"]);
			if (!$arFields["AVATAR"] || CFile::ResizeImage($arFields["AVATAR"], array(
				"width" => COption::GetOptionInt("forum", "avatar_max_width", 100),
				"height" => COption::GetOptionInt("forum", "avatar_max_height", 100)))
			)
			{
				unset($arFields["AVATAR"]);
			}
		}
	}
	// last visit
	if (is_set($arFields, "LAST_VISIT"))
	{
		$arFields["LAST_VISIT"] = trim($arFields["LAST_VISIT"]);
		if ($arFields["LAST_VISIT"] <> '')
		{
			if ($arFields["LAST_VISIT"] != $GLOBALS["DB"]->GetNowFunction() && !$GLOBALS["DB"]->IsDate($arFields["LAST_VISIT"], false, SITE_ID, "FULL"))
				$aMsg[] = array(
					"id" => 'LAST_VISIT',
					"text" => GetMessage("F_GL_ERR_LAST_VISIT"));
		}
		else
		{
			unset($arFields["LAST_VISIT"]);
		}
	}
	// date registration
	if (is_set($arFields, "DATE_REG"))
	{
		$arFields["DATE_REG"] = trim($arFields["DATE_REG"]);
		if ($arFields["DATE_REG"] <> '')
		{
			if ($arFields["DATE_REG"] != $GLOBALS["DB"]->GetNowFunction() && !$GLOBALS["DB"]->IsDate($arFields["DATE_REG"], false, SITE_ID, "SHORT"))
			{
				$aMsg[] = array(
					"id" => 'DATE_REG',
					"text" => GetMessage("F_GL_ERR_DATE_REG"));
			}
		}
		else
		{
			unset($arFields["DATE_REG"]);
		}
	}
	// avatar
	if (is_set($arFields, "AVATAR"))
	{
		$max_size = COption::GetOptionInt("forum", "file_max_size", 5242880);
		$size = array(
			"width" => COption::GetOptionInt("forum", "avatar_max_width", 100),
			"height" => COption::GetOptionInt("forum", "avatar_max_height", 100));
		$res = CFile::CheckImageFile($arFields["AVATAR"], $max_size);
		if ($res == '')
		{
			$res = CFile::CheckImageFile($arFields["AVATAR"], $max_size, $size["width"], $size["height"]);
			if ($res <> '' && CFile::ResizeImage($arFields["AVATAR"], $size))
				$res = '';
		}
		if ($res <> '')
		{
			$aMsg[] = array(
				"id" => 'AVATAR',
				"text" => $res);
		}
	}

	if (!empty($aMsg))
	{
		$e = new CAdminException(array_reverse($aMsg));
		$GLOBALS["APPLICATION"]->ThrowException($e);
		return false;
	}

	// show name
	if (is_set($arFields, "SHOW_NAME") || $ACTION == "ADD")
	{
		if (empty($arFields["SHOW_NAME"]))
			$arFields["SHOW_NAME"] = COption::GetOptionString("forum", "USER_SHOW_NAME", "Y") == "Y" ? "Y" : "N";
		$arFields["SHOW_NAME"] = ($arFields["SHOW_NAME"] == "N" ? "N" : "Y");
	}
	// allow post
	if (is_set($arFields, "ALLOW_POST") || $ACTION=="ADD")
	{
		$arFields["ALLOW_POST"] = ($arFields["ALLOW_POST"] == "N" ? "N" : "Y");
	}
	return True;
}