コード例 #1
0
	/**
	 * <p>Прикрепляет группу валидаторов с заданными настройками к полю формы. Аналогична вызову <a href="http://dev.1c-bitrix.ru/api_help/form/classes/cformvalidator/set.php">CFormValidator::Set</a> для каждого валидатора группы.</p>
	 *
	 *
	 *
	 *
	 * @param int $WEB_FORM_ID  ID <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#form">веб-формы</a>.
	 *
	 *
	 *
	 * @param int $FIELD_ID  ID <a href="http://dev.1c-bitrix.ru/api_help/form/terms.php#question">вопроса</a>.
	 *
	 *
	 *
	 * @param array $arValidators = array() Массив валидаторов. Каждый элемент массива должен представлять
	 * собой ассоциативный массив с ключами: <ul> <li> <b>NAME</b> - идентификатор
	 * валидатора;</li> <li> <b>PARAMS</b> - массив параметрова валидатора.</li> </ul>
	 *
	 *
	 *
	 * @return mixed 
	 *
	 * @static
	 * @link http://dev.1c-bitrix.ru/api_help/form/classes/cformvalidator/setbatch.php
	 * @author Bitrix
	 */
	public static function SetBatch($WEB_FORM_ID, $FIELD_ID, $arValidators)
	{
		global $DB;

		$rsValList = CFormValidator::GetAllList();
		$arValList = array();
		while ($arVal = $rsValList->Fetch())
		{
			$arValList[$arVal["NAME"]] = $arVal;
		}

		$C_SORT = 0;
		foreach ($arValidators as $key => $arFieldVal)
		{
			if ($arVal = $arValList[$arFieldVal["NAME"]])
			{
				$C_SORT += 100;
				$arQueryFields = array(
					"~TIMESTAMP_X" => $DB->CurrentTimeFunction(),
					"FORM_ID" => intval($WEB_FORM_ID),
					"FIELD_ID" => intval($FIELD_ID),
					"ACTIVE" => "Y",
					"C_SORT" => $C_SORT,
					"VALIDATOR_SID" => $arFieldVal["NAME"],
				);

				if (is_array($arFieldVal["PARAMS"]) && is_set($arVal, "CONVERT_TO_DB"))
				{
					$arParams = array();
					foreach ($arFieldVal["PARAMS"] as $key => $arParam)
					{
						$arParams[$arParam["NAME"]] = $arParam["VALUE"];
					}
				
					if (count($arParams) > 0)
					{
						$strParams = CFormValidator::GetSettingsString($arVal, $arParams);
						$arQueryFields["PARAMS"] = $strParams;
					}
				}
				
				$DB->Add("b_form_field_validator", $arQueryFields);
			}
		}
	}