Pimcore\Model\Object\ClassDefinition\Data::getDataFromObjectParam PHP Метод

getDataFromObjectParam() защищенный Метод

protected getDataFromObjectParam ( $object, array $params = [] ) : mixed
$object
$params array
Результат mixed
    protected function getDataFromObjectParam($object, $params = [])
    {
        $data = null;
        $context = $params && $params["context"] ? $params["context"] : null;
        if ($context) {
            if ($context["containerType"] == "fieldcollection" || $context["containerType"] == "block") {
                if ($this instanceof Object\ClassDefinition\Data\Localizedfields || $object instanceof Object\Localizedfield) {
                    $fieldname = $context["fieldname"];
                    $index = $context["index"];
                    if ($object instanceof Object\Concrete) {
                        $containerGetter = "get" . ucfirst($fieldname);
                        $container = $object->{$containerGetter}();
                        if ($container) {
                            $originalIndex = $context["oIndex"];
                            // field collection or block items
                            if (!is_null($originalIndex)) {
                                if ($context["containerType"] == "block") {
                                    $items = $container;
                                } else {
                                    $items = $container->getItems();
                                }
                                if ($items && count($items) > $originalIndex) {
                                    $item = $items[$originalIndex];
                                    if ($context["containerType"] == "block") {
                                        $data = $item[$this->getName()];
                                        if ($data instanceof Object\Data\BlockElement) {
                                            $data = $data->getData();
                                            return $data;
                                        }
                                    } else {
                                        $getter = "get" . ucfirst($this->getName());
                                        $data = $item->{$getter}();
                                        if ($object instanceof Object\Localizedfield) {
                                            $data = $data->getLocalizedValue($this->getName(), $params["language"], true);
                                        }
                                    }
                                    return $data;
                                } else {
                                    throw new \Exception("object seems to be modified, item with orginal index " . $originalIndex . " not found, new index: " . $index);
                                }
                            } else {
                                return null;
                            }
                        } else {
                            return null;
                        }
                    } elseif ($object instanceof Object\Localizedfield) {
                        $data = $object->getLocalizedValue($this->getName(), $params["language"], true);
                        return $data;
                    }
                }
            } elseif ($context["containerType"] == "classificationstore") {
                $fieldname = $context["fieldname"];
                $getter = "get" . ucfirst($fieldname);
                if (method_exists($object, $getter)) {
                    $groupId = $context["groupId"];
                    $keyId = $context["keyId"];
                    $language = $context["language"];
                    /** @var  $classificationStoreData Object\Classificationstore */
                    $classificationStoreData = $object->{$getter}();
                    $data = $classificationStoreData->getLocalizedKeyValue($groupId, $keyId, $language, true, true);
                    return $data;
                }
            }
        }
        $container = $object;
        $getter = "get" . ucfirst($this->getName());
        if (method_exists($container, $getter)) {
            // for Object\Concrete, Object\Fieldcollection\Data\AbstractData, Object\Objectbrick\Data\AbstractData
            $data = $container->{$getter}();
        } elseif ($object instanceof Object\Localizedfield) {
            $data = $object->getLocalizedValue($this->getName(), $params["language"], true);
        }
        return $data;
    }