/** * @param string $name * @return DAV\INode|void * @throws DAV\Exception\NotFound */ public function getChild($name) { $nameParts = explode("/", $name); $name = File::getValidFilename($nameParts[count($nameParts) - 1]); //$name = implode("/",$nameParts); if (is_string($name)) { $parentPath = $this->asset->getRealFullPath(); if ($parentPath == "/") { $parentPath = ""; } if (!($asset = Asset::getByPath($parentPath . "/" . $name))) { throw new DAV\Exception\NotFound('File not found: ' . $name); } } elseif ($name instanceof Asset) { $asset = $name; } if ($asset instanceof Asset) { if ($asset->getType() == "folder") { return new Asset\WebDAV\Folder($asset); } else { return new Asset\WebDAV\File($asset); } } throw new DAV\Exception\NotFound('File not found: ' . $name); }
/** * @throws DAV\Exception\Forbidden * @throws \Exception */ public function delete() { if ($this->asset->isAllowed("delete")) { Asset\Service::loadAllFields($this->asset); $this->asset->delete(); // add the asset to the delete history, this is used so come over problems with programs like photoshop (delete, create instead of replace => move) // for details see Asset\WebDAV\Tree::move() $log = Asset\WebDAV\Service::getDeleteLog(); $this->asset->_fulldump = true; $log[$this->asset->getRealFullPath()] = ["id" => $this->asset->getId(), "timestamp" => time(), "data" => \Pimcore\Tool\Serialize::serialize($this->asset)]; unset($this->asset->_fulldump); Asset\WebDAV\Service::saveDeleteLog($log); } else { throw new DAV\Exception\Forbidden(); } }
private function getSubAssetIds(\Pimcore\Model\Asset $asset) { $childsList = new Pimcore\Model\Asset\Listing(); $condition = "path LIKE ?"; if (!$this->getUser()->isAdmin()) { $userIds = $this->getUser()->getRoles(); $userIds[] = $this->getUser()->getId(); $condition .= " AND (\n (SELECT `view` FROM users_workspaces_asset WHERE userId IN (\" . implode(',', {$userIds}) . \") and LOCATE(CONCAT(path,filename),cpath)=1 ORDER BY LENGTH(cpath) DESC LIMIT 1)=1\n OR\n (SELECT `view` FROM users_workspaces_asset WHERE userId IN (\" . implode(',', {$userIds}) . \") and LOCATE(cpath,CONCAT(path,filename))=1 ORDER BY LENGTH(cpath) DESC LIMIT 1)=1\n )"; } $childsList->setCondition($condition, $asset->getRealFullPath() . '/%'); return $childsList->loadIdList(); }
/** * @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()]; } }