/**
  * Create the demand object which define which records will get shown
  *
  * @param Tx_News_Domain_Model_Dto_AdministrationDemand $demand
  * @return Tx_News_Domain_Model_Dto_NewsDemand
  */
 protected function createDemandObjectFromSettings(Tx_News_Domain_Model_Dto_AdministrationDemand $demand)
 {
     $demand->setCategories($demand->getSelectedCategories());
     $demand->setOrder($demand->getSortingField() . ' ' . $demand->getSortingDirection());
     $demand->setStoragePage(Tx_News_Utility_Page::extendPidListByChildren($this->pageUid, (int) $demand->getRecursive()));
     $demand->setOrderByAllowed($this->settings['orderByAllowed']);
     // Ensure that always a storage page is set
     if ((int) $demand->getStoragePage() === 0) {
         $demand->setStoragePage('-3');
     }
     return $demand;
 }
 /**
  * Create the demand object which define which records will get shown
  *
  * @param array $settings
  * @return Tx_News_Domain_Model_Dto_NewsDemand
  */
 protected function createDemandObjectFromSettings($settings)
 {
     /* @var $demand Tx_News_Domain_Model_Dto_NewsDemand */
     $demand = $this->objectManager->get('Tx_News_Domain_Model_Dto_NewsDemand');
     $demand->setCategories(t3lib_div::trimExplode(',', $settings['categories'], TRUE));
     $demand->setCategoryConjunction($settings['categoryConjunction']);
     $demand->setIncludeSubCategories($settings['includeSubCategories']);
     $demand->setTopNewsRestriction($settings['topNewsRestriction']);
     $demand->setTimeRestriction($settings['timeRestriction']);
     $demand->setTimeRestrictionHigh($settings['timeRestrictionHigh']);
     $demand->setArchiveRestriction($settings['archiveRestriction']);
     $demand->setExcludeAlreadyDisplayedNews($settings['excludeAlreadyDisplayedNews']);
     if ($settings['orderBy']) {
         $demand->setOrder($settings['orderBy'] . ' ' . $settings['orderDirection']);
     }
     $demand->setOrderByAllowed($settings['orderByAllowed']);
     $demand->setTopNewsFirst($settings['topNewsFirst']);
     $demand->setLimit($settings['limit']);
     $demand->setOffset($settings['offset']);
     $demand->setSearchFields($settings['search']['fields']);
     $demand->setDateField($settings['dateField']);
     $demand->setMonth($settings['month']);
     $demand->setYear($settings['year']);
     $demand->setStoragePage(Tx_News_Utility_Page::extendPidListByChildren($settings['startingpoint'], $settings['recursive']));
     return $demand;
 }
 /**
  * Checks if the news pid could be found in the startingpoint settings of the detail plugin and
  * if the pid could not be found it return NULL instead of the news object.
  *
  * @param Tx_News_Domain_Model_News $news
  * @return NULL|Tx_News_Domain_Model_News
  */
 protected function checkPidOfNewsRecord(Tx_News_Domain_Model_News $news)
 {
     $allowedStoragePages = GeneralUtility::trimExplode(',', Tx_News_Utility_Page::extendPidListByChildren($this->settings['startingpoint'], $this->settings['recursive']), TRUE);
     if (count($allowedStoragePages) > 0 && !in_array($news->getPid(), $allowedStoragePages)) {
         $this->signalSlotDispatcher->dispatch(__CLASS__, 'checkPidOfNewsRecordFailedInDetailAction', array('news' => $news, 'newsController' => $this));
         $news = NULL;
     }
     return $news;
 }