/** * @param array $parameterDocumentType * @return array */ public function getTypesMap(array $parameterDocumentType) { $k = implode('@', $parameterDocumentType); if (isset($this->typesMapCache[$k])) { return $this->typesMapCache[$k]; } $result = FieldType::getBaseTypesMap(); $documentFieldTypes = $this->GetDocumentFieldTypes($parameterDocumentType); foreach ($documentFieldTypes as $name => $field) { if (isset($field['typeClass'])) { $result[strtolower($name)] = $field['typeClass']; } } $this->typesMapCache[$k] = $result; return $result; }
public function GetDocumentFieldTypes($documentType) { $v = substr($documentType, strlen("type_")); if (intval($v) . "!" != $v . "!") { throw new CBPArgumentOutOfRangeException("documentType", $documentType); } $iblockId = intval($v); $typesMap = FieldType::getBaseTypesMap(); $arResult = array("S" => array("Name" => GetMessage("BPVDX_STRING"), "BaseType" => "string", 'typeClass' => $typesMap[FieldType::STRING]), "T" => array("Name" => GetMessage("BPVDX_TEXT"), "BaseType" => "text", 'typeClass' => $typesMap[FieldType::TEXT]), "N" => array("Name" => GetMessage("BPVDX_NUM"), "BaseType" => "double", 'typeClass' => $typesMap[FieldType::DOUBLE]), "L" => array("Name" => GetMessage("BPVDX_LIST"), "BaseType" => "select", "Complex" => true, 'typeClass' => $typesMap[FieldType::SELECT]), "F" => array("Name" => GetMessage("BPVDX_FILE"), "BaseType" => "file", 'typeClass' => $typesMap[FieldType::FILE]), "B" => array("Name" => GetMessage("BPVDX_YN"), "BaseType" => "bool", 'typeClass' => $typesMap[FieldType::BOOL])); foreach (CIBlockProperty::GetUserType() as $ar) { $t = $ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"]; if (COption::GetOptionString("bizproc", "SkipNonPublicCustomTypes", "N") == "Y" && !array_key_exists("GetPublicEditHTML", $ar) && $t != "S:UserID" && $t != "S:DateTime") { continue; } $arResult[$t] = array("Name" => $ar["DESCRIPTION"], "BaseType" => "string", 'typeClass' => '\\Bitrix\\Iblock\\BizprocType\\UserTypeProperty'); if ($t == "S:UserID") { $arResult[$t]["BaseType"] = "user"; $arResult[$t]['typeClass'] = $typesMap[FieldType::USER]; } elseif ($t == "S:employee" && COption::GetOptionString("bizproc", "employee_compatible_mode", "N") != "Y") { $arResult[$t]["BaseType"] = "user"; $arResult[$t]['typeClass'] = '\\Bitrix\\Iblock\\BizprocType\\UserTypePropertyEmployee'; } elseif ($t == "S:DateTime") { $arResult[$t]["BaseType"] = "datetime"; $arResult[$t]["typeClass"] = $typesMap[FieldType::DATETIME]; } elseif ($t == "S:Date") { $arResult[$t]["BaseType"] = "date"; $arResult[$t]["typeClass"] = $typesMap[FieldType::DATE]; } elseif ($t == "E:EList") { $arResult[$t]["BaseType"] = "string"; $arResult[$t]["Complex"] = true; $arResult[$t]['typeClass'] = '\\Bitrix\\Iblock\\BizprocType\\UserTypePropertyElist'; } elseif ($t == 'S:HTML') { $arResult[$t]['typeClass'] = '\\Bitrix\\Iblock\\BizprocType\\UserTypePropertyHtml'; } elseif ($t == 'S:DiskFile') { $arResult[$t]["BaseType"] = "int"; $arResult[$t]['typeClass'] = '\\Bitrix\\Iblock\\BizprocType\\UserTypePropertyDiskFile'; } } return $arResult; }