gridElementData() public static method

public static gridElementData ( Pimcore\Model\Element\ElementInterface $element ) : array
$element Pimcore\Model\Element\ElementInterface
return array
Esempio n. 1
0
 /**
  * @param  Asset $asset
  * @return void
  */
 public static function gridAssetData($asset)
 {
     $data = Element\Service::gridElementData($asset);
     return $data;
 }
Esempio n. 2
0
 /**
  * @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;
 }
Esempio n. 3
0
 /**
  * @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;
 }