public static gridElementData ( Pimcore\Model\Element\ElementInterface $element ) : array | ||
$element | Pimcore\Model\Element\ElementInterface | |
return | array |
/** * @param Asset $asset * @return void */ public static function gridAssetData($asset) { $data = Element\Service::gridElementData($asset); return $data; }
/** * @param AbstractObject $object * @return array */ public static function gridObjectData($object, $fields = null) { $localizedPermissionsResolved = false; $data = Element\Service::gridElementData($object); if ($object instanceof Concrete) { $data["classname"] = $object->getClassName(); $data["idPath"] = Element\Service::getIdPath($object); $data['inheritedFields'] = array(); $user = AdminTool::getCurrentUser(); //TODO keep this for later! // if (!$user->isAdmin()) { // $permissionSet = $object->getPermissions(null, $user); // $fieldPermissions = self::getFieldPermissions($object, $permissionSet); // } if (empty($fields)) { $fields = array_keys($object->getclass()->getFieldDefinitions()); } foreach ($fields as $key) { $brickType = null; $brickGetter = null; $dataKey = $key; $keyParts = explode("~", $key); $def = $object->getClass()->getFieldDefinition($key); if (substr($key, 0, 1) == "~") { $type = $keyParts[1]; if ($type == "keyvalue") { $field = $keyParts[2]; $keyid = $keyParts[3]; $getter = "get" . ucfirst($field); if (method_exists($object, $getter)) { $keyValuePairs = $object->{$getter}(); if ($keyValuePairs) { // get with inheritance $props = $keyValuePairs->getProperties(); foreach ($props as $pair) { if ($pair["key"] == $keyid) { if (isset($pair["translated"])) { if (isset($data['#kv-tr'][$dataKey])) { if (!is_array($data['#kv-tr'][$dataKey])) { $arr = array($data['#kv-tr'][$dataKey]); $data['#kv-tr'][$dataKey] = $arr; } $data['#kv-tr'][$dataKey][] = $pair["translated"]; } else { $data['#kv-tr'][$dataKey] = $pair["translated"]; } } if (isset($data[$dataKey])) { if (!is_array($data[$dataKey])) { $arr = array($data[$dataKey]); $data[$dataKey] = $arr; } $data[$dataKey][] = $pair["value"]; } else { $data[$dataKey] = $pair["value"]; } if ($pair["inherited"]) { $data['inheritedFields'][$dataKey] = array("inherited" => $pair["inherited"], "objectid" => $pair["source"]); } // break; } } } } } } else { if (count($keyParts) > 1) { // brick $brickType = $keyParts[0]; $brickKey = $keyParts[1]; $key = self::getFieldForBrickType($object->getclass(), $brickType); $brickClass = Objectbrick\Definition::getByKey($brickType); $def = $brickClass->getFieldDefinition($brickKey); } } if (!empty($key)) { // some of the not editable field require a special response $getter = "get" . ucfirst($key); $brickGetter = null; if (!empty($brickKey)) { $brickGetter = "get" . ucfirst($brickKey); } $needLocalizedPermissions = false; // if the definition is not set try to get the definition from localized fields if (!$def) { if ($locFields = $object->getClass()->getFieldDefinition("localizedfields")) { $def = $locFields->getFieldDefinition($key); if ($def) { $needLocalizedPermissions = true; } } } //relation type fields with remote owner do not have a getter if (method_exists($object, $getter)) { //system columns must not be inherited if (in_array($key, Concrete::$systemColumnNames)) { $data[$dataKey] = $object->{$getter}(); } else { $valueObject = self::getValueForObject($object, $key, $brickType, $brickKey, $def); $data['inheritedFields'][$dataKey] = array("inherited" => $valueObject->objectid != $object->getId(), "objectid" => $valueObject->objectid); if (method_exists($def, "getDataForGrid")) { $tempData = $def->getDataForGrid($valueObject->value, $object); if ($def instanceof ClassDefinition\Data\Localizedfields) { $needLocalizedPermissions = true; foreach ($tempData as $tempKey => $tempValue) { $data[$tempKey] = $tempValue; } } else { $data[$dataKey] = $tempData; } } else { $data[$dataKey] = $valueObject->value; } } } if ($needLocalizedPermissions) { if (!$user->isAdmin()) { /** @var $locale \Zend_Locale */ $locale = (string) \Zend_Registry::get("Zend_Locale"); $permissionTypes = array("View", "Edit"); foreach ($permissionTypes as $permissionType) { //TODO, this needs refactoring! Ideally, call it only once! $languagesAllowed = self::getLanguagePermissions($object, $user, "l" . $permissionType); if ($languagesAllowed) { $languagesAllowed = array_keys($languagesAllowed); if (!in_array($locale, $languagesAllowed)) { $data["metadata"]["permission"][$key]["no" . $permissionType] = 1; if ($permissionType == "View") { $data[$key] = null; } } } } } } } } } return $data; }
/** * @param Document $document * @return void */ public static function gridDocumentData($document) { $data = Element\Service::gridElementData($document); if ($document instanceof Document\Page) { $data["title"] = $document->getTitle(); $data["description"] = $document->getDescription(); $data["keywords"] = $document->getKeywords(); } else { $data["title"] = ""; $data["description"] = ""; $data["keywords"] = ""; $data["name"] = ""; } return $data; }