private static function _init() { if (count(self::$types) == 0) { self::$types = array(); //Element fields self::$types["NAME"] = new CListFieldType("NAME", GetMessage("LISTS_LIST_FIELD_NAME"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["SORT"] = new CListFieldType("SORT", GetMessage("LISTS_LIST_FIELD_SORT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["ACTIVE_FROM"] = new CListFieldType("ACTIVE_FROM", GetMessage("LISTS_LIST_FIELD_ACTIVE_FROM"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["ACTIVE_TO"] = new CListFieldType("ACTIVE_TO", GetMessage("LISTS_LIST_FIELD_ACTIVE_TO"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["PREVIEW_PICTURE"] = new CListFieldType("PREVIEW_PICTURE", GetMessage("LISTS_LIST_FIELD_PREVIEW_PICTURE"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["PREVIEW_TEXT"] = new CListFieldType("PREVIEW_TEXT", GetMessage("LISTS_LIST_FIELD_PREVIEW_TEXT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["DETAIL_PICTURE"] = new CListFieldType("DETAIL_PICTURE", GetMessage("LISTS_LIST_FIELD_DETAIL_PICTURE"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["DETAIL_TEXT"] = new CListFieldType("DETAIL_TEXT", GetMessage("LISTS_LIST_FIELD_DETAIL_TEXT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY); self::$types["DATE_CREATE"] = new CListFieldType("DATE_CREATE", GetMessage("LISTS_LIST_FIELD_DATE_CREATE"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); self::$types["CREATED_BY"] = new CListFieldType("CREATED_BY", GetMessage("LISTS_LIST_FIELD_CREATED_BY"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); self::$types["TIMESTAMP_X"] = new CListFieldType("TIMESTAMP_X", GetMessage("LISTS_LIST_FIELD_TIMESTAMP_X"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); self::$types["MODIFIED_BY"] = new CListFieldType("MODIFIED_BY", GetMessage("LISTS_LIST_FIELD_MODIFIED_BY"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY); //Property types self::$types["S"] = new CListFieldType("S", GetMessage("LISTS_LIST_FIELD_S"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["N"] = new CListFieldType("N", GetMessage("LISTS_LIST_FIELD_N"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["L"] = new CListFieldType("L", GetMessage("LISTS_LIST_FIELD_L"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["F"] = new CListFieldType("F", GetMessage("LISTS_LIST_FIELD_F"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["G"] = new CListFieldType("G", GetMessage("LISTS_LIST_FIELD_G"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); self::$types["E"] = new CListFieldType("E", GetMessage("LISTS_LIST_FIELD_E"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); //User types foreach (CIBlockProperty::GetUserType() as $ar) { if (array_key_exists("GetPublicEditHTML", $ar)) { self::$types[$ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"]] = new CListFieldType($ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"], $ar["DESCRIPTION"], CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY); } } } }
public function GetAvailableTypes($ID = "") { $arTypeNames = CListFieldTypeList::GetTypesNames(); foreach($this->fields->GetFields() as $FIELD_ID) if($FIELD_ID != $ID) unset($arTypeNames[$FIELD_ID]); return $arTypeNames; }
public function Update($arFields) { if (isset($arFields["TYPE"])) { $newType = $arFields["TYPE"]; } else { $newType = $this->GetTypeID(); } if (is_array($this->_property) && !CListFieldTypeList::IsField($newType)) { foreach ($this->GetArray() as $id => $val) { if (array_key_exists($id, $arFields) && $id != "IBLOCK_ID") { $this->_property[$id] = $arFields[$id]; } } if (strpos($newType, ":") !== false) { list($this->_property["PROPERTY_TYPE"], $this->_property["USER_TYPE"]) = explode(":", $newType); } else { $this->_property["PROPERTY_TYPE"] = $newType; $this->_property["USER_TYPE"] = ""; } $this->_property["CHECK_PERMISSIONS"] = "N"; $this->_property["ACTIVE"] = "Y"; $obProperty = new CIBlockProperty(); if ($obProperty->Update($this->_property["ID"], $this->_property)) { if ($this->_property["PROPERTY_TYPE"] == "L" && is_array($arFields["LIST"])) { CList::UpdatePropertyList($this->_property["ID"], $arFields["LIST"]); } return new CListPropertyField($this->_property["IBLOCK_ID"], "PROPERTY_" . $this->_property["ID"], $arFields["NAME"], $arFields["SORT"]); } } return null; }
} if (preg_match("/^(G|G:|E|E:)/", $data["TYPE"])) { $arResult["LINK_IBLOCKS"] = CLists::GetIBlocks($arParams["~IBLOCK_TYPE_ID"], !$arParams["CAN_EDIT"], $arParams["~SOCNET_GROUP_ID"]); if (substr($data["TYPE"], 0, 1) == "G") { unset($arResult["LINK_IBLOCKS"][$arResult["IBLOCK_ID"]]); } } $arResult["FORM_DATA"] = array(); foreach ($data as $key => $value) { $arResult["FORM_DATA"]["~" . $key] = $value; if (is_array($value)) { foreach ($value as $key1 => $value1) { $value[$key1] = htmlspecialcharsbx($value1); } $arResult["FORM_DATA"][$key] = $value; } else { $arResult["FORM_DATA"][$key] = htmlspecialcharsbx($value); } } $arResult["CAN_BE_MULTIPLE"] = !$obList->is_field($data["TYPE"]); $arResult["CAN_BE_OPTIONAL"] = $data["TYPE"] != "NAME"; $arResult["IS_READ_ONLY"] = $arResult["FIELD_ID"] ? $obList->is_readonly($arResult["FIELD_ID"]) : CListFieldTypeList::GetByID($data["TYPE"])->IsReadonly(); $this->IncludeComponentTemplate(); if ($arResult["FIELD_ID"]) { $APPLICATION->SetTitle(GetMessage("CC_BLFE_TITLE_EDIT", array("#NAME#" => htmlspecialcharsex($arResult["FIELD"]["NAME"])))); } else { $APPLICATION->SetTitle(GetMessage("CC_BLFE_TITLE_NEW")); } $APPLICATION->AddChainItem($arResult["IBLOCK"]["NAME"], $arResult["~LIST_URL"]); $APPLICATION->AddChainItem(GetMessage("CC_BLFE_CHAIN_LIST_EDIT"), $arResult["~LIST_EDIT_URL"]); $APPLICATION->AddChainItem(GetMessage("CC_BLFE_CHAIN_FIELDS"), $arResult["~LIST_FIELDS_URL"]);
protected function _read_form_settings($form_id) { if(!$form_id) return; global $DB; //read list meta from module table $rsFields = $DB->Query(" SELECT * FROM b_lists_field WHERE IBLOCK_ID = ".$this->iblock_id." ORDER BY SORT ASC ", false, "File: ".__FILE__."<br>Line: ".__LINE__); $dbFields = array(); while($arField = $rsFields->Fetch()) $dbFields[$arField["FIELD_ID"]] = $arField; $fields = array(); $customTabs = CUserOptions::GetOption("form", $form_id); //read list meta from interface settings if($customTabs && $customTabs["tabs"]) { $sort = 10; $arTabs = explode("--;--", $customTabs["tabs"]); foreach($arTabs as $customFields) { if($customFields) { $arCustomFields = explode("--,--", $customFields); array_shift($arCustomFields); foreach($arCustomFields as $customField) { list($FIELD_ID, $customName) = explode("--#--", $customField); if($FIELD_ID != "SECTIONS") { $customName = ltrim($customName, "* -\xa0"); if(CListFieldTypeList::IsField($FIELD_ID)) $fields[$FIELD_ID] = new CListElementField($this->iblock_id, $FIELD_ID, $customName, $sort); else $fields[$FIELD_ID] = new CListPropertyField($this->iblock_id, $FIELD_ID, $customName, $sort); //check if property was deleted from admin interface if(!is_array($fields[$FIELD_ID]->GetArray())) { unset($fields[$FIELD_ID]); } else { $sort += 10; unset($dbFields[$FIELD_ID]); } } } } } //There were some fields "deleted" from interface foreach($dbFields as $FIELD_ID => $arField) { $DB->Query(" DELETE FROM b_lists_field WHERE IBLOCK_ID = ".$this->iblock_id." AND FIELD_ID = '".$DB->ForSQL($FIELD_ID)."' ", false, "File: ".__FILE__."<br>Line: ".__LINE__); } } else//or from module metadata { foreach($dbFields as $FIELD_ID => $arField) { if(CListFieldTypeList::IsField($FIELD_ID)) $fields[$FIELD_ID] = new CListElementField($this->iblock_id, $FIELD_ID, $arField["NAME"], $arField["SORT"]); else $fields[$FIELD_ID] = new CListPropertyField($this->iblock_id, $FIELD_ID, $arField["NAME"], $arField["SORT"]); //check if property was deleted from admin interface if(!is_array($fields[$FIELD_ID]->GetArray())) { unset($fields[$FIELD_ID]); $DB->Query(" DELETE FROM b_lists_field WHERE IBLOCK_ID = ".$this->iblock_id." AND FIELD_ID = '".$DB->ForSQL($FIELD_ID)."' ", false, "File: ".__FILE__."<br>Line: ".__LINE__); } } } return $fields; }