/** * @test * @return void */ public function storagePageCanBeSet() { $value = 456; $this->instance->setStoragePage($value); $this->assertEquals($value, $this->instance->getStoragePage()); }
/** * 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; }
/** * Adds page cache tags by used storagePages. * * Returns true if at least one tag was added. * * @param Tx_MooxNews_Domain_Model_Dto_NewsDemand $demand * @return boolean */ public static function addPageCacheTagsByDemandObject(Tx_MooxNews_Domain_Model_Dto_NewsDemand $demand) { $cacheTags = array(); // Add cache tags for each storage page if ($demand->getStoragePage()) { foreach (\TYPO3\CMS\Core\Utility\GeneralUtility::trimExplode(',', $demand->getStoragePage()) as $pageId) { $cacheTags[] = 'pageId_' . $pageId; } $GLOBALS['TSFE']->addCacheTags($cacheTags); } return count($cacheTags) > 0; }