• Модуль: bizproc
  • Путь к файлу: ~/bitrix/modules/bizproc/classes/general/documentservice.php
  • Класс: CBPDocumentService
  • Вызов: CBPDocumentService::getFieldInputControl
public function getFieldInputControl($parameterDocumentType, $fieldType, $fieldName, $fieldValue, $bAllowSelection = false, $publicMode = false)
{
	[$moduleId, $entity, $documentType] = CBPHelper::ParseDocumentId($parameterDocumentType);

	if ($moduleId)
	{
		CModule::IncludeModule($moduleId);
	}

	$arFieldType = FieldType::normalizeProperty($fieldType);
	if ((string) $arFieldType["Type"] == "")
		return "";

	if (is_array($fieldName))
	{
		$arFieldName = array(
			'Form' => null,
			'Field' => null,
		);
		foreach ($fieldName as $key => $val)
		{
			switch(mb_strtoupper($key))
			{
				case "FORM":
				case "0":
					$arFieldName["Form"] = $val;
					break;
				case "FIELD":
				case "1":
					$arFieldName["Field"] = $val;
					break;
			}
		}
	}
	else
	{
		$arFieldName = array("Form" => null, "Field" => $fieldName);
	}
	if ((string) $arFieldName["Field"] == "" || preg_match("#[^a-z0-9_[]]#i", $arFieldName["Field"]))
		return "";
	if ((string) $arFieldName["Form"] != "" && preg_match("#[^a-z0-9_]#i", $arFieldName["Form"]))
		return "";

	if ($publicMode && !array_key_exists("BP_AddShowParameterInit_".$moduleId."_".$entity."_".$documentType, $GLOBALS))
	{
		$GLOBALS["BP_AddShowParameterInit_".$moduleId."_".$entity."_".$documentType] = 1;
		CBPDocument::AddShowParameterInit($moduleId, "only_users", $documentType, $entity);
	}

	$fieldTypeObject = $this->getFieldTypeObject($parameterDocumentType, $arFieldType);
	if ($fieldTypeObject)
	{
		$renderMode = $publicMode ? FieldType::RENDER_MODE_PUBLIC : FieldType::RENDER_MODE_DESIGNER;
		if (defined('ADMIN_SECTION') && ADMIN_SECTION)
		{
			$renderMode |= FieldType::RENDER_MODE_ADMIN;
			$renderMode &= ~FieldType::RENDER_MODE_PUBLIC;
		}

		if (defined('BX_MOBILE') && BX_MOBILE)
		{
			$renderMode |= FieldType::RENDER_MODE_MOBILE;
		}

		if ($renderMode & FieldType::RENDER_MODE_PUBLIC)
		{
			CUtil::InitJSCore(['bp_field_type']);
		}

		return $fieldTypeObject->renderControl($arFieldName, $fieldValue, $bAllowSelection, $renderMode);
	}

	if (class_exists($entity))
	{
		if (method_exists($entity, "GetFieldInputControl"))
			return call_user_func_array(array($entity, "GetFieldInputControl"), array($documentType, $arFieldType, $arFieldName, $fieldValue, $bAllowSelection, $publicMode));

		if (method_exists($entity, "GetGUIFieldEdit"))
			return call_user_func_array(array($entity, "GetGUIFieldEdit"), array($documentType, $arFieldName["Form"], $arFieldName["Field"], $fieldValue, $arFieldType, $bAllowSelection));
	}

	return CBPHelper::GetFieldInputControl($parameterDocumentType, $arFieldType, $arFieldName, $fieldValue, $bAllowSelection);
}