/**
  * Test for creating correct demand call
  *
  * @test
  * @return void
  */
 public function listActionFindsDemandedNewsByDemandFromSettings()
 {
     $demand = clone new Tx_MooxNews_Domain_Model_Dto_AdministrationDemand();
     $settings = array('list' => 'foo');
     $configurationManager = $this->getMock('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManagerInterface');
     $configurationManager->expects($this->any())->method('getConfiguration')->will($this->returnValue($settings));
     $fixture = $this->getMock('Tx_MooxNews_Controller_NewsController', array('createDemandObjectFromSettings', 'emitActionSignal'));
     $fixture->injectNewsRepository($this->newsRepository);
     $fixture->injectConfigurationManager($configurationManager);
     $fixture->setView($this->getMock('Tx_Fluid_View_TemplateView', array(), array(), '', FALSE));
     $fixture->expects($this->once())->method('createDemandObjectFromSettings')->with($settings)->will($this->returnValue($demand));
     $this->newsRepository->expects($this->once())->method('findDemanded')->with($demand);
     $fixture->listAction();
 }
 /**
  * @param array $queueItem
  * @param array $importItemOverwrite
  * @return void
  */
 protected function importL10nOverlay(array $queueItem, array $importItemOverwrite)
 {
     $importItem = $queueItem['importItem'];
     $parentNews = $this->newsRepository->findOneByImportSourceAndImportId($importItem['import_source'], $importItem['l10n_parent']);
     if ($parentNews !== NULL) {
         $importItem['import_id'] .= '|L:' . $importItem['sys_language_uid'];
         $news = $this->initializeNewsRecord($importItem);
         $this->hydrateNewsRecord($news, $importItem, $importItemOverwrite);
         $news->setSysLanguageUid($importItem['sys_language_uid']);
         $news->setL10nParent($parentNews->getUid());
     }
 }
 /**
  * Test if latest limit constraint works
  *
  * @test
  * @return void
  */
 public function findLatestLimitRecords()
 {
     /** @var $demand Tx_MooxNews_Domain_Model_Dto_NewsDemand */
     $demand = $this->objectManager->get('Tx_MooxNews_Domain_Model_Dto_NewsDemand');
     $demand->setStoragePage(9);
     $GLOBALS['EXEC_TIME'] = strtotime('2014-04-03');
     // get all news maximum 6 days old
     $demand->setTimeRestriction(6 * 86400);
     $this->assertEquals((int) $this->newsRepository->findDemanded($demand)->count(), 4);
     // no restriction should get you all
     $demand->setTimeRestriction(0);
     $this->assertEquals((int) $this->newsRepository->findDemanded($demand)->count(), 6);
 }
Beispiel #4
0
 /**
  * Get extended filters from external extensions
  *
  * @param Tx_MooxNews_Domain_Model_Dto_NewsDemand $demand
  * @param array $overwriteDemand
  * @return array extendedFields
  */
 public function getExtendedFilters($demand, $overwriteDemand = NULL)
 {
     $extendedFilters = array();
     if ($this->settings['addExtendedFilter']) {
         foreach ($GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'] as $fieldname => $field) {
             if ($field['addToMooxNewsFrontendFilter'] && ($demand->getType() == "" || $demand->getType() == $field['extkey'])) {
                 $fieldnameLCC = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($fieldname);
                 $fieldnameUCC = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($fieldname);
                 $extkey = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($field['extkey']);
                 $label = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($field['label'], $field['extkey']);
                 if ($this->isAjaxRequest) {
                     if ($field['config']['type'] == "select") {
                         $type = "select";
                     } elseif ($field['config']['type'] == "input" && $field['addToMooxNewsFrontendFilter']['type'] == "select") {
                         $type = "select";
                     } else {
                         $type = "default";
                     }
                     $extendedFilters[] = array("name" => $fieldnameLCC, "type" => $type);
                 } else {
                     if ($field['config']['type'] == "select") {
                         $items = array();
                         if (is_array($field['config']['items'])) {
                             foreach ($field['config']['items'] as $item) {
                                 if ($item[1] == "") {
                                     $item[1] = "all";
                                 }
                                 if ($item[1] == "all") {
                                     if ($field['addToMooxNewsFrontendFilter']['selectAllLabel'] != "") {
                                         $item[0] = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($field['addToMooxNewsFrontendFilter']['selectAllLabel'], $field['extkey']);
                                     } else {
                                         $item[0] = "Alle";
                                     }
                                     $items[$item[1]] = $item[0];
                                 } else {
                                     $label = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($item[0], $field['extkey']);
                                     if ($label == "") {
                                         $label = $item[0];
                                     }
                                     $items[$item[1]] = $label;
                                 }
                             }
                         }
                         $depends = array();
                         $dependFields = array();
                         $displayDepends = array();
                         if (count($field['addToMooxNewsFrontendFilter']['depends'])) {
                             foreach ($field['addToMooxNewsFrontendFilter']['depends'] as $depend) {
                                 if (isset($GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$depend])) {
                                     $dependField = $GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$depend];
                                     if ($dependField['config']['type'] == "select" || $dependField['config']['type'] == "input" && $dependField['addToMooxNewsFrontendFilter']['type'] == "select") {
                                         $depends[] = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($depend);
                                         $dependField = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($depend);
                                         if (isset($overwriteDemand[$dependField]) && $overwriteDemand[$dependField] != "all") {
                                             $dependFields[$depend] = $overwriteDemand[$dependField];
                                         }
                                     }
                                 }
                             }
                         }
                         if (count($field['addToMooxNewsFrontendFilter']['displayDepends'])) {
                             foreach ($field['addToMooxNewsFrontendFilter']['displayDepends'] as $displayDepend) {
                                 if (isset($GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$displayDepend])) {
                                     $displayDependField = $GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$displayDepend];
                                     if ($displayDependField['config']['type'] == "select" || $displayDependField['config']['type'] == "input" && $displayDependField['addToMooxNewsFrontendFilter']['type'] == "select") {
                                         $displayDepends[] = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($displayDepend);
                                     }
                                 }
                             }
                         }
                         if ($field['config']['foreign_table'] != "") {
                             $itemsFromDb = $this->newsRepository->findExtendedFilterItems($fieldname, $demand->getStoragePage(), $field['config']['foreign_table'], $field['config']['foreign_table_where'], $dependFields);
                             foreach ($itemsFromDb as $item) {
                                 $items[$item['uid']] = $item['title'];
                             }
                         }
                         if (count($items)) {
                             if (!isset($items['all'])) {
                                 if ($field['addToMooxNewsFrontendFilter']['selectAllLabel'] != "") {
                                     $selectAllLabel = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($field['addToMooxNewsFrontendFilter']['selectAllLabel'], $field['extkey']);
                                 } else {
                                     $selectAllLabel = "Alle";
                                 }
                                 $itemsTmp = $items;
                                 $items = array();
                                 $items["all"] = $selectAllLabel;
                                 foreach ($itemsTmp as $key => $value) {
                                     $items[$key] = $value;
                                 }
                                 unset($itemsTmp);
                             }
                             $extendedFilters[] = array("label" => $label, "name" => $fieldnameLCC, "type" => 'select', "field" => $fieldname, "fieldUCC" => $fieldnameUCC, "items" => $items, "depends" => $depends, "displayDepends" => $displayDepends);
                         }
                     } elseif ($field['config']['type'] == "input" && $field['addToMooxNewsFrontendFilter']['type'] == "select") {
                         if (!isset($overwriteDemand[$fieldnameLCC])) {
                             //$overwriteDemand[$fieldnameLCC] = "all";
                         }
                         $depends = array();
                         $dependFields = array();
                         $displayDepends = array();
                         if (count($field['addToMooxNewsFrontendFilter']['depends'])) {
                             foreach ($field['addToMooxNewsFrontendFilter']['depends'] as $depend) {
                                 if (isset($GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$depend])) {
                                     $dependField = $GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$depend];
                                     if ($dependField['config']['type'] == "select" || $dependField['config']['type'] == "input" && $dependField['addToMooxNewsFrontendFilter']['type'] == "select") {
                                         $depends[] = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($depend);
                                         $dependField = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($depend);
                                         if (isset($overwriteDemand[$dependField]) && $overwriteDemand[$dependField] != "all") {
                                             $dependFields[$depend] = $overwriteDemand[$dependField];
                                         }
                                     }
                                 }
                             }
                         }
                         if (count($field['addToMooxNewsFrontendFilter']['displayDepends'])) {
                             foreach ($field['addToMooxNewsFrontendFilter']['displayDepends'] as $displayDepend) {
                                 if (isset($GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$displayDepend])) {
                                     $displayDependField = $GLOBALS['TCA']['tx_mooxnews_domain_model_news']['columns'][$displayDepend];
                                     if ($displayDependField['config']['type'] == "select" || $displayDependField['config']['type'] == "input" && $displayDependField['addToMooxNewsFrontendFilter']['type'] == "select") {
                                         $displayDepends[] = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToLowerCamelCase($displayDepend);
                                     }
                                 }
                             }
                         }
                         $values = array();
                         $valuesFromDb = $this->newsRepository->findExtendedFilterUniqueValues($fieldname, $demand->getStoragePage(), $dependFields);
                         if (count($valuesFromDb)) {
                             if ($field['addToMooxNewsFrontendFilter']['selectAllLabel'] != "") {
                                 $values['all'] = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($field['addToMooxNewsFrontendFilter']['selectAllLabel'], $field['extkey']);
                             } else {
                                 $values['all'] = "Alle";
                             }
                             $valueCnt = 0;
                             foreach ($valuesFromDb as $value) {
                                 if ($value == "empty") {
                                     if ($field['addToMooxNewsFrontendFilter']['selectEmptyLabel'] != "") {
                                         $valueLabel = \TYPO3\CMS\Extbase\Utility\LocalizationUtility::translate($field['addToMooxNewsFrontendFilter']['selectEmptyLabel'], $field['extkey']);
                                         $values[$value] = $valueLabel;
                                     } else {
                                         $valueLabel = "Ohne Wert";
                                     }
                                 } else {
                                     $values[$value] = $value;
                                     $valueCnt++;
                                 }
                             }
                             if ($valueCnt) {
                                 $extendedFilters[] = array("label" => $label, "name" => $fieldnameLCC, "type" => 'select', "field" => $fieldname, "fieldUCC" => $fieldnameUCC, "items" => $values, "depends" => $depends, "displayDepends" => $displayDepends);
                             }
                         }
                     } else {
                         $extendedFilters[] = array("label" => $label, "name" => $fieldnameLCC, "type" => 'default', "field" => $fieldname, "fieldUCC" => $fieldnameUCC);
                     }
                 }
             }
         }
     }
     return $extendedFilters;
 }
 /**
  * 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);
     }
 }