/** * Construction function. * * @param array $duplicationData * @param array $duplicationSettings * @param array $fieldsValues */ public function __construct(array $duplicationData = array(), array $duplicationSettings = array(), $fieldsValues = array()) { $this->objectManager = Core::getObjectManager(); $this->database = Core::getDatabase(); $this->extensionConfiguration = Core::getExtensionConfiguration(); $this->result = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Error\\Result'); $this->setDuplicationData($duplicationData); $this->setDuplicationSettings($duplicationSettings); $this->initializeFields($fieldsValues); }
/** * Construction function. * * @param array $duplicationData * @param array $duplicationSettings * @param array $fieldsValues */ public function __construct(array $duplicationData = [], array $duplicationSettings = [], $fieldsValues = []) { $this->objectManager = Core::getObjectManager(); $this->database = Core::getDatabase(); $this->extensionConfiguration = Core::getExtensionConfiguration(); $this->result = $this->objectManager->get(Result::class); $this->setDuplicationData($duplicationData); $this->setDuplicationSettings($duplicationSettings); $this->initializeFields($fieldsValues); }
/** * Gets an ordered list of the pages with the "Model site" flag set. * * @return array The model sites in an array. Empty array if no model was found. */ public static function getModelSitesList() { $modelSitesPid = Core::getExtensionConfiguration('modelSitesPid'); $aModelSites = BackendUtility::getRecordsByField('pages', 'pid', $modelSitesPid); $orderedModelSites = array(); if (is_array($aModelSites)) { foreach ($aModelSites as $modelSite) { $orderedModelSites[$modelSite['uid']] = $modelSite['title'] . ' (' . $modelSite['uid'] . ')'; } } return $orderedModelSites; }
/** * This action is called when a form has been submitted to create a new * site. * * It will get all the information needed to duplicate the model site, and * further: management of uploaded files, constants management, etc. */ public function processCopyAction() { $cacheToken = $this->request->getArgument('duplicationToken'); $cache = CacheManager::getCacheInstance(CacheManager::CACHE_PROCESSED); $cacheData = $cache->get($cacheToken); // @todo: manage wrong token or wrong cacheData $cacheData = json_decode($cacheData, true); // Check if the process is a modification of an already duplicated site. $modifySite = null; if ($this->request->hasArgument('modifySite') && Core::checkUidIsSavedSite($this->request->getArgument('modifySite'))) { $modifySite = $this->request->getArgument('modifySite'); $cacheData['duplicationData']['modelPageUid'] = $cacheData['fieldsValues']['modelSite']; $cacheData['duplicationData']['modifySite'] = $modifySite; $cacheData['duplicationData']['duplicatedPageUid'] = $modifySite; /** @var Save $savedSite */ $savedSite = $this->saveRepository->findLastByRootPageUid($modifySite); $cacheData['savedSite'] = $savedSite->getConfiguration(); } else { $cacheData['duplicationData']['modelPageUid'] = $cacheData['fieldsValues']['modelSite']; $cacheData['duplicationData']['copyDestination'] = Core::getExtensionConfiguration('copyDestination'); } // Saving modified data in cache. $cache->set($cacheToken, json_encode($cacheData)); $this->view->assign('duplicationToken', $cacheToken); $siteModificationToken = $modifySite ? true : false; $duplicationConfiguration = AbstractDuplicationProcess::getCleanedDuplicationConfiguration($cacheData['duplicationData']['modelPageUid'], $siteModificationToken); $this->view->assign('duplicationConfiguration', $duplicationConfiguration); $this->view->assign('duplicationConfigurationJSON', addslashes(json_encode(array_keys($duplicationConfiguration)))); }