/** * 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); }
/** * 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); } }