allow module app install

This commit is contained in:
Dennis Eichhorn 2020-02-26 19:28:06 +01:00
parent 62cd92710b
commit d1d300eedd
2 changed files with 37 additions and 1 deletions

View File

@ -24,6 +24,7 @@ use phpOMS\System\File\Local\File;
use phpOMS\System\File\PathException; use phpOMS\System\File\PathException;
use phpOMS\System\File\PermissionException; use phpOMS\System\File\PermissionException;
use phpOMS\Utils\Parser\Php\ArrayParser; use phpOMS\Utils\Parser\Php\ArrayParser;
use phpOMS\Application\ApplicationManager;
/** /**
* Installer abstract class. * Installer abstract class.

View File

@ -16,6 +16,7 @@ namespace phpOMS\Module;
use phpOMS\Application\ApplicationAbstract; use phpOMS\Application\ApplicationAbstract;
use phpOMS\Application\ApplicationInfo; use phpOMS\Application\ApplicationInfo;
use phpOMS\Application\ApplicationManager;
use phpOMS\Autoloader; use phpOMS\Autoloader;
use phpOMS\DataStorage\Database\Query\Builder; use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\Message\Http\HttpRequest; use phpOMS\Message\Http\HttpRequest;
@ -64,6 +65,14 @@ final class ModuleManager
*/ */
private ApplicationAbstract $app; private ApplicationAbstract $app;
/**
* Application manager.
*
* @var ApplicationManager
* @since 1.0.0
*/
private ApplicationManager $appManager;
/** /**
* Installed modules. * Installed modules.
* *
@ -494,6 +503,8 @@ final class ModuleManager
return false; return false;
} }
$this->appManager = new ApplicationManager($this);
try { try {
$info = $this->loadInfo($module); $info = $this->loadInfo($module);
@ -509,9 +520,10 @@ final class ModuleManager
} }
} }
/* Install receiving */ /* Install receiving and applications */
foreach ($this->installed as $key => $value) { foreach ($this->installed as $key => $value) {
$this->installProviding($key, $module); $this->installProviding($key, $module);
$this->installApplications($key);
} }
return true; return true;
@ -640,6 +652,29 @@ final class ModuleManager
} }
} }
/**
* Install applications.
*
* Installing additional functionality for another module
*
* @param string $from From module
*
* @return void
*
* @since 1.0.0
*/
public function installApplications(string $from) : void
{
$dirs = \scandir($this->modulePath . '/' . $from . '/Application');
foreach ($dirs as $dir) {
if ($dir === '.' || $dir === '..') {
continue;
}
$this->appManager->install($dir, __DIR__ . '/../../Web/' . \basename($dir));
}
}
/** /**
* Get module instance. * Get module instance.
* *