Merge remote-tracking branch 'EXreaction/ticket/11363-2' into develop

# By Nathaniel Guse
# Via Nathaniel Guse
* EXreaction/ticket/11363-2:
  [ticket/11363] Fix to make get_module_infos get from all extensions
This commit is contained in:
David King 2013-03-01 15:02:20 -05:00
commit 4670ffe90c
2 changed files with 34 additions and 28 deletions

View file

@ -535,8 +535,14 @@ class acp_modules
/** /**
* Get available module information from module files * Get available module information from module files
*
* @param string $module
* @param bool|string $module_class
* @param bool $use_all_available Use all available instead of just all
* enabled extensions
* @return array
*/ */
function get_module_infos($module = '', $module_class = false) function get_module_infos($module = '', $module_class = false, $use_all_available = false)
{ {
global $phpbb_root_path, $phpEx; global $phpbb_root_path, $phpEx;
@ -556,7 +562,7 @@ class acp_modules
->extension_directory("/$module_class") ->extension_directory("/$module_class")
->core_path("includes/$module_class/info/") ->core_path("includes/$module_class/info/")
->core_prefix($module_class . '_') ->core_prefix($module_class . '_')
->get_classes(); ->get_classes(true, $use_all_available);
foreach ($modules as $module) foreach ($modules as $module)
{ {

View file

@ -183,19 +183,7 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac
$basename = str_replace(array('/', '\\'), '', $basename); $basename = str_replace(array('/', '\\'), '', $basename);
$class = str_replace(array('/', '\\'), '', $class); $class = str_replace(array('/', '\\'), '', $class);
if (!class_exists('acp_modules')) $module = $this->get_module_info($class, $basename);
{
include($this->phpbb_root_path . 'includes/acp/acp_modules.' . $this->php_ext);
}
$acp_modules = new acp_modules();
$module = $acp_modules->get_module_infos($basename, $class);
$module = $module[$basename];
unset($acp_modules);
if (empty($module))
{
throw new phpbb_db_migration_exception('MODULE_INFO_FILE_NOT_EXIST', $class, $basename);
}
$result = ''; $result = '';
foreach ($module['modes'] as $mode => $module_info) foreach ($module['modes'] as $mode => $module_info)
@ -367,19 +355,7 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac
$basename = str_replace(array('/', '\\'), '', $module['module_basename']); $basename = str_replace(array('/', '\\'), '', $module['module_basename']);
$class = str_replace(array('/', '\\'), '', $class); $class = str_replace(array('/', '\\'), '', $class);
if (!class_exists('acp_modules')) $module_info = $this->get_module_info($class, $basename);
{
include($this->phpbb_root_path . 'includes/acp/acp_modules.' . $this->php_ext);
}
$acp_modules = new acp_modules();
$module_info = $acp_modules->get_module_infos($basename, $class);
$module_info = $module_info[$basename];
unset($acp_modules);
if (empty($module_info))
{
throw new phpbb_db_migration_exception('MODULE_INFO_FILE_NOT_EXIST', $class, $basename);
}
foreach ($module_info['modes'] as $mode => $info) foreach ($module_info['modes'] as $mode => $info)
{ {
@ -499,4 +475,28 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac
return call_user_func_array(array(&$this, $call), $arguments); return call_user_func_array(array(&$this, $call), $arguments);
} }
} }
/**
* Wrapper for acp_modules::get_module_infos()
*
* @param string $class Module Class
* @param string $basename Module Basename
* @return array Module Information
*/
protected function get_module_info($class, $basename)
{
if (!class_exists('acp_modules'))
{
include($this->phpbb_root_path . 'includes/acp/acp_modules.' . $this->php_ext);
}
$acp_modules = new acp_modules();
$module = $acp_modules->get_module_infos($basename, $class, true);
if (empty($module));
{
throw new phpbb_db_migration_exception('MODULE_INFO_FILE_NOT_EXIST', $class, $basename);
}
return array_pop($module);
}
} }