mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
Support custom namespaces in ModuleHandler and related processes
This commit is contained in:
parent
9e13c5ee6e
commit
7502b7308b
4 changed files with 107 additions and 33 deletions
|
|
@ -1424,6 +1424,48 @@ class ModuleModel extends Module
|
|||
return $list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get module base class
|
||||
*
|
||||
* This method supports namespaced modules as well as XE-compatible modules.
|
||||
*
|
||||
* @param string $module_name
|
||||
* @return ModuleObject|null
|
||||
*/
|
||||
public static function getModuleBaseClass(string $module_name, ?object $module_action_info = null)
|
||||
{
|
||||
if (!$module_action_info)
|
||||
{
|
||||
$module_action_info = self::getModuleActionXml($module_name);
|
||||
}
|
||||
|
||||
if (isset($module_action_info->namespaces) && count($module_action_info->namespaces))
|
||||
{
|
||||
$namespace = array_first($module_action_info->namespaces);
|
||||
}
|
||||
else
|
||||
{
|
||||
$namespace = 'Rhymix\\Modules\\' . ucfirst($module_name);
|
||||
}
|
||||
|
||||
$class_name = $namespace . '\\Base';
|
||||
if (class_exists($class_name))
|
||||
{
|
||||
return $class_name::getInstance();
|
||||
}
|
||||
|
||||
$class_name = $namespace . '\\Controllers\\Base';
|
||||
if (class_exists($class_name))
|
||||
{
|
||||
return $class_name::getInstance();
|
||||
}
|
||||
|
||||
if ($oModule = getModule($module_name, 'class'))
|
||||
{
|
||||
return $oModule;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get module install class
|
||||
*
|
||||
|
|
@ -1432,18 +1474,34 @@ class ModuleModel extends Module
|
|||
* @param string $module_name
|
||||
* @return ModuleObject|null
|
||||
*/
|
||||
public static function getModuleInstallClass(string $module_name)
|
||||
public static function getModuleInstallClass(string $module_name, ?object $module_action_info = null)
|
||||
{
|
||||
$class_name = 'Rhymix\\Modules\\' . ucfirst($module_name) . '\\Install';
|
||||
if (!$module_action_info)
|
||||
{
|
||||
$module_action_info = self::getModuleActionXml($module_name);
|
||||
}
|
||||
|
||||
if (isset($module_action_info->namespaces) && count($module_action_info->namespaces))
|
||||
{
|
||||
$namespace = array_first($module_action_info->namespaces);
|
||||
}
|
||||
else
|
||||
{
|
||||
$namespace = 'Rhymix\\Modules\\' . ucfirst($module_name);
|
||||
}
|
||||
|
||||
$class_name = $namespace . '\\Install';
|
||||
if (class_exists($class_name))
|
||||
{
|
||||
return $class_name::getInstance();
|
||||
}
|
||||
$class_name = 'Rhymix\\Modules\\' . ucfirst($module_name) . '\\Controllers\\Install';
|
||||
|
||||
$class_name = $namespace . '\\Controllers\\Install';
|
||||
if (class_exists($class_name))
|
||||
{
|
||||
return $class_name::getInstance();
|
||||
}
|
||||
|
||||
if ($oModule = getModule($module_name, 'class'))
|
||||
{
|
||||
return $oModule;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue