From d296e809d5e44eec0005ed8229d5a173cd4f6edb Mon Sep 17 00:00:00 2001 From: Nathaniel Guse Date: Wed, 27 Feb 2013 11:12:18 -0600 Subject: [ticket/11363] Load module info files for extensions too Use the acp_modules::get_module_infos function instead of our own include code PHPBB3-11363 --- phpBB/includes/db/migration/tool/module.php | 45 +++++++---------------------- 1 file changed, 11 insertions(+), 34 deletions(-) (limited to 'phpBB/includes/db/migration') diff --git a/phpBB/includes/db/migration/tool/module.php b/phpBB/includes/db/migration/tool/module.php index 4d7fae2bb0..994768598c 100644 --- a/phpBB/includes/db/migration/tool/module.php +++ b/phpBB/includes/db/migration/tool/module.php @@ -183,25 +183,13 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac $basename = str_replace(array('/', '\\'), '', $basename); $class = str_replace(array('/', '\\'), '', $class); - $include_path = ($include_path === false) ? $this->phpbb_root_path . 'includes/' : $include_path; - $info_file = "$class/info/$basename.{$this->php_ext}"; - - // The manual and automatic ways both failed... - if (!file_exists($include_path . $info_file)) - { - throw new phpbb_db_migration_exception('MODULE_INFO_FILE_NOT_EXIST', $class, $info_file); - } - - $classname = "{$basename}_info"; - - if (!class_exists($classname)) + if (!class_exists('acp_modules')) { - include($include_path . $info_file); + include($this->phpbb_root_path . 'includes/acp/acp_modules.' . $this->php_ext); } - - $info = new $classname; - $module = $info->module(); - unset($info); + $acp_modules = new acp_modules(); + $module = $acp_modules->get_module_infos($basename, $class); + unset($acp_modules); $result = ''; foreach ($module['modes'] as $mode => $module_info) @@ -373,30 +361,19 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac $basename = str_replace(array('/', '\\'), '', $module['module_basename']); $class = str_replace(array('/', '\\'), '', $class); - $include_path = ($include_path === false) ? $this->phpbb_root_path . 'includes/' : $include_path; - $info_file = "$class/info/$basename.{$this->php_ext}"; - - if (!file_exists($include_path . $info_file)) - { - throw new phpbb_db_migration_exception('MODULE_NOT_EXIST', $info_file); - } - - $classname = "{$basename}_info"; - - if (!class_exists($classname)) + if (!class_exists('acp_modules')) { - include($include_path . $info_file); + include($this->phpbb_root_path . 'includes/acp/acp_modules.' . $this->php_ext); } - - $info = new $classname; - $module_info = $info->module(); - unset($info); + $acp_modules = new acp_modules(); + $module_info = $acp_modules->get_module_infos($basename, $class); + unset($acp_modules); foreach ($module_info['modes'] as $mode => $info) { if (!isset($module['modes']) || in_array($mode, $module['modes'])) { - $this->remove($class, $parent, $info['title']) . '
'; + $this->remove($class, $parent, $info['title']); } } } -- cgit v1.2.1 From c3434dec4020e1053f40382cdec729316f901728 Mon Sep 17 00:00:00 2001 From: Nathaniel Guse Date: Wed, 27 Feb 2013 14:09:27 -0600 Subject: [ticket/11363] Fix a couple bugs and throw errors if the file not found PHPBB3-11363 --- phpBB/includes/db/migration/tool/module.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'phpBB/includes/db/migration') diff --git a/phpBB/includes/db/migration/tool/module.php b/phpBB/includes/db/migration/tool/module.php index 994768598c..8744866a16 100644 --- a/phpBB/includes/db/migration/tool/module.php +++ b/phpBB/includes/db/migration/tool/module.php @@ -189,8 +189,14 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac } $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 = ''; foreach ($module['modes'] as $mode => $module_info) { @@ -367,8 +373,14 @@ class phpbb_db_migration_tool_module implements phpbb_db_migration_tool_interfac } $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) { if (!isset($module['modes']) || in_array($mode, $module['modes'])) -- cgit v1.2.1