/**
  * Find items by filter for management
  *
  * @param \Planetflow3\Domain\Dto\ItemFilter $filter
  * @return \TYPO3\FLOW3\Persistence\QueryResultInterface
  */
 public function findByFilter(\Planetflow3\Domain\Dto\ItemFilter $filter = NULL)
 {
     $query = $this->createQuery();
     $constraints = array();
     if ($filter === NULL) {
         $filter = new \Planetflow3\Domain\Dto\ItemFilter();
     }
     if ((string) $filter->getLanguage() !== '') {
         $constraints[] = $query->equals('language', $filter->getLanguage());
     }
     if ($filter->getDisabled() !== NULL) {
         $constraints[] = $query->equals('disabled', $filter->getDisabled());
     }
     if ($filter->getChannel() !== NULL) {
         $constraints[] = $query->equals('channel', $filter->getChannel());
     }
     if ($filter->getCategory() !== NULL) {
         $constraints[] = $query->contains('categories', $filter->getCategory());
     }
     if (count($constraints) > 0) {
         $query->matching($query->logicalAnd($constraints));
     }
     return $query->execute();
 }