/**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 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];
 }
Example #6
0
 /**
  * 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;
 }
Example #10
0
 /**
  * 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);
 }
Example #11
0
 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;
 }