コード例 #1
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;
 }
コード例 #2
0
ファイル: Cache.php プロジェクト: preinboth/moox_news
 /**
  * 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;
 }
コード例 #3
0
 /**
  * @test
  * @return void
  */
 public function excludeAlreadyDisplayedNewsCanBeSet()
 {
     $value = TRUE;
     $this->instance->setExcludeAlreadyDisplayedNews($value);
     $this->assertEquals($value, $this->instance->getExcludeAlreadyDisplayedNews());
 }
コード例 #4
0
 /**
  * @test
  */
 public function constraintsAreReturnedForDateFields()
 {
     $mockedQuery = $this->getMock('TYPO3\\CMS\\Extbase\\Persistence\\QueryInterface');
     $mockedRepository = $this->getAccessibleMock('Tx_MooxNews_Domain_Repository_NewsRepository', array('dummy'), array(), '', FALSE);
     $search = new Tx_MooxNews_Domain_Model_Dto_Search();
     $search->setMinimumDate('2014-01-01');
     $search->setDateField('datetime');
     $demand = new Tx_MooxNews_Domain_Model_Dto_NewsDemand();
     $demand->setSearch($search);
     $result = $mockedRepository->_call('getSearchConstraints', $mockedQuery, $demand);
     $this->assertEquals(1, count($result));
     $search->setMaximumDate('2015-01-01');
     $demand->setSearch($search);
     $result = $mockedRepository->_call('getSearchConstraints', $mockedQuery, $demand);
     $this->assertEquals(2, count($result));
     $search->setMaximumDate('xyz');
     $demand->setSearch($search);
     $result = $mockedRepository->_call('getSearchConstraints', $mockedQuery, $demand);
     $this->assertEquals(1, count($result));
 }