/**
  * 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();
 }