umiTypesHelper

Описание

Класс для быстрого доступа к данным полей (umiField), по связи с типом данных (umiObjectTypeumiHierarchyType).

Собранные данные класс хранит в своих свойствах, кэш можно сбросить с помощью метода clearCache().

Класс является синглтоном, для получения экземпляра класса необходимо использовать статический метод getInstance().

Примеры использования

Получение идентификаторов объектных типов по данным иерархического типа (на примере метода selectorType::name())


    public function name($module, $method) {
			if(!$method && $module == 'content') $method = 'page';
			$umiTypesHelper = umiTypesHelper::getInstance();

			switch($this->typeClass) {
				case 'object-type': {
					$umiTypesHelper->getFieldsByHierarchyTypeName($module, $method);
					$hierarchyTypeId = $umiTypesHelper->getHierarchyTypeIdByName($module, $method);

					if (!$hierarchyTypeId) {
						throw new selectorException("");
					}

					$objectTypeIds = $umiTypesHelper->getObjectTypesIdsByHierarchyTypeId($hierarchyTypeId);

					if (!is_array($objectTypeIds) || count($objectTypeIds) == 0) {
						throw new selectorException("");
					}

					return $this->setObjectTypeIds($objectTypeIds);
				}
				
				case 'hierarchy-type': {
					$umiTypesHelper->getFieldsByHierarchyTypeName($module, $method);
					$hierarchyTypeId = $umiTypesHelper->getHierarchyTypeIdByName($module, $method);

					if (!$hierarchyTypeId) {
						throw new selectorException("");
					}

					$this->setHierarchyTypeIds($hierarchyTypeId);
				}
			}
		}

Получение идентификатора поля по его имени (на примере umiPropertiesHelper::getFieldIdByName())


		private function getFieldIdByName($fieldName, $typeId) {
			$fields = $this->umiTypesHelper->getFieldsByObjectTypeIds($typeId);

			if (isset($fields[$typeId][$fieldName])) {
				return (int) $fields[$typeId][$fieldName];
			}

			return null;
		}

Получение идентификаторов типа поля по ид поля (на примере umiObject::getPropById())

        public function getPropById($field_id) {
			if (!$this->isPropertyExists($field_id)) {
				return NULL;
			}

			$prop = cacheFrontend::getInstance()->load($this->id . "." . $field_id, "property");

			if ($prop instanceof umiObjectProperty) {
				return $prop;
			}
			$umiTypesHelper = umiTypesHelper::getInstance();
			$fieldTypeId = $umiTypesHelper->getFieldTypeIdByFieldId($field_id);

			if (!$this->properties[$field_id] instanceof umiObjectProperty) {
				$this->properties[$field_id] = umiObjectProperty::getProperty($this->id, $field_id, $this->type_id, $fieldTypeId);
				cacheFrontend::getInstance()->save($this->properties[$field_id], "property");
			}

	    return $this->properties[$field_id];