コード例 #1
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
  * @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];
 }