‪TYPO3CMS  10.4
InstallUtility.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
18 use Psr\EventDispatcher\EventDispatcherInterface;
19 use Psr\Log\LoggerAwareInterface;
20 use Psr\Log\LoggerAwareTrait;
21 use Symfony\Component\Finder\Finder;
31 use TYPO3\CMS\Core\Package\PackageManager;
49 
54 class ‪InstallUtility implements ‪SingletonInterface, LoggerAwareInterface
55 {
56  use LoggerAwareTrait;
57 
61  protected ‪$dependencyUtility;
62 
66  protected ‪$fileHandlingUtility;
67 
71  protected ‪$listUtility;
72 
77 
81  protected ‪$packageManager;
82 
86  protected ‪$cacheManager;
87 
91  protected ‪$registry;
92 
96  protected ‪$eventDispatcher;
97 
101  protected ‪$lateBootService;
102 
103  public function ‪injectEventDispatcher(EventDispatcherInterface ‪$eventDispatcher)
104  {
105  $this->eventDispatcher = ‪$eventDispatcher;
106  }
107 
112  {
113  $this->dependencyUtility = ‪$dependencyUtility;
114  }
115 
119  public function ‪injectFileHandlingUtility(FileHandlingUtility ‪$fileHandlingUtility)
120  {
121  $this->fileHandlingUtility = ‪$fileHandlingUtility;
122  }
123 
127  public function ‪injectListUtility(ListUtility ‪$listUtility)
128  {
129  $this->listUtility = ‪$listUtility;
130  }
131 
135  public function ‪injectExtensionRepository(ExtensionRepository ‪$extensionRepository)
136  {
137  $this->extensionRepository = ‪$extensionRepository;
138  }
139 
143  public function ‪injectPackageManager(PackageManager ‪$packageManager)
144  {
145  $this->packageManager = ‪$packageManager;
146  }
147 
151  public function ‪injectCacheManager(CacheManager ‪$cacheManager)
152  {
153  $this->cacheManager = ‪$cacheManager;
154  }
155 
159  public function ‪injectRegistry(Registry ‪$registry)
160  {
161  $this->registry = ‪$registry;
162  }
163 
167  public function ‪injectLateBootService(LateBootService ‪$lateBootService)
168  {
169  $this->lateBootService = ‪$lateBootService;
170  }
171 
179  public function ‪install(...$extensionKeys)
180  {
181  $flushCaches = false;
182  foreach ($extensionKeys as $extensionKey) {
183  $this->‪loadExtension($extensionKey);
184  $extension = $this->‪enrichExtensionWithDetails($extensionKey, false);
185  $this->‪saveDefaultConfiguration($extensionKey);
186  if (!empty($extension['clearcacheonload']) || !empty($extension['clearCacheOnLoad'])) {
187  $flushCaches = true;
188  }
189  }
190 
191  if ($flushCaches) {
192  $this->cacheManager->flushCaches();
193  } else {
194  $this->cacheManager->flushCachesInGroup('system');
195  }
196 
197  // Load a new container as reloadCaches will load ext_localconf
198  $container = $this->lateBootService->getContainer();
199  $backup = $this->lateBootService->makeCurrent($container);
200 
201  $this->‪reloadCaches();
202  $this->‪updateDatabase();
203 
204  foreach ($extensionKeys as $extensionKey) {
205  $this->‪processExtensionSetup($extensionKey);
206  $container->get(EventDispatcherInterface::class)->dispatch(new AfterPackageActivationEvent($extensionKey, 'typo3-cms-extension', $this));
207  }
208 
209  // Reset to the original container instance
210  $this->lateBootService->makeCurrent(null, $backup);
211  }
212 
216  public function ‪processExtensionSetup(string $extensionKey): void
217  {
218  $extension = $this->‪enrichExtensionWithDetails($extensionKey, false);
219  $this->‪importInitialFiles($extension['siteRelPath'] ?? '', $extensionKey);
220  $this->‪importStaticSqlFile($extensionKey, $extension['siteRelPath']);
221  $import = $this->‪importT3DFile($extensionKey, $extension['siteRelPath']);
222  $this->‪importSiteConfiguration($extensionKey, $extension['siteRelPath'], $import);
223  }
224 
231  public function ‪uninstall($extensionKey)
232  {
233  $dependentExtensions = $this->dependencyUtility->findInstalledExtensionsThatDependOnMe($extensionKey);
234  if (is_array($dependentExtensions) && !empty($dependentExtensions)) {
237  'extensionList.uninstall.dependencyError',
238  'extensionmanager',
239  [$extensionKey, implode(',', $dependentExtensions)]
240  ) ?? '',
241  1342554622
242  );
243  }
244  $this->‪unloadExtension($extensionKey);
245  }
246 
253  public function ‪isLoaded($extensionKey)
254  {
255  return $this->packageManager->isPackageActive($extensionKey);
256  }
257 
261  public function ‪reloadAvailableExtensions()
262  {
263  $this->listUtility->reloadAvailableExtensions();
264  }
265 
271  protected function ‪loadExtension($extensionKey)
272  {
273  $this->packageManager->activatePackage($extensionKey);
274  }
275 
281  protected function ‪unloadExtension($extensionKey)
282  {
283  $this->packageManager->deactivatePackage($extensionKey);
284  $this->eventDispatcher->dispatch(new ‪AfterPackageDeactivationEvent($extensionKey, 'typo3-cms-extension', $this));
285  $this->cacheManager->flushCachesInGroup('system');
286  }
287 
294  public function ‪isAvailable($extensionKey)
295  {
296  return $this->packageManager->isPackageAvailable($extensionKey);
297  }
298 
308  public function ‪reloadPackageInformation($extensionKey)
309  {
310  if ($this->packageManager->isPackageAvailable($extensionKey)) {
311  $this->‪reloadOpcache();
312  $this->packageManager->reloadPackageInformation($extensionKey);
313  }
314  }
315 
325  public function ‪enrichExtensionWithDetails($extensionKey, $loadTerInformation = true)
326  {
327  $extension = $this->‪getExtensionArray($extensionKey);
328  if (!$loadTerInformation) {
329  $availableAndInstalledExtensions = $this->listUtility->enrichExtensionsWithEmConfInformation([$extensionKey => $extension]);
330  } else {
331  $availableAndInstalledExtensions = $this->listUtility->enrichExtensionsWithEmConfAndTerInformation([$extensionKey => $extension]);
332  }
333 
334  if (!isset($availableAndInstalledExtensions[$extensionKey])) {
335  throw new ExtensionManagerException(
336  'Please check your uploaded extension "' . $extensionKey . '". The configuration file "ext_emconf.php" seems to be invalid.',
337  1391432222
338  );
339  }
340 
341  return $availableAndInstalledExtensions[$extensionKey];
342  }
343 
349  protected function ‪getExtensionArray($extensionKey)
350  {
351  $availableExtensions = $this->listUtility->getAvailableExtensions();
352  if (isset($availableExtensions[$extensionKey])) {
353  return $availableExtensions[$extensionKey];
354  }
355  throw new ‪ExtensionManagerException('Extension ' . $extensionKey . ' is not available', 1342864081);
356  }
357 
361  public function ‪reloadCaches()
362  {
367  }
368 
372  protected function ‪reloadOpcache()
373  {
374  GeneralUtility::makeInstance(OpcodeCacheService::class)->clearAllActive();
375  }
376 
381  protected function ‪updateDatabase()
382  {
383  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
384  $schemaMigrator = GeneralUtility::makeInstance(SchemaMigrator::class);
385  $sqlStatements = [];
386  $sqlStatements[] = $sqlReader->getTablesDefinitionString();
387  $sqlStatements = $sqlReader->getCreateTableStatementArray(implode(LF . LF, array_filter($sqlStatements)));
388  $updateStatements = $schemaMigrator->getUpdateSuggestions($sqlStatements);
389 
390  $updateStatements = array_merge_recursive(...array_values($updateStatements));
391  $selectedStatements = [];
392  foreach (['add', 'change', 'create_table', 'change_table'] as $action) {
393  if (empty($updateStatements[$action])) {
394  continue;
395  }
396 
397  $statements = array_combine(array_keys($updateStatements[$action]), array_fill(0, count($updateStatements[$action]), true));
398  $statements = is_array($statements) ? $statements : [];
399  $selectedStatements = array_merge(
400  $selectedStatements,
401  $statements
402  );
403  }
404 
405  $schemaMigrator->migrate($sqlStatements, $selectedStatements);
406  }
407 
413  protected function ‪saveDefaultConfiguration($extensionKey)
414  {
415  $extensionConfiguration = GeneralUtility::makeInstance(ExtensionConfiguration::class);
416  $extensionConfiguration->synchronizeExtConfTemplateWithLocalConfiguration($extensionKey);
417  }
418 
424  public function ‪importStaticSql($rawDefinitions)
425  {
426  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
427  $statements = $sqlReader->getStatementArray($rawDefinitions);
428 
429  $schemaMigrationService = GeneralUtility::makeInstance(SchemaMigrator::class);
430  $schemaMigrationService->importStaticData($statements, true);
431  }
432 
439  public function ‪removeExtension($extension)
440  {
441  $absolutePath = $this->fileHandlingUtility->getAbsoluteExtensionPath($extension);
442  if ($this->fileHandlingUtility->isValidExtensionPath($absolutePath)) {
443  if ($this->packageManager->isPackageAvailable($extension)) {
444  // Package manager deletes the extension and removes the entry from PackageStates.php
445  $this->packageManager->deletePackage($extension);
446  } else {
447  // The extension is not listed in PackageStates.php, we can safely remove it
448  $this->fileHandlingUtility->removeDirectory($absolutePath);
449  }
450  } else {
451  throw new ExtensionManagerException('No valid extension path given.', 1342875724);
452  }
453  }
454 
462  public function ‪getUpdateableVersion(‪Extension $extensionData)
463  {
464  // Only check for update for TER extensions
465  $version = $extensionData->‪getIntegerVersion();
466 
467  $extensionUpdates = $this->extensionRepository->findByVersionRangeAndExtensionKeyOrderedByVersion(
468  $extensionData->‪getExtensionKey(),
469  $version,
470  0,
471  false
472  );
473  if ($extensionUpdates->count() > 0) {
474  foreach ($extensionUpdates as $extensionUpdate) {
476  try {
477  $this->dependencyUtility->checkDependencies($extensionUpdate);
478  if (!$this->dependencyUtility->hasDependencyErrors()) {
479  return $extensionUpdate;
480  }
481  } catch (‪ExtensionManagerException $e) {
482  }
483  }
484  }
485  return false;
486  }
487 
496  protected function ‪importT3DFile($extensionKey, $extensionSiteRelPath): ?‪Import
497  {
498  $registryKeysToCheck = [
499  $extensionSiteRelPath . 'Initialisation/data.t3d',
500  $extensionSiteRelPath . 'Initialisation/dataImported',
501  ];
502  foreach ($registryKeysToCheck as $registryKeyToCheck) {
503  if ($this->registry->get('extensionDataImport', $registryKeyToCheck)) {
504  // Data was imported before => early return
505  return null;
506  }
507  }
508  $importFileToUse = null;
509  $possibleImportFiles = [
510  $extensionSiteRelPath . 'Initialisation/data.t3d',
511  $extensionSiteRelPath . 'Initialisation/data.xml'
512  ];
513  foreach ($possibleImportFiles as $possibleImportFile) {
514  if (!file_exists(‪Environment::getPublicPath() . '/' . $possibleImportFile)) {
515  continue;
516  }
517  $importFileToUse = $possibleImportFile;
518  }
519  if ($importFileToUse !== null) {
520  $importExportUtility = GeneralUtility::makeInstance(ImportExportUtility::class);
521  try {
522  $importResult = $importExportUtility->importT3DFile(‪Environment::getPublicPath() . '/' . $importFileToUse, 0);
523  $this->registry->set('extensionDataImport', $extensionSiteRelPath . 'Initialisation/dataImported', 1);
524  $this->eventDispatcher->dispatch(new ‪AfterExtensionDatabaseContentHasBeenImportedEvent($extensionKey, $importFileToUse, $importResult, $this));
525  return $importExportUtility->getImport();
526  } catch (\ErrorException $e) {
527  $this->logger->warning($e->getMessage(), ['exception' => $e]);
528  }
529  }
530  return null;
531  }
532 
540  protected function ‪importStaticSqlFile(string $extensionKey, $extensionSiteRelPath)
541  {
542  $extTablesStaticSqlRelFile = $extensionSiteRelPath . 'ext_tables_static+adt.sql';
543  if (!$this->registry->get('extensionDataImport', $extTablesStaticSqlRelFile)) {
544  $extTablesStaticSqlFile = ‪Environment::getPublicPath() . '/' . $extTablesStaticSqlRelFile;
545  $shortFileHash = '';
546  if (file_exists($extTablesStaticSqlFile)) {
547  $extTablesStaticSqlContent = (string)file_get_contents($extTablesStaticSqlFile);
548  $shortFileHash = md5($extTablesStaticSqlContent);
549  $this->‪importStaticSql($extTablesStaticSqlContent);
550  }
551  $this->registry->set('extensionDataImport', $extTablesStaticSqlRelFile, $shortFileHash);
552  $this->eventDispatcher->dispatch(new ‪AfterExtensionStaticDatabaseContentHasBeenImportedEvent($extensionKey, $extTablesStaticSqlRelFile, $this));
553  }
554  }
555 
563  protected function ‪importInitialFiles($extensionSiteRelPath, $extensionKey)
564  {
565  $importRelFolder = $extensionSiteRelPath . 'Initialisation/Files';
566  if (!$this->registry->get('extensionDataImport', $importRelFolder)) {
567  $importFolder = ‪Environment::getPublicPath() . '/' . $importRelFolder;
568  if (file_exists($importFolder)) {
569  $destinationRelPath = ‪$GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . $extensionKey;
570  $destinationAbsolutePath = ‪Environment::getPublicPath() . '/' . $destinationRelPath;
571  if (!file_exists($destinationAbsolutePath) &&
572  GeneralUtility::isAllowedAbsPath($destinationAbsolutePath)
573  ) {
574  ‪GeneralUtility::mkdir($destinationAbsolutePath);
575  }
576  GeneralUtility::copyDirectory($importRelFolder, $destinationRelPath);
577  $this->registry->set('extensionDataImport', $importRelFolder, 1);
578  $this->eventDispatcher->dispatch(new ‪AfterExtensionFilesHaveBeenImportedEvent($extensionKey, $destinationAbsolutePath, $this));
579  }
580  }
581  }
582 
588  protected function ‪importSiteConfiguration(string $extensionKey, string $extensionSiteRelPath, Import $import = null): void
589  {
590  $importRelFolder = $extensionSiteRelPath . 'Initialisation/Site';
591  $importAbsFolder = ‪Environment::getPublicPath() . '/' . $importRelFolder;
592  $destinationFolder = ‪Environment::getConfigPath() . '/sites';
593 
594  if (!is_dir($importAbsFolder)) {
595  return;
596  }
597 
598  $siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
599  $existingSites = $siteConfiguration->resolveAllExistingSites(false);
600 
601  ‪GeneralUtility::mkdir($destinationFolder);
602  ‪$finder = GeneralUtility::makeInstance(Finder::class);
603  ‪$finder->directories()->in($importAbsFolder);
604  if (‪$finder->hasResults()) {
605  foreach (‪$finder as $siteConfigDirectory) {
606  $siteIdentifier = $siteConfigDirectory->getBasename();
607  if (isset($existingSites[$siteIdentifier])) {
608  $this->logger->warning(
609  sprintf(
610  'Skipped importing site configuration from %s due to existing site identifier %s',
611  $extensionSiteRelPath,
612  $siteIdentifier
613  )
614  );
615  continue;
616  }
617  $targetDir = $destinationFolder . '/' . $siteIdentifier;
618  if (!$this->registry->get('siteConfigImport', $siteIdentifier) && !is_dir($targetDir)) {
619  ‪GeneralUtility::mkdir($targetDir);
620  GeneralUtility::copyDirectory($siteConfigDirectory->getPathname(), $targetDir);
621  $this->registry->set('siteConfigImport', $siteIdentifier, 1);
622  }
623  }
624  }
625 
627  $newSites = array_diff_key($siteConfiguration->resolveAllExistingSites(false), $existingSites);
628  $importedPages = [];
629  if ($import instanceof Import && !empty($import->import_mapId['pages'])) {
630  $importedPages = $import->import_mapId['pages'];
631  }
632 
633  $newSiteIdentifierList = [];
634  foreach ($newSites as $newSite) {
635  $exportedPageId = $newSite->getRootPageId();
636  $siteIdentifier = $newSite->getIdentifier();
637  $newSiteIdentifierList[] = $siteIdentifier;
638  $importedPageId = $importedPages[$exportedPageId] ?? null;
639  if ($importedPageId === null) {
640  $this->logger->warning(
641  sprintf(
642  'Imported site configuration with identifier %s could not be mapped to imported page id',
643  $siteIdentifier
644  )
645  );
646  continue;
647  }
648  $configuration = $siteConfiguration->load($siteIdentifier);
649  $configuration['rootPageId'] = $importedPageId;
650  $siteConfiguration->write($siteIdentifier, $configuration);
651  }
652  $this->eventDispatcher->dispatch(new AfterExtensionSiteFilesHaveBeenImportedEvent($extensionKey, $newSiteIdentifierList));
653  }
654 }
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectPackageManager
‪injectPackageManager(PackageManager $packageManager)
Definition: InstallUtility.php:134
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importSiteConfiguration
‪importSiteConfiguration(string $extensionKey, string $extensionSiteRelPath, Import $import=null)
Definition: InstallUtility.php:579
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getIntegerVersion
‪int getIntegerVersion()
Definition: Extension.php:537
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$packageManager
‪TYPO3 CMS Core Package PackageManager $packageManager
Definition: InstallUtility.php:76
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadOpcache
‪reloadOpcache()
Definition: InstallUtility.php:363
‪TYPO3\CMS\Extensionmanager\Utility
‪$finder
‪if(PHP_SAPI !=='cli') $finder
Definition: header-comment.php:22
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:180
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\enrichExtensionWithDetails
‪array enrichExtensionWithDetails($extensionKey, $loadTerInformation=true)
Definition: InstallUtility.php:316
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility
Definition: LocalizationUtility.php:33
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionStaticDatabaseContentHasBeenImportedEvent
Definition: AfterExtensionStaticDatabaseContentHasBeenImportedEvent.php:26
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension
Definition: Extension.php:29
‪TYPO3\CMS\Core\Configuration\ExtensionConfiguration
Definition: ExtensionConfiguration.php:45
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\install
‪install(... $extensionKeys)
Definition: InstallUtility.php:170
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectEventDispatcher
‪injectEventDispatcher(EventDispatcherInterface $eventDispatcher)
Definition: InstallUtility.php:94
‪TYPO3\CMS\Core\Registry
Definition: Registry.php:33
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importInitialFiles
‪importInitialFiles($extensionSiteRelPath, $extensionKey)
Definition: InstallUtility.php:554
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectDependencyUtility
‪injectDependencyUtility(DependencyUtility $dependencyUtility)
Definition: InstallUtility.php:102
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\unloadExtension
‪unloadExtension($extensionKey)
Definition: InstallUtility.php:272
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\getExtensionArray
‪array getExtensionArray($extensionKey)
Definition: InstallUtility.php:340
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionSiteFilesHaveBeenImportedEvent
Definition: AfterExtensionSiteFilesHaveBeenImportedEvent.php:24
‪TYPO3\CMS\Core\Database\Schema\SqlReader
Definition: SqlReader.php:31
‪TYPO3\CMS\Extensionmanager\Utility\ListUtility
Definition: ListUtility.php:41
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectLateBootService
‪injectLateBootService(LateBootService $lateBootService)
Definition: InstallUtility.php:158
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionDatabaseContentHasBeenImportedEvent
Definition: AfterExtensionDatabaseContentHasBeenImportedEvent.php:26
‪TYPO3\CMS\Core\Configuration\SiteConfiguration
Definition: SiteConfiguration.php:41
‪TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility
Definition: FileHandlingUtility.php:35
‪TYPO3\CMS\Core\Database\Schema\SchemaMigrator
Definition: SchemaMigrator.php:36
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importStaticSqlFile
‪importStaticSqlFile(string $extensionKey, $extensionSiteRelPath)
Definition: InstallUtility.php:531
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$cacheManager
‪TYPO3 CMS Core Cache CacheManager $cacheManager
Definition: InstallUtility.php:80
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectListUtility
‪injectListUtility(ListUtility $listUtility)
Definition: InstallUtility.php:118
‪TYPO3\CMS\Core\Site\Entity\Site
Definition: Site.php:40
‪TYPO3\CMS\Core\Core\Bootstrap\loadBaseTca
‪static loadBaseTca(bool $allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:516
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:43
‪TYPO3\CMS\Impexp\Utility\ImportExportUtility
Definition: ImportExportUtility.php:30
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility
Definition: InstallUtility.php:55
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\removeExtension
‪removeExtension($extension)
Definition: InstallUtility.php:430
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionFilesHaveBeenImportedEvent
Definition: AfterExtensionFilesHaveBeenImportedEvent.php:26
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectFileHandlingUtility
‪injectFileHandlingUtility(FileHandlingUtility $fileHandlingUtility)
Definition: InstallUtility.php:110
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\processExtensionSetup
‪processExtensionSetup(string $extensionKey)
Definition: InstallUtility.php:207
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: InstallUtility.php:88
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\getUpdateableVersion
‪bool Extension getUpdateableVersion(Extension $extensionData)
Definition: InstallUtility.php:453
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importStaticSql
‪importStaticSql($rawDefinitions)
Definition: InstallUtility.php:415
‪TYPO3\CMS\Impexp\Import
Definition: Import.php:42
‪TYPO3\CMS\Extensionmanager\Utility\DependencyUtility
Definition: DependencyUtility.php:38
‪TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository
Definition: ExtensionRepository.php:35
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$fileHandlingUtility
‪TYPO3 CMS Extensionmanager Utility FileHandlingUtility $fileHandlingUtility
Definition: InstallUtility.php:64
‪TYPO3\CMS\Core\Package\Event\AfterPackageActivationEvent
Definition: AfterPackageActivationEvent.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadAvailableExtensions
‪reloadAvailableExtensions()
Definition: InstallUtility.php:252
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getExtensionKey
‪string getExtensionKey()
Definition: Extension.php:270
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\loadExtension
‪loadExtension($extensionKey)
Definition: InstallUtility.php:262
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility\translate
‪static string null translate(string $key, ?string $extensionName=null, array $arguments=null, string $languageKey=null, array $alternativeLanguageKeys=null)
Definition: LocalizationUtility.php:67
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectCacheManager
‪injectCacheManager(CacheManager $cacheManager)
Definition: InstallUtility.php:142
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:35
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$lateBootService
‪LateBootService $lateBootService
Definition: InstallUtility.php:92
‪TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException
Definition: ExtensionManagerException.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadPackageInformation
‪reloadPackageInformation($extensionKey)
Definition: InstallUtility.php:299
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isAvailable
‪bool isAvailable($extensionKey)
Definition: InstallUtility.php:285
‪TYPO3\CMS\Install\Service\LateBootService
Definition: LateBootService.php:34
‪TYPO3\CMS\Core\Service\OpcodeCacheService
Definition: OpcodeCacheService.php:25
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\uninstall
‪uninstall($extensionKey)
Definition: InstallUtility.php:222
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$listUtility
‪TYPO3 CMS Extensionmanager Utility ListUtility $listUtility
Definition: InstallUtility.php:68
‪TYPO3\CMS\Core\Package\Event\AfterPackageDeactivationEvent
Definition: AfterPackageDeactivationEvent.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\updateDatabase
‪updateDatabase()
Definition: InstallUtility.php:372
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:23
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:40
‪TYPO3\CMS\Core\Core\Bootstrap
Definition: Bootstrap.php:66
‪TYPO3\CMS\Core\Core\Bootstrap\loadExtTables
‪static loadExtTables(bool $allowCaching=true)
Definition: Bootstrap.php:546
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isLoaded
‪bool isLoaded($extensionKey)
Definition: InstallUtility.php:244
‪TYPO3\CMS\Core\Core\Environment\getConfigPath
‪static string getConfigPath()
Definition: Environment.php:210
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importT3DFile
‪Import null importT3DFile($extensionKey, $extensionSiteRelPath)
Definition: InstallUtility.php:487
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$registry
‪TYPO3 CMS Core Registry $registry
Definition: InstallUtility.php:84
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$extensionRepository
‪TYPO3 CMS Extensionmanager Domain Repository ExtensionRepository $extensionRepository
Definition: InstallUtility.php:72
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectExtensionRepository
‪injectExtensionRepository(ExtensionRepository $extensionRepository)
Definition: InstallUtility.php:126
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$dependencyUtility
‪TYPO3 CMS Extensionmanager Utility DependencyUtility $dependencyUtility
Definition: InstallUtility.php:60
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:46
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\loadExtLocalconf
‪static loadExtLocalconf($allowCaching=true, FrontendInterface $codeCache=null)
Definition: ExtensionManagementUtility.php:1550
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectRegistry
‪injectRegistry(Registry $registry)
Definition: InstallUtility.php:150
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir
‪static bool mkdir($newFolder)
Definition: GeneralUtility.php:2005
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadCaches
‪reloadCaches()
Definition: InstallUtility.php:352
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\saveDefaultConfiguration
‪saveDefaultConfiguration($extensionKey)
Definition: InstallUtility.php:404