/** * Get the news list by selection * * @param \Lelesys\Plugin\News\Domain\Model\Category $category The category * @param \Lelesys\Plugin\News\Domain\Model\Folder $folder The folder * @return \TYPO3\Flow\Persistence\QueryResultInterface The query result */ public function getNewsAdmin(\Lelesys\Plugin\News\Domain\Model\Category $category = NULL, \Lelesys\Plugin\News\Domain\Model\Folder $folder = NULL) { $query = $this->createQuery(); $queryBuilder = ObjectAccess::getProperty($query, 'queryBuilder', TRUE); $constraints = array(); $user = ''; if ($this->securityContext->hasRole('Lelesys.Plugin.News:NewsAdmin')) { if (!empty($folder)) { $constraints[] = 'n.folder = ' . "'" . $folder->getUuid() . "'"; } } else { $party = $this->securityContext->getParty(); $user = $this->persistenceManager->getIdentifierByObject($party); $constraints[] = 'n.createdBy = ' . "'" . $user . "'"; } if (!empty($category)) { $constraints[] = 'c.Persistence_Object_Identifier IN (' . "'" . $category->getUuid() . "'" . ')'; } $newsConstraints = ''; $count = count($constraints); $newCount = 1; foreach ($constraints as $contraint) { if ($count > $newCount) { $newsConstraints .= $contraint . ' AND '; } else { $newsConstraints .= $contraint; } $newCount++; } $queryBuilder->resetDQLParts()->select('n')->from('Lelesys\\Plugin\\News\\Domain\\Model\\News', 'n'); if (!empty($category)) { $queryBuilder->leftjoin('n.categories', 'c'); } if (!empty($category) || !empty($folder) || $user !== '') { $queryBuilder->where($newsConstraints); } $queryBuilder->orderBy('n.dateTime', 'DESC'); return $query->execute(); }
/** * shows's the hidden category * * @param \Lelesys\Plugin\News\Domain\Model\Category $category * @return void */ public function showCategory(\Lelesys\Plugin\News\Domain\Model\Category $category) { $category->setHidden(0); $this->categoryRepository->update($category); }
/** * * @param \Lelesys\Plugin\News\Domain\Model\Category $category * @return void */ public function removeParentCategory(\Lelesys\Plugin\News\Domain\Model\Category $category) { $this->parentCategory->removeElement($category); }