‪TYPO3CMS  9.5
InstallUtility.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
26 
32 {
36  public ‪$objectManager;
37 
41  protected ‪$dependencyUtility;
42 
46  protected ‪$fileHandlingUtility;
47 
51  protected ‪$listUtility;
52 
57 
61  protected ‪$packageManager;
62 
66  protected ‪$cacheManager;
67 
71  protected ‪$signalSlotDispatcher;
72 
76  protected ‪$registry;
77 
81  public function ‪injectObjectManager(\‪TYPO3\CMS\‪Extbase\Object\ObjectManager ‪$objectManager)
82  {
83  $this->objectManager = ‪$objectManager;
84  }
85 
89  public function ‪injectDependencyUtility(\‪TYPO3\CMS\Extensionmanager\Utility\‪DependencyUtility ‪$dependencyUtility)
90  {
91  $this->dependencyUtility = ‪$dependencyUtility;
92  }
93 
97  public function ‪injectFileHandlingUtility(\‪TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility ‪$fileHandlingUtility)
98  {
99  $this->fileHandlingUtility = ‪$fileHandlingUtility;
100  }
101 
105  public function ‪injectListUtility(\‪TYPO3\CMS\Extensionmanager\Utility\ListUtility ‪$listUtility)
106  {
107  $this->listUtility = ‪$listUtility;
108  }
109 
113  public function ‪injectExtensionRepository(\‪TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository ‪$extensionRepository)
114  {
115  $this->extensionRepository = ‪$extensionRepository;
116  }
117 
121  public function ‪injectPackageManager(\‪TYPO3\CMS\Core\Package\PackageManager ‪$packageManager)
122  {
123  $this->packageManager = ‪$packageManager;
124  }
125 
129  public function ‪injectCacheManager(\‪TYPO3\CMS\Core\Cache\CacheManager ‪$cacheManager)
130  {
131  $this->cacheManager = ‪$cacheManager;
132  }
133 
137  public function ‪injectSignalSlotDispatcher(\‪TYPO3\CMS\‪Extbase\SignalSlot\Dispatcher ‪$signalSlotDispatcher)
138  {
139  $this->signalSlotDispatcher = ‪$signalSlotDispatcher;
140  }
141 
145  public function ‪injectRegistry(\‪TYPO3\CMS\Core\Registry ‪$registry)
146  {
147  $this->registry = ‪$registry;
148  }
149 
157  public function ‪install(...$extensionKeys)
158  {
159  $flushCaches = false;
160  foreach ($extensionKeys as $extensionKey) {
161  $this->‪loadExtension($extensionKey);
162  $extension = $this->‪enrichExtensionWithDetails($extensionKey, false);
163  $this->‪saveDefaultConfiguration($extensionKey);
164  if (!empty($extension['clearcacheonload']) || !empty($extension['clearCacheOnLoad'])) {
165  $flushCaches = true;
166  }
167  }
168 
169  if ($flushCaches) {
170  $this->cacheManager->flushCaches();
171  } else {
172  $this->cacheManager->flushCachesInGroup('system');
173  }
174  $this->‪reloadCaches();
175  $this->‪updateDatabase($extensionKeys);
176 
177  foreach ($extensionKeys as $extensionKey) {
178  $this->‪processExtensionSetup($extensionKey);
179  $this->‪emitAfterExtensionInstallSignal($extensionKey);
180  }
181  }
182 
186  public function ‪processExtensionSetup($extensionKey)
187  {
188  $extension = $this->‪enrichExtensionWithDetails($extensionKey, false);
189  $this->‪ensureConfiguredDirectoriesExist($extension);
190  $this->‪importInitialFiles($extension['siteRelPath'] ?? '', $extensionKey);
191  $this->‪importStaticSqlFile($extension['siteRelPath']);
192  $this->‪importT3DFile($extension['siteRelPath']);
193  }
194 
201  public function ‪uninstall($extensionKey)
202  {
203  $dependentExtensions = $this->dependencyUtility->findInstalledExtensionsThatDependOnMe($extensionKey);
204  if (is_array($dependentExtensions) && !empty($dependentExtensions)) {
206  \‪TYPO3\CMS\‪Extbase\Utility\LocalizationUtility::translate(
207  'extensionList.uninstall.dependencyError',
208  'extensionmanager',
209  [$extensionKey, implode(',', $dependentExtensions)]
210  ),
211  1342554622
212  );
213  }
214  $this->‪unloadExtension($extensionKey);
215  }
216 
223  public function ‪isLoaded($extensionKey)
224  {
225  return $this->packageManager->isPackageActive($extensionKey);
226  }
227 
231  public function ‪reloadAvailableExtensions()
232  {
233  $this->listUtility->reloadAvailableExtensions();
234  }
235 
241  protected function ‪loadExtension($extensionKey)
242  {
243  $this->packageManager->activatePackage($extensionKey);
244  }
245 
251  protected function ‪unloadExtension($extensionKey)
252  {
253  $this->packageManager->deactivatePackage($extensionKey);
255  $this->cacheManager->flushCachesInGroup('system');
256  }
257 
263  protected function ‪emitAfterExtensionInstallSignal($extensionKey)
264  {
265  $this->signalSlotDispatcher->dispatch(__CLASS__, 'afterExtensionInstall', [$extensionKey, $this]);
266  }
267 
273  protected function ‪emitAfterExtensionUninstallSignal($extensionKey)
274  {
275  $this->signalSlotDispatcher->dispatch(__CLASS__, 'afterExtensionUninstall', [$extensionKey, $this]);
276  }
277 
284  public function ‪isAvailable($extensionKey)
285  {
286  return $this->packageManager->isPackageAvailable($extensionKey);
287  }
288 
298  public function ‪reloadPackageInformation($extensionKey)
299  {
300  if ($this->packageManager->isPackageAvailable($extensionKey)) {
301  $this->‪reloadOpcache();
302  $this->packageManager->reloadPackageInformation($extensionKey);
303  }
304  }
305 
315  public function ‪enrichExtensionWithDetails($extensionKey, $loadTerInformation = true)
316  {
317  $extension = $this->‪getExtensionArray($extensionKey);
318  if (!$loadTerInformation) {
319  $availableAndInstalledExtensions = $this->listUtility->enrichExtensionsWithEmConfInformation([$extensionKey => $extension]);
320  } else {
321  $availableAndInstalledExtensions = $this->listUtility->enrichExtensionsWithEmConfAndTerInformation([$extensionKey => $extension]);
322  }
323 
324  if (!isset($availableAndInstalledExtensions[$extensionKey])) {
325  throw new ExtensionManagerException(
326  'Please check your uploaded extension "' . $extensionKey . '". The configuration file "ext_emconf.php" seems to be invalid.',
327  1391432222
328  );
329  }
330 
331  return $availableAndInstalledExtensions[$extensionKey];
332  }
333 
339  protected function ‪getExtensionArray($extensionKey)
340  {
341  $availableExtensions = $this->listUtility->getAvailableExtensions();
342  if (isset($availableExtensions[$extensionKey])) {
343  return $availableExtensions[$extensionKey];
344  }
345  throw new ‪ExtensionManagerException('Extension ' . $extensionKey . ' is not available', 1342864081);
346  }
347 
353  protected function ‪ensureConfiguredDirectoriesExist(array $extension)
354  {
355  $this->fileHandlingUtility->ensureConfiguredDirectoriesExist($extension);
356  }
357 
365  public function ‪processDatabaseUpdates(array $extension)
366  {
367  trigger_error('This method will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
368  $extTablesSqlFile = ‪Environment::getPublicPath() . '/' . $extension['siteRelPath'] . 'ext_tables.sql';
369  $extTablesSqlContent = '';
370  if (file_exists($extTablesSqlFile)) {
371  $extTablesSqlContent .= file_get_contents($extTablesSqlFile);
372  }
373  if ($extTablesSqlContent !== '') {
374  try {
375  $this->‪updateDbWithExtTablesSql($extTablesSqlContent);
376  } catch (\‪TYPO3\CMS\Core\Database\Schema\Exception\StatementException $e) {
377  throw new ExtensionManagerException(
378  $e->getMessage(),
379  1476340371
380  );
381  }
382  }
383 
384  $this->‪importStaticSqlFile($extension['siteRelPath']);
385  $this->‪importT3DFile($extension['siteRelPath']);
386  }
387 
397  protected function ‪emitTablesDefinitionIsBeingBuiltSignal($extensionKey)
398  {
399  $signalReturn = $this->signalSlotDispatcher->dispatch(__CLASS__, 'tablesDefinitionIsBeingBuilt', [[], $extensionKey]);
400  // This is important to support old associated returns
401  $signalReturn = array_values($signalReturn);
402  $sqlString = $signalReturn[0];
403  if (!is_array($sqlString)) {
404  throw new ExtensionManagerException(
405  sprintf(
406  'The signal %s of class %s returned a value of type %s, but array was expected.',
407  'tablesDefinitionIsBeingBuilt',
408  __CLASS__,
409  gettype($sqlString)
410  ),
411  1382360258
412  );
413  }
414  if (!empty($sqlString)) {
415  trigger_error(
416  sprintf(
417  'The signal %s of class %s is deprecated and will be removed in TYPO3 v10.0.',
418  'tablesDefinitionIsBeingBuilt',
419  __CLASS__
420  ),
421  E_USER_DEPRECATED
422  );
423  }
424  return $sqlString;
425  }
426 
430  public function ‪reloadCaches()
431  {
436  }
437 
441  protected function ‪reloadOpcache()
442  {
443  GeneralUtility::makeInstance(OpcodeCacheService::class)->clearAllActive();
444  }
445 
452  protected function ‪updateDatabase(array $extensionKeys)
453  {
454  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
455  $schemaMigrator = GeneralUtility::makeInstance(SchemaMigrator::class);
456  $sqlStatements = [];
457  $sqlStatements[] = $sqlReader->getTablesDefinitionString();
458  foreach ($extensionKeys as $extensionKey) {
459  $sqlStatements += $this->‪emitTablesDefinitionIsBeingBuiltSignal($extensionKey);
460  }
461  $sqlStatements = $sqlReader->getCreateTableStatementArray(implode(LF . LF, array_filter($sqlStatements)));
462  $updateStatements = $schemaMigrator->getUpdateSuggestions($sqlStatements);
463 
464  $updateStatements = array_merge_recursive(...array_values($updateStatements));
465  $selectedStatements = [];
466  foreach (['add', 'change', 'create_table', 'change_table'] as $action) {
467  if (empty($updateStatements[$action])) {
468  continue;
469  }
470  $selectedStatements = array_merge(
471  $selectedStatements,
472  array_combine(array_keys($updateStatements[$action]), array_fill(0, count($updateStatements[$action]), true))
473  );
474  }
475 
476  $schemaMigrator->migrate($sqlStatements, $selectedStatements);
477  }
478 
484  protected function ‪saveDefaultConfiguration($extensionKey)
485  {
486  $extensionConfiguration = $this->objectManager->get(ExtensionConfiguration::class);
487  $extensionConfiguration->synchronizeExtConfTemplateWithLocalConfiguration($extensionKey);
488  }
489 
496  public function ‪updateDbWithExtTablesSql($rawDefinitions)
497  {
498  trigger_error('This method will be removed in TYPO3 v10.0.', E_USER_DEPRECATED);
499  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
500  $statements = $sqlReader->getCreateTableStatementArray($rawDefinitions);
501  if (count($statements) !== 0) {
502  $schemaMigrationService = GeneralUtility::makeInstance(SchemaMigrator::class);
503  $schemaMigrationService->install($statements);
504  }
505  }
506 
512  public function ‪importStaticSql($rawDefinitions)
513  {
514  $sqlReader = GeneralUtility::makeInstance(SqlReader::class);
515  $statements = $sqlReader->getStatementArray($rawDefinitions);
516 
517  $schemaMigrationService = GeneralUtility::makeInstance(SchemaMigrator::class);
518  $schemaMigrationService->importStaticData($statements, true);
519  }
520 
527  public function ‪removeExtension($extension)
528  {
529  $absolutePath = $this->fileHandlingUtility->getAbsoluteExtensionPath($extension);
530  if ($this->fileHandlingUtility->isValidExtensionPath($absolutePath)) {
531  if ($this->packageManager->isPackageAvailable($extension)) {
532  // Package manager deletes the extension and removes the entry from PackageStates.php
533  $this->packageManager->deletePackage($extension);
534  } else {
535  // The extension is not listed in PackageStates.php, we can safely remove it
536  $this->fileHandlingUtility->removeDirectory($absolutePath);
537  }
538  } else {
539  throw new ExtensionManagerException('No valid extension path given.', 1342875724);
540  }
541  }
542 
550  public function ‪isUpdateAvailable(‪Extension $extensionData)
551  {
552  return (bool)$this->‪getUpdateableVersion($extensionData);
553  }
554 
562  public function ‪getUpdateableVersion(‪Extension $extensionData)
563  {
564  // Only check for update for TER extensions
565  $version = $extensionData->‪getIntegerVersion();
566 
568  $extensionUpdates = $this->extensionRepository->findByVersionRangeAndExtensionKeyOrderedByVersion(
569  $extensionData->‪getExtensionKey(),
570  $version,
571  0,
572  false
573  );
574  if ($extensionUpdates->count() > 0) {
575  foreach ($extensionUpdates as $extensionUpdate) {
576  try {
577  $this->dependencyUtility->checkDependencies($extensionUpdate);
578  if (!$this->dependencyUtility->hasDependencyErrors()) {
579  return $extensionUpdate;
580  }
581  } catch (‪ExtensionManagerException $e) {
582  }
583  }
584  }
585  return false;
586  }
587 
594  protected function ‪importT3DFile($extensionSiteRelPath)
595  {
596  $registryKeysToCheck = [
597  $extensionSiteRelPath . 'Initialisation/data.t3d',
598  $extensionSiteRelPath . 'Initialisation/dataImported',
599  ];
600  foreach ($registryKeysToCheck as $registryKeyToCheck) {
601  if ($this->registry->get('extensionDataImport', $registryKeyToCheck)) {
602  // Data was imported before => early return
603  return;
604  }
605  }
606  $importFileToUse = null;
607  $possibleImportFiles = [
608  $extensionSiteRelPath . 'Initialisation/data.t3d',
609  $extensionSiteRelPath . 'Initialisation/data.xml'
610  ];
611  foreach ($possibleImportFiles as $possibleImportFile) {
612  if (!file_exists(‪Environment::getPublicPath() . '/' . $possibleImportFile)) {
613  continue;
614  }
615  $importFileToUse = $possibleImportFile;
616  }
617  if ($importFileToUse !== null) {
619  $importExportUtility = $this->objectManager->get(ImportExportUtility::class);
620  try {
621  $importResult = $importExportUtility->importT3DFile(‪Environment::getPublicPath() . '/' . $importFileToUse, 0);
622  $this->registry->set('extensionDataImport', $extensionSiteRelPath . 'Initialisation/dataImported', 1);
623  $this->‪emitAfterExtensionT3DImportSignal($importFileToUse, $importResult);
624  } catch (\ErrorException $e) {
625  $logger = $this->objectManager->get(\‪TYPO3\CMS\Core\Log\LogManager::class)->getLogger(__CLASS__);
626  $logger->log(\‪TYPO3\CMS\Core\Log\LogLevel::WARNING, $e->getMessage());
627  }
628  }
629  }
630 
637  protected function ‪emitAfterExtensionT3DImportSignal($importFileToUse, $importResult)
638  {
639  $this->signalSlotDispatcher->dispatch(__CLASS__, 'afterExtensionT3DImport', [$importFileToUse, $importResult, $this]);
640  }
641 
648  protected function ‪importStaticSqlFile($extensionSiteRelPath)
649  {
650  $extTablesStaticSqlRelFile = $extensionSiteRelPath . 'ext_tables_static+adt.sql';
651  if (!$this->registry->get('extensionDataImport', $extTablesStaticSqlRelFile)) {
652  $extTablesStaticSqlFile = ‪Environment::getPublicPath() . '/' . $extTablesStaticSqlRelFile;
653  $shortFileHash = '';
654  if (file_exists($extTablesStaticSqlFile)) {
655  $extTablesStaticSqlContent = file_get_contents($extTablesStaticSqlFile);
656  $shortFileHash = md5($extTablesStaticSqlContent);
657  $this->‪importStaticSql($extTablesStaticSqlContent);
658  }
659  $this->registry->set('extensionDataImport', $extTablesStaticSqlRelFile, $shortFileHash);
660  $this->‪emitAfterExtensionStaticSqlImportSignal($extTablesStaticSqlRelFile);
661  }
662  }
663 
669  protected function ‪emitAfterExtensionStaticSqlImportSignal($extTablesStaticSqlRelFile)
670  {
671  $this->signalSlotDispatcher->dispatch(__CLASS__, 'afterExtensionStaticSqlImport', [$extTablesStaticSqlRelFile, $this]);
672  }
673 
681  protected function ‪importInitialFiles($extensionSiteRelPath, $extensionKey)
682  {
683  $importRelFolder = $extensionSiteRelPath . 'Initialisation/Files';
684  if (!$this->registry->get('extensionDataImport', $importRelFolder)) {
685  $importFolder = ‪Environment::getPublicPath() . '/' . $importRelFolder;
686  if (file_exists($importFolder)) {
687  $destinationRelPath = ‪$GLOBALS['TYPO3_CONF_VARS']['BE']['fileadminDir'] . $extensionKey;
688  $destinationAbsolutePath = ‪Environment::getPublicPath() . '/' . $destinationRelPath;
689  if (!file_exists($destinationAbsolutePath) &&
690  GeneralUtility::isAllowedAbsPath($destinationAbsolutePath)
691  ) {
692  GeneralUtility::mkdir($destinationAbsolutePath);
693  }
694  GeneralUtility::copyDirectory($importRelFolder, $destinationRelPath);
695  $this->registry->set('extensionDataImport', $importRelFolder, 1);
696  $this->‪emitAfterExtensionFileImportSignal($destinationAbsolutePath);
697  }
698  }
699  }
700 
706  protected function ‪emitAfterExtensionFileImportSignal($destinationAbsolutePath)
707  {
708  $this->signalSlotDispatcher->dispatch(__CLASS__, 'afterExtensionFileImport', [$destinationAbsolutePath, $this]);
709  }
710 }
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importStaticSqlFile
‪importStaticSqlFile($extensionSiteRelPath)
Definition: InstallUtility.php:639
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\emitAfterExtensionFileImportSignal
‪emitAfterExtensionFileImportSignal($destinationAbsolutePath)
Definition: InstallUtility.php:697
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\emitTablesDefinitionIsBeingBuiltSignal
‪mixed emitTablesDefinitionIsBeingBuiltSignal($extensionKey)
Definition: InstallUtility.php:388
‪TYPO3\CMS\Core\Core\Bootstrap\loadBaseTca
‪static Bootstrap null loadBaseTca(bool $allowCaching=true, FrontendInterface $coreCache=null)
Definition: Bootstrap.php:832
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getIntegerVersion
‪int getIntegerVersion()
Definition: Extension.php:529
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$packageManager
‪TYPO3 CMS Core Package PackageManager $packageManager
Definition: InstallUtility.php:55
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadOpcache
‪reloadOpcache()
Definition: InstallUtility.php:432
‪TYPO3\CMS\Extensionmanager\Utility
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:153
‪TYPO3\CMS\Extbase\Annotation
Definition: IgnoreValidation.php:4
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\enrichExtensionWithDetails
‪array enrichExtensionWithDetails($extensionKey, $loadTerInformation=true)
Definition: InstallUtility.php:306
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension
Definition: Extension.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\ensureConfiguredDirectoriesExist
‪ensureConfiguredDirectoriesExist(array $extension)
Definition: InstallUtility.php:344
‪TYPO3\CMS\Core\Configuration\ExtensionConfiguration
Definition: ExtensionConfiguration.php:42
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\updateDatabase
‪updateDatabase(array $extensionKeys)
Definition: InstallUtility.php:443
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\install
‪install(... $extensionKeys)
Definition: InstallUtility.php:148
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\processExtensionSetup
‪processExtensionSetup($extensionKey)
Definition: InstallUtility.php:177
‪TYPO3
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importInitialFiles
‪importInitialFiles($extensionSiteRelPath, $extensionKey)
Definition: InstallUtility.php:672
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\unloadExtension
‪unloadExtension($extensionKey)
Definition: InstallUtility.php:242
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\updateDbWithExtTablesSql
‪updateDbWithExtTablesSql($rawDefinitions)
Definition: InstallUtility.php:487
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\getExtensionArray
‪array getExtensionArray($extensionKey)
Definition: InstallUtility.php:330
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectListUtility
‪injectListUtility(\TYPO3\CMS\Extensionmanager\Utility\ListUtility $listUtility)
Definition: InstallUtility.php:96
‪TYPO3\CMS\Core\Database\Schema\SqlReader
Definition: SqlReader.php:29
‪TYPO3\CMS\Extensionmanager\Utility\ListUtility
Definition: ListUtility.php:35
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectDependencyUtility
‪injectDependencyUtility(\TYPO3\CMS\Extensionmanager\Utility\DependencyUtility $dependencyUtility)
Definition: InstallUtility.php:80
‪TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility
Definition: FileHandlingUtility.php:33
‪TYPO3\CMS\Core\Database\Schema\SchemaMigrator
Definition: SchemaMigrator.php:35
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$cacheManager
‪TYPO3 CMS Core Cache CacheManager $cacheManager
Definition: InstallUtility.php:59
‪TYPO3\CMS\Impexp\Utility\ImportExportUtility
Definition: ImportExportUtility.php:28
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility
Definition: InstallUtility.php:32
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\removeExtension
‪removeExtension($extension)
Definition: InstallUtility.php:518
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectCacheManager
‪injectCacheManager(\TYPO3\CMS\Core\Cache\CacheManager $cacheManager)
Definition: InstallUtility.php:120
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\emitAfterExtensionT3DImportSignal
‪emitAfterExtensionT3DImportSignal($importFileToUse, $importResult)
Definition: InstallUtility.php:628
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\getUpdateableVersion
‪bool Extension getUpdateableVersion(Extension $extensionData)
Definition: InstallUtility.php:553
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\processDatabaseUpdates
‪processDatabaseUpdates(array $extension)
Definition: InstallUtility.php:356
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importStaticSql
‪importStaticSql($rawDefinitions)
Definition: InstallUtility.php:503
‪TYPO3\CMS\Extensionmanager\Utility\DependencyUtility
Definition: DependencyUtility.php:28
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\emitAfterExtensionStaticSqlImportSignal
‪emitAfterExtensionStaticSqlImportSignal($extTablesStaticSqlRelFile)
Definition: InstallUtility.php:660
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$fileHandlingUtility
‪TYPO3 CMS Extensionmanager Utility FileHandlingUtility $fileHandlingUtility
Definition: InstallUtility.php:43
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\emitAfterExtensionUninstallSignal
‪emitAfterExtensionUninstallSignal($extensionKey)
Definition: InstallUtility.php:264
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadAvailableExtensions
‪reloadAvailableExtensions()
Definition: InstallUtility.php:222
‪TYPO3\CMS\Extensionmanager\Domain\Model\Extension\getExtensionKey
‪string getExtensionKey()
Definition: Extension.php:261
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\loadExtension
‪loadExtension($extensionKey)
Definition: InstallUtility.php:232
‪TYPO3\CMS\Extensionmanager\Exception
Definition: Exception.php:23
‪TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException
Definition: ExtensionManagerException.php:23
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadPackageInformation
‪reloadPackageInformation($extensionKey)
Definition: InstallUtility.php:289
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\importT3DFile
‪importT3DFile($extensionSiteRelPath)
Definition: InstallUtility.php:585
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectExtensionRepository
‪injectExtensionRepository(\TYPO3\CMS\Extensionmanager\Domain\Repository\ExtensionRepository $extensionRepository)
Definition: InstallUtility.php:104
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isAvailable
‪bool isAvailable($extensionKey)
Definition: InstallUtility.php:275
‪TYPO3\CMS\Core\Service\OpcodeCacheService
Definition: OpcodeCacheService.php:24
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\uninstall
‪uninstall($extensionKey)
Definition: InstallUtility.php:192
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$listUtility
‪TYPO3 CMS Extensionmanager Utility ListUtility $listUtility
Definition: InstallUtility.php:47
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$objectManager
‪TYPO3 CMS Extbase Object ObjectManager $objectManager
Definition: InstallUtility.php:35
‪TYPO3\CMS\Core\Core\Bootstrap\loadExtTables
‪static Bootstrap null loadExtTables(bool $allowCaching=true)
Definition: Bootstrap.php:864
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectPackageManager
‪injectPackageManager(\TYPO3\CMS\Core\Package\PackageManager $packageManager)
Definition: InstallUtility.php:112
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectFileHandlingUtility
‪injectFileHandlingUtility(\TYPO3\CMS\Extensionmanager\Utility\FileHandlingUtility $fileHandlingUtility)
Definition: InstallUtility.php:88
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isUpdateAvailable
‪bool isUpdateAvailable(Extension $extensionData)
Definition: InstallUtility.php:541
‪TYPO3\CMS\Core\SingletonInterface
Definition: SingletonInterface.php:22
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:39
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\isLoaded
‪bool isLoaded($extensionKey)
Definition: InstallUtility.php:214
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$registry
‪TYPO3 CMS Core Registry $registry
Definition: InstallUtility.php:67
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$extensionRepository
‪TYPO3 CMS Extensionmanager Domain Repository ExtensionRepository $extensionRepository
Definition: InstallUtility.php:51
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$signalSlotDispatcher
‪TYPO3 CMS Extbase SignalSlot Dispatcher $signalSlotDispatcher
Definition: InstallUtility.php:63
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\$dependencyUtility
‪TYPO3 CMS Extensionmanager Utility DependencyUtility $dependencyUtility
Definition: InstallUtility.php:39
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:45
‪TYPO3\CMS\Core\Utility\ExtensionManagementUtility\loadExtLocalconf
‪static loadExtLocalconf($allowCaching=true, FrontendInterface $codeCache=null)
Definition: ExtensionManagementUtility.php:1543
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\reloadCaches
‪reloadCaches()
Definition: InstallUtility.php:421
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectObjectManager
‪injectObjectManager(\TYPO3\CMS\Extbase\Object\ObjectManager $objectManager)
Definition: InstallUtility.php:72
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\saveDefaultConfiguration
‪saveDefaultConfiguration($extensionKey)
Definition: InstallUtility.php:475
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\emitAfterExtensionInstallSignal
‪emitAfterExtensionInstallSignal($extensionKey)
Definition: InstallUtility.php:254
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectSignalSlotDispatcher
‪injectSignalSlotDispatcher(\TYPO3\CMS\Extbase\SignalSlot\Dispatcher $signalSlotDispatcher)
Definition: InstallUtility.php:128
‪TYPO3\CMS\Extensionmanager\Utility\InstallUtility\injectRegistry
‪injectRegistry(\TYPO3\CMS\Core\Registry $registry)
Definition: InstallUtility.php:136