/** * @inheritdoc */ public function getChildFolders(\Conjoon\Data\Entity\Mail\MailFolderEntity $folder) { $em = $this->getEntityManager(); $query = $em->createQuery("SELECT a FROM \\Conjoon\\Data\\Entity\\Mail\\DefaultMailFolderEntity a" . " WHERE a.parent=?1"); $query->setParameter(1, $folder->getId()); try { $res = $query->getResult(); } catch (\Doctrine\ORM\NoResultException $e) { return array(); } return $res; }
/** * @inheritdoc */ public function moveMessagesFromFolder(\Conjoon\Data\Entity\Mail\MailFolderEntity $sourceEntity, \Conjoon\Data\Entity\Mail\MailFolderEntity $targetEntity) { $em = $this->getEntityManager(); $query = $em->createQuery("UPDATE \\Conjoon\\Data\\Entity\\Mail\\DefaultMessageEntity a" . " SET a.groupwareEmailFolders=?1 WHERE a.groupwareEmailFolders=?2"); $query->setParameter(1, $targetEntity->getId()); $query->setParameter(2, $sourceEntity->getId()); $res = $query->getResult(); return $res; }
/** * Helper function for #isMetaInfoInFolderHierarchyUnique to recurse into * child folders and check for unique meta info. * * @param \Conjoon\Data\Entity\Mail\MailFolderEntity $folder * @param $metaInfo string * * @return boolean * * @throws FolderServiceException * @throws FolderDoesNotExistException */ protected function checkMetaInfoType(\Conjoon\Data\Entity\Mail\MailFolderEntity $folder, $metaInfo) { if ($folder->getMetaInfo() !== $metaInfo) { return false; } $childFolders = $this->getChildFolderEntities($folder); foreach ($childFolders as $childFolder) { if ($this->checkMetaInfoType($childFolder, $metaInfo) !== true) { return false; } } return true; }
/** * Returns false if the $folderEntity or any of its child folders is * not accessible by the user bound to this service. * * @param \Conjoon\Data\Entity\Mail\MailFolderEntity * @param bool $recurse * @return bool */ protected function checkFolderHierarchyAccessible(\Conjoon\Data\Entity\Mail\MailFolderEntity $folderEntity, $recurse = false) { /** * @refactor uses old implementation */ $OWNER_STR = \Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers::OWNER; $foldersUsers = new \Conjoon_Modules_Groupware_Email_Folder_Model_FoldersUsers(); $checkNodeId = $folderEntity->getId(); $rel = $foldersUsers->getRelationShipForFolderAndUser($checkNodeId, $this->user->getId()); $isAccessible = $rel === $OWNER_STR; if ($isAccessible && $recurse) { $childFolders = $this->folderCommons->getChildFolderEntities($folderEntity); foreach ($childFolders as $childFolder) { $isAccessible = $this->checkFolderHierarchyAccessible($childFolder, $recurse); if (!$isAccessible) { break; } } } return $isAccessible; }