Skip to content

Commit 3bb039b

Browse files
authored
Merge pull request #23 from dmitryd/TYPO3_9-compatibility
TYPO3 v9 compatibility
2 parents b8496ec + a9b165d commit 3bb039b

File tree

4 files changed

+30
-35
lines changed

4 files changed

+30
-35
lines changed

Classes/OpenidService.php

+3-14
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use TYPO3\CMS\Core\Crypto\Random;
1818
use TYPO3\CMS\Core\Database\Connection;
1919
use TYPO3\CMS\Core\Database\ConnectionPool;
20+
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
2021
use TYPO3\CMS\Core\Service\AbstractService;
2122
use TYPO3\CMS\Core\TimeTracker\TimeTracker;
2223
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
@@ -170,7 +171,6 @@ public function getUser()
170171
}
171172
$userRecord = null;
172173
if ($this->openIDResponse instanceof \Auth_OpenID_ConsumerResponse) {
173-
$GLOBALS['BACK_PATH'] = $this->getBackPath();
174174
// We are running inside the OpenID return script
175175
// Note: we cannot use $this->openIDResponse->getDisplayIdentifier()
176176
// because it may return a different identifier. For example,
@@ -280,6 +280,7 @@ protected function getUserRecord($openIDIdentifier)
280280
$openIDIdentifier = $this->normalizeOpenID($openIDIdentifier);
281281
// $openIDIdentifier always has a trailing slash
282282
// but tx_openid_openid field possibly not so check for both alternatives in database
283+
/** @var QueryBuilder $queryBuilder */
283284
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->authenticationInformation['db_user']['table']);
284285
$queryBuilder->getRestrictions()->removeAll();
285286
$record = $queryBuilder
@@ -475,6 +476,7 @@ protected function normalizeOpenID($openIDIdentifier)
475476
}
476477
// A URI with a missing scheme is normalized to a http URI
477478
if (!preg_match('#^https?://#', $openIDIdentifier)) {
479+
/** @var QueryBuilder $queryBuilder */
478480
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($this->authenticationInformation['db_user']['table']);
479481
$queryBuilder->getRestrictions()->removeAll();
480482
$row = $queryBuilder
@@ -511,19 +513,6 @@ protected function normalizeOpenID($openIDIdentifier)
511513
return $openIDIdentifier;
512514
}
513515

514-
/**
515-
* Calculates the path to the TYPO3 directory from the current directory
516-
*
517-
* @return string
518-
*/
519-
protected function getBackPath()
520-
{
521-
$extPath = ExtensionManagementUtility::siteRelPath('openid');
522-
$segmentCount = count(explode('/', $extPath));
523-
$path = str_pad('', $segmentCount * 3, '../') . TYPO3_mainDir;
524-
return $path;
525-
}
526-
527516
/**
528517
* Obtains a real identifier for the user
529518
*

Classes/OpenidStore.php

+21-13
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
* The TYPO3 project - inspiring people to share!
1515
*/
1616

17+
use TYPO3\CMS\Core\Database\Connection;
1718
use TYPO3\CMS\Core\Database\ConnectionPool;
19+
use TYPO3\CMS\Core\Database\Query\QueryBuilder;
1820
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
1921
use TYPO3\CMS\Core\Utility\GeneralUtility;
2022

@@ -41,38 +43,39 @@ class OpenidStore extends \Auth_OpenID_OpenIDStore
4143
*/
4244
public function storeAssociation($serverUrl, $association)
4345
{
44-
$builder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::ASSOCIATION_TABLE_NAME);
45-
$builder->getRestrictions()->removeAll();
46+
/** @var QueryBuilder $queryBuilder */
47+
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::ASSOCIATION_TABLE_NAME);
48+
$queryBuilder->getRestrictions()->removeAll();
4649

47-
$builder->getConnection()->beginTransaction();
50+
$queryBuilder->getConnection()->beginTransaction();
4851

49-
$existingAssociations = $builder
52+
$existingAssociations = $queryBuilder
5053
->count('*')
5154
->from(self::ASSOCIATION_TABLE_NAME)
5255
->where(
53-
$builder->expr()->eq('server_url', $builder->createNamedParameter($serverUrl)),
54-
$builder->expr()->eq('assoc_handle', $builder->createNamedParameter($association->handle)),
55-
$builder->expr()->eq('expires', $builder->createNamedParameter(time(), \PDO::PARAM_INT))
56+
$queryBuilder->expr()->eq('server_url', $queryBuilder->createNamedParameter($serverUrl)),
57+
$queryBuilder->expr()->eq('assoc_handle', $queryBuilder->createNamedParameter($association->handle)),
58+
$queryBuilder->expr()->eq('expires', $queryBuilder->createNamedParameter(time(), \PDO::PARAM_INT))
5659
)
5760
->execute()
5861
->fetchColumn();
5962

6063
if ($existingAssociations) {
61-
$builder
64+
$queryBuilder
6265
->update(self::ASSOCIATION_TABLE_NAME)
6366
->values([
6467
'content' => base64_encode(serialize($association)),
6568
'tstamp' => time()
6669
])
6770
->where(
68-
$builder->expr()->eq('server_url', $builder->createNamedParameter($serverUrl)),
69-
$builder->expr()->eq('assoc_handle', $builder->createNamedParameter($association->handle)),
70-
$builder->expr()->eq('expires', $builder->createNamedParameter(time(), \PDO::PARAM_INT))
71+
$queryBuilder->expr()->eq('server_url', $queryBuilder->createNamedParameter($serverUrl)),
72+
$queryBuilder->expr()->eq('assoc_handle', $queryBuilder->createNamedParameter($association->handle)),
73+
$queryBuilder->expr()->eq('expires', $queryBuilder->createNamedParameter(time(), \PDO::PARAM_INT))
7174
)
7275
->execute();
7376
} else {
7477
// In the next query we can get race conditions. sha1_hash prevents many associations from being stored for one server
75-
$builder
78+
$queryBuilder
7679
->insert(self::ASSOCIATION_TABLE_NAME)
7780
->values([
7881
'assoc_handle' => $association->handle,
@@ -85,7 +88,7 @@ public function storeAssociation($serverUrl, $association)
8588
->execute();
8689
}
8790

88-
$builder->getConnection()->commit();
91+
$queryBuilder->getConnection()->commit();
8992
}
9093

9194
/**
@@ -95,6 +98,7 @@ public function storeAssociation($serverUrl, $association)
9598
*/
9699
public function cleanupAssociations()
97100
{
101+
/** @var QueryBuilder $queryBuilder */
98102
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::ASSOCIATION_TABLE_NAME);
99103
$queryBuilder->getRestrictions()->removeAll();
100104
return $queryBuilder->delete(self::ASSOCIATION_TABLE_NAME)->where('expires <= ' . time())->execute();
@@ -110,6 +114,7 @@ public function cleanupAssociations()
110114
public function getAssociation($serverUrl, $handle = null)
111115
{
112116
$this->cleanupAssociations();
117+
/** @var QueryBuilder $queryBuilder */
113118
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::ASSOCIATION_TABLE_NAME);
114119
$queryBuilder->getRestrictions()->removeAll();
115120
$queryBuilder->select('uid', 'content')->from(self::ASSOCIATION_TABLE_NAME)->where(
@@ -147,6 +152,7 @@ public function getAssociation($serverUrl, $handle = null)
147152
*/
148153
public function removeAssociation($serverUrl, $handle)
149154
{
155+
/** @var QueryBuilder $queryBuilder */
150156
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::ASSOCIATION_TABLE_NAME);
151157
$queryBuilder->getRestrictions()->removeAll();
152158
$deletedCount = $queryBuilder
@@ -166,6 +172,7 @@ public function removeAssociation($serverUrl, $handle)
166172
public function cleanupNonces()
167173
{
168174
$where = 'crdate < ' . (time() - self::NONCE_STORAGE_TIME);
175+
/** @var QueryBuilder $queryBuilder */
169176
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable(self::NONCE_TABLE_NAME);
170177
$queryBuilder->getRestrictions()->removeAll();
171178
$queryBuilder->delete(self::NONCE_TABLE_NAME)->where($where)->execute();
@@ -189,6 +196,7 @@ public function useNonce($serverUrl, $timestamp, $salt)
189196
'server_url' => $serverUrl,
190197
'tstamp' => $timestamp
191198
];
199+
/** @var Connection $connection */
192200
$connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable(self::NONCE_TABLE_NAME);
193201
$affectedRows = $connection->createQueryBuilder()->insert(self::NONCE_TABLE_NAME)->values($values)->execute();
194202
$result = $affectedRows > 0;

composer.json

+3-4
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"authors": [
99
{
1010
"name": "Dmitry Dulepov",
11-
"email": "dmitry@typo3.org",
11+
"email": "dmitry[email protected]",
1212
"role": "Developer"
1313
},
1414
{
@@ -21,9 +21,8 @@
2121
"ext-gmp": "*",
2222
"ext-curl": "*",
2323
"ext-dom": "*",
24-
"typo3/cms-core": "~8.5",
25-
"typo3/cms-sv": "~8.5",
26-
"typo3/cms-setup": "~8.5"
24+
"typo3/cms-core": ">=8.7.19,<=9.5.999",
25+
"typo3/cms-setup": ">=8.7.19,<=9.5.999"
2726
},
2827
"replace": {
2928
"openid": "self.version",

ext_emconf.php

+3-4
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,11 @@
88
'uploadfolder' => 0,
99
'createDirs' => '',
1010
'clearCacheOnLoad' => 0,
11-
'version' => '8.0.2',
11+
'version' => '9.5.0',
1212
'constraints' => [
1313
'depends' => [
14-
'typo3' => '8.7.0-8.7.99',
15-
'sv' => '8.7.0-8.7.99',
16-
'setup' => '8.7.0-8.7.99',
14+
'typo3' => '8.7.19-9.5.999',
15+
'setup' => '8.7.19-9.5.999',
1716
],
1817
'conflicts' => [
1918
'naw_openid' => '',

0 commit comments

Comments
 (0)