Parcourir la source

fix logging and minor fixes

Olivier Massot il y a 3 ans
Parent
commit
43b56bc639

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

@@ -100,8 +100,8 @@ class SiteController extends ActionController
 
     // Redirections creation status
     private const REDIRECTION_UNKNOWN_STATUS = 0;
-    private const REDIRECTION_UPDATED = 1;
-    private const REDIRECTION_CREATED = 2;
+    public const REDIRECTION_UPDATED = 1;
+    public const REDIRECTION_CREATED = 2;
 
     /**
      * @var ConnectionPool

+ 2 - 2
ot_admin/Classes/Http/ApiController.php

@@ -191,9 +191,9 @@ class ApiController implements LoggerAwareInterface
         $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $res = $controller->addRedirection($fromDomain, $toDomain);
 
-        if ($res == SiteController::REDIRECTION_UPDATED) {
+        if ($res === SiteController::REDIRECTION_UPDATED) {
             $msg = "An existing redirection has been updated ";
-        } elseif ($res == SiteController::REDIRECTION_CREATED) {
+        } elseif ($res === SiteController::REDIRECTION_CREATED) {
             $msg = "A redirection has been added ";
         }
 

+ 3 - 13
ot_core/Classes/Domain/Repository/BaseApiRepository.php

@@ -3,26 +3,16 @@
 namespace Opentalent\OtCore\Domain\Repository;
 
 use GuzzleHttp\Client;
-use GuzzleHttp\Exception\GuzzleException;
 use Opentalent\OtCore\Exception\ApiRequestException;
 use Opentalent\OtCore\Service\OpentalentApiService;
-use Psr\Http\Message\ResponseInterface;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use Symfony\Component\Yaml\Exception\ParseException;
-use Symfony\Component\Yaml\Yaml;
-use TYPO3\CMS\Core\Core\ApplicationContext;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
 
 /**
  *  Base class for repositories based on the Opentalent API
  *
  */
-abstract class BaseApiRepository implements LoggerAwareInterface
+abstract class BaseApiRepository
 {
-    use LoggerAwareTrait;
-
     const URI_TRAILING_PART = '';
     const HYDRA_TYPE = '';
     const DEFAULT_ITEMS_PER_PAGE = 8;
@@ -38,9 +28,9 @@ abstract class BaseApiRepository implements LoggerAwareInterface
 
     /**
      * [FOR TESTS ONLY]
-     * @param Client $client
+     * @param OpentalentApiService $apiService
      */
-    protected function injectService(OpentalentApiService $apiService) {
+    protected function injectOpentalentApiService(OpentalentApiService $apiService) {
         $this->apiService = $apiService;
     }
 

+ 2 - 1
ot_core/Classes/Domain/Repository/MemberRepository.php

@@ -24,7 +24,8 @@ class MemberRepository extends BaseApiRepository
     public function findByOrganizationId(int $organizationId) {
         $params = [];
         $params['filter[where][organizationId]'] = $organizationId;
-        $params['itemsPerPage'] = '200';
+        $params['itemsPerPage'] = '20000';  // TODO: désactiver la pagination et mieux filtrer quand ce repo sera branché sur la NV,
+                                            // certaines écoles ont des centaines de membres...
         return $this->getApiRecords($params);
     }
 

+ 1 - 1
ot_core/Classes/Logging/OtLogger.php

@@ -11,7 +11,7 @@ class OtLogger implements LoggerAwareInterface
 {
     use LoggerAwareTrait;
 
-    public static function log(int $level, string $msg, array $context = []) {
+    public static function log(string $level, string $msg, array $context = []) {
         $loggerService = GeneralUtility::makeInstance(self::class);
         $loggerService->getLogger()->log($level, $msg, $context);
     }

+ 10 - 15
ot_core/Classes/Service/OpentalentApiService.php

@@ -3,25 +3,20 @@
 namespace Opentalent\OtCore\Service;
 
 use GuzzleHttp\Client;
-use GuzzleHttp\Cookie\CookieJar;
 use GuzzleHttp\Exception\GuzzleException;
 use Opentalent\OtCore\Exception\ApiRequestException;
+use Opentalent\OtCore\Logging\OtLogger;
 use Psr\Http\Message\ResponseInterface;
-use Psr\Log\LoggerAwareInterface;
-use Psr\Log\LoggerAwareTrait;
-use TYPO3\CMS\Extbase\Object\ObjectManagerInterface;
 
-class OpentalentApiService implements LoggerAwareInterface
+class OpentalentApiService
 {
-    use LoggerAwareTrait;
-
     protected object $client;
     protected object $context;
 
     /**
-     * @param ObjectManagerInterface $objectManager
-     * @param object|null $client  [For tests only]
-     * @param object|null $context  [For tests only]
+     * @param object|null $client [For tests only]
+     * @param object|null $context [For tests only]
+     * @param object|null $cookieJar
      */
     public function __construct(
         ?object $client = null,
@@ -85,12 +80,12 @@ class OpentalentApiService implements LoggerAwareInterface
     ): array
     {
         $body = $this->getBody($uri, $params);
-        $data = json_decode($body,true);
+        $data = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
         if ($data !== null) {
-            return json_decode($body,true);
-        } else {
-            throw new \JsonException('Response can not be decoded as json: ' . substr($body, 0, 300) . '...');
+            return json_decode($body, true, 512, JSON_THROW_ON_ERROR);
         }
+
+        throw new \JsonException('Response can not be decoded as json: ' . substr($body, 0, 300) . '...');
     }
 
     /**
@@ -161,7 +156,7 @@ class OpentalentApiService implements LoggerAwareInterface
 
         try {
             if ($this->context->isDevelopment()) {
-                $this->logger->info('API Call: ' . $uri);
+                OtLogger::info('API Call: ' . $uri);
             }
             return $this->client->request($httpMethod, $uri, $options);
         } catch (GuzzleException $e) {

+ 1 - 1
ot_core/Classes/Service/OpentalentEnvService.php

@@ -18,7 +18,7 @@ class OpentalentEnvService
 {
     public static function get($varname) {
         if (!array_key_exists($varname, $GLOBALS['OT'])) {
-            throw new \RuntimeException('Unexisting OT environment variable requested: ' . $varname);
+            throw new \RuntimeException('Un-existing OT environment variable requested: ' . $varname);
         }
         return $GLOBALS['OT'][$varname];
     }

+ 2 - 2
ot_core/Classes/ViewHelpers/OtAbstractViewHelper.php

@@ -3,6 +3,7 @@
 namespace Opentalent\OtCore\ViewHelpers;
 
 use FluidTYPO3\Vhs\Utility\ErrorUtility;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\Website\OtPageRepository;
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerAwareTrait;
@@ -15,8 +16,7 @@ use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
  *
  * @package Opentalent\OtCore\ViewHelpers
  */
-class OtAbstractViewHelper  extends AbstractViewHelper implements LoggerAwareInterface {
-    use LoggerAwareTrait;
+class OtAbstractViewHelper extends AbstractViewHelper {
 
     /**
      * @var OtPageRepository

+ 0 - 6
ot_core/Configuration/ot_config.yaml

@@ -1,6 +0,0 @@
-
-# Variant Uri for development purposes
-api_variant_uri:
-  preprod.opentalent.fr: https://api.preprod.opentalent.fr/api/
-  local.sub.opentalent.fr: http://nginx/api/
-  typo3: http://nginx/api/

+ 2 - 2
ot_core/ext_localconf.php

@@ -5,7 +5,7 @@ if (!defined('TYPO3_MODE')) {
 }
 
 $GLOBALS['TYPO3_CONF_VARS']['LOG']['Opentalent']['OtCore']['writerConfiguration'] = [
-    // configuration for ERROR level log entries
+    // configuration for DEBUG level log entries
     TYPO3\CMS\Core\Log\LogLevel::DEBUG => [
         // add a FileWriter
         TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
@@ -34,7 +34,7 @@ $GLOBALS['TYPO3_CONF_VARS']['EXT']['news']['Controller/NewsController.php']['cre
 // ** Opentalent environment variables **
 // An array containing all or part of these variables could have been set before, for example
 // in the AdditionalConfiguration.php file.
-// In this case we merge them so the pre-defined vars are not overridden.
+// In this case we merge them so that the pre-defined vars are not overridden.
 // (/!\ do not forget to clear the cache after any update here)
 $GLOBALS['OT'] = array_merge([
     'API_BASE_URI' => 'https://api.opentalent.fr',

+ 3 - 2
ot_templating/Classes/ViewHelpers/Donors/GetAllViewHelper.php

@@ -5,6 +5,7 @@ namespace Opentalent\OtTemplating\ViewHelpers\Donors;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use Opentalent\OtCore\Domain\Repository\DonorRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 
 /**
@@ -81,7 +82,7 @@ class GetAllViewHelper extends OtAbstractViewHelper {
             try {
                 $donors = $this->donorRepository->findParentsByOrganizationId($organizationId);
             } catch (ApiRequestException $e) {
-                $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+                OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
                 $donors = [];
             }
         } else {
@@ -89,7 +90,7 @@ class GetAllViewHelper extends OtAbstractViewHelper {
             try {
                 $donors = $this->donorRepository->findByOrganizationId($organizationId);
             } catch (ApiRequestException $e) {
-                $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+                OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
                 $donors = [];
             }
         }

+ 2 - 1
ot_templating/Classes/ViewHelpers/Events/GetAllViewHelper.php

@@ -4,6 +4,7 @@ namespace Opentalent\OtTemplating\ViewHelpers\Events;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use Opentalent\OtCore\Domain\Repository\ApiPagedCollection;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Domain\Repository\EventRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
@@ -105,7 +106,7 @@ class GetAllViewHelper extends OtAbstractViewHelper {
         try {
             $events = $this->eventRepository->searchBy($organizationId, $searchParams);
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $events = new ApiPagedCollection(0, 0, 1, []);
         }
         $variables = [$as => $events];

+ 2 - 1
ot_templating/Classes/ViewHelpers/Events/GetByIdViewHelper.php

@@ -3,6 +3,7 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Domain\Model\Event;
 use Opentalent\OtCore\Domain\Repository\EventRepository;
@@ -70,7 +71,7 @@ class GetByIdViewHelper extends OtAbstractViewHelper {
         try {
             $event = $this->eventRepository->findById($eventId);
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $event = new Event();
             $event->setName("<Erreur>");
             $event->setDescription("Une erreur s'est produite et ne permet pas l'affichage de cet évènement. Veuillez nous excusez pour la gêne occasionnée.");

+ 2 - 1
ot_templating/Classes/ViewHelpers/Events/GetNextViewHelper.php

@@ -3,6 +3,7 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Events;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Domain\Repository\EventRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
@@ -136,7 +137,7 @@ class GetNextViewHelper extends OtAbstractViewHelper {
                 $events = $this->eventRepository->findByOrganizationId($organizationId, $fromDate, $toDate, $limit);
             }
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $events = [];
         }
 

+ 15 - 15
ot_templating/Classes/ViewHelpers/Members/GetAllCaViewHelper.php

@@ -4,6 +4,7 @@ namespace Opentalent\OtTemplating\ViewHelpers\Members;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use Opentalent\OtCore\Domain\Repository\MemberCaRepository;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Exception\ApiRequestException;
 
@@ -28,7 +29,7 @@ class GetAllCaViewHelper extends OtAbstractViewHelper {
      * >> Required to prevent typo3 to escape the html output
      * @var boolean
      */
-    protected $escapeOutput = false;
+    protected bool $escapeOutput = false;
 
     /**
      * @var MemberCaRepository
@@ -40,7 +41,7 @@ class GetAllCaViewHelper extends OtAbstractViewHelper {
      * -- This method is expected by Fluid --
      * Declares the viewhelper's parameters
      */
-    public function initializeArguments()
+    public function initializeArguments(): void
     {
         $this->registerArgument(
             'as',
@@ -69,9 +70,8 @@ class GetAllCaViewHelper extends OtAbstractViewHelper {
      * Renders the content as html
      *
      * @return string
-     * @throws \GuzzleHttp\Exception\GuzzleException
      */
-    public function render()
+    public function render(): string
     {
         // Get current settings
         $as = $this->arguments['as'];
@@ -103,24 +103,24 @@ class GetAllCaViewHelper extends OtAbstractViewHelper {
             $collection = $this->memberCaRepository->findByOrganizationId($organizationId);
             $members = $collection->getMembers();
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $members = [];
         }
 
-        $members = array_filter($members, function($m) use ($missions) {
-            return array_search($m->getMission(), $missions) !== false;
+        $members = array_filter($members, static function($m) use ($missions) {
+            return in_array($m->getMission(), $missions, true);
         });
 
         // Sort by roles, then alphabetically by name
         usort($members,
-            function($a, $b) use ($missions) {
-                if ($a->getMission() != $b->getMission()) {
-                    $ia = array_search($a->getMission(), $missions);
-                    $ib = array_search($b->getMission(), $missions);
+            static function($a, $b) use ($missions) {
+                if ($a->getMission() !== $b->getMission()) {
+                    $ia = array_search($a->getMission(), $missions, true);
+                    $ib = array_search($b->getMission(), $missions, true);
                     return $ia - $ib;
-                } else {
-                    return strcmp($a->getName(), $b->getName());
                 }
+
+                return strcmp($a->getName(), $b->getName());
             }
         );
 
@@ -135,7 +135,7 @@ class GetAllCaViewHelper extends OtAbstractViewHelper {
             // Put members into their categories
             foreach ($members as $member) {
                 if (array_key_exists($member->getMission(), $membersByMission)) {
-                    array_push($membersByMission[$member->getMission()], $member);
+                    $membersByMission[$member->getMission()][] = $member;
                 }
             }
 
@@ -150,7 +150,7 @@ class GetAllCaViewHelper extends OtAbstractViewHelper {
     /**
      * @param MemberCaRepository $memberCaRepository
      */
-    public function injectMemberCaRepository(MemberCaRepository $memberCaRepository)
+    public function injectMemberCaRepository(MemberCaRepository $memberCaRepository): void
     {
         $this->memberCaRepository = $memberCaRepository;
     }

+ 2 - 1
ot_templating/Classes/ViewHelpers/Members/GetAllViewHelper.php

@@ -5,6 +5,7 @@ namespace Opentalent\OtTemplating\ViewHelpers\Members;
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use Opentalent\OtCore\Domain\Repository\MemberRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 
 /**
@@ -82,7 +83,7 @@ class GetAllViewHelper extends OtAbstractViewHelper {
             $collection = $this->memberRepository->findByOrganizationId($organizationId);
             $members = $collection->getMembers();
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $members = [];
         }
 

+ 3 - 2
ot_templating/Classes/ViewHelpers/Members/GetPresidentViewHelper.php

@@ -4,6 +4,7 @@ namespace Opentalent\OtTemplating\ViewHelpers\Members;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
 use Opentalent\OtCore\Domain\Repository\MemberCaRepository;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Domain\Repository\MemberRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
@@ -73,13 +74,13 @@ class GetPresidentViewHelper extends OtAbstractViewHelper {
             $collection = $this->memberCaRepository->findByOrganizationId($organizationId);
             $members = $collection->getMembers();
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $members = [];
         }
 
         $president = null;
         foreach ($members as $member) {
-            if ($member->getMission() == 'PRESIDENT') {
+            if ($member->getMission() === 'PRESIDENT') {
                 $president = $member;
                 break;
             }

+ 2 - 1
ot_templating/Classes/ViewHelpers/Organizations/GetByIdViewHelper.php

@@ -3,6 +3,7 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Organizations;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Domain\Model\Organization;
 use Opentalent\OtCore\Domain\Repository\OrganizationRepository;
@@ -71,7 +72,7 @@ class GetByIdViewHelper extends OtAbstractViewHelper {
         try {
             $organization = $this->organizationRepository->findById($organizationId);
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $organization = new Organization();
             $organization->setName("<Erreur: impossible d'afficher le résultat>");
         }

+ 2 - 1
ot_templating/Classes/ViewHelpers/Organizations/GetChildrenViewHelper.php

@@ -3,6 +3,7 @@
 namespace Opentalent\OtTemplating\ViewHelpers\Organizations;
 
 use FluidTYPO3\Vhs\Traits\TemplateVariableViewHelperTrait;
+use Opentalent\OtCore\Logging\OtLogger;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Domain\Repository\OrganizationRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
@@ -87,7 +88,7 @@ class GetChildrenViewHelper extends OtAbstractViewHelper {
                 $page
             );
         } catch (ApiRequestException $e) {
-            $this->logger->error(sprintf('API Error: %s', $e->getMessage()));
+            OtLogger::error(sprintf('API Error: %s', $e->getMessage()));
             $organizations = [];
         }