mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-05 09:41:40 +09:00
Support customizing the default (base) class and install class of a module
This commit is contained in:
parent
7502b7308b
commit
3241354872
3 changed files with 23 additions and 4 deletions
|
|
@ -450,7 +450,7 @@ class ModuleHandler extends Handler
|
||||||
$oModule = self::getModuleInstance($this->module, $type ?: 'class', $kind);
|
$oModule = self::getModuleInstance($this->module, $type ?: 'class', $kind);
|
||||||
if (!$oModule)
|
if (!$oModule)
|
||||||
{
|
{
|
||||||
$oModule = ModuleModel::getModuleBaseClass($this->module, $xml_info);
|
$oModule = ModuleModel::getModuleDefaultClass($this->module, $xml_info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,11 @@ class ModuleActionParser extends BaseParser
|
||||||
$info->action = new \stdClass;
|
$info->action = new \stdClass;
|
||||||
$info->grant = new \stdClass;
|
$info->grant = new \stdClass;
|
||||||
$info->menu = new \stdClass;
|
$info->menu = new \stdClass;
|
||||||
$info->error_handlers = [];
|
$info->classes = [];
|
||||||
$info->event_handlers = [];
|
|
||||||
$info->namespaces = [];
|
$info->namespaces = [];
|
||||||
$info->prefixes = [];
|
$info->prefixes = [];
|
||||||
|
$info->error_handlers = [];
|
||||||
|
$info->event_handlers = [];
|
||||||
|
|
||||||
// Parse grants.
|
// Parse grants.
|
||||||
foreach ($xml->grants->grant ?: [] as $grant)
|
foreach ($xml->grants->grant ?: [] as $grant)
|
||||||
|
|
@ -242,6 +243,12 @@ class ModuleActionParser extends BaseParser
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Parse custom classes.
|
||||||
|
foreach ($xml->classes->class ?: [] as $class)
|
||||||
|
{
|
||||||
|
$info->classes[strval($class['type'])] = strval($class['name']);
|
||||||
|
}
|
||||||
|
|
||||||
// Parse custom namespaces.
|
// Parse custom namespaces.
|
||||||
foreach ($xml->namespaces->namespace ?: [] as $namespace)
|
foreach ($xml->namespaces->namespace ?: [] as $namespace)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1432,7 +1432,7 @@ class ModuleModel extends Module
|
||||||
* @param string $module_name
|
* @param string $module_name
|
||||||
* @return ModuleObject|null
|
* @return ModuleObject|null
|
||||||
*/
|
*/
|
||||||
public static function getModuleBaseClass(string $module_name, ?object $module_action_info = null)
|
public static function getModuleDefaultClass(string $module_name, ?object $module_action_info = null)
|
||||||
{
|
{
|
||||||
if (!$module_action_info)
|
if (!$module_action_info)
|
||||||
{
|
{
|
||||||
|
|
@ -1448,6 +1448,12 @@ class ModuleModel extends Module
|
||||||
$namespace = 'Rhymix\\Modules\\' . ucfirst($module_name);
|
$namespace = 'Rhymix\\Modules\\' . ucfirst($module_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($module_action_info->classes['default']))
|
||||||
|
{
|
||||||
|
$class_name = $namespace . '\\' . $module_action_info->classes['default'];
|
||||||
|
return class_exists($class_name) ? $class_name::getInstance() : null;
|
||||||
|
}
|
||||||
|
|
||||||
$class_name = $namespace . '\\Base';
|
$class_name = $namespace . '\\Base';
|
||||||
if (class_exists($class_name))
|
if (class_exists($class_name))
|
||||||
{
|
{
|
||||||
|
|
@ -1490,6 +1496,12 @@ class ModuleModel extends Module
|
||||||
$namespace = 'Rhymix\\Modules\\' . ucfirst($module_name);
|
$namespace = 'Rhymix\\Modules\\' . ucfirst($module_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isset($module_action_info->classes['install']))
|
||||||
|
{
|
||||||
|
$class_name = $namespace . '\\' . $module_action_info->classes['install'];
|
||||||
|
return class_exists($class_name) ? $class_name::getInstance() : null;
|
||||||
|
}
|
||||||
|
|
||||||
$class_name = $namespace . '\\Install';
|
$class_name = $namespace . '\\Install';
|
||||||
if (class_exists($class_name))
|
if (class_exists($class_name))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue