Example #1
0
	public function UpdateField($field_id, $arFields)
	{
		$new_field_id = false;
		$newField = null;

		if(isset($this->fields[$field_id]))
		{
			$obField = $this->fields[$field_id];

			if(isset($arFields["TYPE"]) && ($arFields["TYPE"] != $obField->GetTypeID()))
			{
				if(CListFieldTypeList::IsField($obField->GetTypeID()))
				{
					if(CListFieldTypeList::IsField($arFields["TYPE"]))
					{
						$newField = $obField->Update($arFields);
					}
					else
					{
						$obField->Delete();
						$newField = CListPropertyField::Add($this->iblock_id, $arFields);
					}
				}
				else
				{
					if(!CListFieldTypeList::IsField($arFields["TYPE"]))
					{
						$newField = $obField->Update($arFields);
					}
					else
					{
						$obField->Delete();
						$newField = CListElementField::Add($this->iblock_id, $arFields);
					}
				}
			}
			else
			{
				$newField = $obField->Update($arFields);
			}
		}

		if(is_object($newField))
		{
			if(isset($arFields["SETTINGS"]))
				$newField->SetSettings($arFields["SETTINGS"]);

			unset($this->fields[$field_id]);
			$new_field_id = $newField->GetID();
			$this->fields[$new_field_id] = $newField;

			$this->_resort();
			$this->_save_form_settings($this->form_id);
		}

		return $new_field_id;
	}
Example #2
0
 private static function resetPropertyArrayCache()
 {
     self::$prop_cache = array();
 }