‪TYPO3CMS  ‪main
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;
33 use TYPO3\CMS\Core\Package\PackageManager;
49 
54 class ‪InstallUtility implements ‪SingletonInterface, LoggerAwareInterface
55 {
56  use LoggerAwareTrait;
57 
61  protected ‪$fileHandlingUtility;
62 
66  protected ‪$listUtility;
67 
71  protected ‪$packageManager;
72 
76  protected ‪$cacheManager;
77 
81  protected ‪$registry;
82 
87 
91  protected ‪$bootService;
92 
93  public function ‪injectEventDispatcher(EventDispatcherInterface ‪$eventDispatcher)
94  {
95  $this->eventDispatcher = ‪$eventDispatcher;
96  }
97 
99  {
100  $this->fileHandlingUtility = ‪$fileHandlingUtility;
101  }
102 
104  {
105  $this->listUtility = ‪$listUtility;
106  }
107 
108  public function ‪injectPackageManager(PackageManager ‪$packageManager)
109  {
110  $this->packageManager = ‪$packageManager;
111  }
112 
114  {
115  $this->cacheManager = ‪$cacheManager;
116  }
117 
119  {
120  $this->registry = ‪$registry;
121  }
122 
123  public function ‪injectBootService(BootService ‪$bootService)
124  {
125  $this->bootService = ‪$bootService;
126  }
127 
134  public function ‪install(...$extensionKeys)
135  {
136  foreach ($extensionKeys as $extensionKey) {
137  $this->‪loadExtension($extensionKey);
138  $extension = $this->‪enrichExtensionWithDetails($extensionKey, false);
139  $this->‪saveDefaultConfiguration($extensionKey);
140  }
141 
142  $this->cacheManager->flushCaches();
143 
144  // Load a new container as reloadCaches will load ext_localconf
145  $container = $this->bootService->getContainer(false);
146  $backup = $this->bootService->makeCurrent($container);
147 
148  $this->‪reloadCaches();
149  $this->‪updateDatabase();
150 
151  foreach ($extensionKeys as $extensionKey) {
152  $this->‪processExtensionSetup($extensionKey);
153  $container->get(EventDispatcherInterface::class)->dispatch(new ‪AfterPackageActivationEvent($extensionKey, 'typo3-cms-extension', $this));
154  }
155 
156  // Reset to the original container instance
157  $this->bootService->makeCurrent(null, $backup);
158  }
159 
160  public function ‪processExtensionSetup(string $extensionKey): void
161  {
162  $packagePath = $this->packageManager->getPackage($extensionKey)->getPackagePath();
163  $this->‪importInitialFiles($packagePath, $extensionKey);
164  $this->‪importStaticSqlFile($extensionKey, $packagePath);
165  $import = $this->‪importT3DFile($extensionKey, $packagePath);
166  $this->‪importSiteConfiguration($extensionKey, $packagePath, $import);
167  }
168 
175  public function ‪uninstall($extensionKey)
176  {
177  $dependentExtensions = $this->‪findInstalledExtensionsThatDependOnExtension((string)$extensionKey);
178  if (!empty($dependentExtensions)) {
181  'extensionList.uninstall.dependencyError',
182  'extensionmanager',
183  [$extensionKey, implode(',', $dependentExtensions)]
184  ) ?? '',
185  1342554622
186  );
187  }
188  $this->‪unloadExtension($extensionKey);
189  }
190 
196  protected function ‪findInstalledExtensionsThatDependOnExtension(string $extensionKey): array
197  {
198  $availableAndInstalledExtensions = $this->listUtility->getAvailableAndInstalledExtensionsWithAdditionalInformation();
199  $dependentExtensions = [];
200  foreach ($availableAndInstalledExtensions as $availableAndInstalledExtensionKey => $availableAndInstalledExtension) {
201  if (isset($availableAndInstalledExtension['installed']) && $availableAndInstalledExtension['installed'] === true) {
202  if (is_array($availableAndInstalledExtension['constraints'] ?? false) && is_array($availableAndInstalledExtension['constraints']['depends']) && array_key_exists($extensionKey, $availableAndInstalledExtension['constraints']['depends'])) {
203  $dependentExtensions[] = $availableAndInstalledExtensionKey;
204  }
205  }
206  }
207  return $dependentExtensions;
208  }
209 
213  public function ‪reloadAvailableExtensions()
214  {
215  $this->listUtility->reloadAvailableExtensions();
216  }
217 
223  protected function ‪loadExtension($extensionKey)
224  {
225  $this->packageManager->activatePackage($extensionKey);
226  }
227 
233  protected function ‪unloadExtension($extensionKey)
234  {
235  $this->packageManager->deactivatePackage($extensionKey);
236  $this->eventDispatcher->dispatch(new ‪AfterPackageDeactivationEvent($extensionKey, 'typo3-cms-extension', $this));
237  $this->cacheManager->flushCachesInGroup('system');
238  }
239 
246  public function ‪isAvailable($extensionKey)
247  {
248  return $this->packageManager->isPackageAvailable($extensionKey);
249  }
250 
260  public function ‪reloadPackageInformation($extensionKey)
261  {
262  if ($this->packageManager->isPackageAvailable($extensionKey)) {
263  $this->‪reloadOpcache();
264  $this->packageManager->reloadPackageInformation($extensionKey);
265  }
266  }
267 
277  public function ‪enrichExtensionWithDetails($extensionKey, $loadTerInformation = true)
278  {
279  $extension = $this->‪getExtensionArray($extensionKey);
280  if (!$loadTerInformation) {
281  $availableAndInstalledExtensions = $this->listUtility->enrichExtensionsWithEmConfInformation([$extensionKey => $extension]);
282  } else {
283  $availableAndInstalledExtensions = $this->listUtility->enrichExtensionsWithEmConfAndTerInformation([$extensionKey => $extension]);
284  }
285 
286  if (!isset($availableAndInstalledExtensions[$extensionKey])) {
287  throw new ExtensionManagerException(
288  'Please check your uploaded extension "' . $extensionKey . '". The configuration file "ext_emconf.php" seems to be invalid.',
289  1391432222
290  );
291  }
292 
293  return $availableAndInstalledExtensions[$extensionKey];
294  }
295 
301  protected function ‪getExtensionArray($extensionKey)
302  {
303  $availableExtensions = $this->listUtility->getAvailableExtensions();
304  if (isset($availableExtensions[$extensionKey])) {
305  return $availableExtensions[$extensionKey];
306  }
307  throw new ‪ExtensionManagerException('Extension ' . $extensionKey . ' is not available', 1342864081);
308  }
309 
313  public function ‪reloadCaches()
314  {
315  $this->‪reloadOpcache();
319  }
320 
324  protected function ‪reloadOpcache()
325  {
326  GeneralUtility::makeInstance(OpcodeCacheService::class)->clearAllActive();
327  }
328 
334  public function ‪updateDatabase()
335  {
336  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
337  $schemaMigrator = GeneralUtility::makeInstance(SchemaMigrator::class);
338  $sqlStatements = [];
339  $sqlStatements[] = $sqlReader->getTablesDefinitionString();
340  $sqlStatements = $sqlReader->getCreateTableStatementArray(implode(LF . LF, array_filter($sqlStatements)));
341  $updateStatements = $schemaMigrator->getUpdateSuggestions($sqlStatements);
342 
343  $updateStatements = array_merge_recursive(...array_values($updateStatements));
344  $selectedStatements = [];
345  foreach (['add', 'change', 'create_table', 'change_table'] as $action) {
346  if (empty($updateStatements[$action])) {
347  continue;
348  }
349 
350  $statements = array_combine(array_keys($updateStatements[$action]), array_fill(0, count($updateStatements[$action]), true));
351  $selectedStatements = array_merge(
352  $selectedStatements,
353  $statements
354  );
355  }
356 
357  $schemaMigrator->migrate($sqlStatements, $selectedStatements);
358  }
359 
365  protected function ‪saveDefaultConfiguration($extensionKey)
366  {
367  $extensionConfiguration = GeneralUtility::makeInstance(ExtensionConfiguration::class);
368  $extensionConfiguration->synchronizeExtConfTemplateWithLocalConfiguration($extensionKey);
369  }
370 
376  public function ‪importStaticSql($rawDefinitions)
377  {
378  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
379  $statements = $sqlReader->getStatementArray($rawDefinitions);
380 
381  $schemaMigrationService = GeneralUtility::makeInstance(SchemaMigrator::class);
382  $schemaMigrationService->importStaticData($statements, true);
383  }
384 
391  public function ‪removeExtension($extension)
392  {
393  $absolutePath = $this->‪enrichExtensionWithDetails($extension)['packagePath'];
394  if ($this->‪isValidExtensionPath($absolutePath)) {
395  if ($this->packageManager->isPackageAvailable($extension)) {
396  // Package manager deletes the extension and removes the entry from PackageStates.php
397  $this->packageManager->deletePackage($extension);
398  } else {
399  // The extension is not listed in PackageStates.php, we can safely remove it
400  $this->fileHandlingUtility->removeDirectory($absolutePath);
401  }
402  } else {
403  throw new ‪ExtensionManagerException('No valid extension path given.', 1342875724);
404  }
405  }
406 
414  protected function ‪importT3DFile($extensionKey, $packagePath): ?‪Import
415  {
416  $extensionSiteRelPath = ‪PathUtility::stripPathSitePrefix($packagePath);
417  $registryKeysToCheck = [
418  $extensionSiteRelPath . 'Initialisation/data.t3d',
419  $extensionSiteRelPath . 'Initialisation/dataImported',
420  ];
421  foreach ($registryKeysToCheck as $registryKeyToCheck) {
422  if ($this->registry->get('extensionDataImport', $registryKeyToCheck)) {
423  // Data was imported before => early return
424  return null;
425  }
426  }
427  $importFileToUse = null;
428  $possibleImportFiles = [
429  $packagePath . 'Initialisation/data.t3d',
430  $packagePath . 'Initialisation/data.xml',
431  ];
432  foreach ($possibleImportFiles as $possibleImportFile) {
433  if (!file_exists($possibleImportFile)) {
434  continue;
435  }
436  $importFileToUse = $possibleImportFile;
437  }
438  if ($importFileToUse !== null) {
439  $importExportUtility = GeneralUtility::makeInstance(ImportExportUtility::class);
440  try {
441  $importResult = $importExportUtility->importT3DFile($importFileToUse, 0);
442  $this->registry->set('extensionDataImport', $extensionSiteRelPath . 'Initialisation/dataImported', 1);
443  $this->eventDispatcher->dispatch(new AfterExtensionDatabaseContentHasBeenImportedEvent($extensionKey, $importFileToUse, $importResult, $this));
444  return $importExportUtility->getImport();
445  } catch (\ErrorException $e) {
446  $this->logger->warning($e->getMessage(), ['exception' => $e]);
447  }
448  }
449  return null;
450  }
451 
458  protected function ‪importStaticSqlFile(string $extensionKey, $packagePath)
459  {
460  $extTablesStaticSqlFile = $packagePath . 'ext_tables_static+adt.sql';
461  $extTablesStaticSqlRelFile = ‪PathUtility::stripPathSitePrefix($extTablesStaticSqlFile);
462  if (!$this->registry->get('extensionDataImport', $extTablesStaticSqlRelFile)) {
463  $shortFileHash = '';
464  if (file_exists($extTablesStaticSqlFile)) {
465  $extTablesStaticSqlContent = (string)file_get_contents($extTablesStaticSqlFile);
466  $shortFileHash = md5($extTablesStaticSqlContent);
467  $this->‪importStaticSql($extTablesStaticSqlContent);
468  }
469  $this->registry->set('extensionDataImport', $extTablesStaticSqlRelFile, $shortFileHash);
470  $this->eventDispatcher->dispatch(new ‪AfterExtensionStaticDatabaseContentHasBeenImportedEvent($extensionKey, $extTablesStaticSqlFile, $this));
471  }
472  }
473 
481  protected function ‪importInitialFiles($packagePath, $extensionKey)
482  {
483  $importFolder = $packagePath . 'Initialisation/Files';
484  $importRelFolder = ‪PathUtility::stripPathSitePrefix($importFolder);
485  if (!$this->registry->get('extensionDataImport', $importRelFolder)) {
486  if (file_exists($importFolder)) {
487  $destinationAbsolutePath = GeneralUtility::getFileAbsFileName(‪$GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . $extensionKey);
488  if (!file_exists($destinationAbsolutePath) &&
489  GeneralUtility::isAllowedAbsPath($destinationAbsolutePath)
490  ) {
491  ‪GeneralUtility::mkdir($destinationAbsolutePath);
492  }
493  GeneralUtility::copyDirectory($importFolder, $destinationAbsolutePath);
494  $this->registry->set('extensionDataImport', $importRelFolder, 1);
495  $this->eventDispatcher->dispatch(new AfterExtensionFilesHaveBeenImportedEvent($extensionKey, $destinationAbsolutePath, $this));
496  }
497  }
498  }
499 
503  protected function ‪importSiteConfiguration(string $extensionKey, string $packagePath, Import $import = null): void
504  {
505  $importAbsFolder = $packagePath . 'Initialisation/Site';
506  $destinationFolder = ‪Environment::getConfigPath() . '/sites';
507 
508  if (!is_dir($importAbsFolder)) {
509  return;
510  }
511 
512  $siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
513  $existingSites = $siteConfiguration->resolveAllExistingSites(false);
514 
515  ‪GeneralUtility::mkdir($destinationFolder);
516  ‪$finder = GeneralUtility::makeInstance(Finder::class);
517  ‪$finder->directories()->in($importAbsFolder);
518  if (‪$finder->hasResults()) {
519  foreach (‪$finder as $siteConfigDirectory) {
520  ‪$siteIdentifier = $siteConfigDirectory->getBasename();
521  if (isset($existingSites[‪$siteIdentifier])) {
522  $this->logger->warning('Skipped importing site configuration from {key} due to existing site identifier {site}', [
523  'key' => $extensionKey,
524  'site' => ‪$siteIdentifier,
525  ]);
526  continue;
527  }
528  $targetDir = $destinationFolder . '/' . ‪$siteIdentifier;
529  if (!$this->registry->get('siteConfigImport', ‪$siteIdentifier) && !is_dir($targetDir)) {
530  ‪GeneralUtility::mkdir($targetDir);
531  GeneralUtility::copyDirectory($siteConfigDirectory->getPathname(), $targetDir);
532  $this->registry->set('siteConfigImport', ‪$siteIdentifier, 1);
533  }
534  }
535  }
536 
537  $newSites = array_diff_key($siteConfiguration->resolveAllExistingSites(false), $existingSites);
538  $importedPages = [];
539  if ($import instanceof Import) {
540  $importedPages = $import->getImportMapId()['pages'] ?? null;
541  }
542 
543  $newSiteIdentifierList = [];
544  foreach ($newSites as $newSite) {
545  $exportedPageId = $newSite->getRootPageId();
546  ‪$siteIdentifier = $newSite->getIdentifier();
547  $newSiteIdentifierList[] = ‪$siteIdentifier;
548  $importedPageId = $importedPages[$exportedPageId] ?? null;
549  if ($importedPageId === null) {
550  $this->logger->warning('Imported site configuration with identifier {site} could not be mapped to imported page id', [
551  'site' => ‪$siteIdentifier,
552  ]);
553  continue;
554  }
555  $configuration = $siteConfiguration->load(‪$siteIdentifier);
556  $configuration['rootPageId'] = $importedPageId;
557  try {
558  $siteConfiguration->write(‪$siteIdentifier, $configuration);
559  } catch (SiteConfigurationWriteException $e) {
560  $this->logger->warning(
561  sprintf(
562  'Imported site configuration with identifier %s could not be written: %s',
563  $newSite->getIdentifier(),
564  $e->getMessage()
565  )
566  );
567  continue;
568  }
569  }
570  $this->eventDispatcher->dispatch(new AfterExtensionSiteFilesHaveBeenImportedEvent($extensionKey, $newSiteIdentifierList));
571  }
572 
578  protected function ‪isValidExtensionPath($path): bool
579  {
580  $allowedPaths = ‪Extension::returnInstallPaths();
581  foreach ($allowedPaths as $allowedPath) {
582  if (str_starts_with($path, $allowedPath)) {
583  return true;
584  }
585  }
586  return false;
587  }
588 }
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectPackageManager
‪injectPackageManager(PackageManager $packageManager)
Definition: InstallUtility.php:101
‪TYPO3\CMS\Core\Utility\PathUtility\stripPathSitePrefix
‪static stripPathSitePrefix(string $path)
Definition: PathUtility.php:428
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:27
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isValidExtensionPath
‪isValidExtensionPath($path)
Definition: InstallUtility.php:571
‪TYPO3\CMS\Core\Configuration\Exception\SiteConfigurationWriteException
Definition: SiteConfigurationWriteException.php:26
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$packageManager
‪TYPO3 CMS Core Package PackageManager $packageManager
Definition: InstallUtility.php:68
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadOpcache
‪reloadOpcache()
Definition: InstallUtility.php:317
‪TYPO3\CMS\Extensionmanager\Utility
Definition: DependencyUtility.php:16
‪$finder
‪if(PHP_SAPI !=='cli') $finder
Definition: header-comment.php:22
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\findInstalledExtensionsThatDependOnExtension
‪findInstalledExtensionsThatDependOnExtension(string $extensionKey)
Definition: InstallUtility.php:189
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\enrichExtensionWithDetails
‪array enrichExtensionWithDetails($extensionKey, $loadTerInformation=true)
Definition: InstallUtility.php:270
‪TYPO3\CMS\Extbase\Utility\LocalizationUtility
Definition: LocalizationUtility.php:36
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionStaticDatabaseContentHasBeenImportedEvent
Definition: AfterExtensionStaticDatabaseContentHasBeenImportedEvent.php:26
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension
Definition: Extension.php:28
‪TYPO3\CMS\Core\Configuration\ExtensionConfiguration
Definition: ExtensionConfiguration.php:47
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importT3DFile
‪importT3DFile($extensionKey, $packagePath)
Definition: InstallUtility.php:407
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\install
‪install(... $extensionKeys)
Definition: InstallUtility.php:127
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$bootService
‪BootService $bootService
Definition: InstallUtility.php:84
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectEventDispatcher
‪injectEventDispatcher(EventDispatcherInterface $eventDispatcher)
Definition: InstallUtility.php:86
‪TYPO3\CMS\Core\Registry
Definition: Registry.php:33
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\unloadExtension
‪unloadExtension($extensionKey)
Definition: InstallUtility.php:226
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\loadExtLocalconf
‪static loadExtLocalconf(bool $allowCaching=true, FrontendInterface $codeCache=null)
Definition: ExtensionManagementUtility.php:1293
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\getExtensionArray
‪array getExtensionArray($extensionKey)
Definition: InstallUtility.php:294
‪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:40
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionDatabaseContentHasBeenImportedEvent
Definition: AfterExtensionDatabaseContentHasBeenImportedEvent.php:26
‪TYPO3\CMS\Core\Core\BootService
Definition: BootService.php:32
‪TYPO3\CMS\Core\Configuration\SiteConfiguration
Definition: SiteConfiguration.php:47
‪TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility
Definition: FileHandlingUtility.php:36
‪TYPO3\CMS\Core\Database\Schema\SchemaMigrator
Definition: SchemaMigrator.php:40
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$cacheManager
‪TYPO3 CMS Core Cache CacheManager $cacheManager
Definition: InstallUtility.php:72
‪TYPO3\CMS\Core\Core\Environment\getConfigPath
‪static getConfigPath()
Definition: Environment.php:212
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectListUtility
‪injectListUtility(ListUtility $listUtility)
Definition: InstallUtility.php:96
‪TYPO3\CMS\Core\Core\Bootstrap\loadBaseTca
‪static loadBaseTca(bool $allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:493
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility
Definition: ExtensionManagementUtility.php:40
‪TYPO3\CMS\Impexp\Utility\ImportExportUtility
Definition: ImportExportUtility.php:33
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility
Definition: InstallUtility.php:55
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\removeExtension
‪removeExtension($extension)
Definition: InstallUtility.php:384
‪TYPO3\CMS\Extensionmanager\Event\AfterExtensionFilesHaveBeenImportedEvent
Definition: AfterExtensionFilesHaveBeenImportedEvent.php:26
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectFileHandlingUtility
‪injectFileHandlingUtility(FileHandlingUtility $fileHandlingUtility)
Definition: InstallUtility.php:91
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\processExtensionSetup
‪processExtensionSetup(string $extensionKey)
Definition: InstallUtility.php:153
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: InstallUtility.php:80
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importStaticSql
‪importStaticSql($rawDefinitions)
Definition: InstallUtility.php:369
‪TYPO3\CMS\Impexp\Import
Definition: Import.php:50
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$fileHandlingUtility
‪TYPO3 CMS Extensionmanager Utility FileHandlingUtility $fileHandlingUtility
Definition: InstallUtility.php:60
‪TYPO3\CMS\Core\Package\Event\AfterPackageActivationEvent
Definition: AfterPackageActivationEvent.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadAvailableExtensions
‪reloadAvailableExtensions()
Definition: InstallUtility.php:206
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\loadExtension
‪loadExtension($extensionKey)
Definition: InstallUtility.php:216
‪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:55
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectCacheManager
‪injectCacheManager(CacheManager $cacheManager)
Definition: InstallUtility.php:106
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException
Definition: ExtensionManagerException.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadPackageInformation
‪reloadPackageInformation($extensionKey)
Definition: InstallUtility.php:253
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isAvailable
‪bool isAvailable($extensionKey)
Definition: InstallUtility.php:239
‪TYPO3\CMS\Core\Service\OpcodeCacheService
Definition: OpcodeCacheService.php:27
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\uninstall
‪uninstall($extensionKey)
Definition: InstallUtility.php:168
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$listUtility
‪TYPO3 CMS Extensionmanager Utility ListUtility $listUtility
Definition: InstallUtility.php:64
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importInitialFiles
‪importInitialFiles($packagePath, $extensionKey)
Definition: InstallUtility.php:474
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importStaticSqlFile
‪importStaticSqlFile(string $extensionKey, $packagePath)
Definition: InstallUtility.php:451
‪TYPO3\CMS\Core\Package\Event\AfterPackageDeactivationEvent
Definition: AfterPackageDeactivationEvent.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\updateDatabase
‪updateDatabase()
Definition: InstallUtility.php:327
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:23
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Core\Core\Bootstrap
Definition: Bootstrap.php:61
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$registry
‪TYPO3 CMS Core Registry $registry
Definition: InstallUtility.php:76
‪TYPO3\CMS\Webhooks\Message\$siteIdentifier
‪identifier readonly int readonly array readonly string readonly string $siteIdentifier
Definition: PageModificationMessage.php:38
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectBootService
‪injectBootService(BootService $bootService)
Definition: InstallUtility.php:116
‪TYPO3\CMS\Core\Core\Bootstrap\loadExtTables
‪static loadExtTables(bool $allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:523
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:51
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectRegistry
‪injectRegistry(Registry $registry)
Definition: InstallUtility.php:111
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir
‪static bool mkdir($newFolder)
Definition: GeneralUtility.php:1736
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\returnInstallPaths
‪static array returnInstallPaths()
Definition: Extension.php:438
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadCaches
‪reloadCaches()
Definition: InstallUtility.php:306
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importSiteConfiguration
‪importSiteConfiguration(string $extensionKey, string $packagePath, Import $import=null)
Definition: InstallUtility.php:496
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\saveDefaultConfiguration
‪saveDefaultConfiguration($extensionKey)
Definition: InstallUtility.php:358