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\PermissionException;
use phpOMS\Utils\Parser\Php\ArrayParser;
use phpOMS\Application\ApplicationManager;
/**
* Installer abstract class.

View File

@ -16,6 +16,7 @@ namespace phpOMS\Module;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Application\ApplicationInfo;
use phpOMS\Application\ApplicationManager;
use phpOMS\Autoloader;
use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\Message\Http\HttpRequest;
@ -64,6 +65,14 @@ final class ModuleManager
*/
private ApplicationAbstract $app;
/**
* Application manager.
*
* @var ApplicationManager
* @since 1.0.0
*/
private ApplicationManager $appManager;
/**
* Installed modules.
*
@ -494,6 +503,8 @@ final class ModuleManager
return false;
}
$this->appManager = new ApplicationManager($this);
try {
$info = $this->loadInfo($module);
@ -509,9 +520,10 @@ final class ModuleManager
}
}
/* Install receiving */
/* Install receiving and applications */
foreach ($this->installed as $key => $value) {
$this->installProviding($key, $module);
$this->installApplications($key);
}
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.
*