Exemplo n.º 1
0
 /**
  * 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);
     }
 }
Exemplo n.º 3
0
 /**
  * Test if startingpoint is working
  *
  * @test
  * @return void
  */
 public function findRecordsByUid()
 {
     $news = $this->newsRepository->findByUid(1);
     $this->assertEquals($news->getTitle(), 'findRecordsByUid');
 }