/** * @return AbstractObject|\Pimcore\Model\Object\Participation * @throws \Exception */ public function makeParticipation() { $objectFolderPath = Plugin::getConfig()->get(Plugin::CONFIG_OBJECTFOLDERPATH); $objectFolder = AbstractObject::getByPath($objectFolderPath); if (!$objectFolder instanceof Folder) { throw new \Exception("Error: objectFolderPath [{$objectFolderPath}] " . "is not a valid object folder."); } // create basic object stuff $key = $this->createParticipationKey(); $participation = new Participation(); $participation->setKey($key); $participation->setParent($objectFolder); $participation->setPublished(true); $participation->setCreationDate(time()); $participation->SetIpCreated($_SERVER['REMOTE_ADDR']); $confirmation = $this->makeConfirmation(); $participation->setConfirmationCode($confirmation->createCode()); return $participation; }
/** * @param $element * @param $key * @param $path * @return string */ protected function getSaveCopyName($element, $key, $path) { if ($element instanceof Object\AbstractObject) { $equal = Object\AbstractObject::getByPath($path . "/" . $key); } else { if ($element instanceof Document) { $equal = Document::getByPath($path . "/" . $key); } else { if ($element instanceof Asset) { $equal = Asset::getByPath($path . "/" . $key); } } } if ($equal) { $key .= "_WScopy"; return $this->getSaveCopyName($element, $key, $path); } return $key; }
public function correctPath() { // set path if ($this->getId() != 1) { // not for the root node if ($this->getParentId() == $this->getId()) { throw new \Exception("ParentID and ID is identical, an element can't be the parent of itself."); } $parent = AbstractObject::getById($this->getParentId()); if ($parent) { // use the parent's path from the database here (getCurrentFullPath), to ensure the path really exists and does not rely on the path // that is currently in the parent object (in memory), because this might have changed but wasn't not saved $this->setPath(str_replace("//", "/", $parent->getCurrentFullPath() . "/")); } else { // parent document doesn't exist anymore, set the parent to to root $this->setParentId(1); $this->setPath("/"); } if (strlen($this->getKey()) < 1) { $this->setKey("---no-valid-key---" . $this->getId()); throw new \Exception("Document requires key, generated key automatically"); } } else { if ($this->getId() == 1) { // some data in root node should always be the same $this->setParentId(0); $this->setPath("/"); $this->setKey(""); $this->setType("folder"); } } if (Service::pathExists($this->getFullPath())) { $duplicate = AbstractObject::getByPath($this->getFullPath()); if ($duplicate instanceof self and $duplicate->getId() != $this->getId()) { throw new \Exception("Duplicate full path [ " . $this->getFullPath() . " ] - cannot save object"); } } if (strlen($this->getFullPath()) > 765) { throw new \Exception("Full path is limited to 765 characters, reduce the length of your parent's path"); } }
private static function createObjects() { try { $objectFolder = AbstractObject::getByPath(Plugin::CONFIG_OBJECTFOLDERPATH_DEFAULT); if (!is_object($objectFolder)) { $objectFolder = new Folder(); $objectFolder->setKey(basename(Plugin::CONFIG_OBJECTFOLDERPATH_DEFAULT)); $objectFolder->setParent(AbstractObject::getByPath(dirname(Plugin::CONFIG_OBJECTFOLDERPATH_DEFAULT))); $objectFolder->save(); } if (!$objectFolder instanceof Folder) { throw new \Exception('Can not use object path [' . Plugin::CONFIG_OBJECTFOLDERPATH_DEFAULT . '] as default participation folder.'); } } catch (\Exception $exception) { throw new \Exception('Unable to create/use participation folder [' . Plugin::CONFIG_OBJECTFOLDERPATH_DEFAULT . ']: ' . $exception->getMessage()); } }