move ApplicationAbstract

This commit is contained in:
Dennis Eichhorn 2020-02-24 21:22:35 +01:00
parent 6fc81eeb3f
commit aa7bb25b36
24 changed files with 146 additions and 77 deletions

View File

@ -12,7 +12,7 @@
*/
declare(strict_types=1);
namespace phpOMS;
namespace phpOMS\Application;
use phpOMS\Account\AccountManager;
use phpOMS\Config\SettingsInterface;

View File

View File

@ -0,0 +1,48 @@
<?php
/**
* Orange Management
*
* PHP Version 7.4
*
* @package phpOMS
* @copyright Dennis Eichhorn
* @license OMS License 1.0
* @version 1.0.0
* @link https://orange-management.org
*/
declare(strict_types=1);
namespace phpOMS\Application;
/**
* Application manager class.
*
* General application managing functionality.
*
* @package phpOMS
* @license OMS License 1.0
* @link https://orange-management.org
* @since 1.0.0
*/
final class ApplicationManager
{
public function install(string $source, string $destination) : void
{
}
public function installModules() : void
{
}
public function installConfig() : void
{
}
public function update(string $source, string $destination) : void
{
}
}

View File

@ -0,0 +1,21 @@
{
"name": {
"id": "^[1-9]\\d*",
"internal": "[a-zA-Z0-9]+",
"external": "[a-zA-Z0-9]+"
},
"category": "[a-zA-Z0-9]+",
"version": "([0-9]+\\.){2}[0-9]+",
"requirements": {
".*": ".*"
},
"creator": {
"name": ".+",
"website": ".*"
},
"description": ".+",
"directory": "[a-zA-Z0-9]+",
"dependencies": {
".*": ".*"
}
}

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\Dispatcher;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Autoloader;
use phpOMS\Module\ModuleAbstract;
use phpOMS\System\File\PathException;

View File

@ -37,13 +37,13 @@ abstract class InstallerAbstract
* Register module in database.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function registerInDatabase(DatabasePool $dbPool, InfoManager $info) : void
public static function registerInDatabase(DatabasePool $dbPool, ModuleInfo $info) : void
{
$queryModule = new Builder($dbPool->get('insert'));
$queryModule->prefix($dbPool->get('insert')->prefix);
@ -79,13 +79,13 @@ abstract class InstallerAbstract
* Install module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function install(DatabasePool $dbPool, InfoManager $info) : void
public static function install(DatabasePool $dbPool, ModuleInfo $info) : void
{
self::createTables($dbPool, $info);
self::registerInDatabase($dbPool, $info);
@ -98,13 +98,13 @@ abstract class InstallerAbstract
* Create tables for module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
private static function createTables(DatabasePool $dbPool, InfoManager $info) : void
private static function createTables(DatabasePool $dbPool, ModuleInfo $info) : void
{
$path = \dirname($info->getPath()) . '/Admin/Install/db.json';
@ -127,13 +127,13 @@ abstract class InstallerAbstract
* Activate after install.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
private static function activate(DatabasePool $dbPool, InfoManager $info) : void
private static function activate(DatabasePool $dbPool, ModuleInfo $info) : void
{
/** @var StatusAbstract $class */
$class = '\Modules\\' . $info->getDirectory() . '\Admin\Status';
@ -143,13 +143,13 @@ abstract class InstallerAbstract
/**
* Re-init module.
*
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function reInit(InfoManager $info) : void
public static function reInit(ModuleInfo $info) : void
{
self::initRoutes($info);
self::initHooks($info);
@ -158,7 +158,7 @@ abstract class InstallerAbstract
/**
* Init routes.
*
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
@ -166,7 +166,7 @@ abstract class InstallerAbstract
*
* @since 1.0.0
*/
private static function initRoutes(InfoManager $info) : void
private static function initRoutes(ModuleInfo $info) : void
{
$directories = new Directory(\dirname($info->getPath()) . '/Admin/Routes');
@ -224,7 +224,7 @@ abstract class InstallerAbstract
/**
* Init hooks.
*
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
@ -232,7 +232,7 @@ abstract class InstallerAbstract
*
* @since 1.0.0
*/
private static function initHooks(InfoManager $info) : void
private static function initHooks(ModuleInfo $info) : void
{
$directories = new Directory(\dirname($info->getPath()) . '/Admin/Hooks');

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\Module;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Message\RequestAbstract;
use phpOMS\Message\ResponseAbstract;
use phpOMS\System\MimeType;

View File

@ -18,7 +18,7 @@ use phpOMS\System\File\PathException;
use phpOMS\Utils\ArrayUtils;
/**
* InfoManager class.
* ModuleInfo class.
*
* Handling the info files for modules
*
@ -27,7 +27,7 @@ use phpOMS\Utils\ArrayUtils;
* @link https://orange-management.org
* @since 1.0.0
*/
final class InfoManager
final class ModuleInfo
{
/**
* File path.

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\Module;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Autoloader;
use phpOMS\DataStorage\Database\Query\Builder;
use phpOMS\Message\Http\HttpRequest;
@ -23,7 +23,7 @@ use phpOMS\Module\Exception\InvalidModuleException;
use phpOMS\System\File\PathException;
/**
* Modules class.
* Module manager class.
*
* General module functionality such as listings and initialization.
*
@ -66,7 +66,7 @@ final class ModuleManager
/**
* Installed modules.
*
* @var array<string, InfoManager>
* @var array<string, ModuleInfo>
* @since 1.0.0
*/
private array $installed = [];
@ -288,7 +288,7 @@ final class ModuleManager
*
* @param bool $useCache Use Cache
*
* @return array<string, InfoManager>
* @return array<string, ModuleInfo>
*
* @since 1.0.0
*/
@ -323,11 +323,11 @@ final class ModuleManager
*
* @param string $module Module name
*
* @return InfoManager
* @return ModuleInfo
*
* @since 1.0.0
*/
private function loadInfo(string $module) : InfoManager
private function loadInfo(string $module) : ModuleInfo
{
$path = \realpath($oldPath = $this->modulePath . '/' . $module . '/info.json');
@ -335,7 +335,7 @@ final class ModuleManager
throw new PathException($oldPath);
}
$info = new InfoManager($path);
$info = new ModuleInfo($path);
$info->load();
return $info;
@ -372,7 +372,7 @@ final class ModuleManager
/**
* Deactivate module.
*
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
@ -380,7 +380,7 @@ final class ModuleManager
*
* @since 1.0.0
*/
private function deactivateModule(InfoManager $info) : void
private function deactivateModule(ModuleInfo $info) : void
{
$class = '\\Modules\\' . $info->getDirectory() . '\\Admin\\Status';
@ -423,7 +423,7 @@ final class ModuleManager
/**
* Activate module.
*
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
@ -431,7 +431,7 @@ final class ModuleManager
*
* @since 1.0.0
*/
private function activateModule(InfoManager $info) : void
private function activateModule(ModuleInfo $info) : void
{
$class = '\\Modules\\' . $info->getDirectory() . '\\Admin\\Status';
@ -598,7 +598,7 @@ final class ModuleManager
/**
* Install module itself.
*
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
@ -606,7 +606,7 @@ final class ModuleManager
*
* @since 1.0.0
*/
private function installModule(InfoManager $info) : void
private function installModule(ModuleInfo $info) : void
{
$class = '\\Modules\\' . $info->getDirectory() . '\\Admin\\Installer';

View File

@ -33,13 +33,13 @@ abstract class StatusAbstract
* Deactivate module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function activate(DatabasePool $dbPool, InfoManager $info) : void
public static function activate(DatabasePool $dbPool, ModuleInfo $info) : void
{
self::activateRoutes(__DIR__ . '/../../Web/Routes.php', __DIR__ . '/../../Modules/' . $info->getDirectory() . '/Admin/Routes/');
self::activateInDatabase($dbPool, $info);
@ -67,13 +67,13 @@ abstract class StatusAbstract
* Deactivate module in database.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function activateInDatabase(DatabasePool $dbPool, InfoManager $info) : void
public static function activateInDatabase(DatabasePool $dbPool, ModuleInfo $info) : void
{
$query = new Builder($dbPool->get('update'));
$query->prefix($dbPool->get('update')->prefix);
@ -87,13 +87,13 @@ abstract class StatusAbstract
* Deactivate module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function deactivate(DatabasePool $dbPool, InfoManager $info) : void
public static function deactivate(DatabasePool $dbPool, ModuleInfo $info) : void
{
self::deactivateRoutes(__DIR__ . '/../../Web/Routes.php', __DIR__ . '/../../Modules/' . $info->getDirectory() . '/Admin/Routes/');
self::deactivateInDatabase($dbPool, $info);
@ -121,13 +121,13 @@ abstract class StatusAbstract
* Deactivate module in database.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function deactivateInDatabase(DatabasePool $dbPool, InfoManager $info) : void
public static function deactivateInDatabase(DatabasePool $dbPool, ModuleInfo $info) : void
{
$query = new Builder($dbPool->get('update'));
$query->prefix($dbPool->get('update')->prefix);

View File

@ -32,7 +32,7 @@ abstract class UninstallerAbstract
* Install module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
@ -42,7 +42,7 @@ abstract class UninstallerAbstract
*
* @since 1.0.0
*/
public static function uninstall(DatabasePool $dbPool, InfoManager $info) : void
public static function uninstall(DatabasePool $dbPool, ModuleInfo $info) : void
{
self::dropTables($dbPool, $info);
self::unregisterFromDatabase($dbPool, $info);
@ -52,13 +52,13 @@ abstract class UninstallerAbstract
* Drop tables of module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function dropTables(DatabasePool $dbPool, InfoManager $info) : void
public static function dropTables(DatabasePool $dbPool, ModuleInfo $info) : void
{
$path = \dirname($info->getPath()) . '/Admin/Install/db.json';
@ -87,13 +87,13 @@ abstract class UninstallerAbstract
* Unregister module from database.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
*/
public static function unregisterFromDatabase(DatabasePool $dbPool, InfoManager $info) : void
public static function unregisterFromDatabase(DatabasePool $dbPool, ModuleInfo $info) : void
{
$queryLoad = new Builder($dbPool->get('delete'));
$queryLoad->prefix($dbPool->get('delete')->prefix);

View File

@ -30,14 +30,14 @@ abstract class UpdaterAbstract
* Install module.
*
* @param DatabasePool $dbPool Database instance
* @param InfoManager $info Module info
* @param ModuleInfo $info Module info
*
* @return void
*
* @since 1.0.0
* @codeCoverageIgnore
*/
public static function update(DatabasePool $dbPool, InfoManager $info) : void
public static function update(DatabasePool $dbPool, ModuleInfo $info) : void
{
}
}

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\Socket\Client;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Message\Socket\PacketManager;
use phpOMS\Socket\Server\ClientManager;
use phpOMS\Socket\SocketAbstract;

View File

@ -15,7 +15,7 @@ declare(strict_types=1);
namespace phpOMS\Socket\Server;
use phpOMS\Account\Account;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Message\Socket\PacketManager;
use phpOMS\Socket\Client\ClientConnection;
use phpOMS\Socket\SocketAbstract;

View File

@ -12,12 +12,12 @@
*/
declare(strict_types=1);
namespace phpOMS\tests;
namespace phpOMS\tests\Application;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
/**
* @testdox phpOMS\tests\ApplicationAbstractTest: Application abstraction
* @testdox phpOMS\tests\Application\ApplicationAbstractTest: Application abstraction
*
* @internal
*/
@ -25,7 +25,7 @@ class ApplicationAbstractTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox Application values can be set and returned
* @covers phpOMS\ApplicationAbstract<extended>
* @covers phpOMS\Application\ApplicationAbstract<extended>
* @group framework
*/
public function testInputOutput() : void
@ -38,7 +38,7 @@ class ApplicationAbstractTest extends \PHPUnit\Framework\TestCase
/**
* @testdox Application values cannot be overwritten
* @covers phpOMS\ApplicationAbstract<extended>
* @covers phpOMS\Application\ApplicationAbstract<extended>
* @group framework
*/
public function testInvalidInputOutput() : void

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\tests\Dispatcher;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Dispatcher\Dispatcher;
use phpOMS\Localization\Localization;
use phpOMS\Message\Http\HttpRequest;

View File

@ -16,7 +16,7 @@ namespace phpOMS\tests\Module;
require_once __DIR__ . '/../Autoloader.php';
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Event\EventManager;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Message\Http\HttpResponse;

View File

@ -16,23 +16,23 @@ namespace phpOMS\tests\Module;
require_once __DIR__ . '/../Autoloader.php';
use phpOMS\Module\InfoManager;
use phpOMS\Module\ModuleInfo;
/**
* @testdox phpOMS\tests\Module\InfoManagerTest: Module info file manager
* @testdox phpOMS\tests\Module\ModuleInfoTest: Module info file manager
*
* @internal
*/
class InfoManagerTest extends \PHPUnit\Framework\TestCase
class ModuleInfoTest extends \PHPUnit\Framework\TestCase
{
/**
* @testdox A info file can be correctly loaded
* @covers phpOMS\Module\InfoManager
* @covers phpOMS\Module\ModuleInfo
* @group framework
*/
public function testLoad() : void
{
$info = new InfoManager(__DIR__ . '/info-test.json');
$info = new ModuleInfo(__DIR__ . '/info-test.json');
$info->load();
$jarray = \json_decode(\file_get_contents(__DIR__ . '/info-test.json'), true);
@ -52,21 +52,21 @@ class InfoManagerTest extends \PHPUnit\Framework\TestCase
/**
* @testdox A info file can be modified
* @covers phpOMS\Module\InfoManager
* @covers phpOMS\Module\ModuleInfo
* @group framework
*/
public function testChange() : void
{
$jarray = \json_decode(\file_get_contents(__DIR__ . '/info-test.json'), true);
$info = new InfoManager(__DIR__ . '/info-test.json');
$info = new ModuleInfo(__DIR__ . '/info-test.json');
$info->load();
$info->set('/name/internal', 'ABC');
self::assertEquals('ABC', $info->getInternalName());
$info->update();
$info2 = new InfoManager(__DIR__ . '/info-test.json');
$info2 = new ModuleInfo(__DIR__ . '/info-test.json');
$info2->load();
self::assertEquals($info->getInternalName(), $info2->getInternalName());
@ -76,40 +76,40 @@ class InfoManagerTest extends \PHPUnit\Framework\TestCase
/**
* @testdox A invalid info file path load throws a PathException
* @covers phpOMS\Module\InfoManager
* @covers phpOMS\Module\ModuleInfo
* @group framework
*/
public function testInvalidPathLoad() : void
{
self::expectException(\phpOMS\System\File\PathException::class);
$info = new InfoManager(__DIR__ . '/invalid.json');
$info = new ModuleInfo(__DIR__ . '/invalid.json');
$info->load();
}
/**
* @testdox A invalid info file path update throws a PathException
* @covers phpOMS\Module\InfoManager
* @covers phpOMS\Module\ModuleInfo
* @group framework
*/
public function testInvalidPathUpdate() : void
{
self::expectException(\phpOMS\System\File\PathException::class);
$info = new InfoManager(__DIR__ . '/invalid.json');
$info = new ModuleInfo(__DIR__ . '/invalid.json');
$info->update();
}
/**
* @testdox A invalid change data throws a InvalidArgumentException
* @covers phpOMS\Module\InfoManager
* @covers phpOMS\Module\ModuleInfo
* @group framework
*/
public function testInvalidDataSet() : void
{
self::expectException(\InvalidArgumentException::class);
$info = new InfoManager(__DIR__ . '/info-test.json');
$info = new ModuleInfo(__DIR__ . '/info-test.json');
$info->load();
$testObj = new class() {

View File

@ -14,7 +14,7 @@ declare(strict_types=1);
namespace phpOMS\tests\Module;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Dispatcher\Dispatcher;
use phpOMS\Message\Http\HttpRequest;
use phpOMS\Module\ModuleManager;

View File

@ -16,7 +16,7 @@ namespace phpOMS\tests\Module;
require_once __DIR__ . '/../Autoloader.php';
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Module\NullModule;
/**

View File

@ -16,7 +16,7 @@ namespace phpOMS\tests\Socket\Client;
use Model\CoreSettings;
use phpOMS\Account\AccountManager;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Autoloader;
use phpOMS\DataStorage\Cache\CachePool;
use phpOMS\Dispatcher\Dispatcher;

View File

@ -16,7 +16,7 @@ namespace phpOMS\tests\Socket\Client;
use Model\CoreSettings;
use phpOMS\Account\AccountManager;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\DataStorage\Cache\CachePool;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\DataStorage\Database\DataMapperAbstract;

View File

@ -16,7 +16,7 @@ namespace phpOMS\tests\Socket\Server;
use Model\CoreSettings;
use phpOMS\Account\AccountManager;
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\Autoloader;
use phpOMS\DataStorage\Cache\CachePool;
use phpOMS\Dispatcher\Dispatcher;

View File

@ -16,7 +16,7 @@ namespace phpOMS\tests\Views;
require_once __DIR__ . '/../Autoloader.php';
use phpOMS\ApplicationAbstract;
use phpOMS\Application\ApplicationAbstract;
use phpOMS\DataStorage\Database\DatabasePool;
use phpOMS\Localization\L11nManager;
use phpOMS\Localization\Localization;