/** * Create a dataprovider for options filter data * * @param Tx_PtExtlist_Domain_Configuration_Filters_FilterConfig $filterConfig * @return Tx_PtExtlist_Domain_Model_Filter_DataProvider_DataProviderInterface */ public function createInstance(Tx_PtExtlist_Domain_Configuration_Filters_FilterConfig $filterConfig) { $dataProviderClassName = $this->determineDataProviderClass($filterConfig); $dataProvider = $this->objectManager->get($dataProviderClassName); Tx_PtExtbase_Assertions_Assert::isInstanceOf($dataProvider, 'Tx_PtExtlist_Domain_Model_Filter_DataProvider_DataProviderInterface', array('message' => 'The Dataprovider "' . $dataProviderClassName . ' does not implement the required interface! 1283536125')); /* @var $dataProvider Tx_PtExtlist_Domain_Model_Filter_DataProvider_DataProviderInterface */ $dataProvider->_injectFilterConfig($filterConfig); $dataProvider->_injectDataBackend($this->dataBackendFactory->getDataBackendInstanceByListIdentifier($filterConfig->getListIdentifier())); $dataProvider->init(); return $dataProvider; }
/** * Creates an instance of a filter for a given configuration * * @param Tx_PtExtlist_Domain_Configuration_Filters_FilterConfig $filterConfig * @return Tx_PtExtlist_Domain_Model_Filter_FilterInterface */ public function createInstance(Tx_PtExtlist_Domain_Configuration_Filters_FilterConfig $filterConfig) { $filter = $this->createFilterObject($filterConfig->getFilterClassName()); /* @var $filter Tx_PtExtlist_Domain_Model_Filter_FilterInterface */ $filter->_injectFilterConfig($filterConfig); $sessionPersistenceManager = $this->sessionPersistenceManagerBuilder->getInstance(); // TODO check whether filter interface should extend session persistable interface $sessionPersistenceManager->registerObjectAndLoadFromSession($filter); $filter->_injectDataBackend($this->dataBackendFactory->getDataBackendInstanceByListIdentifier($filterConfig->getListIdentifier())); $filter->init(); return $filter; }
/** * Get the starting index of the paged listData * */ protected function getPageStartingIndex() { $listIdentifier = $this->rendererConfiguration->getListIdentifier(); $dataBackend = Tx_PtExtlist_Domain_DataBackend_DataBackendFactory::getInstanceByListIdentifier($listIdentifier); $pager = $dataBackend->getPagerCollection(); $startIndex = $pager->getItemsPerPage() * ($pager->getCurrentPage() - 1); return $startIndex; }
protected function buildAccessibleTagCloudDataProvider($filterSettings) { $accessibleClassName = $this->buildAccessibleProxy('Tx_PtExtlist_Domain_Model_Filter_DataProvider_TagCloud'); $accessibleTagCloudDataProvider = new $accessibleClassName(); /* @var $accessibleTagCloudDataProvider Tx_PtExtlist_Domain_Model_Filter_DataProvider_TagCloud */ $filterConfiguration = new Tx_PtExtlist_Domain_Configuration_Filters_FilterConfig($this->configurationBuilderMock, $filterSettings, 'test'); $dataBackend = Tx_PtExtlist_Domain_DataBackend_DataBackendFactory::createDataBackend($this->configurationBuilderMock); $accessibleTagCloudDataProvider->_injectDataBackend($dataBackend); $accessibleTagCloudDataProvider->_injectFilterConfig($filterConfiguration); $accessibleTagCloudDataProvider->init(); return $accessibleTagCloudDataProvider; }
/** * Get the databackend by a custom list configuration ts array * The Typoscript is identified by the given listIdentifier and merged with the extlist configuration * * @param array $customTSArray Custom typoscript list configuration in extBase format * @param string $listIdentifier a listIdentifier to identify the custom list * @param boolean $useCache * @param null|int $bookmarkUidToRestore * @return Tx_PtExtlist_ExtlistContext_ExtlistContext */ public static function getContextByCustomConfiguration(array $customTSArray, $listIdentifier, $useCache = TRUE, $bookmarkUidToRestore = NULL) { if (!array_key_exists($listIdentifier, self::$staticInstances) || !$useCache) { self::$staticObjectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); if ($useCache) { try { // TODO Remove this, once we have DI $configurationBuilderFactory = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory'); /* @var $configurationBuilderFactory Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory */ $configurationBuilder = $configurationBuilderFactory->getInstance($listIdentifier); } catch (Exception $e) { $configurationBuilder = self::buildConfigurationBuilder($customTSArray, $listIdentifier); } } else { $configurationBuilder = self::buildConfigurationBuilder($customTSArray, $listIdentifier, TRUE); } if ($bookmarkUidToRestore) { $bookmarkManagerFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Model_Bookmark_BookmarkManagerFactory'); /* @var $bookmarkManagerFactory Tx_PtExtlist_Domain_Model_Bookmark_BookmarkManagerFactory */ $bookmarkManager = $bookmarkManagerFactory->getInstanceByConfigurationBuilder($configurationBuilder); $bookmarkManager->restoreBookmarkByUid($bookmarkUidToRestore); } $extListBackend = Tx_PtExtlist_Domain_DataBackend_DataBackendFactory::createDataBackend($configurationBuilder, !$useCache); self::$staticInstances[$listIdentifier] = self::buildContext($extListBackend); } return self::$staticInstances[$listIdentifier]; }
/** * Returns a data backend factory for given TS settings and list identifier. If no list identifier is given, * list identifier is taken from $settings['listIdentifier']. * * @param array $typoScriptSettingsForListIdentifier The settings array as we get it from configurationManager ATTENTION: This is not the settings array for the list identifier!!! * @param string $listIdentifier * @return Tx_PtExtlist_Domain_DataBackend_DataBackendFactory * @throws Exception if no list identifier can be determined */ public function getDataBackendFactoryMock($typoScriptSettingsForListIdentifier, $listIdentifier = NULL) { if (!$listIdentifier) { $listIdentifier = $typoScriptSettingsForListIdentifier['listIdentifier']; } if (!$listIdentifier) { throw new Exception('No list identifier was given and no list identifier could be found in given TS settings. 1363856864'); } $configurationManagerMock = $this->getMock('\\TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager', array('getConfiguration'), array(), '', FALSE); $configurationManagerMock->expects($this->any())->method('getConfiguration')->will($this->returnValue($typoScriptSettingsForListIdentifier)); /* @var $configurationManagerMock \TYPO3\CMS\Extbase\Configuration\ConfigurationManager */ $configurationBuilderInstancesContainer = new Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderInstancesContainer(); $configurationBuilderFactory = new Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory(); $configurationBuilderFactory->injectConfigurationManager($configurationManagerMock); $configurationBuilderFactory->setSettings($typoScriptSettingsForListIdentifier); $configurationBuilderFactory->injectConfigurationBuilderInstancesContainer($configurationBuilderInstancesContainer); $configurationBuilderFactory->getInstance($listIdentifier); $instancesContainer = GeneralUtility::makeInstance('Tx_PtExtlist_Domain_DataBackend_DataBackendInstancesContainer'); /* @var $instancesContainer Tx_PtExtlist_Domain_DataBackend_DataBackendInstancesContainer */ $objectManagerMock = $this->getMock('\\TYPO3\\CMS\\Extbase\\Object\\ObjectManager', array('get'), array(), '', FALSE); $objectManagerMock->expects($this->any())->method('get')->with('Tx_PtExtlist_Domain_DataBackend_Typo3DataBackend_Typo3DataBackend', $configurationBuilderFactory->getInstance($listIdentifier))->will($this->returnValue(new Tx_PtExtlist_Domain_DataBackend_Typo3DataBackend_Typo3DataBackend($configurationBuilderFactory->getInstance($listIdentifier)))); /* @var $objectManagerMock \TYPO3\CMS\Extbase\Object\ObjectManager */ $dataBackendFactory = new Tx_PtExtlist_Domain_DataBackend_DataBackendFactory(); $dataBackendFactory->injectObjectManager($objectManagerMock); $dataBackendFactory->injectConfigurationBuilderFactory($configurationBuilderFactory); $dataBackendFactory->injectInstancesContainer($instancesContainer); $dataBackendFactory->injectMapperFactory($this->objectManager->get('Tx_PtExtlist_Domain_DataBackend_Mapper_MapperFactory')); $dataBackendFactory->injectFilterboxCollectionFactory($this->objectManager->get('Tx_PtExtlist_Domain_Model_Filter_FilterboxCollectionFactory')); $dataBackendFactory->injectPagerCollectionFactory($this->objectManager->get('Tx_PtExtlist_Domain_Model_Pager_PagerCollectionFactory')); $dataBackendFactory->injectSorterFactory($this->objectManager->get('Tx_PtExtlist_Domain_Model_Sorting_SorterFactory')); return $dataBackendFactory; }
/** * @return void */ public function initializeAction() { parent::initializeAction(); $this->initFeUser(); $this->initListIdentifier(); $this->buildConfigurationBuilder(); $this->buildAndInitSessionPersistenceManager(); $this->resetSessionOnResetParameter(); $this->resetOnEmptySubmit(); $this->dataBackend = $this->dataBackendFactory->getDataBackendInstanceByListIdentifier($this->listIdentifier); }
private static function createStaticInstance() { if (self::$dataBackendFactoryInstance === NULL) { self::$dataBackendFactoryInstance = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_DataBackend_DataBackendFactory'); } }
/** * @throws Exception * @return array of options */ protected function getDataFromSqlServer() { $query = $this->dbObj->SELECTquery($this->selectPart, $this->fromPart, $this->wherePart, $this->groupByPart, $this->orderByPart, $this->limitPart); // this method only combines the parts $dataSource = Tx_PtExtlist_Domain_DataBackend_DataBackendFactory::getInstanceByListIdentifier($this->filterConfig->getListIdentifier())->getDataSource(); if (!method_exists($dataSource, 'executeQuery')) { throw new Exception('The defined dataSource has no method executeQuery and is therefore not usable with this dataProvider!', 1315216209); } $data = $dataSource->executeQuery($query)->fetchAll(); if (TYPO3_DLOG) { \TYPO3\CMS\Core\Utility\GeneralUtility::devLog('MYSQL QUERY : ' . $this->filterConfig->getListIdentifier() . ' -> Filter::ExplicitSQLQuery', 'pt_extlist', 1, array('executionTime' => $dataSource->getLastQueryExecutionTime(), 'query' => $query)); } return $data; }
/** * Get the databackend by a custom list configuration ts array * The Typoscript is identified by the given listIdentifier and merged with the extlist configuration * * @param array $customTSArray Custom typoscript list configuration in extBase format * @param string $listIdentifier a listIdentifier to identify the custom list * @return Tx_PtExtlist_Domain_DataBackend_DataBackendInterface */ public static function getDataBackendByCustomConfiguration(array $customTSArray, $listIdentifier) { try { $configurationBuilderFactory = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory'); /* @var $configurationBuilderFactory Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory */ $configurationBuilder = $configurationBuilderFactory->getInstance($listIdentifier); } catch (Exception $e) { $extListTs = self::getExtListTyposcriptSettings($listIdentifier, $customTSArray); self::loadLifeCycleManager(); // TODO Remove this, once we have DI $configurationBuilderFactory = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory'); /* @var $configurationBuilderFactory Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory */ $configurationBuilderFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager')->get('Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory'); /* @var $configurationBuilderFactory Tx_PtExtlist_Domain_Configuration_ConfigurationBuilderFactory */ $configurationBuilderFactory->setSettings($extListTs); $configurationBuilder = $configurationBuilderFactory->getInstance($listIdentifier); } return Tx_PtExtlist_Domain_DataBackend_DataBackendFactory::createDataBackend($configurationBuilder); }
protected function buildAccessibleGroupDataProvider($filterSettings = null) { $accessibleClassName = $this->buildAccessibleProxy('Tx_PtExtlist_Domain_Model_Filter_DataProvider_GroupData'); $accessibleGroupDataProvider = new $accessibleClassName(); /* @var $accessibleGroupDataProvider Tx_PtExtlist_Domain_Model_Filter_DataProvider_GroupData */ $this->defaultFilterSettings = $filterSettings; if (!$this->defaultFilterSettings) { $this->defaultFilterSettings = array('filterIdentifier' => 'test', 'filterClassName' => 'Tx_PtExtlist_Domain_Model_Filter_SelectFilter', 'partialPath' => 'Filter/SelectFilter', 'fieldIdentifier' => 'field1', 'displayFields' => 'field1,field2', 'filterField' => 'field3', 'invert' => '0'); } $filterConfiguration = new Tx_PtExtlist_Domain_Configuration_Filters_FilterConfig($this->configurationBuilderMock, $this->defaultFilterSettings, 'test'); $dataBackend = Tx_PtExtlist_Domain_DataBackend_DataBackendFactory::createDataBackend($this->configurationBuilderMock); $accessibleGroupDataProvider->_injectDataBackend($dataBackend); $accessibleGroupDataProvider->_injectFilterConfig($filterConfiguration); $accessibleGroupDataProvider->init(); return $accessibleGroupDataProvider; }