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;
}