diff --git a/libraries/src/Installer/Installer.php b/libraries/src/Installer/Installer.php index bc7f7c9c69f2b..775c091d76ed8 100644 --- a/libraries/src/Installer/Installer.php +++ b/libraries/src/Installer/Installer.php @@ -2526,15 +2526,33 @@ public function loadAdapter($adapter, $options = []) /** * Set an adapter by name * - * @param string $name Adapter name - * @param InstallerAdapter|string $adapter Adapter object or class name + * @param string $name Adapter name + * @param InstallerAdapter|string|null $adapter Adapter object or class name * * @return boolean True if successful * * @since 6.0.0 */ - public function setAdapter($name, $adapter) + public function setAdapter($name, $adapter = null) { + $name = strtolower($name); + + if ($adapter === null) { + if (isset($this->adapters[$name])) { + return true; + } + + $class = rtrim($this->classprefix, '\\') . '\\' . ucfirst($name) . 'Adapter'; + + if (class_exists($class)) { + $this->adapters[$name] = $class; + + return true; + } + + return false; + } + if (\is_object($adapter)) { $this->adapters[$name] = $adapter;