/** * 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 \GeorgRinger\News\Domain\Model\News $news * @return NULL|\GeorgRinger\News\Domain\Model\News */ protected function checkPidOfNewsRecord(\GeorgRinger\News\Domain\Model\News $news) { $allowedStoragePages = GeneralUtility::trimExplode(',', Page::extendPidListByChildren($this->settings['startingpoint'], $this->settings['recursive']), true); if (count($allowedStoragePages) > 0 && !in_array($news->getPid(), $allowedStoragePages)) { $this->signalSlotDispatcher->dispatch(__CLASS__, 'checkPidOfNewsRecordFailedInDetailAction', ['news' => $news, 'newsController' => $this]); $news = null; } return $news; }
/** * Create the demand object which define which records will get shown * * @param \GeorgRinger\News\Domain\Model\Dto\AdministrationDemand $demand * @return \GeorgRinger\News\Domain\Model\Dto\NewsDemand */ protected function createDemandObjectFromSettings(\GeorgRinger\News\Domain\Model\Dto\AdministrationDemand $demand) { $demand->setCategories($demand->getSelectedCategories()); $demand->setOrder($demand->getSortingField() . ' ' . $demand->getSortingDirection()); $demand->setStoragePage(Page::extendPidListByChildren($this->pageUid, (int) $demand->getRecursive())); $demand->setOrderByAllowed($this->settings['orderByAllowed']); if ($demand->getSearchWord()) { $searchDto = new Search(); $searchDto->setSubject($demand->getSearchWord()); $searchDto->setFields('title'); $demand->setSearch($searchDto); } // 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 \GeorgRinger\News\Domain\Model\Dto\NewsDemand */ protected function eventCreateDemandObjectFromSettings($settings) { $demand = parent::createDemandObjectFromSettings($settings); $orderByAllowed = $demand->getOrderByAllowed(); if (sizeof($orderByAllowed) > 0) { $orderByAllowed .= ','; } // set ordering if ($settings['event']['orderByAllowed']) { $demand->setOrderByAllowed($orderByAllowed . str_replace(' ', '', $settings['event']['orderByAllowed'])); } else { // default orderByAllowed list $demand->setOrderByAllowed($orderByAllowed . 'tx_roqnewsevent_startdate,tx_roqnewsevent_starttime'); } if ($demand->getArchiveRestriction() == 'archived') { if ($settings['event']['archived']['orderBy']) { $demand->setOrder($settings['event']['archived']['orderBy']); } else { // default ordering for archived events $demand->setOrder('tx_roqnewsevent_startdate DESC, tx_roqnewsevent_starttime DESC'); } } else { if ($settings['event']['orderBy']) { $demand->setOrder($settings['event']['orderBy']); } else { // default ordering for active events $demand->setOrder('tx_roqnewsevent_startdate ASC, tx_roqnewsevent_starttime ASC'); } } if ($settings['event']['startingpoint']) { $demand->setStoragePage(\GeorgRinger\News\Utility\Page::extendPidListByChildren($settings['event']['startingpoint'], $settings['recursive'])); } return $demand; }