Описание
Класс для быстрого доступа к данным полей (umiField), по связи с типом данных (umiObjectType, umiHierarchyType).
Собранные данные класс хранит в своих свойствах, кэш можно сбросить с помощью метода 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];