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