Inheritance: extends Pimcore\Model\AbstractModel
Esempio n. 1
0
 /**
  * Loads a list of predefined metadata definitions for the specicified parameters, returns an array of
  * Metadata\Predefined elements
  *
  * @return array
  */
 public function load()
 {
     $properties = [];
     $definitions = $this->db->fetchAll($this->model->getFilter(), $this->model->getOrder());
     foreach ($definitions as $propertyData) {
         $properties[] = Model\Metadata\Predefined::getById($propertyData["id"]);
     }
     $this->model->setDefinitions($properties);
     return $properties;
 }
 /**
  * Loads a list of predefined metadata definitions for the specicified parameters, returns an array of
  * Metadata\Predefined elements
  *
  * @return array
  */
 public function load()
 {
     $properties = array();
     $definitions = $this->db->fetchCol("SELECT id FROM assets_metadata_predefined" . $this->getCondition() . $this->getOrder() . $this->getOffsetLimit(), $this->model->getConditionVariables());
     foreach ($definitions as $propertyData) {
         $properties[] = Model\Metadata\Predefined::getById($propertyData);
     }
     $this->model->setDefinitions($properties);
     return $properties;
 }
Esempio n. 3
0
 /**
  * @param $metadata
  * @return array
  */
 public static function expandMetadataForEditmode($metadata)
 {
     if (!is_array($metadata)) {
         return $metadata;
     }
     $result = [];
     foreach ($metadata as $item) {
         $type = $item["type"];
         switch ($type) {
             case "document":
             case "asset":
             case "object":
                 $element = $item["data"];
                 if (is_numeric($item["data"])) {
                     $element = Element\Service::getElementById($type, $item["data"]);
                 }
                 if ($element instanceof Element\ElementInterface) {
                     $item["data"] = $element->getRealFullPath();
                 } else {
                     $item["data"] = "";
                 }
                 break;
             default:
                 //nothing to do
         }
         //get the config from an predefined property-set (eg. select)
         $predefined = Model\Metadata\Predefined::getByName($item['name']);
         if ($predefined && $predefined->getType() == $item['type'] && $predefined->getConfig()) {
             $item['config'] = $predefined->getConfig();
         }
         $result[] = $item;
     }
     return $result;
 }
Esempio n. 4
0
 public function metadataAction()
 {
     if ($this->getParam("data")) {
         $this->checkPermission("predefined_properties");
         if ($this->getParam("xaction") == "destroy") {
             $data = \Zend_Json::decode($this->getParam("data"));
             if (\Pimcore\Tool\Admin::isExtJS6()) {
                 $id = $data["id"];
             } else {
                 $id = $data;
             }
             $metadata = Metadata\Predefined::getById($id);
             $metadata->delete();
             $this->_helper->json(array("success" => true, "data" => array()));
         } else {
             if ($this->getParam("xaction") == "update") {
                 $data = \Zend_Json::decode($this->getParam("data"));
                 // save type
                 $metadata = Metadata\Predefined::getById($data["id"]);
                 $metadata->setValues($data);
                 $existingItem = Metadata\Predefined\Listing::getByKeyAndLanguage($metadata->getName(), $metadata->getLanguage(), $metadata->getTargetSubtype());
                 if ($existingItem && $existingItem->getId() != $metadata->getId()) {
                     $this->_helper->json(array("message" => "rule_violation", "success" => false));
                 }
                 $metadata->minimize();
                 $metadata->save();
                 $metadata->expand();
                 $this->_helper->json(array("data" => $metadata, "success" => true));
             } else {
                 if ($this->getParam("xaction") == "create") {
                     $data = \Zend_Json::decode($this->getParam("data"));
                     unset($data["id"]);
                     // save type
                     $metadata = Metadata\Predefined::create();
                     $metadata->setValues($data);
                     $existingItem = Metadata\Predefined\Listing::getByKeyAndLanguage($metadata->getName(), $metadata->getLanguage(), $metadata->getTargetSubtype());
                     if ($existingItem) {
                         $this->_helper->json(array("message" => "rule_violation", "success" => false));
                     }
                     $metadata->save();
                     $this->_helper->json(array("data" => $metadata, "success" => true));
                 }
             }
         }
     } else {
         // get list of types
         $list = new Metadata\Predefined\Listing();
         $list->setLimit($this->getParam("limit"));
         $list->setOffset($this->getParam("start"));
         $sortingSettings = \Pimcore\Admin\Helper\QueryParams::extractSortingSettings($this->getAllParams());
         if ($sortingSettings['orderKey']) {
             $list->setOrderKey($sortingSettings['orderKey']);
             $list->setOrder($sortingSettings['order']);
         } else {
             $list->setOrderKey("name");
         }
         if ($this->getParam("filter")) {
             $list->setCondition("`name` LIKE " . $list->quote("%" . $this->getParam("filter") . "%") . " OR `description` LIKE " . $list->quote("%" . $this->getParam("filter") . "%"));
         }
         $list->load();
         $properties = array();
         if (is_array($list->getDefinitions())) {
             foreach ($list->getDefinitions() as $metadata) {
                 $metadata->expand();
                 $properties[] = $metadata;
             }
         }
         $this->_helper->json(array("data" => $properties, "success" => true, "total" => $list->getTotalCount()));
     }
 }
Esempio n. 5
0
 public function metadataAction()
 {
     if ($this->getParam("data")) {
         $this->checkPermission("asset_metadata");
         if ($this->getParam("xaction") == "destroy") {
             $data = \Zend_Json::decode($this->getParam("data"));
             if (\Pimcore\Tool\Admin::isExtJS6()) {
                 $id = $data["id"];
             } else {
                 $id = $data;
             }
             $metadata = Metadata\Predefined::getById($id);
             $metadata->delete();
             $this->_helper->json(["success" => true, "data" => []]);
         } elseif ($this->getParam("xaction") == "update") {
             $data = \Zend_Json::decode($this->getParam("data"));
             // save type
             $metadata = Metadata\Predefined::getById($data["id"]);
             $metadata->setValues($data);
             $existingItem = Metadata\Predefined\Listing::getByKeyAndLanguage($metadata->getName(), $metadata->getLanguage(), $metadata->getTargetSubtype());
             if ($existingItem && $existingItem->getId() != $metadata->getId()) {
                 $this->_helper->json(["message" => "rule_violation", "success" => false]);
             }
             $metadata->minimize();
             $metadata->save();
             $metadata->expand();
             $this->_helper->json(["data" => $metadata, "success" => true]);
         } elseif ($this->getParam("xaction") == "create") {
             $data = \Zend_Json::decode($this->getParam("data"));
             unset($data["id"]);
             // save type
             $metadata = Metadata\Predefined::create();
             $metadata->setValues($data);
             $existingItem = Metadata\Predefined\Listing::getByKeyAndLanguage($metadata->getName(), $metadata->getLanguage(), $metadata->getTargetSubtype());
             if ($existingItem) {
                 $this->_helper->json(["message" => "rule_violation", "success" => false]);
             }
             $metadata->save();
             $this->_helper->json(["data" => $metadata, "success" => true]);
         }
     } else {
         // get list of types
         $list = new Metadata\Predefined\Listing();
         if ($this->getParam("filter")) {
             $filter = $this->getParam("filter");
             $list->setFilter(function ($row) use($filter) {
                 foreach ($row as $value) {
                     if (strpos($value, $filter) !== false) {
                         return true;
                     }
                 }
                 return false;
             });
         }
         $list->load();
         $properties = [];
         if (is_array($list->getDefinitions())) {
             foreach ($list->getDefinitions() as $metadata) {
                 $metadata->expand();
                 $properties[] = $metadata;
             }
         }
         $this->_helper->json(["data" => $properties, "success" => true, "total" => $list->getTotalCount()]);
     }
 }