• Модуль: controller
  • Путь к файлу: ~/bitrix/modules/controller/classes/general/controllermember.php
  • Класс: CAllControllerMember
  • Вызов: CAllControllerMember::CheckFields
static function CheckFields(&$arFields, $ID = false)
{
	/** @global CMain $APPLICATION */
	global $APPLICATION;
	/** @global CDatabase $DB */
	global $DB;
	/** @global CUser $USER */
	global $USER;

	$arMsg = array();
	if ($ID > 0)
	{
		unset($arFields["ID"]);
	}

	if ($ID === false)
	{
		if (!array_key_exists("MEMBER_ID", $arFields))
		{
			$arFields["MEMBER_ID"] = "m".BitrixMainSecurityRandom::getString(31);
		}
		elseif (array_key_exists("MEMBER_ID", $arFields))
		{
			if (intval($arFields["MEMBER_ID"]) > 0)
			{
				$arMsg[] = array(
					"id" => "MEMBER_ID",
					"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_ID"),
				);
			}
			else
			{
				$strSqlCheck = "
					SELECT 'x'
					FROM b_controller_member
					WHERE MEMBER_ID = '".$DB->ForSQL($arFields['MEMBER_ID'], 32)."'
					AND ID <> ".intval($ID)."
				";
				$dbrCheck = $DB->Query($strSqlCheck);
				if ($dbrCheck->Fetch())
				{
					$arMsg[] = array(
						"id" => "MEMBER_ID",
						"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_UID"),
					);
				}
			}
		}
	}

	if (($ID === false || array_key_exists("NAME", $arFields)) && $arFields["NAME"] == '')
	{
		$arMsg[] = array(
			"id" => "NAME",
			"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_NAME"),
		);
	}

	if (($ID === false || array_key_exists("URL", $arFields)) && $arFields["URL"] == '')
	{
		$arMsg[] = array(
			"id" => "URL",
			"text" => GetMessage("CTRLR_MEM_ERR_MEMBER_URL"),
		);
	}

	if ($ID === false && !array_key_exists("CONTROLLER_GROUP_ID", $arFields))
	{
		$arFields["CONTROLLER_GROUP_ID"] = COption::GetOptionInt("controller", "default_group", 1);
	}

	if ($ID === false)
	{
		$dbEvents = GetModuleEvents("controller", "OnBeforeControllerMemberAdd", true);
	}
	else
	{
		$dbEvents = GetModuleEvents("controller", "OnBeforeControllerMemberUpdate", true);
	}

	$APPLICATION->ResetException();
	foreach($dbEvents as $arEvent)
	{
		$bEventRes = ExecuteModuleEventEx($arEvent, array($ID, &$arFields));
		if ($bEventRes === false)
		{
			$ex = $APPLICATION->GetException();
			$arMsg[] = array(
				"text" => ($ex? $ex->GetString(): "Unknown error."),
			);
		}
	}

	if (!empty($arMsg))
	{
		$e = new CAdminException($arMsg);
		$APPLICATION->ThrowException($e);
		return false;
	}

	if (isset($arFields["URL"]))
	{
		$arFields["URL"] = CControllerMember::_GoodURL($arFields["URL"]);
	}

	if (array_key_exists("ACTIVE", $arFields) && $arFields["ACTIVE"] != "Y")
	{
		$arFields["ACTIVE"] = "N";
	}

	if (array_key_exists("SHARED_KERNEL", $arFields) && $arFields["SHARED_KERNEL"] != "Y")
	{
		$arFields["SHARED_KERNEL"] = "N";
	}

	if (array_key_exists("DISCONNECTED", $arFields) && $arFields["DISCONNECTED"] != "Y" && $arFields["DISCONNECTED"]!="I")
	{
		$arFields["DISCONNECTED"] = "N";
	}

	if (!array_key_exists("MODIFIED_BY", $arFields) && is_object($USER))
	{
		$arFields["MODIFIED_BY"] = $USER->GetID();
	}

	if ($ID === false && !array_key_exists("CREATED_BY", $arFields) && is_object($USER))
	{
		$arFields["CREATED_BY"] = $USER->GetID();
	}

	if ($ID === false && !array_key_exists("DATE_CREATE", $arFields))
	{
		$arFields["~DATE_CREATE"] = $DB->CurrentTimeFunction();
	}

	return true;
}