Просмотр исходного кода

fix the ot_admin routes and command for php8.3

Olivier Massot 1 год назад
Родитель
Сommit
287fd4d545

+ 1 - 1
ot_admin/Classes/Controller/SiteController.php

@@ -2352,7 +2352,7 @@ class SiteController extends ActionController
             'db_mountpoints' => null, // inherited from the editors group
             'file_mountpoints' => null, // inherited from the editors group
             'options' => 3,  // allow to inherit both db and file mountpoints from groups
-            'tx_opentalent_opentalentId' => $userData['id'],
+            'tx_opentalent_opentalentId' => $userData['id'] ?? null,
             'tx_opentalent_organizationId' => $organizationId,
             'tx_opentalent_generationDate' => date('Y/m/d H:i:s')
         ];

+ 2 - 1
ot_admin/Classes/Domain/Entity/SiteInfos.php

@@ -3,7 +3,7 @@
 namespace Opentalent\OtAdmin\Domain\Entity;
 
 /**
- * Basic informations about a typo3 website
+ * Basic information about a typo3 website
  */
 class SiteInfos
 {
@@ -29,6 +29,7 @@ class SiteInfos
      * @param string|null $template
      * @param string|null $preferences
      * @param int|null $matomoId
+     * @param bool|null $isPremium
      * @param bool $deleted
      * @param bool $hiddenOrRestricted
      * @param array|null $mountedForBeUsers

+ 10 - 8
ot_admin/Classes/Domain/Entity/SiteStatus.php

@@ -41,9 +41,9 @@ class SiteStatus
     /**
      * SiteInfos of the website
      *
-     * @var SiteInfos
+     * @var SiteInfos | null
      */
-    protected SiteInfos $siteInfos;
+    protected ?SiteInfos $siteInfos = null;
 
     /**
      * Optional list of warnings
@@ -54,9 +54,9 @@ class SiteStatus
 
     public function __construct(
         int $organizationId,
-        $statusCode = null,
-        $siteInfos = null,
-        $warnings = null
+        int $statusCode = null,
+        ?SiteInfos $siteInfos = null,
+        ?array $warnings = null
     )
     {
         $this->organizationId = $organizationId;
@@ -84,7 +84,7 @@ class SiteStatus
             "Message" => $this->getMessage()
         ];
 
-        if ($this->getStatusCode() > 0) {
+        if ($this->getStatusCode() > 0 && $this->getSiteInfos()) {
             $infos["Root Uid"] = $this->getSiteInfos()->getRootUid();
             $infos["Site's title"] = $this->getSiteInfos()->getSiteTitle();
             $infos["Base Url"] = $this->getSiteInfos()->getBaseUrl();
@@ -147,6 +147,8 @@ class SiteStatus
         } elseif ($this->getStatusCode() == self::STATUS_EXISTING_WITH_WARNINGS) {
             return 'A website exists for organization ' . $this->getOrganizationId() . ', but warnings were raised';
         }
+
+        return 'Unknown status';
     }
 
     /**
@@ -161,9 +163,9 @@ class SiteStatus
     }
 
     /**
-     * @return SiteInfos
+     * @return SiteInfos|null
      */
-    public function getSiteInfos(): SiteInfos
+    public function getSiteInfos(): SiteInfos | null
     {
         return $this->siteInfos;
     }

+ 30 - 10
ot_admin/Classes/Http/ApiController.php

@@ -1,16 +1,21 @@
 <?php
+declare(strict_types=1);
 
 namespace Opentalent\OtAdmin\Http;
 
 
-use Opentalent\OtAdmin\Controller\ScanController;
+use Doctrine\DBAL\Driver\Exception;
 use Opentalent\OtAdmin\Controller\SiteController;
+use Opentalent\OtCore\Exception\InvalidWebsiteConfigurationException;
+use Opentalent\OtCore\Exception\NoSuchOrganizationException;
+use Opentalent\OtCore\Exception\NoSuchRecordException;
+use Opentalent\OtCore\Exception\NoSuchWebsiteException;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
-use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Http\ServerRequest;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 /**
  * Actions for Http API calls
@@ -30,9 +35,13 @@ class ApiController implements LoggerAwareInterface
         '/^172\.20\.\d{1,3}\.\d{1,3}$/',  // 172.20.[0-255].[0-255] - Docker
     ];
 
-    public function __construct(
-        private readonly SiteController $siteController
-    ) {}
+    private readonly SiteController $siteController;
+
+    public function __construct() {
+        // TODO: trouver une solution pour faire fonctionner l'injection de dépendances
+        $objectManager = GeneralUtility::makeInstance(ObjectManager::class);
+        $this->siteController = $objectManager->get(SiteController::class);
+    }
 
     /**
      * Returns true if the client Ip is allowed
@@ -87,20 +96,23 @@ class ApiController implements LoggerAwareInterface
     /**
      * -- Target of the route 'site_infos' --
      *
-     * Return the main informations about the organization's website
+     * Return the main information about the organization's website
      *
      * @param ServerRequest $request
      * @return JsonResponse
      * @throws \Exception
      */
-    public function getSiteInfosAction(ServerRequest $request): JsonResponse
+    public function getSiteInfosAction(
+        ServerRequest $request,
+        SiteController $siteController
+    ): JsonResponse
     {
         $this->assertIpAllowed();
 
         $organizationId = $this->getOrganizationId($request);
 
 
-        $infos = $this->siteController->getSiteInfosAction($organizationId);
+        $infos = $siteController->getSiteInfosAction($organizationId);
 
         return new JsonResponse($infos);
     }
@@ -366,10 +378,17 @@ class ApiController implements LoggerAwareInterface
      * Returns the current status of the website
      *
      * @param ServerRequest $request
+     * @param SiteController $siteController
      * @return JsonResponse
-     * @throws \Exception
+     * @throws Exception
+     * @throws InvalidWebsiteConfigurationException
+     * @throws NoSuchOrganizationException
+     * @throws NoSuchRecordException
+     * @throws NoSuchWebsiteException
      */
-    public function getSiteStatusAction(ServerRequest $request): JsonResponse
+    public function getSiteStatusAction(
+        ServerRequest $request
+    ): JsonResponse
     {
         $this->assertIpAllowed();
 
@@ -377,6 +396,7 @@ class ApiController implements LoggerAwareInterface
 
         $queryParams = $request->getQueryParams();
         $full = (isset($queryParams['full']) && $queryParams['full']);
+
         $status = $this->siteController->getSiteStatusAction($organizationId, $full);
 
         return new JsonResponse($status->toArray());

+ 2 - 2
ot_core/Classes/Domain/Repository/BaseApiRepository.php

@@ -49,7 +49,7 @@ abstract class BaseApiRepository
      *
      * @param array $params
      * @param string|null $forceUri
-     * @return object
+     * @return object|null
      * @throws ApiRequestException
      */
     protected function getApiFirstRecord(array $params = [], ?string $forceUri = null): ?object
@@ -57,7 +57,7 @@ abstract class BaseApiRepository
         $params['page'] = '1';
         $params['totalItems'] = '1';
         $collection = $this->getApiRecords($params, $forceUri);
-        return $collection->getMembers()[0];
+        return $collection->getMembers()[0] ?? null;
     }
 
     /**