Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
E
extensions.typo3.org
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
62
Issues
62
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
9
Merge Requests
9
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
services
extensions.typo3.org
extensions.typo3.org
Commits
d67a854c
Commit
d67a854c
authored
Nov 04, 2019
by
Thomas Löffler
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'TYPO3V9/ter_fe2' into task/update-solr
parents
3c886716
b1880fd2
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
200 additions
and
103 deletions
+200
-103
composer.lock
composer.lock
+5
-5
extensions/ter/Classes/Configuration/ExtConf.php
extensions/ter/Classes/Configuration/ExtConf.php
+1
-1
extensions/ter/Classes/Task/UpdateCurrentVersionListTask.php
extensions/ter/Classes/Task/UpdateCurrentVersionListTask.php
+5
-4
extensions/ter/Configuration/TCA/tx_ter_extensiondetails.php
extensions/ter/Configuration/TCA/tx_ter_extensiondetails.php
+1
-1
extensions/ter/Configuration/TCA/tx_ter_extensionkeys.php
extensions/ter/Configuration/TCA/tx_ter_extensionkeys.php
+1
-1
extensions/ter/Configuration/TCA/tx_ter_extensionmembers.php
extensions/ter/Configuration/TCA/tx_ter_extensionmembers.php
+1
-1
extensions/ter/Configuration/TCA/tx_ter_extensionqueue.php
extensions/ter/Configuration/TCA/tx_ter_extensionqueue.php
+1
-1
extensions/ter/Configuration/TCA/tx_ter_extensions.php
extensions/ter/Configuration/TCA/tx_ter_extensions.php
+1
-1
extensions/ter/class.tx_ter_tcaLabel.php
extensions/ter/class.tx_ter_tcaLabel.php
+8
-5
extensions/ter/ext_emconf.php
extensions/ter/ext_emconf.php
+1
-3
extensions/ter/pi1/class.tx_ter_pi1.php
extensions/ter/pi1/class.tx_ter_pi1.php
+1
-6
extensions/ter/tx_ter_wsdl.php
extensions/ter/tx_ter_wsdl.php
+1
-2
extensions/ter_fe2/Classes/Controller/Eid/ExtensionController.php
...ns/ter_fe2/Classes/Controller/Eid/ExtensionController.php
+1
-0
extensions/ter_fe2/Classes/Controller/ExtensionController.php
...nsions/ter_fe2/Classes/Controller/ExtensionController.php
+24
-10
extensions/ter_fe2/Classes/Domain/Repository/ExtensionRepository.php
...ter_fe2/Classes/Domain/Repository/ExtensionRepository.php
+13
-0
extensions/ter_fe2/Classes/Provider/AbstractProvider.php
extensions/ter_fe2/Classes/Provider/AbstractProvider.php
+3
-1
extensions/ter_fe2/Classes/Service/MirrorService.php
extensions/ter_fe2/Classes/Service/MirrorService.php
+1
-1
extensions/ter_fe2/Classes/Task/ImportAllExtensionKeysTask.php
...sions/ter_fe2/Classes/Task/ImportAllExtensionKeysTask.php
+51
-22
extensions/ter_fe2/Classes/Utility/FileUtility.php
extensions/ter_fe2/Classes/Utility/FileUtility.php
+1
-1
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_author.php
...r_fe2/Configuration/TCA/tx_terfe2_domain_model_author.php
+1
-1
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_extension.php
...e2/Configuration/TCA/tx_terfe2_domain_model_extension.php
+1
-1
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_relation.php
...fe2/Configuration/TCA/tx_terfe2_domain_model_relation.php
+1
-1
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_tag.php
.../ter_fe2/Configuration/TCA/tx_terfe2_domain_model_tag.php
+1
-1
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_version.php
..._fe2/Configuration/TCA/tx_terfe2_domain_model_version.php
+1
-1
extensions/ter_fe2/composer.json
extensions/ter_fe2/composer.json
+2
-1
extensions/ter_fe2/ext_emconf.php
extensions/ter_fe2/ext_emconf.php
+3
-10
extensions/ter_fe2/ext_tables.php
extensions/ter_fe2/ext_tables.php
+1
-1
private/typo3conf/LocalConfiguration.php
private/typo3conf/LocalConfiguration.php
+68
-20
No files found.
composer.lock
View file @
d67a854c
...
...
@@ -3113,11 +3113,11 @@
},
{
"name": "t3o/gitlab_api",
"version": "1.
0.2
",
"version": "1.
1.0
",
"source": {
"type": "git",
"url": "https://git-t3o.typo3.org/t3o/gitlab_api.git",
"reference": "
89d77f24e1f5a19823e64db7b0346acda9476775
"
"reference": "
4eba61d5fc46bce200f44fabff25e800d69e9611
"
},
"replace": {
"gitlab_api": "self.version",
...
...
@@ -3132,7 +3132,7 @@
"keywords": [
"TYPO3 CMS"
],
"time": "201
8-04-11T09:12:14
+00:00"
"time": "201
9-08-08T12:20:59
+00:00"
},
{
"name": "t3o/t3olayout",
...
...
@@ -3140,7 +3140,7 @@
"source": {
"type": "git",
"url": "https://git-t3o.typo3.org/t3o/t3olayout.git",
"reference": "
d8a0598bd4e35a843888ec6dcf3add85796be2fd
"
"reference": "
654d258aca85468439fb797cabd3852fe0768958
"
},
"require": {
"causal/ig_ldap_sso_auth": "^3.4",
...
...
@@ -3189,7 +3189,7 @@
"keywords": [
"TYPO3 CMS"
],
"time": "2019-08-0
2T21:41:3
4+00:00"
"time": "2019-08-0
8T12:24:4
4+00:00"
},
{
"name": "t3o/ter-frontend",
...
...
extensions/ter/Classes/Configuration/ExtConf.php
View file @
d67a854c
...
...
@@ -36,7 +36,7 @@ class ExtConf implements SingletonInterface
public
function
__construct
()
{
// 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
))
{
// call setter method foreach configuration entry
foreach
(
$extConf
as
$key
=>
$value
)
{
...
...
extensions/ter/Classes/Task/UpdateCurrentVersionListTask.php
View file @
d67a854c
...
...
@@ -14,6 +14,7 @@ namespace T3o\Ter\Task;
* The TYPO3 project - inspiring people to share!
*/
use
TYPO3\CMS\Core\Core\Environment
;
use
TYPO3\CMS\Core\Utility\GeneralUtility
;
/**
...
...
@@ -42,7 +43,7 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task
protected
function
fetchCurrentCoreData
()
{
$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'
);
if
(
json_decode
(
$sourceData
,
true
)
!==
null
)
{
$result
=
GeneralUtility
::
writeFile
(
$targetFile
,
$sourceData
);
...
...
@@ -57,7 +58,7 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task
protected
function
fetchCurrentDocumentationData
()
{
$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'
);
if
(
json_decode
(
$sourceData
,
true
)
!==
null
)
{
$result
=
GeneralUtility
::
writeFile
(
$targetFile
,
$sourceData
);
...
...
@@ -76,12 +77,12 @@ class UpdateCurrentVersionListTask extends \TYPO3\CMS\Extbase\Scheduler\Task
protected
function
generateExtensionFilesForExtensionManager
():
bool
{
// Check extension configuration
if
(
empty
(
$GLOBALS
[
'TYPO3_CONF_VARS'
][
'EXT
'
][
'extConf
'
][
'ter'
]))
{
if
(
empty
(
$GLOBALS
[
'TYPO3_CONF_VARS'
][
'EXT
ENSIONS
'
][
'ter'
]))
{
throw
new
\
Exception
(
'No extension configuration found in $TYPO3_CONF_VARS'
,
1303220916
);
}
// Check extension repository path
$extensionConfig
=
unserialize
(
$GLOBALS
[
'TYPO3_CONF_VARS'
][
'EXT'
][
'extConf'
][
'ter'
])
;
$extensionConfig
=
$GLOBALS
[
'TYPO3_CONF_VARS'
][
'EXTENSIONS'
][
'ter'
]
;
if
(
empty
(
$extensionConfig
[
'repositoryDir'
]))
{
throw
new
\
Exception
(
'No repository path found in extension configuration'
,
1303220917
);
}
...
...
extensions/ter/Configuration/TCA/tx_ter_extensiondetails.php
View file @
d67a854c
...
...
@@ -19,7 +19,7 @@ return [
'label_userFunc'
=>
'EXT:ter/class.tx_ter_tcaLabel.php:tx_ter_tcaLabel->getExtensionKey'
,
'default_sortby'
=>
'ORDER BY extensionuid'
,
'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
,
],
'interface'
=>
[
...
...
extensions/ter/Configuration/TCA/tx_ter_extensionkeys.php
View file @
d67a854c
...
...
@@ -20,7 +20,7 @@ return [
'tstamp'
=>
'tstamp'
,
'crdate'
=>
'crdate'
,
'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
,
],
'interface'
=>
[
...
...
extensions/ter/Configuration/TCA/tx_ter_extensionmembers.php
View file @
d67a854c
...
...
@@ -18,7 +18,7 @@ return [
'label'
=>
'extensionkey'
,
'default_sortby'
=>
'ORDER BY extensionkey'
,
'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
,
],
'interface'
=>
[
...
...
extensions/ter/Configuration/TCA/tx_ter_extensionqueue.php
View file @
d67a854c
...
...
@@ -21,7 +21,7 @@ return [
'tstamp'
=>
'tstamp'
,
'delete'
=>
'deleted'
,
'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
,
],
'interface'
=>
[
...
...
extensions/ter/Configuration/TCA/tx_ter_extensions.php
View file @
d67a854c
...
...
@@ -20,7 +20,7 @@ return [
'tstamp'
=>
'tstamp'
,
'crdate'
=>
'crdate'
,
'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
,
],
'interface'
=>
[
...
...
extensions/ter/class.tx_ter_tcaLabel.php
View file @
d67a854c
...
...
@@ -33,11 +33,14 @@ class tx_ter_tcaLabel
return
;
}
$result
=
$GLOBALS
[
'TYPO3_DB'
]
->
exec_SELECTgetSingleRow
(
'extensionkey'
,
'tx_ter_extensions'
,
'uid='
.
(
int
)
$params
[
'row'
][
'uid'
]
);
$result
=
\
TYPO3\CMS\Core\Utility\GeneralUtility
::
makeInstance
(
\
TYPO3\CMS\Core\Database\ConnectionPool
::
class
)
->
getConnectionForTable
(
'tx_ter_extensions'
)
->
select
(
[
'extensionkey'
],
'tx_ter_extensions'
,
[
'uid = '
.
(
int
)
$params
[
'row'
][
'uid'
]]
)
->
fetch
();
if
(
!
empty
(
$result
[
'extensionkey'
]))
{
$params
[
'title'
]
=
htmlspecialchars
(
$result
[
'extensionkey'
]);
...
...
extensions/ter/ext_emconf.php
View file @
d67a854c
...
...
@@ -28,9 +28,7 @@ $EM_CONF[$_EXTKEY] = [
'author_company'
=>
'TYPO3 Association'
,
'version'
=>
'2.0.9'
,
'constraints'
=>
[
'depends'
=>
[
'saltedpasswords'
=>
''
,
],
'depends'
=>
[],
'conflicts'
=>
[],
'suggests'
=>
[],
],
...
...
extensions/ter/pi1/class.tx_ter_pi1.php
View file @
d67a854c
...
...
@@ -30,11 +30,8 @@
* TOTAL FUNCTIONS: 1
* (This index is automatically created/updated by the extension "extdeveval")
*/
use
TYPO3\CMS\Core\Utility\ExtensionManagementUtility
;
use
TYPO3\CMS\Frontend\Plugin\AbstractPlugin
;
require_once
(
ExtensionManagementUtility
::
extPath
(
'ter'
)
.
'class.tx_ter_api.php'
);
/**
* TYPO3 Extension Repository, frontend plugin for SOAP service
*
...
...
@@ -50,14 +47,12 @@ class tx_ter_pi1 extends AbstractPlugin
public
function
main
(
$content
,
$conf
)
{
global
$TSFE
;
$this
->
pi_initPIflexForm
();
$this
->
conf
=
$conf
;
$this
->
extensionsPID
=
$conf
[
'pid'
];
$this
->
wsdlNamespace
=
$conf
[
'wsdlNamespace'
];
$staticConfArr
=
unserialize
(
$GLOBALS
[
'TYPO3_CONF_VARS'
][
'EXT'
][
'extConf'
][
'ter'
])
;
$staticConfArr
=
$GLOBALS
[
'TYPO3_CONF_VARS'
][
'EXTENSIONS'
][
'ter'
]
;
if
(
is_array
(
$staticConfArr
))
{
$this
->
repositoryDir
=
$staticConfArr
[
'repositoryDir'
];
if
(
substr
(
$this
->
repositoryDir
,
-
1
,
1
)
!=
'/'
)
{
...
...
extensions/ter/tx_ter_wsdl.php
View file @
d67a854c
...
...
@@ -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'
])
)));
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_tslib'
,
PATH_typo3
.
'sysext/cms/tslib/'
);
define
(
'PATH_typo3conf'
,
PATH_site
.
'typo3conf/'
);
define
(
'TYPO3_mainDir'
,
'typo3/'
);
...
...
extensions/ter_fe2/Classes/Controller/Eid/ExtensionController.php
View file @
d67a854c
...
...
@@ -24,6 +24,7 @@ class ExtensionController
{
/**
* TODO: Do we still need this?
* @var \TYPO3\CMS\Core\Database\DatabaseConnection
*/
protected
$databaseConnection
;
...
...
extensions/ter_fe2/Classes/Controller/ExtensionController.php
View file @
d67a854c
...
...
@@ -15,6 +15,8 @@ namespace T3o\TerFe2\Controller;
*/
use
T3o\TerFe2\Validation\Validator\ComposerNameValidator
;
use
TYPO3\CMS\Core\Database\ConnectionPool
;
use
TYPO3\CMS\Core\Utility\GeneralUtility
;
/**
* Controller for the extension object
...
...
@@ -579,23 +581,28 @@ class ExtensionController extends \T3o\TerFe2\Controller\AbstractController
/**
* Check if current frontend user can upload given extension
*
* There is no better (and faster) way to do this at the mome
me
nt.
* There is no better (and faster) way to do this at the moment.
*
* @param string $extensionKey The extension key
* @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
:
[]);
if
(
empty
(
$this
->
frontendUser
[
'username'
]))
{
return
false
;
}
$isAllowedToUploadKey
=
$GLOBALS
[
'TYPO3_DB'
]
->
exec_SELECTcountRows
(
$connection
=
GeneralUtility
::
makeInstance
(
ConnectionPool
::
class
)
->
getConnectionForTable
(
'tx_ter_extensionkeys'
);
$isAllowedToUploadKey
=
$connection
->
count
(
'uid'
,
'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
);
}
...
...
@@ -614,24 +621,31 @@ class ExtensionController extends \T3o\TerFe2\Controller\AbstractController
/**
* Check if an version does not exist for extension
*
* There is no better (and faster) way to do this at the mome
me
nt.
* There is no better (and faster) way to do this at the moment.
*
* @param string $extensionKey The extension key
* @param string $versionString The extension version
* @return bool TRUE if version already exists
*
* TODO: Discuss with Thomas, logic looks incorrect with naming and return value.
*/
protected
function
versionIsPossibleForExtension
(
$extensionKey
,
$versionString
)
{
if
(
empty
(
$extensionKey
)
||
empty
(
$versionString
))
{
return
false
;
}
$versionExistsForExtension
=
$GLOBALS
[
'TYPO3_DB'
]
->
exec_SELECTcountRows
(
$connection
=
GeneralUtility
::
makeInstance
(
ConnectionPool
::
class
)
->
getConnectionForTable
(
'tx_ter_extensions'
);
$versionExistsForExtension
=
$connection
->
count
(
'uid'
,
'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
;
}
/**
...
...
extensions/ter_fe2/Classes/Domain/Repository/ExtensionRepository.php
View file @
d67a854c
...
...
@@ -107,6 +107,19 @@ class ExtensionRepository extends \T3o\TerFe2\Domain\Repository\AbstractReposito
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
*
...
...
extensions/ter_fe2/Classes/Provider/AbstractProvider.php
View file @
d67a854c
...
...
@@ -14,6 +14,8 @@ namespace T3o\TerFe2\Provider;
* The TYPO3 project - inspiring people to share!
*/
use
TYPO3\CMS\Core\Utility\GeneralUtility
;
/**
* Abstract extension provider
*/
...
...
@@ -123,7 +125,7 @@ abstract class AbstractProvider implements \T3o\TerFe2\Provider\ProviderInterfac
*/
protected
function
getVersionByRange
(
$version
)
{
$version
=
\
TYPO3\CMS\Extbase\Utility\Array
Utility
::
trimExplode
(
'-'
,
$version
);
$version
=
General
Utility
::
trimExplode
(
'-'
,
$version
);
$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
);
...
...
extensions/ter_fe2/Classes/Service/MirrorService.php
View file @
d67a854c
...
...
@@ -219,7 +219,7 @@ class MirrorService implements \TYPO3\CMS\Core\SingletonInterface
$url
=
\
T3o\TerFe2\Utility\FileUtility
::
getAbsolutePathFromUrl
(
$url
);
$content
=
\
TYPO3\CMS\Core\Utility\GeneralUtility
::
getURL
(
$url
);
}
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
))
{
...
...
extensions/ter_fe2/Classes/Task/ImportAllExtensionKeysTask.php
View file @
d67a854c
...
...
@@ -14,6 +14,13 @@ namespace T3o\TerFe2\Task;
* 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
* to the new ter_fe2 tables.
...
...
@@ -31,6 +38,24 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/
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
*
...
...
@@ -38,6 +63,7 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/
public
function
execute
()
{
$this
->
extensionRepository
=
$this
->
objectManager
->
get
(
RepositoryRepository
::
class
);
$extensionKeysFromTer
=
$this
->
getAllExtensionKeysFromTer
();
foreach
(
$extensionKeysFromTer
as
$extensionData
)
{
...
...
@@ -59,31 +85,35 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/
public
function
getAllExtensionKeysFromTer
():
array
{
$extData
=
$GLOBALS
[
'TYPO3_DB'
]
->
exec_SELECTgetRows
(
'*'
,
'tx_ter_extensionkeys'
,
''
,
false
,
'crdate'
$extData
=
[];
$connection
=
GeneralUtility
::
makeInstance
(
ConnectionPool
::
class
)
->
getConnectionForTable
(
'tx_ter_extensionkeys'
);
$result
=
$connection
->
select
(
[
'*'
],
'tx_ter_extensionkeys'
);
while
(
$row
=
$result
->
fetch
())
{
$extData
[]
=
$row
;
}
return
$extData
;
}
/**
* @param array $extData
*
* @
return int $uid extension uid
*
@return bool|int
* @
deprecated Will be removed June 2020
*/
public
function
extensionExists
(
$extData
)
{
$extRec
=
$GLOBALS
[
'TYPO3_DB'
]
->
exec_SELECTgetSingleRow
(
'uid'
,
'tx_terfe2_domain_model_extension'
,
'NOT deleted AND ext_key = '
.
$GLOBALS
[
'TYPO3_DB'
]
->
fullQuoteStr
(
$extData
[
'extensionkey'
],
'tx_terfe2_domain_model_extension'
)
);
$extensionRepository
=
$this
->
objectManager
->
get
(
ExtensionRepository
::
class
);
$extension
=
$extensionRepository
->
findOneByExtKey
(
$extData
[
'extensionkey'
]);
return
!
empty
(
$extRec
);
if
(
$extension
instanceof
Extension
)
{
return
$extension
->
getUid
();
}
return
false
;
}
/**
...
...
@@ -92,13 +122,8 @@ class ImportAllExtensionKeysTask extends \TYPO3\CMS\Extbase\Scheduler\Task
*/
public
function
getVersionCount
(
$extensionKey
)
{
$versionCounter
=
$GLOBALS
[
'TYPO3_DB'
]
->
exec_SELECTcountRows
(
'uid'
,
'tx_ter_extensions'
,
'extensionkey = '
.
$GLOBALS
[
'TYPO3_DB'
]
->
fullQuoteStr
(
$extensionKey
,
'tx_ter_extensions'
)
);
return
(
int
)
$versionCounter
;
$extensionRepository
=
$this
->
objectManager
->
get
(
ExtensionRepository
::
class
);
return
$extensionRepository
->
countByExtKey
(
$extensionKey
);
}
/**
...
...
@@ -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
);
}
}
extensions/ter_fe2/Classes/Utility/FileUtility.php
View file @
d67a854c
...
...
@@ -520,7 +520,7 @@ $EM_CONF[$_EXTKEY] = ' . self::arrayToCode($emConfArray, 0) . ';
}
elseif
(
strlen
(
$k
))
{
$lines
.
=
str_repeat
(
TAB
,
$level
)
.
"'"
.
$k
.
"' => "
.
(
\
TYPO3\CMS\Core\Utility\MathUtility
::
canBeInterpretedAsInteger
(
$v
)
?
intval
(
$v
)
:
"'"
.
\
TYPO3\CMS\Core\Utility\GeneralUtility
::
slashJS
(
trim
(
$v
),
1
)
.
"'"
)
.
','
.
LF
;
.
str_replace
(
'\\'
,
'\\\\'
,
trim
(
$v
))
)
.
','
.
LF
;
}
}
...
...
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_author.php
View file @
d67a854c
...
...
@@ -16,7 +16,7 @@ return [
'enablecolumns'
=>
[
'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'
=>
[
'showRecordFieldList'
=>
'name,email,company,forge_link,username,versions,frontend_user,author_type'
,
...
...
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_extension.php
View file @
d67a854c
...
...
@@ -16,7 +16,7 @@ return [
'enablecolumns'
=>
[
'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'
=>
[
'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'
,
...
...
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_relation.php
View file @
d67a854c
...
...
@@ -16,7 +16,7 @@ return [
'enablecolumns'
=>
[
'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'
=>
[
'showRecordFieldList'
=>
'relation_type,relation_key,minimum_version,maximum_version'
,
...
...
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_tag.php
View file @
d67a854c
...
...
@@ -16,7 +16,7 @@ return [
'enablecolumns'
=>
[
'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'
=>
[
'showRecordFieldList'
=>
'title,extensions'
,
...
...
extensions/ter_fe2/Configuration/TCA/tx_terfe2_domain_model_version.php
View file @
d67a854c
...
...
@@ -18,7 +18,7 @@ return [
'enablecolumns'
=>
[
'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'
=>
[
'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'
,
...
...
extensions/ter_fe2/composer.json
View file @
d67a854c
...
...
@@ -19,7 +19,8 @@
},
"license"
:
"GPL-2.0+"
,
"require"
:
{
"typo3/cms-core"
:
"^8.7 || ^9.5"
"typo3/cms-core"
:
"^8.7 || ^9.5"
,
"apache-solr-for-typo3/solr"
:
"^9.0"
},
"autoload"
:
{
"psr-4"
:
{
...
...
extensions/ter_fe2/ext_emconf.php
View file @
d67a854c
...
...
@@ -31,16 +31,9 @@ $EM_CONF[$_EXTKEY] = [
'lockType'
=>
''
,
'version'
=>
'0.4.0'
,
'constraints'
=>
[
'depends'
=>
[
'extbase'
=>
''
,
'fluid'
=>
''
,
],
'conflicts'
=>
[
],
'suggests'
=>
[
'em'
=>
''
,
'paginate'
=>
''
,
],
'depends'
=>
[],
'conflicts'
=>
[],
'suggests'
=>
[],
],
'suggests'
=>
[
],
...
...
extensions/ter_fe2/ext_tables.php
View file @
d67a854c
...
...
@@ -30,7 +30,7 @@ call_user_func(function () {
\
TYPO3\CMS\Core\Utility\ExtensionManagementUtility
::
addPageTSConfig
(
'
mod.wizards.newContentElement.wizardItems.special {\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
description = LLL:EXT:ter_fe2/Resources/Private/Language/locallang_db.xlf:newContentElement.wizardItem.description\n\n
tt_content_defValues {\n
...
...
private/typo3conf/LocalConfiguration.php
View file @
d67a854c
...
...
@@ -21,24 +21,76 @@ return [
],
'EXT'
=>
[
'extConf'
=>
[
'backend'
=>
'a:
5:{s:9:"loginLogo";s:0:"";s:19:"loginHighlightColor";s:0:"";s:20:"loginBackgroundImag
e";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:"loginFootnot
e";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";}'
,
'gridelements'
=>
'a:3:{s:20:"additionalStylesheet";s:0:"";s:19:"nestingInListModule";s:1:"0";s:26:"overlayShortcutTranslation";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";}'
,
'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";}'
,
'rsaauth'
=>
'a:1:{s:18:"temporaryDirectory";s:0:"";}'
,
'rte_ckeditor'
=>
'a:1:{s:15:"ckeditorVersion";s:1:"1";}'
,
'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:{}'
,
't3olayout'
=>
'a:0:{}'
,
'ter'
=>
'a:1:{s:13:"repositoryDir";s:28:"/var/www/html/fileadmin/ter/";}'
,
'ter_fe2'
=>
'a:0:{}'
,
'ter_layout'
=>
'a: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: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";}'
,
'scheduler'
=>
'a:2:{s:11:"maxLifetime";s:4:"1440";s:15:"showSampleTasks";s:1:"1";}'
,
'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";}'
,
'ter'
=>
'a:1:{s:13:"repositoryDir";s:0:"";}'
,
],
],
'EXTENSIONS'
=>
[
'backend'
=>
[
'backendFavicon'
=>
''
,
'backendLogo'
=>
''
,
'loginBackgroundImage'
=>
''
,
'loginFootnote'
=>
''
,
'loginHighlightColor'
=>
''
,
'loginLogo'
=>
''
,