CBPHelper::getFieldInputValue

  1. Bitrix24 API (v. 23.675.0)
  2. bizproc
  3. CBPHelper
  4. getFieldInputValue
  • Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/helper.php
  • Класс: CBPHelper
  • Вызов: CBPHelper::getFieldInputValue
static function getFieldInputValue($documentType, $arFieldType, $arFieldName, $arRequest, &$arErrors)
{
	$result = [];

	if ($arFieldType["Type"] == "user")
	{
		$value = $arRequest[$arFieldName["Field"]];
		if ($value <> '')
		{
			$result = CBPHelper::UsersStringToArray($value, $documentType, $arErrors);
			if (count($arErrors) > 0)
			{
				foreach ($arErrors as $e)
				{
					$arErrors[] = $e;
				}
			}
		}
	}
	elseif (array_key_exists($arFieldName["Field"], $arRequest) || array_key_exists($arFieldName["Field"]."_text", $arRequest))
	{
		$arValue = [];
		if (array_key_exists($arFieldName["Field"], $arRequest))
		{
			$arValue = $arRequest[$arFieldName["Field"]];
			if (!is_array($arValue) || is_array($arValue) && CBPHelper::IsAssociativeArray($arValue))
			{
				$arValue = array($arValue);
			}
		}
		if (array_key_exists($arFieldName["Field"]."_text", $arRequest))
		{
			$arValue[] = $arRequest[$arFieldName["Field"]."_text"];
		}

		foreach ($arValue as $value)
		{
			if (!CBPActivity::isExpression($value))
			{
				if ($arFieldType["Type"] == "int")
				{
					if ($value <> '')
					{
						$value = str_replace(" ", "", $value);
						if ($value."|" == intval($value)."|")
						{
							$value = intval($value);
						}
						else
						{
							$value = null;
							$arErrors[] = array(
								"code" => "ErrorValue",
								"message" => GetMessage("BPCGWTL_INVALID1"),
								"parameter" => $arFieldName["Field"],
							);
						}
					}
					else
					{
						$value = null;
					}
				}
				elseif ($arFieldType["Type"] == "double")
				{
					if ($value <> '')
					{
						$value = str_replace(" ", "", str_replace(",", ".", $value));
						if ($value."|" == doubleval($value)."|")
						{
							$value = doubleval($value);
						}
						else
						{
							$value = null;
							$arErrors[] = array(
								"code" => "ErrorValue",
								"message" => GetMessage("BPCGWTL_INVALID11"),
								"parameter" => $arFieldName["Field"],
							);
						}
					}
					else
					{
						$value = null;
					}
				}
				elseif ($arFieldType["Type"] == "select")
				{
					if (!is_array($arFieldType["Options"]) || count($arFieldType["Options"]) <= 0 || $value == '')
					{
						$value = null;
					}
					elseif (!array_key_exists($value, $arFieldType["Options"]))
					{
						$value = null;
						$arErrors[] = array(
							"code" => "ErrorValue",
							"message" => GetMessage("BPCGWTL_INVALID35"),
							"parameter" => $arFieldName["Field"],
						);
					}
				}
				elseif ($arFieldType["Type"] == "bool")
				{
					if ($value !== "Y" && $value !== "N")
					{
						if ($value === true)
						{
							$value = "Y";
						}
						elseif ($value === false)
						{
							$value = "N";
						}
						elseif ($value <> '')
						{
							$value = mb_strtolower($value);
							if (in_array($value, array("y", "yes", "true", "1")))
							{
								$value = "Y";
							}
							elseif (in_array($value, array("n", "no", "false", "0")))
							{
								$value = "N";
							}
							else
							{
								$value = null;
								$arErrors[] = array(
									"code" => "ErrorValue",
									"message" => GetMessage("BPCGWTL_INVALID45"),
									"parameter" => $arFieldName["Field"],
								);
							}
						}
						else
						{
							$value = null;
						}
					}
				}
				elseif ($arFieldType["Type"] == "file")
				{
					if (array_key_exists("name", $value) && $value["name"] <> '')
					{
						if (!array_key_exists("MODULE_ID", $value) || $value["MODULE_ID"] == '')
							$value["MODULE_ID"] = "bizproc";

						$value = CFile::SaveFile($value, "bizproc_wf");
						if (!$value)
						{
							$value = null;
							$arErrors[] = array(
								"code" => "ErrorValue",
								"message" => GetMessage("BPCGWTL_INVALID915"),
								"parameter" => $arFieldName["Field"],
							);
						}
					}
					else
					{
						$value = null;
					}
				}
				else
				{
					if (!is_array($value) && $value == '')
						$value = null;
				}
			}

			if ($value != null)
				$result[] = $value;
		}
	}

	if (!$arFieldType["Multiple"])
	{
		if (count($result) > 0)
			$result = $result[0];
		else
			$result = null;
	}

	return $result;
}

Добавить комментарий