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