Browse Source

refactor the whole project to make use of dependency injections

Olivier Massot 4 years ago
parent
commit
187f509f32
28 changed files with 240 additions and 141 deletions
  1. 3 1
      ot_admin/Classes/Command/ClearSiteCacheCommand.php
  2. 3 1
      ot_admin/Classes/Command/CreateSiteCommand.php
  3. 3 1
      ot_admin/Classes/Command/DeleteSiteCommand.php
  4. 3 1
      ot_admin/Classes/Command/UndeleteSiteCommand.php
  5. 3 1
      ot_admin/Classes/Command/UpdateSiteCommand.php
  6. 57 52
      ot_admin/Classes/Controller/SiteController.php
  7. 7 5
      ot_admin/Classes/Http/ApiController.php
  8. 13 4
      ot_connect/Classes/Service/OtAuthenticationService.php
  9. 10 7
      ot_core/Classes/Cache/OtCacheManager.php
  10. 2 1
      ot_core/Classes/Controller/SelectedSiteController.php
  11. 1 1
      ot_core/Classes/Domain/Repository/EventRepository.php
  12. 45 19
      ot_core/Classes/Page/OtPageRepository.php
  13. 4 3
      ot_stats/Classes/Controller/OtStatsController.php
  14. 20 14
      ot_stats/Classes/Domain/Repository/MatomoWebsiteRepository.php
  15. 3 2
      ot_stats/Classes/Middleware/RequestHandler.php
  16. 14 8
      ot_stats/Classes/Settings/StatsSettingsRepository.php
  17. 3 2
      ot_stats/Classes/ViewHelpers/MatomoSiteIdViewHelper.php
  18. 14 3
      ot_templating/Classes/Controller/OtCustomizerController.php
  19. 2 1
      ot_templating/Classes/News/NewsFilter.php
  20. 2 1
      ot_templating/Classes/Page/ErrorHandler.php
  21. 12 4
      ot_templating/Classes/Templating/TemplateRepository.php
  22. 2 1
      ot_templating/Classes/ViewHelpers/EventsPage/GetIdViewHelper.php
  23. 2 1
      ot_templating/Classes/ViewHelpers/GetPageUidViewHelper.php
  24. 2 1
      ot_templating/Classes/ViewHelpers/RootPage/GetIdViewHelper.php
  25. 2 1
      ot_templating/Classes/ViewHelpers/RootPage/GetUriViewHelper.php
  26. 3 2
      ot_templating/Classes/ViewHelpers/Template/CurrentViewHelper.php
  27. 3 2
      ot_templating/Classes/ViewHelpers/Template/GetPreferenceViewHelper.php
  28. 2 1
      ot_templating/Classes/ViewHelpers/Template/GetPreferencesViewHelper.php

+ 3 - 1
ot_admin/Classes/Command/ClearSiteCacheCommand.php

@@ -10,6 +10,8 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * This CLI command clears the cache of an existing organization's website
  * This CLI command clears the cache of an existing organization's website
@@ -62,7 +64,7 @@ class ClearSiteCacheCommand extends Command
 
 
         $io = new SymfonyStyle($input, $output);
         $io = new SymfonyStyle($input, $output);
 
 
-        $siteController = new SiteController();
+        $siteController = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $siteController->clearSiteCacheAction($org_id, $clearAll);
         $rootUid = $siteController->clearSiteCacheAction($org_id, $clearAll);
 
 
         $io->success(sprintf("The cache has been cleared for the website with root uid " . $rootUid . ""));
         $io->success(sprintf("The cache has been cleared for the website with root uid " . $rootUid . ""));

+ 3 - 1
ot_admin/Classes/Command/CreateSiteCommand.php

@@ -10,6 +10,8 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * This CLI command creates an organization's website
  * This CLI command creates an organization's website
@@ -65,7 +67,7 @@ class CreateSiteCommand extends Command
 
 
         $io = new SymfonyStyle($input, $output);
         $io = new SymfonyStyle($input, $output);
 
 
-        $siteController = new SiteController();
+        $siteController = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $siteController->createSiteAction(
         $rootUid = $siteController->createSiteAction(
             $org_id,
             $org_id,
             $isDev ? $siteController::MODE_DEV : $siteController::MODE_PROD
             $isDev ? $siteController::MODE_DEV : $siteController::MODE_PROD

+ 3 - 1
ot_admin/Classes/Command/DeleteSiteCommand.php

@@ -10,6 +10,8 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * This CLI command delete an existing organization's website
  * This CLI command delete an existing organization's website
@@ -67,7 +69,7 @@ class DeleteSiteCommand extends Command
 
 
         $io = new SymfonyStyle($input, $output);
         $io = new SymfonyStyle($input, $output);
 
 
-        $siteController = new SiteController();
+        $siteController = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $siteController->deleteSiteAction($org_id, $hard);
         $rootUid = $siteController->deleteSiteAction($org_id, $hard);
 
 
         if ($hard) {
         if ($hard) {

+ 3 - 1
ot_admin/Classes/Command/UndeleteSiteCommand.php

@@ -10,6 +10,8 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * This CLI command undo the soft-deletion an existing organization's website
  * This CLI command undo the soft-deletion an existing organization's website
@@ -58,7 +60,7 @@ class UndeleteSiteCommand extends Command
 
 
         $io = new SymfonyStyle($input, $output);
         $io = new SymfonyStyle($input, $output);
 
 
-        $siteController = new SiteController();
+        $siteController = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $siteController->undeleteSiteAction($org_id);
         $rootUid = $siteController->undeleteSiteAction($org_id);
 
 
         $io->success(sprintf("The website with root uid " . $rootUid . " has been restored"));
         $io->success(sprintf("The website with root uid " . $rootUid . " has been restored"));

+ 3 - 1
ot_admin/Classes/Command/UpdateSiteCommand.php

@@ -10,6 +10,8 @@ use Symfony\Component\Console\Input\InputInterface;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Input\InputOption;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Style\SymfonyStyle;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * This CLI command update an existing organization's website
  * This CLI command update an existing organization's website
@@ -55,7 +57,7 @@ class UpdateSiteCommand extends Command
 
 
         $io = new SymfonyStyle($input, $output);
         $io = new SymfonyStyle($input, $output);
 
 
-        $siteController = new SiteController();
+        $siteController = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $siteController->updateSiteConstantsAction($org_id);
         $rootUid = $siteController->updateSiteConstantsAction($org_id);
 
 
         $io->success(sprintf("The website with root uid " . $rootUid . " has been updated"));
         $io->success(sprintf("The website with root uid " . $rootUid . " has been updated"));

+ 57 - 52
ot_admin/Classes/Controller/SiteController.php

@@ -9,11 +9,8 @@ use Opentalent\OtCore\Domain\Repository\OrganizationRepository;
 use Opentalent\OtCore\Exception\ApiRequestException;
 use Opentalent\OtCore\Exception\ApiRequestException;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use PDO;
 use PDO;
-use Psr\Log\LoggerAwareInterface;
 use Symfony\Component\Yaml\Yaml;
 use Symfony\Component\Yaml\Yaml;
-use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Crypto\Random;
 use TYPO3\CMS\Core\Crypto\Random;
-use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Extbase\Object\ObjectManager;
@@ -70,10 +67,24 @@ class SiteController extends ActionController
     const MODE_DEV = 1;
     const MODE_DEV = 1;
 
 
     /**
     /**
-     * Doctrine connection pool
-     * @var object|LoggerAwareInterface|\TYPO3\CMS\Core\SingletonInterface
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
      */
      */
-    private $cnnPool;
+    private $connectionPool;
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
+
+    /**
+     * @var \TYPO3\CMS\Core\Cache\CacheManager
+     */
+    private $cacheManager;
+
+    public function injectCacheManager(\TYPO3\CMS\Core\Cache\CacheManager $cacheManager)
+    {
+        $this->cacheManager = $cacheManager;
+    }
 
 
     /**
     /**
      * Index of the pages created during the process
      * Index of the pages created during the process
@@ -97,7 +108,6 @@ class SiteController extends ActionController
     public function __construct()
     public function __construct()
     {
     {
         parent::__construct();
         parent::__construct();
-        $this->cnnPool = GeneralUtility::makeInstance(ConnectionPool::class);
         $this->createdPagesIndex = [];
         $this->createdPagesIndex = [];
         $this->createdDirs = [];
         $this->createdDirs = [];
         $this->createdFiles = [];
         $this->createdFiles = [];
@@ -128,7 +138,7 @@ class SiteController extends ActionController
         // ** Test the existence of a website with this name and or organization id
         // ** Test the existence of a website with this name and or organization id
 
 
         // Is there a site with this organization's name?
         // Is there a site with this organization's name?
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $queryBuilder->getRestrictions()->removeAll();
         $queryBuilder->getRestrictions()->removeAll();
         $queryBuilder
         $queryBuilder
             ->select('uid')
             ->select('uid')
@@ -142,7 +152,7 @@ class SiteController extends ActionController
         }
         }
 
 
         // Is there a site with this organization's id?
         // Is there a site with this organization's id?
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $queryBuilder->getRestrictions()->removeAll();
         $queryBuilder->getRestrictions()->removeAll();
         $statement = $queryBuilder
         $statement = $queryBuilder
             ->select('uid')
             ->select('uid')
@@ -157,7 +167,7 @@ class SiteController extends ActionController
         // ** Create the new website
         // ** Create the new website
 
 
         // start transactions
         // start transactions
-        $this->cnnPool->getConnectionByName('Default')->beginTransaction();
+        $this->connectionPool->getConnectionByName('Default')->beginTransaction();
 
 
         // keep tracks of the created folders and files to be able to remove them during a rollback
         // keep tracks of the created folders and files to be able to remove them during a rollback
         try {
         try {
@@ -401,7 +411,7 @@ class SiteController extends ActionController
                 throw new RuntimeException('Unknown value for $mode: ' . $mode);
                 throw new RuntimeException('Unknown value for $mode: ' . $mode);
             }
             }
 
 
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_domain');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_domain');
             $queryBuilder->insert('sys_domain')
             $queryBuilder->insert('sys_domain')
                 ->values([
                 ->values([
                     'pid' => $rootUid,
                     'pid' => $rootUid,
@@ -420,7 +430,7 @@ class SiteController extends ActionController
             $include .= ",EXT:frontend_editing/Configuration/TypoScript/FluidStyledContent9";
             $include .= ",EXT:frontend_editing/Configuration/TypoScript/FluidStyledContent9";
             $include .= ",EXT:ot_templating/Configuration/TypoScript";
             $include .= ",EXT:ot_templating/Configuration/TypoScript";
 
 
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_template');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_template');
             $queryBuilder->insert('sys_template')
             $queryBuilder->insert('sys_template')
                 ->values([
                 ->values([
                     'pid' => $rootUid,
                     'pid' => $rootUid,
@@ -452,7 +462,7 @@ class SiteController extends ActionController
             $this->mkDir($formsDir);
             $this->mkDir($formsDir);
 
 
             // Insert the filemounts points (sys_filemounts)
             // Insert the filemounts points (sys_filemounts)
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_filemounts');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_filemounts');
             $queryBuilder->insert('sys_filemounts')
             $queryBuilder->insert('sys_filemounts')
                 ->values([
                 ->values([
                     'title' => 'Documents',
                     'title' => 'Documents',
@@ -461,7 +471,7 @@ class SiteController extends ActionController
                 ])
                 ])
                 ->execute();
                 ->execute();
 
 
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_filemounts');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_filemounts');
             $queryBuilder->insert('sys_filemounts')
             $queryBuilder->insert('sys_filemounts')
                 ->values([
                 ->values([
                     'title' => 'Forms_' . $organizationId,
                     'title' => 'Forms_' . $organizationId,
@@ -482,7 +492,7 @@ class SiteController extends ActionController
             // Update the user TsConfig
             // Update the user TsConfig
             $tsconfig = "options.uploadFieldsInTopOfEB = 1\n" .
             $tsconfig = "options.uploadFieldsInTopOfEB = 1\n" .
                         "options.defaultUploadFolder=1:" . $defaultUploadDir . "\n";
                         "options.defaultUploadFolder=1:" . $defaultUploadDir . "\n";
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('be_users');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('be_users');
             $queryBuilder
             $queryBuilder
                 ->update('be_users')
                 ->update('be_users')
                 ->where($queryBuilder->expr()->eq('uid', $beUserUid))
                 ->where($queryBuilder->expr()->eq('uid', $beUserUid))
@@ -490,7 +500,7 @@ class SiteController extends ActionController
                 ->execute();
                 ->execute();
 
 
             // Give the keys of the website to this user (makes him the owner)
             // Give the keys of the website to this user (makes him the owner)
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
             foreach($this->createdPagesIndex as $slug => $uid) {
             foreach($this->createdPagesIndex as $slug => $uid) {
                 $queryBuilder
                 $queryBuilder
                     ->update('pages')
                     ->update('pages')
@@ -500,7 +510,7 @@ class SiteController extends ActionController
             }
             }
 
 
             // Try to commit the result
             // Try to commit the result
-            $commitSuccess = $this->cnnPool->getConnectionByName('Default')->commit();
+            $commitSuccess = $this->connectionPool->getConnectionByName('Default')->commit();
             if (!$commitSuccess) {
             if (!$commitSuccess) {
                 throw new \RuntimeException('Something went wrong while commiting the result');
                 throw new \RuntimeException('Something went wrong while commiting the result');
             }
             }
@@ -508,7 +518,7 @@ class SiteController extends ActionController
 
 
         } catch(\Exception $e) {
         } catch(\Exception $e) {
             // rollback
             // rollback
-            $this->cnnPool->getConnectionByName('Default')->rollback();
+            $this->connectionPool->getConnectionByName('Default')->rollback();
 
 
             // remove created files and dirs
             // remove created files and dirs
             foreach (array_reverse($this->createdFiles) as $filename) {
             foreach (array_reverse($this->createdFiles) as $filename) {
@@ -547,7 +557,7 @@ class SiteController extends ActionController
 
 
         $constants = $this->getTemplateConstants($organizationId, $organizationExtraData);
         $constants = $this->getTemplateConstants($organizationId, $organizationExtraData);
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_template');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_template');
         $queryBuilder
         $queryBuilder
             ->update('sys_template')
             ->update('sys_template')
             ->set('constants', $constants)
             ->set('constants', $constants)
@@ -574,7 +584,7 @@ class SiteController extends ActionController
     public function deleteSiteAction(int $organizationId, bool $hard=false) {
     public function deleteSiteAction(int $organizationId, bool $hard=false) {
         $rootUid = $this->findRootUidFor($organizationId);
         $rootUid = $this->findRootUidFor($organizationId);
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $isDeleted = $queryBuilder
         $isDeleted = $queryBuilder
             ->select('deleted')
             ->select('deleted')
             ->from('pages')
             ->from('pages')
@@ -592,13 +602,13 @@ class SiteController extends ActionController
         }
         }
 
 
         // start transactions
         // start transactions
-        $this->cnnPool->getConnectionByName('Default')->beginTransaction();
+        $this->connectionPool->getConnectionByName('Default')->beginTransaction();
 
 
         // keep track of renamed file for an eventual rollback
         // keep track of renamed file for an eventual rollback
         $renamed = [];
         $renamed = [];
 
 
         try {
         try {
-            $repository = new OtPageRepository();
+            $repository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
             $pages = $repository->getAllSubpagesForPage($rootUid);
             $pages = $repository->getAllSubpagesForPage($rootUid);
             foreach($pages as $page) {
             foreach($pages as $page) {
                 $this->delete('tt_content', 'pid', $page['uid'], $hard);
                 $this->delete('tt_content', 'pid', $page['uid'], $hard);
@@ -720,7 +730,7 @@ class SiteController extends ActionController
             }
             }
 
 
             // Try to commit the result (before any eventual file deletion or renaming)
             // Try to commit the result (before any eventual file deletion or renaming)
-            $commitSuccess = $this->cnnPool->getConnectionByName('Default')->commit();
+            $commitSuccess = $this->connectionPool->getConnectionByName('Default')->commit();
             if (!$commitSuccess) {
             if (!$commitSuccess) {
                 throw new \RuntimeException('Something went wrong while commiting the result');
                 throw new \RuntimeException('Something went wrong while commiting the result');
             }
             }
@@ -728,7 +738,7 @@ class SiteController extends ActionController
 
 
         } catch(\Exception $e) {
         } catch(\Exception $e) {
             // rollback
             // rollback
-            $this->cnnPool->getConnectionByName('Default')->rollback();
+            $this->connectionPool->getConnectionByName('Default')->rollback();
             if (!$hard) {
             if (!$hard) {
                 foreach ($renamed as $initialPath => $newPath) {
                 foreach ($renamed as $initialPath => $newPath) {
                     rename($newPath, $initialPath);
                     rename($newPath, $initialPath);
@@ -748,7 +758,7 @@ class SiteController extends ActionController
      * @param int $hard
      * @param int $hard
      */
      */
     private function delete(string $table, string $whereKey, $whereValue, $hard=0) {
     private function delete(string $table, string $whereKey, $whereValue, $hard=0) {
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable($table);
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable($table);
         if (!$hard) {
         if (!$hard) {
             $queryBuilder
             $queryBuilder
                 ->update($table)
                 ->update($table)
@@ -768,45 +778,45 @@ class SiteController extends ActionController
         $rootUid = $this->findRootUidFor($organizationId);
         $rootUid = $this->findRootUidFor($organizationId);
 
 
         // start transactions
         // start transactions
-        $this->cnnPool->getConnectionByName('Default')->beginTransaction();
+        $this->connectionPool->getConnectionByName('Default')->beginTransaction();
 
 
         // keep track of renamed file for an eventual rollback
         // keep track of renamed file for an eventual rollback
         $renamed = [];
         $renamed = [];
 
 
         try {
         try {
-            $repository = new OtPageRepository();
+            $repository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
             $pages = $repository->getAllSubpagesForPage($rootUid);
             $pages = $repository->getAllSubpagesForPage($rootUid);
 
 
             foreach($pages as $page) {
             foreach($pages as $page) {
-                $queryBuilder = $this->cnnPool->getQueryBuilderForTable('tt_content');
+                $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tt_content');
                 $queryBuilder
                 $queryBuilder
                     ->update('tt_content')
                     ->update('tt_content')
                     ->set('deleted', 0)
                     ->set('deleted', 0)
                     ->where($queryBuilder->expr()->eq('pid', $page['uid']))
                     ->where($queryBuilder->expr()->eq('pid', $page['uid']))
                     ->execute();
                     ->execute();
 
 
-                $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+                $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
                 $queryBuilder
                 $queryBuilder
                     ->update('pages')
                     ->update('pages')
                     ->set('deleted', 0)
                     ->set('deleted', 0)
                     ->where($queryBuilder->expr()->eq('uid', $page['uid']))
                     ->where($queryBuilder->expr()->eq('uid', $page['uid']))
                     ->execute();
                     ->execute();
             }
             }
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('tt_content');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tt_content');
             $queryBuilder
             $queryBuilder
                 ->update('tt_content')
                 ->update('tt_content')
                 ->set('deleted', 0)
                 ->set('deleted', 0)
                 ->where($queryBuilder->expr()->eq('pid', $rootUid))
                 ->where($queryBuilder->expr()->eq('pid', $rootUid))
                 ->execute();
                 ->execute();
 
 
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
             $queryBuilder
             $queryBuilder
                 ->update('pages')
                 ->update('pages')
                 ->set('deleted', 0)
                 ->set('deleted', 0)
                 ->where($queryBuilder->expr()->eq('uid', $rootUid))
                 ->where($queryBuilder->expr()->eq('uid', $rootUid))
                 ->execute();
                 ->execute();
 
 
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_template');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_template');
             $queryBuilder
             $queryBuilder
                 ->update('sys_template')
                 ->update('sys_template')
                 ->set('deleted', 0)
                 ->set('deleted', 0)
@@ -814,7 +824,7 @@ class SiteController extends ActionController
                 ->execute();
                 ->execute();
 
 
             // remove filemounts
             // remove filemounts
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_filemounts');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_filemounts');
             $queryBuilder
             $queryBuilder
                 ->update('sys_filemounts')
                 ->update('sys_filemounts')
                 ->set('deleted', 0)
                 ->set('deleted', 0)
@@ -827,7 +837,7 @@ class SiteController extends ActionController
                 ->where($queryBuilder->expr()->eq('path', "'/user_upload/" . $organizationId . "/Forms'"))
                 ->where($queryBuilder->expr()->eq('path', "'/user_upload/" . $organizationId . "/Forms'"))
                 ->execute();
                 ->execute();
 
 
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('be_users');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('be_users');
             $queryBuilder
             $queryBuilder
                 ->update('be_users')
                 ->update('be_users')
                 ->set('deleted', 0)
                 ->set('deleted', 0)
@@ -873,7 +883,7 @@ class SiteController extends ActionController
             }
             }
 
 
             // Try to commit the result
             // Try to commit the result
-            $commitSuccess = $this->cnnPool->getConnectionByName('Default')->commit();
+            $commitSuccess = $this->connectionPool->getConnectionByName('Default')->commit();
             if (!$commitSuccess) {
             if (!$commitSuccess) {
                 throw new \RuntimeException('Something went wrong while commiting the result');
                 throw new \RuntimeException('Something went wrong while commiting the result');
             }
             }
@@ -881,7 +891,7 @@ class SiteController extends ActionController
 
 
         } catch(\Exception $e) {
         } catch(\Exception $e) {
             // rollback
             // rollback
-            $this->cnnPool->getConnectionByName('Default')->rollback();
+            $this->connectionPool->getConnectionByName('Default')->rollback();
             foreach ($renamed as $initialPath => $newPath) {
             foreach ($renamed as $initialPath => $newPath) {
                 rename($newPath, $initialPath);
                 rename($newPath, $initialPath);
             }
             }
@@ -911,11 +921,7 @@ class SiteController extends ActionController
      * @return Organization
      * @return Organization
      */
      */
     private function fetchOrganization($organizationId) {
     private function fetchOrganization($organizationId) {
-        $manager = GeneralUtility::makeInstance(ObjectManager::class);
-        $organizationRepository = GeneralUtility::makeInstance(
-            OrganizationRepository::class,
-            $manager
-        );
+        $organizationRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OrganizationRepository::class);
         try {
         try {
             return $organizationRepository->findById($organizationId);
             return $organizationRepository->findById($organizationId);
         } catch (ApiRequestException $e) {
         } catch (ApiRequestException $e) {
@@ -930,7 +936,7 @@ class SiteController extends ActionController
      * @return int
      * @return int
      */
      */
     private function findRootUidFor($organizationId) {
     private function findRootUidFor($organizationId) {
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $queryBuilder->getRestrictions()->removeAll();
         $queryBuilder->getRestrictions()->removeAll();
         $rootUid = $queryBuilder
         $rootUid = $queryBuilder
             ->select('uid')
             ->select('uid')
@@ -945,7 +951,7 @@ class SiteController extends ActionController
         }
         }
 
 
         $organization = $this->fetchOrganization($organizationId);
         $organization = $this->fetchOrganization($organizationId);
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $rootUid = $queryBuilder
         $rootUid = $queryBuilder
             ->count('uid')
             ->count('uid')
             ->from('pages')
             ->from('pages')
@@ -969,7 +975,7 @@ class SiteController extends ActionController
      */
      */
     private function getParentFolderUid() {
     private function getParentFolderUid() {
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $siteCount = $queryBuilder
         $siteCount = $queryBuilder
             ->count('uid')
             ->count('uid')
             ->from('pages')
             ->from('pages')
@@ -981,7 +987,7 @@ class SiteController extends ActionController
 
 
         $folderName = "Web Sites " . (1000 * $thousand) . " - " . ((1000 * $thousand) + 999);
         $folderName = "Web Sites " . (1000 * $thousand) . " - " . ((1000 * $thousand) + 999);
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $uid = $queryBuilder
         $uid = $queryBuilder
             ->select('uid')
             ->select('uid')
             ->from('pages')
             ->from('pages')
@@ -991,7 +997,7 @@ class SiteController extends ActionController
             ->fetchColumn(0);
             ->fetchColumn(0);
 
 
         if ($uid == null) {
         if ($uid == null) {
-            $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
             $queryBuilder->insert('pages')
             $queryBuilder->insert('pages')
                 ->values([
                 ->values([
                     'pid' => 0,
                     'pid' => 0,
@@ -1049,7 +1055,7 @@ class SiteController extends ActionController
 
 
         $values = array_merge($defaultValues, $moreValues);
         $values = array_merge($defaultValues, $moreValues);
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $queryBuilder->insert('pages')
         $queryBuilder->insert('pages')
             ->values($values)
             ->values($values)
             ->execute();
             ->execute();
@@ -1107,7 +1113,7 @@ class SiteController extends ActionController
 
 
         $values = array_merge($defaultValues, $moreValues);
         $values = array_merge($defaultValues, $moreValues);
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('tt_content');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('tt_content');
         $queryBuilder->insert('tt_content')
         $queryBuilder->insert('tt_content')
             ->values($values)
             ->values($values)
             ->execute();
             ->execute();
@@ -1299,10 +1305,9 @@ class SiteController extends ActionController
         }
         }
 
 
         // Flush cache:
         // Flush cache:
-        $cacheSystem = GeneralUtility::makeInstance(CacheManager::class)->getCache('cache_core');
+        $cacheSystem = $this->cacheManager->getCache('cache_core');
         $cacheSystem->remove('site-configuration');
         $cacheSystem->remove('site-configuration');
         $cacheSystem->remove('pseudo-sites');
         $cacheSystem->remove('pseudo-sites');
-
     }
     }
 
 
 
 
@@ -1329,7 +1334,7 @@ class SiteController extends ActionController
         $randomStr = (new Random)->generateRandomHexString(20);
         $randomStr = (new Random)->generateRandomHexString(20);
 
 
         // get the existing filemounts
         // get the existing filemounts
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('sys_filemounts');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('sys_filemounts');
         $queryBuilder
         $queryBuilder
             ->select('uid')
             ->select('uid')
             ->from('sys_filemounts')
             ->from('sys_filemounts')
@@ -1358,7 +1363,7 @@ class SiteController extends ActionController
             'tx_opentalent_generationDate' => date('Y/m/d H:i:s')
             'tx_opentalent_generationDate' => date('Y/m/d H:i:s')
         ];
         ];
 
 
-        $queryBuilder = $this->cnnPool->getQueryBuilderForTable('be_users');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('be_users');
         $queryBuilder->insert('be_users')
         $queryBuilder->insert('be_users')
             ->values($values)
             ->values($values)
             ->execute();
             ->execute();

+ 7 - 5
ot_admin/Classes/Http/ApiController.php

@@ -9,6 +9,8 @@ use Psr\Log\LoggerAwareTrait;
 use TYPO3\CMS\Core\Core\Bootstrap;
 use TYPO3\CMS\Core\Core\Bootstrap;
 use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Http\JsonResponse;
 use TYPO3\CMS\Core\Http\ServerRequest;
 use TYPO3\CMS\Core\Http\ServerRequest;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 class ApiController implements LoggerAwareInterface
 class ApiController implements LoggerAwareInterface
 {
 {
@@ -86,7 +88,7 @@ class ApiController implements LoggerAwareInterface
 
 
         $organizationId = $this->getOrganizationId($request);
         $organizationId = $this->getOrganizationId($request);
 
 
-        $controller = new SiteController();
+        $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $controller->createSiteAction($organizationId);
         $rootUid = $controller->createSiteAction($organizationId);
 
 
         $this->logger->info(sprintf(
         $this->logger->info(sprintf(
@@ -117,7 +119,7 @@ class ApiController implements LoggerAwareInterface
 
 
         $organizationId = $this->getOrganizationId($request);
         $organizationId = $this->getOrganizationId($request);
 
 
-        $controller = new SiteController();
+        $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $controller->updateSiteConstantsAction($organizationId);
         $rootUid = $controller->updateSiteConstantsAction($organizationId);
 
 
         $this->logger->info(sprintf(
         $this->logger->info(sprintf(
@@ -148,7 +150,7 @@ class ApiController implements LoggerAwareInterface
 
 
         $organizationId = $this->getOrganizationId($request);
         $organizationId = $this->getOrganizationId($request);
 
 
-        $controller = new SiteController();
+        $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $controller->deleteSiteAction($organizationId, false);
         $rootUid = $controller->deleteSiteAction($organizationId, false);
 
 
         $this->logger->info(sprintf(
         $this->logger->info(sprintf(
@@ -179,7 +181,7 @@ class ApiController implements LoggerAwareInterface
 
 
         $organizationId = $this->getOrganizationId($request);
         $organizationId = $this->getOrganizationId($request);
 
 
-        $controller = new SiteController();
+        $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $controller->undeleteSiteAction($organizationId);
         $rootUid = $controller->undeleteSiteAction($organizationId);
 
 
         $this->logger->info(sprintf(
         $this->logger->info(sprintf(
@@ -210,7 +212,7 @@ class ApiController implements LoggerAwareInterface
 
 
         $organizationId = $this->getOrganizationId($request);
         $organizationId = $this->getOrganizationId($request);
 
 
-        $controller = new SiteController();
+        $controller = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteController::class);
         $rootUid = $controller->clearSiteCacheAction($organizationId);
         $rootUid = $controller->clearSiteCacheAction($organizationId);
 
 
         return new JsonResponse(
         return new JsonResponse(

+ 13 - 4
ot_connect/Classes/Service/OtAuthenticationService.php

@@ -8,7 +8,6 @@ use GuzzleHttp\Cookie\SetCookie;
 use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Exception\GuzzleException;
 use GuzzleHttp\Exception\RequestException;
 use GuzzleHttp\Exception\RequestException;
 use TYPO3\CMS\Core\Crypto\Random;
 use TYPO3\CMS\Core\Crypto\Random;
-use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\TimeTracker\TimeTracker;
 use TYPO3\CMS\Core\TimeTracker\TimeTracker;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use \TYPO3\CMS\Core\Authentication\AbstractAuthenticationService;
 use \TYPO3\CMS\Core\Authentication\AbstractAuthenticationService;
@@ -83,6 +82,16 @@ class OtAuthenticationService extends AbstractAuthenticationService
      */
      */
     private $jar;
     private $jar;
 
 
+    /**
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
+     */
+    private $connectionPool;
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
+
     /**
     /**
      * OtAuthenticationService constructor.
      * OtAuthenticationService constructor.
      */
      */
@@ -259,8 +268,8 @@ class OtAuthenticationService extends AbstractAuthenticationService
      */
      */
     protected function shouldUserBeUpdated($username) {
     protected function shouldUserBeUpdated($username) {
 
 
-        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('fe_users');
-        $q = $connection->select(['tx_opentalent_generationDate'], 'fe_users', ['username' => $username]);
+        $cnn = $this->connectionPool->getConnectionForTable('fe_users');
+        $q = $cnn->select(['tx_opentalent_generationDate'], 'fe_users', ['username' => $username]);
         $strGenDate = $q->fetch(3)[0];
         $strGenDate = $q->fetch(3)[0];
 
 
         $genDate = DateTime::createFromFormat("Y-m-d H:i:s", $strGenDate);
         $genDate = DateTime::createFromFormat("Y-m-d H:i:s", $strGenDate);
@@ -291,7 +300,7 @@ class OtAuthenticationService extends AbstractAuthenticationService
             return false;
             return false;
         }
         }
 
 
-        $connection = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable('fe_users');
+        $connection = $this->connectionPool->getConnectionForTable('fe_users');
 
 
         // Since we don't want to store the password in the TYPO3 DB, we store a random string instead
         // Since we don't want to store the password in the TYPO3 DB, we store a random string instead
         $randomStr = (new Random)->generateRandomHexString(20);
         $randomStr = (new Random)->generateRandomHexString(20);

+ 10 - 7
ot_core/Classes/Cache/OtCacheManager.php

@@ -3,17 +3,14 @@
 namespace Opentalent\OtCore\Cache;
 namespace Opentalent\OtCore\Cache;
 
 
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
-use Psr\Http\Message\ResponseInterface;
-use RuntimeException;
 use TYPO3\CMS\Core\Service\OpcodeCacheService;
 use TYPO3\CMS\Core\Service\OpcodeCacheService;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Install\Service\ClearCacheService;
 use TYPO3\CMS\Install\Service\ClearCacheService;
-use TYPO3\CMS\Install\Service\Typo3tempFileService;
 use TYPO3\CMS\Core\Cache\CacheManager;
 use TYPO3\CMS\Core\Cache\CacheManager;
 
 
 class OtCacheManager
 class OtCacheManager
 {
 {
-
     /**
     /**
      * Clears the page cache
      * Clears the page cache
      *
      *
@@ -31,10 +28,11 @@ class OtCacheManager
      * Clears cache for each page of the site
      * Clears cache for each page of the site
      *
      *
      * @param int $pageUid
      * @param int $pageUid
+     * @param bool $clearAll if true, all caches will be cleared, and not only the frontend one
      */
      */
-    public static function clearSiteCache(int $pageUid) {
+    public static function clearSiteCache(int $pageUid, $clearAll=false) {
 
 
-        $pageRepository = new OtPageRepository();
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootPage = $pageRepository->getRootPageFor($pageUid);
         $rootPage = $pageRepository->getRootPageFor($pageUid);
         $pages = $pageRepository->getAllSubpagesForPage($rootPage['uid']);
         $pages = $pageRepository->getAllSubpagesForPage($rootPage['uid']);
         $pages[] = $rootPage;
         $pages[] = $rootPage;
@@ -44,7 +42,12 @@ class OtCacheManager
         $tags = array_map(function ($page) {
         $tags = array_map(function ($page) {
             return 'pageId_' . $page['uid'];
             return 'pageId_' . $page['uid'];
         }, $pages);
         }, $pages);
-        $cacheManager->flushCachesInGroupByTags('pages', $tags);
+
+        if (!$clearAll) {
+            $cacheManager->flushCachesInGroupByTags('pages', $tags);
+        } else {
+            $cacheManager->flushCachesByTags($tags);
+        }
     }
     }
 
 
     /**
     /**

+ 2 - 1
ot_core/Classes/Controller/SelectedSiteController.php

@@ -6,6 +6,7 @@ use Opentalent\OtCore\Exception\NoSiteSelected;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
 use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * Base class for all controllers of backend modules that need
  * Base class for all controllers of backend modules that need
@@ -39,7 +40,7 @@ class SelectedSiteController extends ActionController
             // No db mountpoint has been set up, or more than one.
             // No db mountpoint has been set up, or more than one.
             // Now we check if a site's page is selected
             // Now we check if a site's page is selected
             try {
             try {
-                $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+                $otPageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
                 $this->currentRootUid = $otPageRepository->getCurrentRootUid();
                 $this->currentRootUid = $otPageRepository->getCurrentRootUid();
             } catch (NoSiteSelected $e) {
             } catch (NoSiteSelected $e) {
                 $this->currentRootUid = null;
                 $this->currentRootUid = null;

+ 1 - 1
ot_core/Classes/Domain/Repository/EventRepository.php

@@ -2,7 +2,6 @@
 
 
 namespace Opentalent\OtCore\Domain\Repository;
 namespace Opentalent\OtCore\Domain\Repository;
 
 
-use DateTimeZone;
 use Exception;
 use Exception;
 use Opentalent\OtCore\Domain\Model\Event;
 use Opentalent\OtCore\Domain\Model\Event;
 use Opentalent\OtCore\Exception\ApiRequestException;
 use Opentalent\OtCore\Exception\ApiRequestException;
@@ -147,6 +146,7 @@ class EventRepository extends BaseApiRepository
 
 
     /**
     /**
      * Returns an Event object from an Api record
      * Returns an Event object from an Api record
+     *
      * @param array $record A record as returned by $this->getApiRecords
      * @param array $record A record as returned by $this->getApiRecords
      * @return Event|null
      * @return Event|null
      * @throws Exception
      * @throws Exception

+ 45 - 19
ot_core/Classes/Page/OtPageRepository.php

@@ -2,15 +2,9 @@
 
 
 namespace Opentalent\OtCore\Page;
 namespace Opentalent\OtCore\Page;
 
 
-use FluidTYPO3\Vhs\Service\PageService;
 use Opentalent\OtCore\Exception\NoSiteSelected;
 use Opentalent\OtCore\Exception\NoSiteSelected;
-use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Exception\SiteNotFoundException;
 use TYPO3\CMS\Core\Site\Entity\Site;
 use TYPO3\CMS\Core\Site\Entity\Site;
-use TYPO3\CMS\Core\Site\SiteFinder;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Extbase\Object\ObjectManager;
-use TYPO3\CMS\Frontend\Page\PageRepository;
 
 
 /**
 /**
  * Class OtPageRepository
  * Class OtPageRepository
@@ -19,8 +13,43 @@ use TYPO3\CMS\Frontend\Page\PageRepository;
  *
  *
  * @package Opentalent\OtCore\Page
  * @package Opentalent\OtCore\Page
  */
  */
-class OtPageRepository extends PageRepository
+class OtPageRepository
 {
 {
+    /**
+     * @var \FluidTYPO3\Vhs\Service\PageService
+     */
+    private $pageService;
+
+    /**
+     * @var \TYPO3\CMS\Frontend\Page\PageRepository
+     */
+    private $pageRepository;
+
+    /**
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
+     */
+    private $connectionPool;
+
+    public function injectPageService(\FluidTYPO3\Vhs\Service\PageService $pageService)
+    {
+        $this->pageService = $pageService;
+    }
+
+    public function injectPageRepository(\TYPO3\CMS\Frontend\Page\PageRepository $pageRepository)
+    {
+        $this->pageRepository = $pageRepository;
+    }
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
+
+    public function injectSiteFinder(\TYPO3\CMS\Core\Site\SiteFinder $siteFinder)
+    {
+        $this->siteFinder = $siteFinder;
+    }
+
     /**
     /**
      * Returns the root page of the given page website,
      * Returns the root page of the given page website,
      * or the page itself if the given page is
      * or the page itself if the given page is
@@ -31,13 +60,13 @@ class OtPageRepository extends PageRepository
      * @return array
      * @return array
      */
      */
     public function getRootPageFor($pageUid) {
     public function getRootPageFor($pageUid) {
-        $pageService = GeneralUtility::makeInstance(ObjectManager::class)->get(PageService::class);
-        $rootLine = $pageService->getRootLine($pageUid);
+//        $pageService = GeneralUtility::makeInstance(ObjectManager::class)->get(PageService::class);
+        $rootLine = $this->pageService->getRootLine($pageUid);
 
 
         for (end($rootLine); key($rootLine)!==null; prev($rootLine)){
         for (end($rootLine); key($rootLine)!==null; prev($rootLine)){
             $page = current($rootLine);
             $page = current($rootLine);
             if ($page['is_siteroot'] == 1) {
             if ($page['is_siteroot'] == 1) {
-                $page = $this->getPage($page['uid']);
+                $page = $this->pageRepository->getPage($page['uid']);
                 return $page;
                 return $page;
             }
             }
         }
         }
@@ -54,8 +83,8 @@ class OtPageRepository extends PageRepository
     public function getAllSubpagesForPage(int $pageUid, bool $withRestrictions=false) {
     public function getAllSubpagesForPage(int $pageUid, bool $withRestrictions=false) {
         $subpages = [];
         $subpages = [];
 
 
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
-            ->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
+
         if (!$withRestrictions) {
         if (!$withRestrictions) {
             $queryBuilder->getRestrictions()->removeAll();
             $queryBuilder->getRestrictions()->removeAll();
         }
         }
@@ -86,8 +115,7 @@ class OtPageRepository extends PageRepository
         $rootPage = $this->getRootPageFor($pageUid);
         $rootPage = $this->getRootPageFor($pageUid);
         $rootUid = $rootPage['uid'];
         $rootUid = $rootPage['uid'];
 
 
-        $siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
-        return $siteFinder->getSiteByRootPageId($rootUid);
+        return $this->siteFinder->getSiteByRootPageId($rootUid);
     }
     }
 
 
     /**
     /**
@@ -98,8 +126,7 @@ class OtPageRepository extends PageRepository
     public function getCurrentSite() {
     public function getCurrentSite() {
         $request = $GLOBALS['TYPO3_REQUEST'];
         $request = $GLOBALS['TYPO3_REQUEST'];
         $site = $request->getAttribute('site');
         $site = $request->getAttribute('site');
-        return GeneralUtility::makeInstance(SiteFinder::class)
-            ->getSiteByIdentifier($site->getIdentifier());
+        return $this->siteFinder->getSiteByIdentifier($site->getIdentifier());
     }
     }
 
 
     /**
     /**
@@ -130,7 +157,7 @@ class OtPageRepository extends PageRepository
      */
      */
     public function getCurrentSiteRootPage() {
     public function getCurrentSiteRootPage() {
         $uid = $this->getCurrentSiteRootPageUri();
         $uid = $this->getCurrentSiteRootPageUri();
-        return $this->getPage($uid);
+        return $this->pageRepository->getPage($uid);
     }
     }
 
 
     /**
     /**
@@ -154,8 +181,7 @@ class OtPageRepository extends PageRepository
     public function getCurrentRootUid() {
     public function getCurrentRootUid() {
         $pageUid = $this->getCurrentPageId();
         $pageUid = $this->getCurrentPageId();
 
 
-        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
-        $rootPage = $otPageRepository->getRootPageFor($pageUid);
+        $rootPage = $this->getRootPageFor($pageUid);
         $rootUid = $rootPage['uid'] ?? 0;
         $rootUid = $rootPage['uid'] ?? 0;
         if (!$rootUid > 0) {
         if (!$rootUid > 0) {
             throw new NoSiteSelected();
             throw new NoSiteSelected();

+ 4 - 3
ot_stats/Classes/Controller/OtStatsController.php

@@ -9,6 +9,7 @@ use Opentalent\OtStats\Settings\StatsSettingsRepository;
 use TYPO3\CMS\Core\Messaging\AbstractMessage;
 use TYPO3\CMS\Core\Messaging\AbstractMessage;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException;
 use TYPO3\CMS\Extbase\Mvc\Exception\StopActionException;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * Controller for the OtStats backend submodule
  * Controller for the OtStats backend submodule
@@ -28,7 +29,7 @@ class OtStatsController extends SelectedSiteController {
      */
      */
     public function indexAction() {
     public function indexAction() {
         $this->view->assign('rootPage', $this->currentRootUid);
         $this->view->assign('rootPage', $this->currentRootUid);
-        $statsSettingsRepository = GeneralUtility::makeInstance(StatsSettingsRepository::class);
+        $statsSettingsRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(StatsSettingsRepository::class);
         $matomoId = $statsSettingsRepository->getMatomoSiteId($this->currentRootUid);
         $matomoId = $statsSettingsRepository->getMatomoSiteId($this->currentRootUid);
 
 
         if ($matomoId == null) {
         if ($matomoId == null) {
@@ -61,7 +62,7 @@ class OtStatsController extends SelectedSiteController {
      * save its id
      * save its id
      */
      */
     public function enableStatsAction() {
     public function enableStatsAction() {
-        $matomoRepository = GeneralUtility::makeInstance(MatomoWebsiteRepository::class);
+        $matomoRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(MatomoWebsiteRepository::class);
 
 
         try {
         try {
             $matomoRepository->createFor($this->currentRootUid);
             $matomoRepository->createFor($this->currentRootUid);
@@ -87,7 +88,7 @@ class OtStatsController extends SelectedSiteController {
      */
      */
     public function disableStatsAction(int $rootUid) {
     public function disableStatsAction(int $rootUid) {
 
 
-        $matomoRepository = GeneralUtility::makeInstance(MatomoWebsiteRepository::class);
+        $matomoRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(MatomoWebsiteRepository::class);
 
 
         try {
         try {
             $matomoRepository->disableFor($rootUid);
             $matomoRepository->disableFor($rootUid);

+ 20 - 14
ot_stats/Classes/Domain/Repository/MatomoWebsiteRepository.php

@@ -7,6 +7,7 @@ use Opentalent\OtStats\Domain\Model\MatomoWebsite;
 use PDO;
 use PDO;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 class MatomoWebsiteRepository
 class MatomoWebsiteRepository
 {
 {
@@ -31,6 +32,15 @@ class MatomoWebsiteRepository
      */
      */
     private $matomoCnn;
     private $matomoCnn;
 
 
+    /**
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
+     */
+    private $connectionPool;
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
 
 
     public function __construct()
     public function __construct()
     {
     {
@@ -111,7 +121,7 @@ class MatomoWebsiteRepository
      * @return MatomoWebsite|null
      * @return MatomoWebsite|null
      */
      */
     public function findByRootUid(int $rootUid) {
     public function findByRootUid(int $rootUid) {
-        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $otPageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
 
 
         // Just to make sure this page is actually the root page
         // Just to make sure this page is actually the root page
         $rootPage = $otPageRepository->getRootPageFor($rootUid);
         $rootPage = $otPageRepository->getRootPageFor($rootUid);
@@ -131,7 +141,7 @@ class MatomoWebsiteRepository
      * @throws \Exception
      * @throws \Exception
      */
      */
     public function createFor(int $rootUid) {
     public function createFor(int $rootUid) {
-        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $otPageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
 
 
         // Just to make sure this page is actually the root page
         // Just to make sure this page is actually the root page
         $rootPage = $otPageRepository->getRootPageFor($rootUid);
         $rootPage = $otPageRepository->getRootPageFor($rootUid);
@@ -178,12 +188,9 @@ class MatomoWebsiteRepository
             $matomoSiteId = $existingMatomoSite->getId();
             $matomoSiteId = $existingMatomoSite->getId();
         }
         }
 
 
-        // Set up a connection to the typo3 DB
-        $cnnPool = GeneralUtility::makeInstance(ConnectionPool::class);
-
         // Create a new website record in the matomo DB, and store its id
         // Create a new website record in the matomo DB, and store its id
         $this->matomoCnn->beginTransaction();
         $this->matomoCnn->beginTransaction();
-        $cnnPool->getConnectionByName('Default')->beginTransaction();
+        $this->connectionPool->getConnectionByName('Default')->beginTransaction();
         try {
         try {
             $ignoreIps = $isDev ? '' : '10.8.0.*';
             $ignoreIps = $isDev ? '' : '10.8.0.*';
 
 
@@ -210,7 +217,7 @@ class MatomoWebsiteRepository
             }
             }
 
 
             // Update typo3 DB
             // Update typo3 DB
-            $queryBuilder = $cnnPool->getQueryBuilderForTable('pages');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
             $queryBuilder
             $queryBuilder
                 ->update('pages')
                 ->update('pages')
                 ->where($queryBuilder->expr()->eq('uid', $rootUid))
                 ->where($queryBuilder->expr()->eq('uid', $rootUid))
@@ -219,14 +226,14 @@ class MatomoWebsiteRepository
 
 
             // finalize
             // finalize
             $this->matomoCnn->commit();
             $this->matomoCnn->commit();
-            $cnnPool->getConnectionByName('Default')->commit();
+            $this->connectionPool->getConnectionByName('Default')->commit();
 
 
             return $matomoSiteId;
             return $matomoSiteId;
 
 
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             // An error happened, rollback and throw
             // An error happened, rollback and throw
             $this->matomoCnn->rollBack();
             $this->matomoCnn->rollBack();
-            $cnnPool->getConnectionByName('Default')->rollback();
+            $this->connectionPool->getConnectionByName('Default')->rollback();
             throw $e;
             throw $e;
         }
         }
     }
     }
@@ -246,11 +253,10 @@ class MatomoWebsiteRepository
         }
         }
 
 
         // Set up a connection to the typo3 DB
         // Set up a connection to the typo3 DB
-        $cnnPool = GeneralUtility::makeInstance(ConnectionPool::class);
-        $cnnPool->getConnectionByName('Default')->beginTransaction();
+        $this->connectionPool->getConnectionByName('Default')->beginTransaction();
         try {
         try {
             // Update typo3 DB
             // Update typo3 DB
-            $queryBuilder = $cnnPool->getQueryBuilderForTable('pages');
+            $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
             $queryBuilder
             $queryBuilder
                 ->update('pages')
                 ->update('pages')
                 ->where($queryBuilder->expr()->eq('uid', $rootUid))
                 ->where($queryBuilder->expr()->eq('uid', $rootUid))
@@ -258,11 +264,11 @@ class MatomoWebsiteRepository
                 ->execute();
                 ->execute();
 
 
             // finalize
             // finalize
-            $cnnPool->getConnectionByName('Default')->commit();
+            $this->connectionPool->getConnectionByName('Default')->commit();
 
 
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             // An error happened, rollback and throw
             // An error happened, rollback and throw
-            $cnnPool->getConnectionByName('Default')->rollback();
+            $this->connectionPool->getConnectionByName('Default')->rollback();
             throw $e;
             throw $e;
         }
         }
     }
     }

+ 3 - 2
ot_stats/Classes/Middleware/RequestHandler.php

@@ -9,6 +9,7 @@ use Psr\Http\Server\MiddlewareInterface;
 use Psr\Http\Server\RequestHandlerInterface;
 use Psr\Http\Server\RequestHandlerInterface;
 use TYPO3\CMS\Core\Http\Stream;
 use TYPO3\CMS\Core\Http\Stream;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Fluid\View\StandaloneView;
 use TYPO3\CMS\Fluid\View\StandaloneView;
 
 
 /**
 /**
@@ -36,10 +37,10 @@ class RequestHandler implements MiddlewareInterface
     {
     {
 
 
         // Retrieve the current matomo site's id if set
         // Retrieve the current matomo site's id if set
-        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $otPageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootPageUid = $otPageRepository->getCurrentSiteRootPageId();
         $rootPageUid = $otPageRepository->getCurrentSiteRootPageId();
 
 
-        $statsSettingsRepository = GeneralUtility::makeInstance(StatsSettingsRepository::class);
+        $statsSettingsRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(StatsSettingsRepository::class);
         $matomoSiteId = $statsSettingsRepository->getMatomoSiteId($rootPageUid);
         $matomoSiteId = $statsSettingsRepository->getMatomoSiteId($rootPageUid);
 
 
         if (!$matomoSiteId > 0) {
         if (!$matomoSiteId > 0) {

+ 14 - 8
ot_stats/Classes/Settings/StatsSettingsRepository.php

@@ -2,10 +2,6 @@
 
 
 namespace Opentalent\OtStats\Settings;
 namespace Opentalent\OtStats\Settings;
 
 
-use TYPO3\CMS\Core\Database\ConnectionPool;
-use TYPO3\CMS\Core\Utility\GeneralUtility;
-use TYPO3\CMS\Frontend\Page\PageRepository;
-
 /**
 /**
  * Class StatsRepository
  * Class StatsRepository
  *
  *
@@ -13,17 +9,27 @@ use TYPO3\CMS\Frontend\Page\PageRepository;
  *
  *
  * @package Opentalent\OtTemplating\Page
  * @package Opentalent\OtTemplating\Page
  */
  */
-class StatsSettingsRepository extends PageRepository
+class StatsSettingsRepository
 {
 {
+    /**
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
+     */
+    private $connectionPool;
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
+
     /**
     /**
      * Returns the website registered matomo site's id
      * Returns the website registered matomo site's id
      * @param int $rootPageUid
      * @param int $rootPageUid
      * @return int|null
      * @return int|null
      */
      */
-    public function getMatomoSiteId(int $rootPageUid) {
+    public function getMatomoSiteId(int $rootPageUid)
+    {
         // Set up a connection to the typo3 DB
         // Set up a connection to the typo3 DB
-        $cnnPool = GeneralUtility::makeInstance(ConnectionPool::class);
-        $queryBuilder = $cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $matomoId = $queryBuilder
         $matomoId = $queryBuilder
                         ->select('tx_opentalent_matomo_id')
                         ->select('tx_opentalent_matomo_id')
                         ->from('pages')
                         ->from('pages')

+ 3 - 2
ot_stats/Classes/ViewHelpers/MatomoSiteIdViewHelper.php

@@ -7,6 +7,7 @@ use Closure;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtStats\Settings\StatsSettingsRepository;
 use Opentalent\OtStats\Settings\StatsSettingsRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
@@ -36,10 +37,10 @@ class MatomoSiteIdViewHelper extends AbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $otPageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $otPageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootPageUid = $otPageRepository->getCurrentSiteRootPageId();
         $rootPageUid = $otPageRepository->getCurrentSiteRootPageId();
 
 
-        $statsSettingsRepository = GeneralUtility::makeInstance(StatsSettingsRepository::class);
+        $statsSettingsRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(StatsSettingsRepository::class);
         return $statsSettingsRepository->getMatomoSiteId($rootPageUid);
         return $statsSettingsRepository->getMatomoSiteId($rootPageUid);
     }
     }
 }
 }

+ 14 - 3
ot_templating/Classes/Controller/OtCustomizerController.php

@@ -8,6 +8,7 @@ use Opentalent\OtTemplating\Templating\TemplateRepository;
 use PDO;
 use PDO;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Database\ConnectionPool;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 /**
 /**
  * Controller for the OtCustomizer backend submodule
  * Controller for the OtCustomizer backend submodule
@@ -16,6 +17,16 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  */
  */
 class OtCustomizerController extends SelectedSiteController {
 class OtCustomizerController extends SelectedSiteController {
 
 
+    /**
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
+     */
+    private $connectionPool;
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
+
     /**
     /**
      * Index action (default action)
      * Index action (default action)
      * Displays the customizer page on the backend
      * Displays the customizer page on the backend
@@ -24,7 +35,7 @@ class OtCustomizerController extends SelectedSiteController {
         $this->view->assign('rootPage', $this->currentRootUid);
         $this->view->assign('rootPage', $this->currentRootUid);
         $this->view->assign('templates', TemplateRepository::templates);
         $this->view->assign('templates', TemplateRepository::templates);
 
 
-        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        $templateRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(TemplateRepository::class);
         $this->view->assign('currentTemplate', $templateRepository->getTemplate($this->currentRootUid));
         $this->view->assign('currentTemplate', $templateRepository->getTemplate($this->currentRootUid));
         $this->view->assign('preferences', $templateRepository->getTemplatePreferences($this->currentRootUid));
         $this->view->assign('preferences', $templateRepository->getTemplatePreferences($this->currentRootUid));
 
 
@@ -40,7 +51,7 @@ class OtCustomizerController extends SelectedSiteController {
         $templateKey = $this->request->getArgument('template_key');
         $templateKey = $this->request->getArgument('template_key');
 
 
         // applies the change in the database
         // applies the change in the database
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $queryBuilder->update('pages')
         $queryBuilder->update('pages')
             ->where(
             ->where(
                 $queryBuilder->expr()->eq(
                 $queryBuilder->expr()->eq(
@@ -74,7 +85,7 @@ class OtCustomizerController extends SelectedSiteController {
         }
         }
 
 
         // applies the change in the database
         // applies the change in the database
-        $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $queryBuilder->update('pages')
         $queryBuilder->update('pages')
             ->where(
             ->where(
                 $queryBuilder->expr()->eq(
                 $queryBuilder->expr()->eq(

+ 2 - 1
ot_templating/Classes/News/NewsFilter.php

@@ -5,11 +5,12 @@ namespace Opentalent\OtTemplating\News;
 use GeorgRinger\News\Utility\Page;
 use GeorgRinger\News\Utility\Page;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 
 
 class NewsFilter
 class NewsFilter
 {
 {
     public function createDemandObjectFromSettings($params) {
     public function createDemandObjectFromSettings($params) {
-        $pageRepo = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepo = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootUid = $pageRepo->getRootPageFor($GLOBALS['TSFE']->id);
         $rootUid = $pageRepo->getRootPageFor($GLOBALS['TSFE']->id);
         $params['demand']->setStoragePage(Page::extendPidListByChildren(
         $params['demand']->setStoragePage(Page::extendPidListByChildren(
             '' . $rootUid['uid'],
             '' . $rootUid['uid'],

+ 2 - 1
ot_templating/Classes/Page/ErrorHandler.php

@@ -9,6 +9,7 @@ use TYPO3\CMS\Core\Error\PageErrorHandler\PageContentErrorHandler;
 use TYPO3\CMS\Core\Error\PageErrorHandler\PageErrorHandlerInterface;
 use TYPO3\CMS\Core\Error\PageErrorHandler\PageErrorHandlerInterface;
 use TYPO3\CMS\Core\Http\HtmlResponse;
 use TYPO3\CMS\Core\Http\HtmlResponse;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3\CMS\Fluid\View\TemplateView;
 use TYPO3\CMS\Fluid\View\TemplateView;
 use TYPO3Fluid\Fluid\View\ViewInterface;
 use TYPO3Fluid\Fluid\View\ViewInterface;
 
 
@@ -75,7 +76,7 @@ class ErrorHandler implements PageErrorHandlerInterface
         // This variable role is to prevent redirection loop,
         // This variable role is to prevent redirection loop,
         $isCircular = preg_match('/.*\/page-introuvable/', $request->getUri()->getPath());
         $isCircular = preg_match('/.*\/page-introuvable/', $request->getUri()->getPath());
 
 
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $site = $pageRepository->getCurrentSite();
         $site = $pageRepository->getCurrentSite();
 
 
         if ($site && !$isCircular){
         if ($site && !$isCircular){

+ 12 - 4
ot_templating/Classes/Templating/TemplateRepository.php

@@ -14,6 +14,16 @@ use TYPO3\CMS\Core\Utility\GeneralUtility;
  */
  */
 class TemplateRepository
 class TemplateRepository
 {
 {
+    /**
+     * @var \TYPO3\CMS\Core\Database\ConnectionPool
+     */
+    private $connectionPool;
+
+    public function injectConnectionPool(\TYPO3\CMS\Core\Database\ConnectionPool $connectionPool)
+    {
+        $this->connectionPool = $connectionPool;
+    }
+
     CONST templates = [
     CONST templates = [
         'Classic' => [
         'Classic' => [
             'name' => 'Classique',
             'name' => 'Classique',
@@ -45,8 +55,7 @@ class TemplateRepository
             return self::defaultTemplate;
             return self::defaultTemplate;
         }
         }
 
 
-        $cnnPool = GeneralUtility::makeInstance(ConnectionPool::class);
-        $queryBuilder = $cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $templateName = $queryBuilder
         $templateName = $queryBuilder
             ->select('tx_opentalent_template')
             ->select('tx_opentalent_template')
             ->from('pages')
             ->from('pages')
@@ -66,8 +75,7 @@ class TemplateRepository
      * @return array
      * @return array
      */
      */
     public function getTemplatePreferences(int $rootUid) {
     public function getTemplatePreferences(int $rootUid) {
-        $cnnPool = GeneralUtility::makeInstance(ConnectionPool::class);
-        $queryBuilder = $cnnPool->getQueryBuilderForTable('pages');
+        $queryBuilder = $this->connectionPool->getQueryBuilderForTable('pages');
         $templatePreferences = $queryBuilder
         $templatePreferences = $queryBuilder
             ->select('tx_opentalent_template_preferences')
             ->select('tx_opentalent_template_preferences')
             ->from('pages')
             ->from('pages')

+ 2 - 1
ot_templating/Classes/ViewHelpers/EventsPage/GetIdViewHelper.php

@@ -6,6 +6,7 @@ use Closure;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
@@ -43,7 +44,7 @@ class GetIdViewHelper extends OtAbstractViewHelper
             $renderChildrenClosure,
             $renderChildrenClosure,
             $renderingContext
             $renderingContext
         );
         );
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
 
 
         $subpages = $pageRepository->getAllSubpagesForPage($rootId);
         $subpages = $pageRepository->getAllSubpagesForPage($rootId);
 
 

+ 2 - 1
ot_templating/Classes/ViewHelpers/GetPageUidViewHelper.php

@@ -8,6 +8,7 @@ use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
 use Opentalent\OtTemplating\ViewHelpers\RootPage\GetIdViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
 
 
@@ -59,7 +60,7 @@ class GetPageUidViewHelper extends OtAbstractViewHelper
             $renderingContext
             $renderingContext
         );
         );
 
 
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
 
 
         $subpages = $pageRepository->getAllSubpagesForPage($rootId);
         $subpages = $pageRepository->getAllSubpagesForPage($rootId);
 
 

+ 2 - 1
ot_templating/Classes/ViewHelpers/RootPage/GetIdViewHelper.php

@@ -6,6 +6,7 @@ use Closure;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
@@ -34,7 +35,7 @@ class GetIdViewHelper extends OtAbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         return $pageRepository->getCurrentSiteRootPageId();
         return $pageRepository->getCurrentSiteRootPageId();
     }
     }
 }
 }

+ 2 - 1
ot_templating/Classes/ViewHelpers/RootPage/GetUriViewHelper.php

@@ -6,6 +6,7 @@ use Closure;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\Page\OtPageRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
@@ -34,7 +35,7 @@ class GetUriViewHelper extends OtAbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         return $pageRepository->getCurrentSiteRootPageUri();
         return $pageRepository->getCurrentSiteRootPageUri();
     }
     }
 }
 }

+ 3 - 2
ot_templating/Classes/ViewHelpers/Template/CurrentViewHelper.php

@@ -8,6 +8,7 @@ use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtTemplating\Templating\TemplateRepository;
 use Opentalent\OtTemplating\Templating\TemplateRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
@@ -35,10 +36,10 @@ class CurrentViewHelper extends OtAbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootUid = $pageRepository->getCurrentSiteRootPageId();
         $rootUid = $pageRepository->getCurrentSiteRootPageId();
 
 
-        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        $templateRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(TemplateRepository::class);
         return $templateRepository->getTemplate($rootUid);
         return $templateRepository->getTemplate($rootUid);
     }
     }
 }
 }

+ 3 - 2
ot_templating/Classes/ViewHelpers/Template/GetPreferenceViewHelper.php

@@ -8,6 +8,7 @@ use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtTemplating\Templating\TemplateRepository;
 use Opentalent\OtTemplating\Templating\TemplateRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
@@ -49,10 +50,10 @@ class GetPreferenceViewHelper extends OtAbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootUid = $pageRepository->getCurrentSiteRootPageId();
         $rootUid = $pageRepository->getCurrentSiteRootPageId();
 
 
-        $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
+        $templateRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(TemplateRepository::class);
         $preferences = $templateRepository->getTemplatePreferences($rootUid);
         $preferences = $templateRepository->getTemplatePreferences($rootUid);
 
 
         $key = $arguments['key'];
         $key = $arguments['key'];

+ 2 - 1
ot_templating/Classes/ViewHelpers/Template/GetPreferencesViewHelper.php

@@ -7,6 +7,7 @@ use Opentalent\OtCore\Page\OtPageRepository;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtCore\ViewHelpers\OtAbstractViewHelper;
 use Opentalent\OtTemplating\Templating\TemplateRepository;
 use Opentalent\OtTemplating\Templating\TemplateRepository;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
 use TYPO3\CMS\Core\Utility\GeneralUtility;
+use TYPO3\CMS\Extbase\Object\ObjectManager;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
 
 
 /**
 /**
@@ -34,7 +35,7 @@ class PreferencesViewHelper extends OtAbstractViewHelper
         Closure $renderChildrenClosure,
         Closure $renderChildrenClosure,
         RenderingContextInterface $renderingContext
         RenderingContextInterface $renderingContext
     ) {
     ) {
-        $pageRepository = GeneralUtility::makeInstance(OtPageRepository::class);
+        $pageRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtPageRepository::class);
         $rootUid = $pageRepository->getCurrentSiteRootPageId();
         $rootUid = $pageRepository->getCurrentSiteRootPageId();
 
 
         $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);
         $templateRepository = GeneralUtility::makeInstance(TemplateRepository::class);