/** * @param Model\Document $document * @throws \Zend_Json_Exception */ protected function addPropertiesToDocument(Model\Document $document) { // properties if ($this->getParam("properties")) { $properties = array(); // assign inherited properties foreach ($document->getProperties() as $p) { if ($p->isInherited()) { $properties[$p->getName()] = $p; } } $propertiesData = \Zend_Json::decode($this->getParam("properties")); if (is_array($propertiesData)) { foreach ($propertiesData as $propertyName => $propertyData) { $value = $propertyData["data"]; try { $property = new Property(); $property->setType($propertyData["type"]); $property->setName($propertyName); $property->setCtype("document"); $property->setDataFromEditmode($value); $property->setInheritable($propertyData["inheritable"]); $properties[$propertyName] = $property; } catch (\Exception $e) { \Logger::warning("Can't add " . $propertyName . " to document " . $document->getFullPath()); } } } if ($document->isAllowed("properties")) { $document->setProperties($properties); } } // force loading of properties $document->getProperties(); }
protected function assignPropertiesFromEditmode($object) { if ($this->getParam("properties")) { $properties = array(); // assign inherited properties foreach ($object->getProperties() as $p) { if ($p->isInherited()) { $properties[$p->getName()] = $p; } } $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("object"); $property->setDataFromEditmode($value); $property->setInheritable($propertyData["inheritable"]); $properties[$propertyName] = $property; } catch (\Exception $e) { \Logger::err("Can't add " . $propertyName . " to object " . $object->getFullPath()); } } } $object->setProperties($properties); } return $object; }
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); }