/** * Single view of a news record * * @param Tx_MooxNews_Domain_Model_News $news news item * @param integer $currentPage current page for optional pagination * @param integer $contentObjectUid current content object * @return void */ public function detailAction(Tx_MooxNews_Domain_Model_News $news = NULL, $currentPage = 1, $contentObjectUid = 0) { if (is_null($news)) { $previewNewsId = (int) $this->settings['singleNews'] > 0 ? $this->settings['singleNews'] : 0; if ($this->request->hasArgument('news_preview')) { $isPreview = true; $previewNewsId = (int) $this->request->getArgument('news_preview'); } if ($previewNewsId > 0) { $forcePreview = false; if ($this->request->hasArgument('news_preview_hash')) { $previewNewsHash = md5($previewNewsId . $GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']); $checkPreviewNewsHash = $this->request->getArgument('news_preview_hash'); if ($previewNewsHash == $checkPreviewNewsHash) { $forcePreview = true; } } if ($forcePreview || $this->isPreviewOfHiddenRecordsEnabled()) { $news = $this->newsRepository->findByUid($previewNewsId, FALSE); } else { $news = $this->newsRepository->findByUid($previewNewsId); } } } if ($this->request->hasArgument('overwriteDemand')) { $overwriteDemand = $this->request->getArgument('overwriteDemand'); } if (is_a($news, 'Tx_MooxNews_Domain_Model_News')) { $news = $this->checkPidOfNewsRecord($news); } if (is_null($news) && isset($this->settings['detail']['errorHandling'])) { $this->handleNoNewsFoundError($this->settings['detail']['errorHandling']); } $assignedValues = array('newsItem' => $news, 'isPreview' => $isPreview, 'contentObjectUid' => (int) $contentObjectUid, 'currentPage' => (int) $currentPage, 'overwriteDemand' => $overwriteDemand, 'extendedFields' => $this->getExtendedFields("detail")); $this->emitActionSignal('NewsController', self::SIGNAL_NEWS_DETAIL_ACTION, $assignedValues); $this->view->assignMultiple($assignedValues); Tx_MooxNews_Utility_Page::setRegisterProperties($this->settings['detail']['registerProperties'], $news); if (!is_null($news) && is_a($news, 'Tx_MooxNews_Domain_Model_News')) { Tx_MooxNews_Utility_Cache::addCacheTagsByNewsRecords(array($news), FALSE); } }
/** * action load file * * @param \string $file * @param \int $page * @param \string $hash * @param \string $pre * @return void */ public function loadFileAction($file = '', $page = 0, $hash = '', $pre = '') { $this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); $this->newsRepository = $this->objectManager->get('Tx_MooxNews_Domain_Repository_NewsRepository'); $this->frontendUserRepository = $this->objectManager->get('DCNGmbH\\MooxMailer\\Domain\\Repository\\FrontendUserRepository'); $loginRedirectorPid = self::getLoginRedirectorPid($page); $baseUrl = self::getBaseUrl($page); if ($loginRedirectorPid > 0) { $cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tslib_cObj'); $loginurl = $cObj->typolink('', array('returnLast' => 'url', 'parameter' => $loginRedirectorPid, 'additionalParams' => '&redirect_url=redirecturi', 'useCacheHash' => 0)); } $fileAccess = false; if ($hash != "") { $newsUid = base_convert($hash, 21, 10) - 999999; $news = $this->newsRepository->findByUid($newsUid, FALSE); if (is_a($news, 'Tx_MooxNews_Domain_Model_NewsDefault')) { if (!($news->getHidden() || $news->getStarttime() > time() || $news->getEndtime() > 0 && $news->getEndtime() > time())) { if ($news->getFeGroup() != 0) { if (is_array($GLOBALS["TSFE"]->fe_user->user)) { if ($GLOBALS['TSFE']->fe_user->user['usergroup'] != 0) { $hasNewsAccess = false; $usergroups = explode(",", $GLOBALS['TSFE']->fe_user->user['usergroup']); $newsusergroups = explode(",", $news->getFeGroup()); foreach ($newsusergroups as $newsusergroup) { if (in_array($newsusergroup, $usergroups)) { $hasNewsAccess = true; break; } } if ($hasNewsAccess) { $fileAccess = true; } } } else { $loginurl = str_replace("redirecturi", urlencode(substr(urldecode($_SERVER['REQUEST_URI']), 1)), $loginurl); if ($loginurl != "") { $this->redirectToURI($baseUrl . $loginurl); } } } else { $fileAccess = true; } } } } $filepath = $GLOBALS["_SERVER"]["DOCUMENT_ROOT"] . "/" . ($pre != "" ? $pre . "/" : FileSecurityController::$mooxNewsFileRoot) . $file; $filearray = explode("/", $file); $filearray = array_reverse($filearray); $filename = $filearray[0]; if (!file_exists($filepath)) { $fileAccess = false; } if ($fileAccess) { $fileInfo = $this->getFileInfo($filename); header("Content-type: application/octet-stream"); header("Content-Length: " . (string) filesize($filepath)); header('Content-Disposition: attachment; filename="' . ($filename ? $filename : "unknown") . '"'); header('Content-type: application/' . $fileInfo['extension']); readfile($filepath); } else { $this->redirectToURI($baseUrl); } }
/** * Test if startingpoint is working * * @test * @return void */ public function findRecordsByUid() { $news = $this->newsRepository->findByUid(1); $this->assertEquals($news->getTitle(), 'findRecordsByUid'); }