...
 
Commits (6)
...@@ -27,20 +27,18 @@ ...@@ -27,20 +27,18 @@
], ],
"require": { "require": {
"php": ">=7.0", "php": ">=7.0",
"typo3/cms-core": "^8.7",
"t3o/ter-layout": "@dev", "t3o/ter-layout": "@dev",
"t3o/ter-soap": "@dev", "t3o/ter-soap": "@dev",
"t3o/ter-frontend": "@dev", "t3o/ter-frontend": "@dev",
"helhum/typo3-console": "^5.7", "helhum/typo3-console": "^5.7",
"dmitryd/typo3-realurl": "^2.5",
"apache-solr-for-typo3/solr": "^9.0", "apache-solr-for-typo3/solr": "^9.0",
"t3o/t3olayout": "^3.0", "t3o/t3olayout": "dev-develop-v9",
"nikic/php-parser": "^3.1", "nikic/php-parser": "^4.0",
"gordalina/cachetool": "^3.2", "gordalina/cachetool": "^4.0",
"helhum/typo3-secure-web": "^0.2.9" "helhum/typo3-secure-web": "^0.2.9"
}, },
"require-dev": { "require-dev": {
"nimut/testing-framework": "^3.0" "nimut/testing-framework": "^4.0"
}, },
"config": { "config": {
"store-auths": false, "store-auths": false,
......
This diff is collapsed.
...@@ -36,7 +36,7 @@ class ExtConf implements SingletonInterface ...@@ -36,7 +36,7 @@ class ExtConf implements SingletonInterface
public function __construct() public function __construct()
{ {
// get global configuration // get global configuration
$extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['ter']); $extConf = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['ter'];
if (is_array($extConf) && count($extConf)) { if (is_array($extConf) && count($extConf)) {
// call setter method foreach configuration entry // call setter method foreach configuration entry
foreach ($extConf as $key => $value) { foreach ($extConf as $key => $value) {
......
...@@ -14,6 +14,7 @@ namespace T3o\Ter\Task; ...@@ -14,6 +14,7 @@ namespace T3o\Ter\Task;
* The TYPO3 project - inspiring people to share! * The TYPO3 project - inspiring people to share!
*/ */
use TYPO3\CMS\Core\Core\Environment;
use TYPO3\CMS\Core\Utility\GeneralUtility; use TYPO3\CMS\Core\Utility\GeneralUtility;
/** /**
...@@ -42,7 +43,7 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -42,7 +43,7 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task
protected function fetchCurrentCoreData() protected function fetchCurrentCoreData()
{ {
$result = false; $result = false;
$targetFile = PATH_site . $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . 'currentcoredata.json'; $targetFile = Environment::getPublicPath() . '/' . $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . 'currentcoredata.json';
$sourceData = GeneralUtility::getUrl('http://get.typo3.org/json'); $sourceData = GeneralUtility::getUrl('http://get.typo3.org/json');
if (json_decode($sourceData, true) !== null) { if (json_decode($sourceData, true) !== null) {
$result = GeneralUtility::writeFile($targetFile, $sourceData); $result = GeneralUtility::writeFile($targetFile, $sourceData);
...@@ -57,7 +58,7 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -57,7 +58,7 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task
protected function fetchCurrentDocumentationData() protected function fetchCurrentDocumentationData()
{ {
$result = false; $result = false;
$targetFile = PATH_site . $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . 'currentdocumentationdata.json'; $targetFile = Environment::getPublicPath() . '/' . $GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . 'currentdocumentationdata.json';
$sourceData = GeneralUtility::getUrl('https://intercept.typo3.com/assets/docs/manuals.json'); $sourceData = GeneralUtility::getUrl('https://intercept.typo3.com/assets/docs/manuals.json');
if (json_decode($sourceData, true) !== null) { if (json_decode($sourceData, true) !== null) {
$result = GeneralUtility::writeFile($targetFile, $sourceData); $result = GeneralUtility::writeFile($targetFile, $sourceData);
...@@ -76,12 +77,12 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -76,12 +77,12 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task
protected function generateExtensionFilesForExtensionManager(): bool protected function generateExtensionFilesForExtensionManager(): bool
{ {
// Check extension configuration // Check extension configuration
if (empty($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['ter'])) { if (empty($GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['ter'])) {
throw new \Exception('No extension configuration found in $TYPO3_CONF_VARS', 1303220916); throw new \Exception('No extension configuration found in $TYPO3_CONF_VARS', 1303220916);
} }
// Check extension repository path // Check extension repository path
$extensionConfig = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['ter']); $extensionConfig = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['ter'];
if (empty($extensionConfig['repositoryDir'])) { if (empty($extensionConfig['repositoryDir'])) {
throw new \Exception('No repository path found in extension configuration', 1303220917); throw new \Exception('No repository path found in extension configuration', 1303220917);
} }
......
...@@ -19,7 +19,7 @@ return [ ...@@ -19,7 +19,7 @@ return [
'label_userFunc' => 'EXT:ter/class.tx_ter_tcaLabel.php:tx_ter_tcaLabel->getExtensionKey', 'label_userFunc' => 'EXT:ter/class.tx_ter_tcaLabel.php:tx_ter_tcaLabel->getExtensionKey',
'default_sortby' => 'ORDER BY extensionuid', 'default_sortby' => 'ORDER BY extensionuid',
'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensiondetails', 'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensiondetails',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($extensionKey) . 'tx_ter_extensiondetails.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(ExtensionManagementUtility::extPath($extensionKey)) . 'tx_ter_extensiondetails.gif',
'dividers2tabs' => true, 'dividers2tabs' => true,
], ],
'interface' => [ 'interface' => [
......
...@@ -20,7 +20,7 @@ return [ ...@@ -20,7 +20,7 @@ return [
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensionkeys', 'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensionkeys',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($extensionKey) . 'tx_ter_extensionkeys.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(ExtensionManagementUtility::extPath($extensionKey)) . 'tx_ter_extensionkeys.gif',
'dividers2tabs' => true, 'dividers2tabs' => true,
], ],
'interface' => [ 'interface' => [
......
...@@ -18,7 +18,7 @@ return [ ...@@ -18,7 +18,7 @@ return [
'label' => 'extensionkey', 'label' => 'extensionkey',
'default_sortby' => 'ORDER BY extensionkey', 'default_sortby' => 'ORDER BY extensionkey',
'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensionmembers', 'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensionmembers',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($extensionKey) . 'tx_ter_extensionmembers.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(ExtensionManagementUtility::extPath($extensionKey)) . 'tx_ter_extensionmembers.gif',
'dividers2tabs' => true, 'dividers2tabs' => true,
], ],
'interface' => [ 'interface' => [
......
...@@ -21,7 +21,7 @@ return [ ...@@ -21,7 +21,7 @@ return [
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'delete' => 'deleted', 'delete' => 'deleted',
'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensionqueue', 'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensionqueue',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($extensionKey) . 'tx_ter_extensionqueue.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(ExtensionManagementUtility::extPath($extensionKey)) . 'tx_ter_extensionqueue.gif',
'dividers2tabs' => true, 'dividers2tabs' => true,
], ],
'interface' => [ 'interface' => [
......
...@@ -20,7 +20,7 @@ return [ ...@@ -20,7 +20,7 @@ return [
'tstamp' => 'tstamp', 'tstamp' => 'tstamp',
'crdate' => 'crdate', 'crdate' => 'crdate',
'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensions', 'title' => 'LLL:EXT:ter/locallang_tca.xml:tx_ter_extensions',
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath($extensionKey) . 'tx_ter_extensions.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(ExtensionManagementUtility::extPath($extensionKey)) . 'tx_ter_extensions.gif',
'dividers2tabs' => true, 'dividers2tabs' => true,
], ],
'interface' => [ 'interface' => [
......
...@@ -33,11 +33,14 @@ class tx_ter_tcaLabel ...@@ -33,11 +33,14 @@ class tx_ter_tcaLabel
return; return;
} }
$result = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( $result = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Database\ConnectionPool::class)
'extensionkey', ->getConnectionForTable('tx_ter_extensions')
'tx_ter_extensions', ->select(
'uid=' . (int)$params['row']['uid'] ['extensionkey'],
); 'tx_ter_extensions',
['uid = ' . (int)$params['row']['uid']]
)
->fetch();
if (!empty($result['extensionkey'])) { if (!empty($result['extensionkey'])) {
$params['title'] = htmlspecialchars($result['extensionkey']); $params['title'] = htmlspecialchars($result['extensionkey']);
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
}, },
"license": "GPL-2.0+", "license": "GPL-2.0+",
"require": { "require": {
"typo3/cms-core": ">= 8.7.0, <= 8.7.99" "typo3/cms-core": "^8.7 || ^9.5"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
......
...@@ -28,9 +28,7 @@ $EM_CONF[$_EXTKEY] = [ ...@@ -28,9 +28,7 @@ $EM_CONF[$_EXTKEY] = [
'author_company' => 'TYPO3 Association', 'author_company' => 'TYPO3 Association',
'version' => '2.0.9', 'version' => '2.0.9',
'constraints' => [ 'constraints' => [
'depends' => [ 'depends' => [],
'saltedpasswords' => '',
],
'conflicts' => [], 'conflicts' => [],
'suggests' => [], 'suggests' => [],
], ],
......
...@@ -30,11 +30,8 @@ ...@@ -30,11 +30,8 @@
* TOTAL FUNCTIONS: 1 * TOTAL FUNCTIONS: 1
* (This index is automatically created/updated by the extension "extdeveval") * (This index is automatically created/updated by the extension "extdeveval")
*/ */
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
use TYPO3\CMS\Frontend\Plugin\AbstractPlugin; use TYPO3\CMS\Frontend\Plugin\AbstractPlugin;
require_once(ExtensionManagementUtility::extPath('ter') . 'class.tx_ter_api.php');
/** /**
* TYPO3 Extension Repository, frontend plugin for SOAP service * TYPO3 Extension Repository, frontend plugin for SOAP service
* *
...@@ -50,14 +47,12 @@ class tx_ter_pi1 extends AbstractPlugin ...@@ -50,14 +47,12 @@ class tx_ter_pi1 extends AbstractPlugin
public function main($content, $conf) public function main($content, $conf)
{ {
global $TSFE;
$this->pi_initPIflexForm(); $this->pi_initPIflexForm();
$this->conf = $conf; $this->conf = $conf;
$this->extensionsPID = $conf['pid']; $this->extensionsPID = $conf['pid'];
$this->wsdlNamespace = $conf['wsdlNamespace']; $this->wsdlNamespace = $conf['wsdlNamespace'];
$staticConfArr = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['ter']); $staticConfArr = $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['ter'];
if (is_array($staticConfArr)) { if (is_array($staticConfArr)) {
$this->repositoryDir = $staticConfArr['repositoryDir']; $this->repositoryDir = $staticConfArr['repositoryDir'];
if (substr($this->repositoryDir, -1, 1) != '/') { if (substr($this->repositoryDir, -1, 1) != '/') {
......
...@@ -31,9 +31,8 @@ define('PATH_thisScript', str_replace('//', '/', str_replace( ...@@ -31,9 +31,8 @@ define('PATH_thisScript', str_replace('//', '/', str_replace(
(php_sapi_name() == 'cgi' || php_sapi_name() == 'isapi' || php_sapi_name() == 'cgi-fcgi') && ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) ? ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) : ($_SERVER['ORIG_SCRIPT_FILENAME'] ? $_SERVER['ORIG_SCRIPT_FILENAME'] : $_SERVER['SCRIPT_FILENAME']) (php_sapi_name() == 'cgi' || php_sapi_name() == 'isapi' || php_sapi_name() == 'cgi-fcgi') && ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) ? ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) : ($_SERVER['ORIG_SCRIPT_FILENAME'] ? $_SERVER['ORIG_SCRIPT_FILENAME'] : $_SERVER['SCRIPT_FILENAME'])
))); )));
define('PATH_site', str_replace(['/wsdl', '/typo3conf/ext/ter'], '', dirname(PATH_thisScript)) . '/'); define('PATH_site', str_replace(['/wsdl', '/typo3conf/ext/ter'], '', dirname(\TYPO3\CMS\Core\Core\Environment::getCurrentScript())) . '/');
define('PATH_typo3', PATH_site . 'typo3/'); define('PATH_typo3', PATH_site . 'typo3/');
define('PATH_tslib', PATH_typo3 . 'sysext/cms/tslib/');
define('PATH_typo3conf', PATH_site . 'typo3conf/'); define('PATH_typo3conf', PATH_site . 'typo3conf/');
define('TYPO3_mainDir', 'typo3/'); define('TYPO3_mainDir', 'typo3/');
......
...@@ -24,6 +24,7 @@ class ExtensionController ...@@ -24,6 +24,7 @@ class ExtensionController
{ {
/** /**
* TODO: Do we still need this?
* @var \TYPO3\CMS\Core\Database\DatabaseConnection * @var \TYPO3\CMS\Core\Database\DatabaseConnection
*/ */
protected $databaseConnection; protected $databaseConnection;
......
...@@ -15,6 +15,8 @@ namespace T3o\TerFe2\Controller; ...@@ -15,6 +15,8 @@ namespace T3o\TerFe2\Controller;
*/ */
use T3o\TerFe2\Validation\Validator\ComposerNameValidator; use T3o\TerFe2\Validation\Validator\ComposerNameValidator;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
/** /**
* Controller for the extension object * Controller for the extension object
...@@ -579,23 +581,28 @@ class ExtensionController extends \T3o\TerFe2\Controller\AbstractController ...@@ -579,23 +581,28 @@ class ExtensionController extends \T3o\TerFe2\Controller\AbstractController
/** /**
* Check if current frontend user can upload given extension * Check if current frontend user can upload given extension
* *
* There is no better (and faster) way to do this at the momement. * There is no better (and faster) way to do this at the moment.
* *
* @param string $extensionKey The extension key * @param string $extensionKey The extension key
* @return bool TRUE if upload is allowed * @return bool TRUE if upload is allowed
*/ */
protected function userIsAllowedToUploadExtension($extensionKey) protected function userIsAllowedToUploadExtension($extensionKey): bool
{ {
$this->frontendUser = (!empty($GLOBALS['TSFE']->fe_user->user) ? $GLOBALS['TSFE']->fe_user->user : []); $this->frontendUser = (!empty($GLOBALS['TSFE']->fe_user->user) ? $GLOBALS['TSFE']->fe_user->user : []);
if (empty($this->frontendUser['username'])) { if (empty($this->frontendUser['username'])) {
return false; return false;
} }
$isAllowedToUploadKey = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows(
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_ter_extensionkeys');
$isAllowedToUploadKey = $connection->count(
'uid', 'uid',
'tx_ter_extensionkeys', 'tx_ter_extensionkeys',
'ownerusername LIKE "' . $GLOBALS['TYPO3_DB']->quoteStr($this->frontendUser['username'], 'foo') . '" [
AND extensionkey LIKE "' . $GLOBALS['TYPO3_DB']->quoteStr($extensionKey, 'foo') . '"' 'ownerusername' => $this->frontendUser['username'],
'extensionkey' => $extensionKey
]
); );
return !empty($isAllowedToUploadKey); return !empty($isAllowedToUploadKey);
} }
...@@ -614,24 +621,31 @@ class ExtensionController extends \T3o\TerFe2\Controller\AbstractController ...@@ -614,24 +621,31 @@ class ExtensionController extends \T3o\TerFe2\Controller\AbstractController
/** /**
* Check if an version does not exist for extension * Check if an version does not exist for extension
* *
* There is no better (and faster) way to do this at the momement. * There is no better (and faster) way to do this at the moment.
* *
* @param string $extensionKey The extension key * @param string $extensionKey The extension key
* @param string $versionString The extension version * @param string $versionString The extension version
* @return bool TRUE if version already exists * @return bool TRUE if version already exists
*
* TODO: Discuss with Thomas, logic looks incorrect with naming and return value.
*/ */
protected function versionIsPossibleForExtension($extensionKey, $versionString) protected function versionIsPossibleForExtension($extensionKey, $versionString)
{ {
if (empty($extensionKey) || empty($versionString)) { if (empty($extensionKey) || empty($versionString)) {
return false; return false;
} }
$versionExistsForExtension = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows(
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_ter_extensions');
$versionExistsForExtension = $connection->count(
'uid', 'uid',
'tx_ter_extensions', 'tx_ter_extensions',
'extensionkey = "' . $GLOBALS['TYPO3_DB']->quoteStr($extensionKey, 'foo') . '" [
AND version LIKE "' . $GLOBALS['TYPO3_DB']->quoteStr($versionString, 'foo') . '"' 'extensionkey' => $extensionKey,
'version' => $versionString
]
); );
return empty($versionExistsForExtension);
return $versionExistsForExtension;
} }
/** /**
......
...@@ -107,6 +107,19 @@ class ExtensionRepository extends \T3o\TerFe2\Domain\Repository\AbstractReposito ...@@ -107,6 +107,19 @@ class ExtensionRepository extends \T3o\TerFe2\Domain\Repository\AbstractReposito
return $query->execute()->getFirst(); return $query->execute()->getFirst();
} }
/**
* Returns extension by extension key
*
* @param $extensionKey
* @return int
*/
public function countByExtKey($extensionKey)
{
$query = $this->createQuery(0, 1);
$this->match($query, $query->equals('extKey', $extensionKey));
return $query->execute()->count();
}
/** /**
* Returns new and updated extensions * Returns new and updated extensions
* *
......
...@@ -14,6 +14,8 @@ namespace T3o\TerFe2\Provider; ...@@ -14,6 +14,8 @@ namespace T3o\TerFe2\Provider;
* The TYPO3 project - inspiring people to share! * The TYPO3 project - inspiring people to share!
*/ */
use TYPO3\CMS\Core\Utility\GeneralUtility;
/** /**
* Abstract extension provider * Abstract extension provider
*/ */
...@@ -123,7 +125,7 @@ abstract class AbstractProvider implements \T3o\TerFe2\Provider\ProviderInterfac ...@@ -123,7 +125,7 @@ abstract class AbstractProvider implements \T3o\TerFe2\Provider\ProviderInterfac
*/ */
protected function getVersionByRange($version) protected function getVersionByRange($version)
{ {
$version = \TYPO3\CMS\Extbase\Utility\ArrayUtility::trimExplode('-', $version); $version = GeneralUtility::trimExplode('-', $version);
$minimum = (!empty($version[0]) ? \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger($version[0]) : 0); $minimum = (!empty($version[0]) ? \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger($version[0]) : 0);
$maximum = (!empty($version[1]) ? \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger($version[1]) : 0); $maximum = (!empty($version[1]) ? \TYPO3\CMS\Core\Utility\VersionNumberUtility::convertVersionNumberToInteger($version[1]) : 0);
......
...@@ -219,7 +219,7 @@ class MirrorService implements \TYPO3\CMS\Core\SingletonInterface ...@@ -219,7 +219,7 @@ class MirrorService implements \TYPO3\CMS\Core\SingletonInterface
$url = \T3o\TerFe2\Utility\FileUtility::getAbsolutePathFromUrl($url); $url = \T3o\TerFe2\Utility\FileUtility::getAbsolutePathFromUrl($url);
$content = \TYPO3\CMS\Core\Utility\GeneralUtility::getURL($url); $content = \TYPO3\CMS\Core\Utility\GeneralUtility::getURL($url);
} else { } else {
$content = \TYPO3\CMS\Core\Utility\GeneralUtility::getURL($url, 0, [TYPO3_user_agent]); $content = \TYPO3\CMS\Core\Utility\GeneralUtility::getURL($url, 0, $GLOBALS['TYPO3_CONF_VARS']['HTTP']['headers']['User-Agent']);
} }
if (empty($content)) { if (empty($content)) {
......
...@@ -14,6 +14,13 @@ namespace T3o\TerFe2\Task; ...@@ -14,6 +14,13 @@ namespace T3o\TerFe2\Task;
* The TYPO3 project - inspiring people to share! * The TYPO3 project - inspiring people to share!
*/ */
use T3o\TerFe2\Domain\Model\Extension;
use T3o\TerFe2\Domain\Repository\ExtensionRepository;
use TYPO3\CMS\Core\Database\ConnectionPool;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
use TYPO3\CMS\Extensionmanager\Domain\Repository\RepositoryRepository;
/** /**
* This is a one-time task to get all extension keys from ter tables * This is a one-time task to get all extension keys from ter tables
* to the new ter_fe2 tables. * to the new ter_fe2 tables.
...@@ -31,6 +38,24 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -31,6 +38,24 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/ */
protected $pid = 2; protected $pid = 2;
/**
* @var ObjectManager
*/
protected $objectManager;
/**
* @var ExtensionRepository
*/
protected $extensionRepository;
/**
* @param ObjectManager $objectManager
*/
protected function injectObjectManager(ObjectManager $objectManager)
{
$this->objectManager = $objectManager;
}
/** /**
* executes the importer * executes the importer
* *
...@@ -38,6 +63,7 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -38,6 +63,7 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/ */
public function execute() public function execute()
{ {
$this->extensionRepository = $this->objectManager->get(RepositoryRepository::class);
$extensionKeysFromTer = $this->getAllExtensionKeysFromTer(); $extensionKeysFromTer = $this->getAllExtensionKeysFromTer();
foreach ($extensionKeysFromTer as $extensionData) { foreach ($extensionKeysFromTer as $extensionData) {
...@@ -59,31 +85,35 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -59,31 +85,35 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/ */
public function getAllExtensionKeysFromTer(): array public function getAllExtensionKeysFromTer(): array
{ {
$extData = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows( $extData = [];
'*', $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_ter_extensionkeys');
'tx_ter_extensionkeys', $result = $connection->select(
'', ['*'],
false, 'tx_ter_extensionkeys'
'crdate'
); );
while ($row = $result->fetch()) {
$extData[] = $row;
}
return $extData; return $extData;
} }
/** /**
* @param array $extData * @param array $extData
* * @return bool|int
* @return int $uid extension uid * @deprecated Will be removed June 2020
*/ */
public function extensionExists($extData) public function extensionExists($extData)
{ {
$extRec = $GLOBALS['TYPO3_DB']->exec_SELECTgetSingleRow( $extensionRepository = $this->objectManager->get(ExtensionRepository::class);
'uid', $extension = $extensionRepository->findOneByExtKey($extData['extensionkey']);
'tx_terfe2_domain_model_extension',
'NOT deleted AND ext_key = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extData['extensionkey'], 'tx_terfe2_domain_model_extension')
);
return !empty($extRec); if ($extension instanceof Extension) {
return $extension->getUid();
}
return false;
} }
/** /**
...@@ -92,13 +122,8 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -92,13 +122,8 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/ */
public function getVersionCount($extensionKey) public function getVersionCount($extensionKey)
{ {
$versionCounter = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows( $extensionRepository = $this->objectManager->get(ExtensionRepository::class);
'uid', return $extensionRepository->countByExtKey($extensionKey);
'tx_ter_extensions',
'extensionkey = ' . $GLOBALS['TYPO3_DB']->fullQuoteStr($extensionKey, 'tx_ter_extensions')
);
return (int)$versionCounter;
} }
/** /**
...@@ -118,6 +143,10 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task ...@@ -118,6 +143,10 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
]; ];
$GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_terfe2_domain_model_extension', $insertExtension); $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('tx_terfe2_domain_model_extension');
$connection->insert(
'tx_terfe2_domain_model_extension',
$insertExtension
);
} }
} }
...@@ -520,7 +520,7 @@ $EM_CONF[$_EXTKEY] = ' . self::arrayToCode($emConfArray, 0) . '; ...@@ -520,7 +520,7 @@ $EM_CONF[$_EXTKEY] = ' . self::arrayToCode($emConfArray, 0) . ';
} elseif (strlen($k)) { } elseif (strlen($k)) {
$lines .= str_repeat(TAB, $level) . "'" . $k . "' => " $lines .= str_repeat(TAB, $level) . "'" . $k . "' => "
. (\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($v) ? intval($v) : "'" . (\TYPO3\CMS\Core\Utility\MathUtility::canBeInterpretedAsInteger($v) ? intval($v) : "'"
. \TYPO3\CMS\Core\Utility\GeneralUtility::slashJS(trim($v), 1) . "'") . ',' . LF; . str_replace('\\', '\\\\', trim($v))) . ',' . LF;
} }
} }
......
...@@ -47,7 +47,7 @@ class ArrayAssurer extends \PhpParser\NodeVisitorAbstract ...@@ -47,7 +47,7 @@ class ArrayAssurer extends \PhpParser\NodeVisitorAbstract
} }
} }
// We must not have another assignment // We must not have another assignment
throw new \UnexpectedValueException(); return \PhpParser\NodeTraverser::REMOVE_NODE;
} }
if (!( if (!(
$node instanceof Node\Name $node instanceof Node\Name
...@@ -57,9 +57,10 @@ class ArrayAssurer extends \PhpParser\NodeVisitorAbstract ...@@ -57,9 +57,10 @@ class ArrayAssurer extends \PhpParser\NodeVisitorAbstract
|| $node instanceof Expr\ArrayItem || $node instanceof Expr\ArrayItem
|| $node instanceof Expr\ConstFetch || $node instanceof Expr\ConstFetch
|| $node instanceof Expr\Variable || $node instanceof Expr\Variable
|| $node instanceof Node\Stmt\Expression
) )
) { ) {
return false; return \PhpParser\NodeTraverser::REMOVE_NODE;
} }
} }
} }
...@@ -16,7 +16,7 @@ return [ ...@@ -16,7 +16,7 @@ return [
'enablecolumns' => [ 'enablecolumns' => [
'disabled' => 'hidden' 'disabled' => 'hidden'
], ],
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('ter_fe2') . 'Resources/Public/Icons/author.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('ter_fe2')) . 'Resources/Public/Icons/author.gif',
], ],
'interface' => [ 'interface' => [
'showRecordFieldList' => 'name,email,company,forge_link,username,versions,frontend_user,author_type', 'showRecordFieldList' => 'name,email,company,forge_link,username,versions,frontend_user,author_type',
......
...@@ -16,7 +16,7 @@ return [ ...@@ -16,7 +16,7 @@ return [
'enablecolumns' => [ 'enablecolumns' => [
'disabled' => 'hidden' 'disabled' => 'hidden'
], ],
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('ter_fe2') . 'Resources/Public/Icons/extension.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('ter_fe2')) . 'Resources/Public/Icons/extension.gif',
], ],
'interface' => [ 'interface' => [
'showRecordFieldList' => 'ext_key,forge_link,last_update,last_maintained,tags,versions,last_version,frontend_user,downloads,composer_name,repository_url,paypal_url,external_manual,expire', 'showRecordFieldList' => 'ext_key,forge_link,last_update,last_maintained,tags,versions,last_version,frontend_user,downloads,composer_name,repository_url,paypal_url,external_manual,expire',
......
...@@ -16,7 +16,7 @@ return [ ...@@ -16,7 +16,7 @@ return [
'enablecolumns' => [ 'enablecolumns' => [
'disabled' => 'hidden' 'disabled' => 'hidden'
], ],
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('ter_fe2') . 'Resources/Public/Icons/relation.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('ter_fe2')) . 'Resources/Public/Icons/relation.gif',
], ],
'interface' => [ 'interface' => [
'showRecordFieldList' => 'relation_type,relation_key,minimum_version,maximum_version', 'showRecordFieldList' => 'relation_type,relation_key,minimum_version,maximum_version',
......
...@@ -16,7 +16,7 @@ return [ ...@@ -16,7 +16,7 @@ return [
'enablecolumns' => [ 'enablecolumns' => [
'disabled' => 'hidden' 'disabled' => 'hidden'
], ],
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('ter_fe2') . 'Resources/Public/Icons/tag.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('ter_fe2')) . 'Resources/Public/Icons/tag.gif',
], ],
'interface' => [ 'interface' => [
'showRecordFieldList' => 'title,extensions', 'showRecordFieldList' => 'title,extensions',
......
...@@ -18,7 +18,7 @@ return [ ...@@ -18,7 +18,7 @@ return [
'enablecolumns' => [ 'enablecolumns' => [
'disabled' => 'hidden' 'disabled' => 'hidden'
], ],
'iconfile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('ter_fe2') . 'Resources/Public/Icons/version.gif', 'iconfile' => \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('ter_fe2')) . 'Resources/Public/Icons/version.gif',
], ],
'interface' => [ 'interface' => [
'showRecordFieldList' => 'title,description,version_number,version_string,upload_date,upload_comment,download_counter,frontend_download_counter,state,em_category,load_order,priority,shy,internal,do_not_load_in_fe,uploadfolder,clear_cache_on_load,module,create_dirs,modify_tables,lock_type,cgl_compliance,cgl_compliance_note,review_state,manual,has_manual,software_relations,author,file_hash,extension_provider,has_zip_file,has_images,composer_info', 'showRecordFieldList' => 'title,description,version_number,version_string,upload_date,upload_comment,download_counter,frontend_download_counter,state,em_category,load_order,priority,shy,internal,do_not_load_in_fe,uploadfolder,clear_cache_on_load,module,create_dirs,modify_tables,lock_type,cgl_compliance,cgl_compliance_note,review_state,manual,has_manual,software_relations,author,file_hash,extension_provider,has_zip_file,has_images,composer_info',
......
...@@ -73,10 +73,9 @@ class ArchiveUtilityTest extends \Nimut\TestingFramework\TestCase\UnitTestCase ...@@ -73,10 +73,9 @@ class ArchiveUtilityTest extends \Nimut\TestingFramework\TestCase\UnitTestCase
/** /**
* @test * @test
*/ */
public function extractEmConfReturnsSaveArrayOnlyForInvalidNodeFunction() public function extractEmConfReturnsNullForInvalidNodeFunction()
{ {
$code = '<?php $EM_CONF[$_EXTKEY] = array(\'bar\' => \'baz\'); function foo() {} ?>'; $code = '<?php $EM_CONF[$_EXTKEY] = array(\'bar\' => \'baz\'); function foo() {} ?>';
$expected = ['bar' => 'baz'];
$subject = $this->getAccessibleMock( $subject = $this->getAccessibleMock(
\T3o\TerFe2\Utility\ArchiveUtility::class, \T3o\TerFe2\Utility\ArchiveUtility::class,
...@@ -84,8 +83,7 @@ class ArchiveUtilityTest extends \Nimut\TestingFramework\TestCase\UnitTestCase ...@@ -84,8 +83,7 @@ class ArchiveUtilityTest extends \Nimut\TestingFramework\TestCase\UnitTestCase
); );
$emConf = $subject->_call('extractEmConf', $code); $emConf = $subject->_call('extractEmConf', $code);
$this->assertNotNull($emConf); $this->assertNull($emConf);
$this->assertSame($expected, $emConf);
} }
/** /**
......
...@@ -19,7 +19,8 @@ ...@@ -19,7 +19,8 @@
}, },
"license": "GPL-2.0+", "license": "GPL-2.0+",
"require": { "require": {
"typo3/cms-core": ">= 8.7.0, <= 8.7.99" "typo3/cms-core": "^8.7 || ^9.5",
"apache-solr-for-typo3/solr": "^9.0"
}, },
"autoload": { "autoload": {
"psr-4": { "psr-4": {
......
...@@ -31,16 +31,9 @@ $EM_CONF[$_EXTKEY] = [ ...@@ -31,16 +31,9 @@ $EM_CONF[$_EXTKEY] = [
'lockType' => '', 'lockType' => '',
'version' => '0.4.0', 'version' => '0.4.0',
'constraints' => [ 'constraints' => [
'depends' => [ 'depends' => [],
'extbase' => '', 'conflicts' => [],
'fluid' => '', 'suggests' => [],
],
'conflicts' => [
],
'suggests' => [
'em' => '',
'paginate' => '',
],
], ],
'suggests' => [ 'suggests' => [
], ],
......
...@@ -30,7 +30,7 @@ call_user_func(function () { ...@@ -30,7 +30,7 @@ call_user_func(function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(' \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig('
mod.wizards.newContentElement.wizardItems.special {\n mod.wizards.newContentElement.wizardItems.special {\n
elements.' . $extIdent . ' {\n elements.' . $extIdent . ' {\n
icon = ' . \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extRelPath('ter_fe2') . 'Resources/Public/Images/Wizard.gif\n icon = ' . \TYPO3\CMS\Core\Utility\PathUtility::stripPathSitePrefix(\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('ter_fe2')) . 'Resources/Public/Images/Wizard.gif\n
title = LLL:EXT:ter_fe2/Resources/Private/Language/locallang_db.xlf:newContentElement.wizardItem.title\n title = LLL:EXT:ter_fe2/Resources/Private/Language/locallang_db.xlf:newContentElement.wizardItem.title\n
description = LLL:EXT:ter_fe2/Resources/Private/Language/locallang_db.xlf:newContentElement.wizardItem.description\n\n description = LLL:EXT:ter_fe2/Resources/Private/Language/locallang_db.xlf:newContentElement.wizardItem.description\n\n
tt_content_defValues {\n tt_content_defValues {\n
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
}, },
"license": "GPL-2.0+", "license": "GPL-2.0+",
"require": { "require": {
"typo3/cms-core": ">= 8.7.0, <= 8.7.99" "typo3/cms-core": "^8.7 || ^9.5"
}, },
"replace": { "replace": {
"ter_layout": "self.version" "ter_layout": "self.version"
......
...@@ -21,24 +21,76 @@ return [ ...@@ -21,24 +21,76 @@ return [
], ],
'EXT' => [ 'EXT' => [
'extConf' => [ 'extConf' => [
'backend' => 'a:5:{s:9:"loginLogo";s:0:"";s:19:"loginHighlightColor";s:0:"";s:20:"loginBackgroundImage";s:0:"";s:11:"backendLogo";s:0:"";s:14:"backendFavicon";s:0:"";}', 'backend' => 'a:6:{s:9:"loginLogo";s:0:"";s:19:"loginHighlightColor";s:0:"";s:20:"loginBackgroundImage";s:0:"";s:13:"loginFootnote";s:0:"";s:11:"backendLogo";s:0:"";s:14:"backendFavicon";s:0:"";}',
'extensionmanager' => 'a:2:{s:21:"automaticInstallation";s:1:"1";s:11:"offlineMode";s:1:"0";}', 'extensionmanager' => 'a:2:{s:21:"automaticInstallation";s:1:"1";s:11:"offlineMode";s:1:"0";}',
'gridelements' => 'a:3:{s:20:"additionalStylesheet";s:0:"";s:19:"nestingInListModule";s:1:"0";s:26:"overlayShortcutTranslation";s:1:"0";}', 'gridelements' => 'a:6:{s:20:"additionalStylesheet";s:0:"";s:19:"nestingInListModule";s:1:"0";s:26:"overlayShortcutTranslation";s:1:"0";s:19:"disableDragInWizard";s:1:"0";s:25:"disableCopyFromPageButton";s:1:"0";s:38:"disableAutomaticUnusedColumnCorrection";s:1:"0";}',
'ig_ldap_sso_auth' => 'a:18:{s:18:"checkConfiguration";s:1:"0";s:21:"throwExceptionAtLogin";s:1:"1";s:22:"forceLowerCaseUsername";s:1:"1";s:26:"enableBELDAPAuthentication";s:1:"0";s:17:"TYPO3BEGroupExist";s:1:"0";s:16:"TYPO3BEUserExist";s:1:"0";s:10:"BEfailsafe";s:1:"0";s:27:"TYPO3BEGroupsNotSynchronize";s:1:"0";s:12:"keepBEGroups";s:1:"0";s:11:"enableBESSO";s:1:"0";s:26:"enableFELDAPAuthentication";s:1:"1";s:31:"TYPO3FEDeleteUserIfNoLDAPGroups";s:1:"0";s:32:"TYPO3FEDeleteUserIfNoTYPO3Groups";s:1:"0";s:17:"TYPO3FEGroupExist";s:1:"0";s:16:"TYPO3FEUserExist";s:1:"0";s:27:"TYPO3FEGroupsNotSynchronize";s:1:"1";s:12:"keepFEGroups";s:1:"1";s:11:"enableFESSO";s:1:"0";}', 'ig_ldap_sso_auth' => 'a:18:{s:21:"throwExceptionAtLogin";s:1:"1";s:22:"forceLowerCaseUsername";s:1:"0";s:23:"useExtConfConfiguration";s:1:"0";s:26:"enableBELDAPAuthentication";s:1:"0";s:17:"TYPO3BEGroupExist";s:1:"0";s:16:"TYPO3BEUserExist";s:1:"0";s:10:"BEfailsafe";s:1:"0";s:27:"TYPO3BEGroupsNotSynchronize";s:1:"0";s:12:"keepBEGroups";s:1:"0";s:11:"enableBESSO";s:1:"0";s:26:"enableFELDAPAuthentication";s:1:"0";s:31:"TYPO3FEDeleteUserIfNoLDAPGroups";s:1:"0";s:32:"TYPO3FEDeleteUserIfNoTYPO3Groups";s:1:"0";s:17:"TYPO3FEGroupExist";s:1:"0";s:16:"TYPO3FEUserExist";s:1:"0";s:27:"TYPO3FEGroupsNotSynchronize";s:1:"0";s:12:"keepFEGroups";s:1:"0";s:11:"enableFESSO";s:1:"0";}',
'realurl' => 'a:6:{s:10:"configFile";s:34:"typo3conf/RealurlConfiguration.php";s:14:"enableAutoConf";s:1:"1";s:14:"autoConfFormat";s:1:"0";s:17:"segTitleFieldList";s:0:"";s:12:"enableDevLog";s:1:"0";s:10:"moduleIcon";s:1:"0";}', 'scheduler' => 'a:2:{s:11:"maxLifetime";s:4:"1440";s:15:"showSampleTasks";s:1:"1";}',
'rsaauth' => 'a:1:{s:18:"temporaryDirectory";s:0:"";}', 'solr' => 'a:4:{s:35:"useConfigurationFromClosestTemplate";s:1:"0";s:43:"useConfigurationTrackRecordsOutsideSiteroot";s:1:"1";s:29:"useConfigurationMonitorTables";s:0:"";s:27:"allowSelfSignedCertificates";s:1:"0";}',
'rte_ckeditor' => 'a:1:{s:15:"ckeditorVersion";s:1:"1";}', 'ter' => 'a:1:{s:13:"repositoryDir";s:0:"";}',
'saltedpasswords' => 'a:2:{s:3:"BE.";a:4:{s:21:"saltedPWHashingMethod";s:41:"TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt";s:11:"forceSalted";i:0;s:15:"onlyAuthService";i:0;s:12:"updatePasswd";i:1;}s:3:"FE.";a:5:{s:7:"enabled";i:1;s:21:"saltedPWHashingMethod";s:41:"TYPO3\\CMS\\Saltedpasswords\\Salt\\PhpassSalt";s:11:"forceSalted";i:0;s:15:"onlyAuthService";i:0;s:12:"updatePasswd";i:1;}}', ],
'scheduler' => 'a:4:{s:11:"maxLifetime";s:4:"1440";s:11:"enableBELog";s:1:"1";s:15:"showSampleTasks";s:1:"1";s:11:"useAtdaemon";s:1:"0";}', ],
'solr' => 'a:0:{}', 'EXTENSIONS' => [
't3olayout' => 'a:0:{}', 'backend' => [
'ter' => 'a:1:{s:13:"repositoryDir";s:28:"/var/www/html/fileadmin/ter/";}', 'backendFavicon' => '',
'ter_fe2' => 'a:0:{}', 'backendLogo' => '',
'ter_layout' => 'a:0:{}', 'loginBackgroundImage' => '',
'loginFootnote' => '',
'loginHighlightColor' => '',
'loginLogo' => '',
],
'extensionmanager' => [
'automaticInstallation' => '1',
'offlineMode' => '0',
],
'gridelements' => [
'additionalStylesheet' => '',
'disableAutomaticUnusedColumnCorrection' => '0',
'disableCopyFromPageButton' => '0',
'disableDragInWizard' => '0',
'nestingInListModule' => '0',
'overlayShortcutTranslation' => '0',
],
'ig_ldap_sso_auth' => [
'BEfailsafe' => '0',
'TYPO3BEGroupExist' => '0',
'TYPO3BEGroupsNotSynchronize' => '0',
'TYPO3BEUserExist' => '0',
'TYPO3FEDeleteUserIfNoLDAPGroups' => '0',
'TYPO3FEDeleteUserIfNoTYPO3Groups' => '0',
'TYPO3FEGroupExist' => '0',
'TYPO3FEGroupsNotSynchronize' => '0',
'TYPO3FEUserExist' => '0',
'enableBELDAPAuthentication' => '0',
'enableBESSO' => '0',
'enableFELDAPAuthentication' => '0',
'enableFESSO' => '0',
'forceLowerCaseUsername' => '0',
'keepBEGroups' => '0',
'keepFEGroups' => '0',
'throwExceptionAtLogin' => '1',
'useExtConfConfiguration' => '0',
],
'scheduler' => [
'maxLifetime' => '1440',
'showSampleTasks' => '1',
],
'solr' => [
'allowSelfSignedCertificates' => '0',
'useConfigurationFromClosestTemplate' => '0',
'useConfigurationMonitorTables' => '',
'useConfigurationTrackRecordsOutsideSiteroot' => '1',
],
'ter' => [
'repositoryDir' => '',
], ],
], ],
'FE' => [ 'FE' => [
'cHashExcludedParameters' => 'fbclid', 'cacheHash' => [
'excludedParameters' => [
'fbclid',
],
],
'debug' => true, 'debug' => true,
'loginSecurityLevel' => 'normal', 'loginSecurityLevel' => 'normal',
'pageNotFoundOnCHashError' => false, 'pageNotFoundOnCHashError' => false,
...@@ -49,7 +101,7 @@ return [ ...@@ -49,7 +101,7 @@ return [
'processor' => 'ImageMagick', 'processor' => 'ImageMagick',
'processor_allowTemporaryMasksAsPng' => false, 'processor_allowTemporaryMasksAsPng' => false,
'processor_colorspace' => 'sRGB', 'processor_colorspace' => 'sRGB',
'processor_effects' => 1, 'processor_effects' => true,
'processor_enabled' => 1, 'processor_enabled' => 1,
'processor_path' => '/usr/bin/', 'processor_path' => '/usr/bin/',
'processor_path_lzw' => '/usr/bin/', 'processor_path_lzw' => '/usr/bin/',
...@@ -75,13 +127,9 @@ return [ ...@@ -75,13 +127,9 @@ return [
], ],
'devIPmask' => '*', 'devIPmask' => '*',
'displayErrors' => 1, 'displayErrors' => 1,
'enableDeprecationLog' => 'file',
'encryptionKey' => '52fd0fa7b7337befc0840fd8ad8fd8868fc9d98f60ea9b6e737ce732448e80eb35d2662bc15d04eb523171ec727c1dee', 'encryptionKey' => '52fd0fa7b7337befc0840fd8ad8fd8868fc9d98f60ea9b6e737ce732448e80eb35d2662bc15d04eb523171ec727c1dee',
'exceptionalErrors' => 28674, 'exceptionalErrors' => 12290,
'isInitialDatabaseImportDone' => true,
'isInitialInstallationInProgress' => false,
'sitename' => 'Extension', 'sitename' => 'Extension',
'sqlDebug' => 1,
'systemLogLevel' => 0, 'systemLogLevel' => 0,
], ],
]; ];