/** * Creates a backend user. * * See class documentation for more details. */ public function run() { $backendUserModelUid = $this->getProcessSettings('modelUid'); // Checking if something was given in "settings.modelUid". if (!MathUtility::canBeInterpretedAsInteger($backendUserModelUid)) { $this->addError('duplication_process.backend_user_creation.error.must_be_integer', 1432908303); return; } // Checking if the given backend user is valid. /** @var BackendUserRepository $backendUserRepository */ $backendUserRepository = $this->objectManager->get(BackendUserRepository::class); /** @var BackendUser $backendUser */ $backendUser = $backendUserRepository->findByUid($backendUserModelUid); if (!$backendUser) { $this->addError('duplication_process.backend_user_creation.error.wrong_uid', 1432908427, ['d' => $backendUserModelUid]); return; } // Creating a new instance of backend user, and copying the values from the model one. /** @var BackendUser $backendUserClone */ $backendUserClone = GeneralUtility::makeInstance(BackendUser::class); $backendUserClone->setPid($this->getDuplicatedPageUid()); $backendUserName = Core::getCleanedValueFromTCA('be_users', 'username', $backendUser->getUserName(), 0); $backendUserClone->setUserName($backendUserName); /** @var PersistenceManager $persistenceManager */ $persistenceManager = $this->objectManager->get(PersistenceManager::class); $persistenceManager->add($backendUserClone); $persistenceManager->persistAll(); $this->addNotice('duplication_process.backend_user_creation.notice.success', 1432909010, ['s' => $backendUserClone->getUserName()]); // Managing base mount. $duplicatedPageUid = $this->getDuplicatedPageUid(); if ($duplicatedPageUid) { $this->fixDataBaseMountPointForBackendUser($backendUserClone, $this->getDuplicatedPageUid()); } // Managing file mount. $fileMountUid = $this->getProcessSettings('sysFileMountUid'); if ($fileMountUid) { /** @var FileMountRepository $fileMountRepository */ $fileMountRepository = $this->objectManager->get(FileMountRepository::class); /** @var FileMount $fileMount */ $fileMount = $fileMountRepository->findByUid($fileMountUid); if (!$fileMount) { $this->addWarning('duplication_process.backend_user_creation.warning.wrong_mount_point_uid', 1432909510, ['s' => $fileMountUid]); } else { $flag = $this->fixFileMountForBackendUser($backendUserClone, $fileMount); if ($flag) { $this->addNotice('duplication_process.backend_user_creation.notice.filemount_association_success', 1432909851, ['s' => $fileMount->getTitle()]); } } } // Checking if "settings.createdRecordName" can be used, use self::DEFAULT_CREATED_RECORD_NAME otherwise. $backendUserUid = $backendUserClone->getUid(); $createdRecordName = $this->getProcessSettings('createdRecordName'); $createdRecordName = !empty($createdRecordName) ? $createdRecordName : self::DEFAULT_CREATED_RECORD_NAME; $this->setDuplicationDataValue($createdRecordName, $backendUserUid); }