/** * @param Model\Document $document * @throws \Zend_Json_Exception */ protected function addPropertiesToDocument(Model\Document $document) { // properties if ($this->getParam("properties")) { $properties = []; // 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->getRealFullPath()); } } } if ($document->isAllowed("properties")) { $document->setProperties($properties); } } // force loading of properties $document->getProperties(); }
private function getSubDocumentIds(\Pimcore\Model\Document $document) { $childsList = new Pimcore\Model\Document\Listing(); $condition = "path LIKE ?"; if (!$this->getUser()->isAdmin()) { $userIds = $this->getUser()->getRoles(); $userIds[] = $this->getUser()->getId(); $condition .= " AND (\n (SELECT `view` FROM users_workspaces_document WHERE userId IN (\" . implode(',', {$userIds}) . \") and LOCATE(CONCAT(path,`key`),cpath)=1 ORDER BY LENGTH(cpath) DESC LIMIT 1)=1\n OR\n (SELECT `view` FROM users_workspaces_document WHERE userId IN (\" . implode(',', {$userIds}) . \") and LOCATE(cpath,CONCAT(path,`key`))=1 ORDER BY LENGTH(cpath) DESC LIMIT 1)=1\n )"; } $childsList->setCondition($condition, $document->getRealFullPath() . '/%'); return $childsList->loadIdList(); }
/** * @param Document $document */ public static function getSiteForDocument($document) { $cacheKey = "sites_full_list"; if (\Zend_Registry::isRegistered($cacheKey)) { $sites = \Zend_Registry::get($cacheKey); } else { $sites = new Site\Listing(); $sites = $sites->load(); \Zend_Registry::set($cacheKey, $sites); } foreach ($sites as $site) { if (preg_match("@^" . $site->getRootPath() . "/@", $document->getRealFullPath()) || $site->getRootDocument()->getId() == $document->getId()) { return $site; } } return; }
/** * @see Object\ClassDefinition\Data::getDataForEditmode * @param Asset|Document|Object\AbstractObject $data * @param null|Model\Object\AbstractObject $object * @param mixed $params * @return array */ public function getDataForEditmode($data, $object = null, $params = []) { if ($data instanceof Element\ElementInterface) { $r = ["id" => $data->getId(), "path" => $data->getRealFullPath(), "subtype" => $data->getType(), "type" => Element\Service::getElementType($data)]; return $r; } return; }
/** * @param Document|Asset|Object\AbstractObject $element * @return array */ public static function getDependencyForFrontend($element) { if ($element instanceof ElementInterface) { return ["id" => $element->getId(), "path" => $element->getRealFullPath(), "type" => self::getElementType($element), "subtype" => $element->getType()]; } }