mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-05 09:41:40 +09:00
Support installing/updating namespaced modules
모듈 설치 및 업데이트 메소드를 Rhymix\Modules\모듈명\Install 클래스에 넣을 수 있도록 지원한다. 이 클래스가 있는 경우 모듈명과 동일한 클래스를 찾지 않는다. 이로써 클래스 전체를 네임스페이스화할 수 있게 되었다.
This commit is contained in:
parent
adbd29231f
commit
f334889047
5 changed files with 38 additions and 19 deletions
|
|
@ -153,12 +153,8 @@ class ModuleInstaller
|
||||||
{
|
{
|
||||||
$path_array = explode("/", $this->package->path);
|
$path_array = explode("/", $this->package->path);
|
||||||
$target_name = array_pop($path_array);
|
$target_name = array_pop($path_array);
|
||||||
$oModule = getModule($target_name, "class");
|
$oModule = ModuleModel::getModuleInstallClass($target_name);
|
||||||
if(!$oModule)
|
if(!$oModule || !method_exists($oModule, 'moduleUninstall'))
|
||||||
{
|
|
||||||
return new BaseObject(-1, 'msg_invalid_request');
|
|
||||||
}
|
|
||||||
if(!method_exists($oModule, "moduleUninstall"))
|
|
||||||
{
|
{
|
||||||
return new BaseObject(-1, 'msg_invalid_request');
|
return new BaseObject(-1, 'msg_invalid_request');
|
||||||
}
|
}
|
||||||
|
|
@ -203,16 +199,15 @@ class ModuleInstaller
|
||||||
|
|
||||||
if($type == "module")
|
if($type == "module")
|
||||||
{
|
{
|
||||||
$oModuleModel = getModel('module');
|
|
||||||
$oInstallController = getController('install');
|
$oInstallController = getController('install');
|
||||||
$module_path = ModuleHandler::getModulePath($target_name);
|
$module_path = ModuleHandler::getModulePath($target_name);
|
||||||
if($oModuleModel->checkNeedInstall($target_name))
|
if(ModuleModel::checkNeedInstall($target_name))
|
||||||
{
|
{
|
||||||
$oInstallController->installModule($target_name, $module_path);
|
$oInstallController->installModule($target_name, $module_path);
|
||||||
}
|
}
|
||||||
if($oModuleModel->checkNeedUpdate($target_name))
|
if(ModuleModel::checkNeedUpdate($target_name))
|
||||||
{
|
{
|
||||||
$oModule = getModule($target_name, 'class');
|
$oModule = ModuleModel::getModuleInstallClass($target_name);
|
||||||
if(method_exists($oModule, 'moduleUpdate'))
|
if(method_exists($oModule, 'moduleUpdate'))
|
||||||
{
|
{
|
||||||
$oModule->moduleUpdate();
|
$oModule->moduleUpdate();
|
||||||
|
|
|
||||||
|
|
@ -316,7 +316,7 @@ class autoinstallModel extends autoinstall
|
||||||
{
|
{
|
||||||
$path_array = explode("/", $path);
|
$path_array = explode("/", $path);
|
||||||
$target_name = array_pop($path_array);
|
$target_name = array_pop($path_array);
|
||||||
$oModule = getModule($target_name, "class");
|
$oModule = ModuleModel::getModuleInstallClass($target_name);
|
||||||
if(!$oModule)
|
if(!$oModule)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,11 @@ class installAdminController extends install
|
||||||
$module_name = Context::get('module_name');
|
$module_name = Context::get('module_name');
|
||||||
if(!$module_name) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
if(!$module_name) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||||
|
|
||||||
$oModule = getModule($module_name, 'class');
|
$oModule = ModuleModel::getModuleInstallClass($module_name);
|
||||||
if(!$oModule) throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
if(!$oModule || !method_exists($oModule, 'moduleUpdate'))
|
||||||
|
{
|
||||||
|
throw new Rhymix\Framework\Exceptions\InvalidRequest;
|
||||||
|
}
|
||||||
|
|
||||||
Rhymix\Framework\Session::close();
|
Rhymix\Framework\Session::close();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -472,7 +472,7 @@ class installController extends install
|
||||||
}
|
}
|
||||||
// Install "module" module in advance
|
// Install "module" module in advance
|
||||||
$this->installModule('module','./modules/module');
|
$this->installModule('module','./modules/module');
|
||||||
$oModule = getClass('module');
|
$oModule = ModuleModel::getModuleInstallClass($module);
|
||||||
if($oModule->checkUpdate()) $oModule->moduleUpdate();
|
if($oModule->checkUpdate()) $oModule->moduleUpdate();
|
||||||
// Determine the order of module installation depending on category
|
// Determine the order of module installation depending on category
|
||||||
$install_step = array('system','content','member');
|
$install_step = array('system','content','member');
|
||||||
|
|
@ -486,7 +486,7 @@ class installController extends install
|
||||||
if($module == 'module') continue;
|
if($module == 'module') continue;
|
||||||
$this->installModule($module, sprintf('./modules/%s', $module));
|
$this->installModule($module, sprintf('./modules/%s', $module));
|
||||||
|
|
||||||
$oModule = getClass($module);
|
$oModule = ModuleModel::getModuleInstallClass($module);
|
||||||
if(is_object($oModule) && method_exists($oModule, 'checkUpdate'))
|
if(is_object($oModule) && method_exists($oModule, 'checkUpdate'))
|
||||||
{
|
{
|
||||||
if($oModule->checkUpdate()) $oModule->moduleUpdate();
|
if($oModule->checkUpdate()) $oModule->moduleUpdate();
|
||||||
|
|
@ -507,7 +507,7 @@ class installController extends install
|
||||||
if($module == 'module') continue;
|
if($module == 'module') continue;
|
||||||
$this->installModule($module, sprintf('./modules/%s', $module));
|
$this->installModule($module, sprintf('./modules/%s', $module));
|
||||||
|
|
||||||
$oModule = getClass($module);
|
$oModule = ModuleModel::getModuleInstallClass($module);
|
||||||
if($oModule && method_exists($oModule, 'checkUpdate') && method_exists($oModule, 'moduleUpdate'))
|
if($oModule && method_exists($oModule, 'checkUpdate') && method_exists($oModule, 'moduleUpdate'))
|
||||||
{
|
{
|
||||||
if($oModule->checkUpdate()) $oModule->moduleUpdate();
|
if($oModule->checkUpdate()) $oModule->moduleUpdate();
|
||||||
|
|
@ -555,7 +555,7 @@ class installController extends install
|
||||||
}
|
}
|
||||||
// Create a table and module instance and then execute install() method
|
// Create a table and module instance and then execute install() method
|
||||||
unset($oModule);
|
unset($oModule);
|
||||||
$oModule = getClass($module);
|
$oModule = ModuleModel::getModuleInstallClass($module);
|
||||||
if(method_exists($oModule, 'moduleInstall')) $oModule->moduleInstall();
|
if(method_exists($oModule, 'moduleInstall')) $oModule->moduleInstall();
|
||||||
return new BaseObject();
|
return new BaseObject();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1375,6 +1375,27 @@ class moduleModel extends module
|
||||||
return $list;
|
return $list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get module install class
|
||||||
|
*
|
||||||
|
* This method supports namespaced modules as well as XE-compatible modules.
|
||||||
|
*
|
||||||
|
* @param string $module_name
|
||||||
|
* @return ModuleObject|null
|
||||||
|
*/
|
||||||
|
public static function getModuleInstallClass(string $module_name)
|
||||||
|
{
|
||||||
|
$class_name = 'Rhymix\\Modules\\' . ucfirst($module_name) . '\\Install';
|
||||||
|
if (class_exists($class_name))
|
||||||
|
{
|
||||||
|
return $class_name::getInstance();
|
||||||
|
}
|
||||||
|
elseif ($oModule = getModule($module_name, 'class'))
|
||||||
|
{
|
||||||
|
return $oModule;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static function checkNeedInstall($module_name)
|
public static function checkNeedInstall($module_name)
|
||||||
{
|
{
|
||||||
$oDB = &DB::getInstance();
|
$oDB = &DB::getInstance();
|
||||||
|
|
@ -1402,7 +1423,7 @@ class moduleModel extends module
|
||||||
public static function checkNeedUpdate($module_name)
|
public static function checkNeedUpdate($module_name)
|
||||||
{
|
{
|
||||||
// Check if it is upgraded to module.class.php on each module
|
// Check if it is upgraded to module.class.php on each module
|
||||||
$oDummy = getModule($module_name, 'class');
|
$oDummy = self::getModuleInstallClass($module_name);
|
||||||
if($oDummy && method_exists($oDummy, "checkUpdate"))
|
if($oDummy && method_exists($oDummy, "checkUpdate"))
|
||||||
{
|
{
|
||||||
return $oDummy->checkUpdate();
|
return $oDummy->checkUpdate();
|
||||||
|
|
@ -1502,7 +1523,7 @@ class moduleModel extends module
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if it is upgraded to module.class.php on each module
|
// Check if it is upgraded to module.class.php on each module
|
||||||
$oDummy = getModule($module_name, 'class');
|
$oDummy = self::getModuleInstallClass($module_name);
|
||||||
if($oDummy && method_exists($oDummy, "checkUpdate"))
|
if($oDummy && method_exists($oDummy, "checkUpdate"))
|
||||||
{
|
{
|
||||||
$info->need_update = $oDummy->checkUpdate();
|
$info->need_update = $oDummy->checkUpdate();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue