99 * the terms of the GNU General Public License, either version 2
1010 * of the License, or any later version.
1111 */
12-
1312use TYPO3 \CMS \Core \Cache \Frontend \FrontendInterface ;
1413use TYPO3 \CMS \Core \Configuration \ExtensionConfiguration ;
14+ use TYPO3 \CMS \Core \Database \Connection ;
1515use TYPO3 \CMS \Core \Database \ConnectionPool ;
1616use TYPO3 \CMS \Core \Database \Query \QueryHelper ;
1717use TYPO3 \CMS \Core \Database \Query \Restriction \DeletedRestriction ;
@@ -33,7 +33,8 @@ class GeoService implements SingletonInterface
3333 public function __construct (
3434 protected readonly FrontendInterface $ cache ,
3535 protected readonly ExtensionConfiguration $ extensionConfiguration ,
36- protected readonly RequestFactory $ requestFactory
36+ protected readonly RequestFactory $ requestFactory ,
37+ private readonly ConnectionPool $ connectionPool
3738 ) {
3839 $ geoCodingConfig = $ extensionConfiguration ->get ('geocoding ' );
3940 // load from extension configuration
@@ -68,7 +69,7 @@ public function getCoordinatesForAddress(?string $street = null, ?string $zip =
6869 }
6970
7071 $ address = ltrim (implode (', ' , $ addressParts ), ', ' );
71- if (empty ( $ address) ) {
72+ if ($ address === '' || $ address === ' 0 ' ) {
7273 return [];
7374 }
7475
@@ -115,7 +116,7 @@ public function calculateCoordinatesForAllRecordsInTable(
115116 string $ addWhereClause = ''
116117 ): int {
117118 // Fetch all records without latitude/longitude
118- $ connection = GeneralUtility:: makeInstance (ConnectionPool::class) ->getConnectionForTable ($ tableName );
119+ $ connection = $ this -> connectionPool ->getConnectionForTable ($ tableName );
119120 $ queryBuilder = $ connection ->createQueryBuilder ();
120121 $ queryBuilder ->getRestrictions ()
121122 ->removeAll ()
@@ -124,18 +125,18 @@ public function calculateCoordinatesForAllRecordsInTable(
124125 ->select ('* ' )
125126 ->from ($ tableName )
126127 ->where (
127- $ queryBuilder ->expr ()->orX (
128+ $ queryBuilder ->expr ()->or (
128129 $ queryBuilder ->expr ()->isNull ($ latitudeField ),
129- $ queryBuilder ->expr ()->eq ($ latitudeField , $ queryBuilder ->createNamedParameter (0 , \ PDO ::PARAM_INT )),
130+ $ queryBuilder ->expr ()->eq ($ latitudeField , $ queryBuilder ->createNamedParameter (0 , Connection ::PARAM_INT )),
130131 $ queryBuilder ->expr ()->eq ($ latitudeField , 0.00000000000 ),
131132 $ queryBuilder ->expr ()->isNull ($ longitudeField ),
132- $ queryBuilder ->expr ()->eq ($ longitudeField , $ queryBuilder ->createNamedParameter (0 , \ PDO ::PARAM_INT )),
133+ $ queryBuilder ->expr ()->eq ($ longitudeField , $ queryBuilder ->createNamedParameter (0 , Connection ::PARAM_INT )),
133134 $ queryBuilder ->expr ()->eq ($ longitudeField , 0.00000000000 )
134135 )
135136 )
136137 ->setMaxResults (500 );
137138
138- if (! empty ( $ addWhereClause) ) {
139+ if ($ addWhereClause !== '' && $ addWhereClause !== ' 0 ' ) {
139140 $ queryBuilder ->andWhere (QueryHelper::stripLogicalOperatorPrefix ($ addWhereClause ));
140141 }
141142
@@ -147,18 +148,14 @@ public function calculateCoordinatesForAllRecordsInTable(
147148 if (($ GLOBALS ['TCA ' ][$ tableName ]['columns ' ][$ countryField ]['config ' ]['type ' ] ?? '' ) === 'select ' ) {
148149 foreach ($ GLOBALS ['TCA ' ][$ tableName ]['columns ' ][$ countryField ]['config ' ]['items ' ] ?? [] as $ itm ) {
149150 if (($ itm [1 ] ?? null ) === $ country ) {
150- if (is_object ($ GLOBALS ['TSFE ' ])) {
151- $ country = $ GLOBALS ['TSFE ' ]->sL ($ itm [0 ]);
152- } else {
153- $ country = $ GLOBALS ['LANG ' ]->sL ($ itm [0 ]);
154- }
151+ $ country = is_object ($ GLOBALS ['TSFE ' ]) ? $ GLOBALS ['TSFE ' ]->sL ($ itm [0 ]) : $ GLOBALS ['LANG ' ]->sL ($ itm [0 ]);
155152 }
156153 }
157154 }
158155 // do the geocoding
159156 if (!empty ($ record [$ zipField ]) || !empty ($ record [$ cityField ])) {
160157 $ coords = $ this ->getCoordinatesForAddress ($ record [$ streetField ] ?? null , $ record [$ zipField ] ?? null , $ record [$ cityField ] ?? null , $ country );
161- if ($ coords ) {
158+ if ($ coords !== [] ) {
162159 // Update the record to fill in the latitude and longitude values in the DB
163160 $ connection ->update (
164161 $ tableName ,
0 commit comments