Pimcore\Model\Asset\Service::minimizeMetadata PHP Метод

minimizeMetadata() публичный статический Метод

public static minimizeMetadata ( $metadata ) : array
$metadata
Результат array
    public static function minimizeMetadata($metadata)
    {
        if (!is_array($metadata)) {
            return $metadata;
        }
        $result = [];
        foreach ($metadata as $item) {
            $type = $item["type"];
            switch ($type) {
                case "document":
                case "asset":
                case "object":
                    $element = Element\Service::getElementByPath($type, $item["data"]);
                    if ($element) {
                        $item["data"] = $element->getId();
                    } else {
                        $item["data"] = "";
                    }
                    break;
                default:
                    //nothing to do
            }
            $result[] = $item;
        }
        return $result;
    }

Usage Example

 public function saveAction()
 {
     $success = false;
     if ($this->getParam("id")) {
         $asset = Asset::getById($this->getParam("id"));
         if ($asset->isAllowed("publish")) {
             // metadata
             if ($this->getParam("metadata")) {
                 $metadata = \Zend_Json::decode($this->getParam("metadata"));
                 $metadata = Asset\Service::minimizeMetadata($metadata);
                 $asset->setMetadata($metadata);
             }
             // properties
             if ($this->getParam("properties")) {
                 $properties = array();
                 $propertiesData = \Zend_Json::decode($this->getParam("properties"));
                 if (is_array($propertiesData)) {
                     foreach ($propertiesData as $propertyName => $propertyData) {
                         $value = $propertyData["data"];
                         try {
                             $property = new Model\Property();
                             $property->setType($propertyData["type"]);
                             $property->setName($propertyName);
                             $property->setCtype("asset");
                             $property->setDataFromEditmode($value);
                             $property->setInheritable($propertyData["inheritable"]);
                             $properties[$propertyName] = $property;
                         } catch (\Exception $e) {
                             \Logger::err("Can't add " . $propertyName . " to asset " . $asset->getFullPath());
                         }
                     }
                     $asset->setProperties($properties);
                 }
             }
             // scheduled tasks
             if ($this->getParam("scheduler")) {
                 $tasks = array();
                 $tasksData = \Zend_Json::decode($this->getParam("scheduler"));
                 if (!empty($tasksData)) {
                     foreach ($tasksData as $taskData) {
                         $taskData["date"] = strtotime($taskData["date"] . " " . $taskData["time"]);
                         $task = new Model\Schedule\Task($taskData);
                         $tasks[] = $task;
                     }
                 }
                 $asset->setScheduledTasks($tasks);
             }
             if ($this->hasParam("data")) {
                 $asset->setData($this->getParam("data"));
             }
             $asset->setUserModification($this->getUser()->getId());
             try {
                 $asset->save();
                 $asset->getData();
                 $success = true;
             } catch (\Exception $e) {
                 $this->_helper->json(array("success" => false, "message" => $e->getMessage()));
             }
         } else {
             \Logger::debug("prevented save asset because of missing permissions ");
         }
         $this->_helper->json(array("success" => $success));
     }
     $this->_helper->json(false);
 }