/** * Returns the installation directory for an extension depending on the installation scope * * @param string $extensionKey * @param string $pathType Extension installation scope (Local,Global,System) * @return string * @throws ExtensionManagerException */ public function getExtensionDir($extensionKey, $pathType = 'Local') { $paths = Extension::returnInstallPaths(); $path = $paths[$pathType]; if (!$path || !is_dir($path) || !$extensionKey) { throw new ExtensionManagerException(sprintf($this->languageService->getLL('fileHandling.installPathWasNoDirectory'), $this->getRelativePath($path)), 1337280417); } return $path . $extensionKey . '/'; }
/** * Removes the current extension of $type and creates the base folder for * the new one (which is going to be imported) * * @param string $extensionkey * @param string $pathType Extension installation scope (Local,Global,System) * @throws \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException * @return string */ protected function makeAndClearExtensionDir($extensionkey, $pathType = 'Local') { $paths = \TYPO3\CMS\Extensionmanager\Domain\Model\Extension::returnInstallPaths(); $path = $paths[$pathType]; if (!$path || !is_dir($path) || !$extensionkey) { throw new \TYPO3\CMS\Extensionmanager\Exception\ExtensionManagerException(sprintf('ERROR: The extension install path "%s" was no directory!', $this->getRelativePath($path)), 1337280417); } else { $extDirPath = $path . $extensionkey . '/'; if (is_dir($extDirPath)) { $this->removeDirectory($extDirPath); } $this->addDirectory($extDirPath); } return $extDirPath; }
/** * Returns "System", "Global" or "Local" based on extension position in filesystem. * * @param PackageInterface $package * @return string */ protected function getInstallTypeForPackage(PackageInterface $package) { foreach (\TYPO3\CMS\Extensionmanager\Domain\Model\Extension::returnInstallPaths() as $installType => $installPath) { if (GeneralUtility::isFirstPartOfStr($package->getPackagePath(), $installPath)) { return $installType; } } return ''; }
/** * Sets the path to the repository in an extension * (Initialisation/Extensions) depending on the extension * that is currently installed * * @param string $extensionKey */ protected function setInExtensionRepository($extensionKey) { $paths = Extension::returnInstallPaths(); $path = $paths[$this->downloadUtility->getDownloadPath()]; $localExtensionStorage = $path . $extensionKey . '/Initialisation/Extensions/'; $this->dependencyUtility->setLocalExtensionStorage($localExtensionStorage); }
/** * Returns the installation directory for an extension depending on the installation scope * * @param string $extensionKey * @param string $pathType Extension installation scope (Local,Global,System) * @return string * @throws ExtensionManagerException */ public function getExtensionDir($extensionKey, $pathType = 'Local') { $paths = Extension::returnInstallPaths(); $path = $paths[$pathType]; if (!$path || !is_dir($path) || !$extensionKey) { throw new ExtensionManagerException(sprintf('ERROR: The extension install path "%s" was no directory!', $this->getRelativePath($path)), 1337280417); } return $path . $extensionKey . '/'; }
/** * Returns the list of available, but not necessarily loaded extensions * * @return array Array with two sub-arrays, list array (all extensions with info) and category index * @see getInstExtList() */ public function getAvailableExtensions() { $extensions = array(); $paths = \TYPO3\CMS\Extensionmanager\Domain\Model\Extension::returnInstallPaths(); foreach ($paths as $installationType => $path) { try { if (is_dir($path)) { $extList = \TYPO3\CMS\Core\Utility\GeneralUtility::get_dirs($path); if (is_array($extList)) { foreach ($extList as $extKey) { $extensions[$extKey] = array('siteRelPath' => str_replace(PATH_site, '', $path . $extKey), 'type' => $installationType, 'key' => $extKey, 'ext_icon' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getExtensionIcon($path . $extKey . '/')); } } } } catch (\Exception $e) { \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog($e->getMessage(), 'extensionmanager'); } } return $extensions; }