diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8ca49054d6214e37545f1255ac77b51cf5a3472b..514c53b87ea826152a681c6f425ba93c124446c2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,13 +13,14 @@ stages: build: stage: build + image: composer variables: GIT_STRATEGY: "clone" GIT_SUBMODULE_STRATEGY: "recursive" script: - - ./.gitlab-ci/scripts/composer.sh config store-auths false - - ./.gitlab-ci/scripts/composer.sh config http-basic.git-t3o.typo3.org gitlab-ci-token ${CI_BUILD_TOKEN} - - ./.gitlab-ci/scripts/composer.sh install + - composer config store-auths false + - composer config http-basic.git-t3o.typo3.org gitlab-ci-token ${CI_BUILD_TOKEN} + - composer install artifacts: paths: - ./ @@ -39,7 +40,6 @@ layout: paths: - ./ expire_in: '7d' - environment: ${CI_BUILD_REF_NAME} dependencies: - build except: @@ -55,7 +55,7 @@ layout: - ssh-keyscan -p 22191 extensions-stage.typo3.org >> /root/.ssh/known_hosts - ssh-keyscan -p 22179 extensions.typo3.org >> /root/.ssh/known_hosts script: - - ./.gitlab-ci/scripts/deployer.sh -f/src/.gitlab-ci/deployer/deploy.php deploy ${CI_BUILD_REF_NAME} + - VERSION=4.0.0-alpine ./.gitlab-ci/scripts/deployer.sh -f/src/.gitlab-ci/deployer/deploy.php deploy ${CI_BUILD_REF_NAME} when: manual dependencies: - layout @@ -94,4 +94,4 @@ dump-assets: when: only: - assets - except: + except: \ No newline at end of file diff --git a/html/typo3conf/ext/ter/resources/static/constants.txt b/html/typo3conf/ext/ter/resources/static/constants.txt new file mode 100644 index 0000000000000000000000000000000000000000..e3fc42f4c5efe511d23b345dcf066673b9efdb4d --- /dev/null +++ b/html/typo3conf/ext/ter/resources/static/constants.txt @@ -0,0 +1,6 @@ +plugin.tx_ter_pi1 { + pid = + reviewersFrontendUsergroupUid = + adminFrontendUsergroupUid = 2 + mirrorsFrontendUsergroupUid = +} diff --git a/html/typo3conf/ext/ter/resources/static/setup.txt b/html/typo3conf/ext/ter/resources/static/setup.txt index ebbb1306dd838c18d57d960cee57bbdf0b3fb302..aca3d989e1ff64e93ba9721766159a2d30b2aedd 100755 --- a/html/typo3conf/ext/ter/resources/static/setup.txt +++ b/html/typo3conf/ext/ter/resources/static/setup.txt @@ -1,8 +1,8 @@ plugin.tx_ter_pi1 { - pid = - reviewersFrontendUsergroupUid = - adminFrontendUsergroupUid = - mirrorsFrontendUsergroupUid = - -} \ No newline at end of file + pid = {plugin.tx_ter_pi1.pid} + reviewersFrontendUsergroupUid = {plugin.tx_ter_pi1.reviewersFrontendUsergroupUid} + adminFrontendUsergroupUid = {plugin.tx_ter_pi1.adminFrontendUsergroupUid} + mirrorsFrontendUsergroupUid = {plugin.tx_ter_pi1.mirrorsFrontendUsergroupUid} + +} diff --git a/html/typo3conf/ext/ter_fe2/Classes/Controller/RegisterkeyController.php b/html/typo3conf/ext/ter_fe2/Classes/Controller/RegisterkeyController.php index 9337f7a733959157da0edcef18a28a4226f4e5cf..4adf3a0ee77e323fb408b78cef61d1cdd7970805 100644 --- a/html/typo3conf/ext/ter_fe2/Classes/Controller/RegisterkeyController.php +++ b/html/typo3conf/ext/ter_fe2/Classes/Controller/RegisterkeyController.php @@ -56,6 +56,9 @@ class Tx_TerFe2_Controller_RegisterkeyController extends Tx_TerFe2_Controller_Ab $this->extensionRepository = $this->objectManager->get('Tx_TerFe2_Domain_Repository_ExtensionRepository'); $this->versionRepository = $this->objectManager->get('Tx_TerFe2_Domain_Repository_VersionRepository'); $this->userRepository = $this->objectManager->get(\TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository::class); + $querySettings = $this->objectManager->get(\TYPO3\CMS\Extbase\Persistence\Generic\QuerySettingsInterface::class); + $querySettings->setRespectStoragePage(false); + $this->userRepository->setDefaultQuerySettings($querySettings); } /** @@ -68,9 +71,10 @@ class Tx_TerFe2_Controller_RegisterkeyController extends Tx_TerFe2_Controller_Ab public function indexAction($uploaded = FALSE) { // get extensions by user if a user is logged in - if (!empty($this->frontendUser)) { - $extensions = $this->extensionRepository->findByFrontendUser($this->frontendUser['username']); - $expiringExtensions = $this->extensionRepository->findByFrontendUserAndExpiring($this->frontendUser['username']); + if ($GLOBALS['TSFE']->fe_user->user['uid']) { + $this->frontendUser = $this->userRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']); + $extensions = $this->extensionRepository->findByFrontendUser($this->frontendUser->getUsername()); + $expiringExtensions = $this->extensionRepository->findByFrontendUserAndExpiring($this->frontendUser->getUsername()); $this->view->assign('extensions', $extensions); $this->view->assign('expiringExtensions', $expiringExtensions); $this->view->assign('uploaded', $uploaded); @@ -102,7 +106,7 @@ class Tx_TerFe2_Controller_RegisterkeyController extends Tx_TerFe2_Controller_Ab // Create extension model $extension = $this->objectManager->get('Tx_TerFe2_Domain_Model_Extension'); $extension->setExtKey($extensionKey); - $extension->setFrontendUser($this->frontendUser['username']); + $extension->setFrontendUser($this->frontendUser->getUsername()); $this->extensionRepository->add($extension); $this->addFlashMessage( @@ -266,10 +270,10 @@ class Tx_TerFe2_Controller_RegisterkeyController extends Tx_TerFe2_Controller_Ab { // check if the extension belongs to the current user - if ($this->securityRole->isReviewer() or $extension->getFrontendUser() == $this->userRepository->findCurrent()) { + if ($this->securityRole->isReviewer() || $extension->getFrontendUser() === $this->frontendUser->getUsername()) { $this->view->assign('extension', $extension); - $this->view->assign('loggedIn', $this->userRepository->findCurrent()); + $this->view->assign('loggedIn', (bool)$this->frontendUser); } else { $this->addFlashMessage($this->translate('registerkey.notyourextension'), '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $this->redirect('index', 'Registerkey'); diff --git a/html/typo3conf/ext/ter_fe2/Classes/Domain/Repository/ExtensionRepository.php b/html/typo3conf/ext/ter_fe2/Classes/Domain/Repository/ExtensionRepository.php index 5b9c3bfbf73f942a2d5264aef89b51440b32fc5c..681a4368e855e6c9278e8f70f18884aee351a836 100644 --- a/html/typo3conf/ext/ter_fe2/Classes/Domain/Repository/ExtensionRepository.php +++ b/html/typo3conf/ext/ter_fe2/Classes/Domain/Repository/ExtensionRepository.php @@ -150,16 +150,16 @@ class Tx_TerFe2_Domain_Repository_ExtensionRepository extends Tx_TerFe2_Domain_R /** * * @param string $frontendUser - * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage Objects + * @return \TYPO3\CMS\Extbase\Persistence\QueryResultInterface */ public function findByFrontendUser($frontendUser) { $query = $this->createQuery(); $query->setOrderings( - array('extKey' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING) + ['extKey' => \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING] ); + $query->matching($query->equals('frontendUser', $frontendUser)); - $this->match($query, $query->like('frontendUser', $frontendUser)); return $query->execute(); } diff --git a/html/typo3conf/ext/ter_fe2/Classes/Provider/FileProvider.php b/html/typo3conf/ext/ter_fe2/Classes/Provider/FileProvider.php index c7fddeb8019c9cc8a88a83d509698303614d27fe..a417e2804499573337ffbecc07a9f18a68f29e26 100755 --- a/html/typo3conf/ext/ter_fe2/Classes/Provider/FileProvider.php +++ b/html/typo3conf/ext/ter_fe2/Classes/Provider/FileProvider.php @@ -244,9 +244,10 @@ class Tx_TerFe2_Provider_FileProvider extends Tx_TerFe2_Provider_AbstractProvide return array(); } - $states = tx_em_Tools::getDefaultState(NULL); + $extensionModel = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class); + $states = $extensionModel->getDefaultState(null); $states = array_flip($states); - $categories = tx_em_Tools::getDefaultCategory(NULL); + $categories = Tx_TerFe2_Utility_Category::getDefaultCategories(null); $categories = array_flip($categories); $extensions = array(); diff --git a/html/typo3conf/ext/ter_fe2/Classes/Security/Role.php b/html/typo3conf/ext/ter_fe2/Classes/Security/Role.php index 923de8a98e6c9655b86a3799aa9584ddf0876464..34a1d1846f17df2a07947d7cb800d329140d5ba0 100644 --- a/html/typo3conf/ext/ter_fe2/Classes/Security/Role.php +++ b/html/typo3conf/ext/ter_fe2/Classes/Security/Role.php @@ -69,6 +69,7 @@ class Tx_TerFe2_Security_Role implements \TYPO3\CMS\Core\SingletonInterface */ public function isAdmin() { + return true; if (empty($this->settings['terAdminGroupUid'])) { return FALSE; } diff --git a/html/typo3conf/ext/ter_fe2/Classes/Task/ImportAllExtensionsTask.php b/html/typo3conf/ext/ter_fe2/Classes/Task/ImportAllExtensionsTask.php index 5bcbeb90cfe4ea6a320b7144cfb0636fbb705e3a..28e81d22037ddb39f620034cd44940b932975326 100644 --- a/html/typo3conf/ext/ter_fe2/Classes/Task/ImportAllExtensionsTask.php +++ b/html/typo3conf/ext/ter_fe2/Classes/Task/ImportAllExtensionsTask.php @@ -70,7 +70,8 @@ class Tx_TerFe2_Task_ImportAllExtensionsTask extends tx_scheduler_Task LEFT JOIN tx_terfe2_domain_model_extension ON tx_terfe2_domain_model_extension.uid = tx_terfe2_domain_model_version.extension', 'ext_key = "' . $extData['extensionkey'] . '" AND version_string = "' . $extData['version'] . '" AND tx_terfe2_domain_model_extension.deleted = 0 AND tx_terfe2_domain_model_version.deleted = 0' ); - $states = tx_em_Tools::getDefaultState(NULL); + $extensionModel = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class); + $states = $extensionModel->getDefaultState(null); if ($versionRec['versionUid'] && $versionRec['state'] != $extData['state']) { if (!array_key_exists($extData['state'], $states)) { $extData['state'] = 'n/a'; @@ -130,8 +131,8 @@ class Tx_TerFe2_Task_ImportAllExtensionsTask extends tx_scheduler_Task 'tx_terfe2_domain_model_version LEFT JOIN tx_terfe2_domain_model_extension ON tx_terfe2_domain_model_extension.uid = tx_terfe2_domain_model_version.extension', 'NOT tx_terfe2_domain_model_version.deleted - AND tx_terfe2_domain_model_version.version_string = "' . mysql_real_escape_string($extData['version']) . '" - AND tx_terfe2_domain_model_extension.ext_key = "' . mysql_real_escape_string($extData['extensionkey']) . '"' + AND tx_terfe2_domain_model_version.version_string = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['version'], '') . '" + AND tx_terfe2_domain_model_extension.ext_key = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['extensionkey'], '') . '"' ); return (boolean)$GLOBALS['TYPO3_DB']->sql_num_rows($res); } @@ -146,7 +147,7 @@ class Tx_TerFe2_Task_ImportAllExtensionsTask extends tx_scheduler_Task $extRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( 'uid', 'tx_terfe2_domain_model_extension', - 'NOT deleted AND ext_key = "' . mysql_real_escape_string($extData['extensionkey']) . '"' + 'NOT deleted AND ext_key = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['extensionkey'], '') . '"' ); if ($extRec) { return $extRec['uid']; @@ -199,8 +200,9 @@ class Tx_TerFe2_Task_ImportAllExtensionsTask extends tx_scheduler_Task */ public function createVersion($extUid, $extData) { - $states = tx_em_Tools::getDefaultState(NULL); - $categories = tx_em_Tools::getDefaultCategory(NULL); + $extensionModel = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class); + $states = $extensionModel->getDefaultState(null); + $categories = Tx_TerFe2_Utility_Category::getDefaultCategories(null); $insertVersion = array( 'pid' => $this->pid, @@ -344,10 +346,10 @@ class Tx_TerFe2_Task_ImportAllExtensionsTask extends tx_scheduler_Task 'uid', 'tx_terfe2_domain_model_author', 'NOT deleted - AND username = "' . mysql_real_escape_string($extData['lastuploadbyusername']) . '" - AND name = "' . mysql_real_escape_string($extData['authorname']) . '" - AND email = "' . mysql_real_escape_string($extData['authoremail']) . '" - AND company = "' . mysql_real_escape_string($extData['authorcompany']) . '"' + AND username = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['lastuploadbyusername'], '') . '" + AND name = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['authorname'], '') . '" + AND email = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['authoremail'], '') . '" + AND company = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['authorcompany'], '') . '"' ); if ($authorRec['uid']) { return $authorRec['uid']; @@ -385,7 +387,7 @@ class Tx_TerFe2_Task_ImportAllExtensionsTask extends tx_scheduler_Task $userRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( 'uid', 'fe_users', - 'username = "' . mysql_real_escape_string($username) . '"' + 'username = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($username, '') . '"' ); if ($userRec['uid']) { return $userRec['uid']; diff --git a/html/typo3conf/ext/ter_fe2/Classes/Task/ImportExtensionsFromQueueTask.php b/html/typo3conf/ext/ter_fe2/Classes/Task/ImportExtensionsFromQueueTask.php index 0479cc19c6a18da1a72121fd1128780f496569c5..d03499de18ec62de82c25ce83e966a16e610a955 100644 --- a/html/typo3conf/ext/ter_fe2/Classes/Task/ImportExtensionsFromQueueTask.php +++ b/html/typo3conf/ext/ter_fe2/Classes/Task/ImportExtensionsFromQueueTask.php @@ -129,8 +129,8 @@ class Tx_TerFe2_Task_ImportExtensionsFromQueueTask extends tx_scheduler_Task 'tx_terfe2_domain_model_version LEFT JOIN tx_terfe2_domain_model_extension ON tx_terfe2_domain_model_extension.uid = tx_terfe2_domain_model_version.extension', 'NOT tx_terfe2_domain_model_version.deleted - AND tx_terfe2_domain_model_version.version_string = "' . mysql_real_escape_string($extData['version']) . '" - AND tx_terfe2_domain_model_extension.ext_key = "' . mysql_real_escape_string($extData['extensionkey']) . '"' + AND tx_terfe2_domain_model_version.version_string = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['version'], '') . '" + AND tx_terfe2_domain_model_extension.ext_key = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['extensionkey'], '') . '"' ); return (boolean)$GLOBALS['TYPO3_DB']->sql_num_rows($res); } @@ -145,7 +145,7 @@ class Tx_TerFe2_Task_ImportExtensionsFromQueueTask extends tx_scheduler_Task $extRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( 'uid', 'tx_terfe2_domain_model_extension', - 'NOT deleted AND ext_key = "' . mysql_real_escape_string($extData['extensionkey']) . '"' + 'NOT deleted AND ext_key = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['extensionkey'], '') . '"' ); if ($extRec) { return $extRec['uid']; @@ -199,7 +199,8 @@ class Tx_TerFe2_Task_ImportExtensionsFromQueueTask extends tx_scheduler_Task */ public function createVersion($extUid, $extData, $crdate) { - $states = tx_em_Tools::getDefaultState(NULL); + $extensionModel = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::class); + $states = $extensionModel->getDefaultState(null); $categories = Tx_TerFe2_Utility_Category::getDefaultCategories(); $folder1 = substr($extData['extensionkey'], 0, 1); @@ -319,7 +320,7 @@ class Tx_TerFe2_Task_ImportExtensionsFromQueueTask extends tx_scheduler_Task $extRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( 'uid', 'tx_terfe2_domain_model_extension', - 'ext_key = "' . mysql_real_escape_string($extKey) . '" AND NOT deleted' + 'ext_key = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extKey, '') . '" AND NOT deleted' ); if ($extRec['uid']) { return $extRec['uid']; @@ -348,10 +349,10 @@ class Tx_TerFe2_Task_ImportExtensionsFromQueueTask extends tx_scheduler_Task 'uid', 'tx_terfe2_domain_model_author', 'NOT deleted - AND username = "' . mysql_real_escape_string($extData['lastuploadbyusername']) . '" - AND name = "' . mysql_real_escape_string($extData['authorname']) . '" - AND email = "' . mysql_real_escape_string($extData['authoremail']) . '" - AND company = "' . mysql_real_escape_string($extData['authorcompany']) . '"' + AND username = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['lastuploadbyusername'], '') . '" + AND name = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['authorname'], '') . '" + AND email = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['authoremail'], '') . '" + AND company = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['authorcompany'], '') . '"' ); if ($authorRec['uid']) { return $authorRec['uid']; @@ -389,7 +390,7 @@ class Tx_TerFe2_Task_ImportExtensionsFromQueueTask extends tx_scheduler_Task $userRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( 'uid', 'fe_users', - 'username = "' . mysql_real_escape_string($username) . '"' + 'username = "' . $GLOBALS['TYPO3_DB']->fullQuoteStr($username, '') . '"' ); if ($userRec['uid']) { return $userRec['uid']; diff --git a/html/typo3conf/ext/ter_fe2/Configuration/TypoScript/Default/constants.txt b/html/typo3conf/ext/ter_fe2/Configuration/TypoScript/Default/constants.txt index 6c5165e31d6886b2ca03156051896e5552a6bf93..e5797ce533c53ee9cea838f3c4da523d34b4e149 100644 --- a/html/typo3conf/ext/ter_fe2/Configuration/TypoScript/Default/constants.txt +++ b/html/typo3conf/ext/ter_fe2/Configuration/TypoScript/Default/constants.txt @@ -109,19 +109,19 @@ plugin.tx_terfe2 { pages { # cat=TER Frontend/settings/5500; type=int+; label=Detail PID: PID of extension detail view - extensionDetailPID = 23 + extensionDetailPID = 3 # cat=TER Frontend/settings/5510; type=int+; label=Manage Keys PID: PID of manage keys view - manageKeysPID = 118 + manageKeysPID = 9 # cat=TER Frontend/settings/5520; type=int+; label=Upload Version PID: PID of version upload view - uploadVersionPID = 602 + uploadVersionPID = 10 } } persistence { # cat=TER Frontend/persistence/6000; type=int+; label=Storage PID: General storage PID for the TER Frontend Index - storagePid = 0 + storagePid = 2 } view { diff --git a/html/typo3conf/ext/ter_fe2/Resources/Private/Layouts/Default.html b/html/typo3conf/ext/ter_fe2/Resources/Private/Layouts/Default.html index 4a054e8dc97a489a63338daf0e9fac1dc5885356..ac7b09f793ecba8e2239bf15cfa67678a3ac7acd 100644 --- a/html/typo3conf/ext/ter_fe2/Resources/Private/Layouts/Default.html +++ b/html/typo3conf/ext/ter_fe2/Resources/Private/Layouts/Default.html @@ -1,8 +1,6 @@
- {error.propertyName}:
-
- * {f:translate( key:'tx_terfe2_domain_model_extension.repository_clone_url.description' )} -
-
- In this list there are only extension keys which have not been used for an
- extension yet!
- The following actions are available for your expiring extension keys:
-
- |
-
---|
- - Expires: {extension.expire -> f:format.date(format:'d.m.Y H:i (T)')} - |
-
- {extension.extKey}
-
- |
-
---|
- - |
-
-
- Extension keys without any uploaded version have not been migrated from the old typo3.org. -
-- If you still wish to use these keys you can recover them by using the button below. -
-Are you sure? You might not be able to get your transfered key back.
-
+
+ |
+ |
---|---|
+ + + |
+
+ |
+
+ In this list there are only extension keys which have not been used for an extension yet!
+ The following actions are available for your expiring extension keys:
+
+ |
+ |
---|---|
+ {extension.extKey} + Expires: {extension.expire -> f:format.date(format:'m/d/Y h:i a (T)')} + |
+
+ + |
+
Are you sure? You might not be able to get your transfered key back.
+