[feature/module_services] Add ability to add new module services in acp

This commit is contained in:
Marc Alexander
2013-11-15 23:33:37 +01:00
parent 9d230d7b27
commit e939b5e169

View File

@@ -423,7 +423,6 @@ class portal_module
if ($submit) if ($submit)
{ {
$module_classname = request_var('module_classname', ''); $module_classname = request_var('module_classname', '');
$class = 'portal_' . $module_classname . '_module';
$column_string = column_num_string($add_column); $column_string = column_num_string($add_column);
@@ -455,13 +454,24 @@ class portal_module
trigger_error($this->user->lang['MODULE_ADD_ONCE'] . adm_back_link($this->u_action), E_USER_WARNING); trigger_error($this->user->lang['MODULE_ADD_ONCE'] . adm_back_link($this->u_action), E_USER_WARNING);
} }
if (!class_exists($class)) if (isset($this->modules[$module_classname]))
{ {
include($directory . 'portal_' . $module_classname . '.' . $this->php_ex); $this->c_class = $this->modules[$module_classname];
} }
if (!class_exists($class)) else
{ {
trigger_error('CLASS_NOT_FOUND', E_USER_ERROR); $class = 'portal_' . $module_classname . '_module';
if (!class_exists($class))
{
include($directory . 'portal_' . $module_classname . '.' . $this->php_ex);
}
if (!class_exists($class))
{
trigger_error('CLASS_NOT_FOUND', E_USER_ERROR);
}
$this->c_class = new $class();
} }
$sql = 'SELECT module_order $sql = 'SELECT module_order
@@ -472,8 +482,6 @@ class portal_module
$module_order = 1 + (int) $this->db->sql_fetchfield('module_order'); $module_order = 1 + (int) $this->db->sql_fetchfield('module_order');
$this->db->sql_freeresult($result); $this->db->sql_freeresult($result);
$this->c_class = new $class();
$sql_ary = array( $sql_ary = array(
'module_classname' => $module_classname, 'module_classname' => $module_classname,
'module_column' => $add_column, 'module_column' => $add_column,
@@ -522,6 +530,7 @@ class portal_module
$this->template->assign_var('S_EDIT', true); $this->template->assign_var('S_EDIT', true);
$fileinfo = array(); $fileinfo = array();
// @todo: remove old school way of getting modules
$dh = @opendir($directory); $dh = @opendir($directory);
if (!$dh) if (!$dh)
{ {
@@ -573,13 +582,13 @@ class portal_module
$this->c_class = new $class(); $this->c_class = new $class();
if ($this->c_class->columns & column_string_const($add_module)) if ($this->c_class->columns & column_string_const($add_module))
{ {
if ($this->c_class->language) if ($this->c_class->get_language())
{ {
$this->user->add_lang('mods/portal/' . $this->c_class->language); $this->user->add_lang_ext('board3/portal', 'mods/portal/' . $this->c_class->get_language());
} }
$fileinfo[] = array( $fileinfo[] = array(
'module' => substr($class, 7, -7), 'module' => substr($class, 7, -7),
'name' => $this->user->lang[$this->c_class->name], 'name' => $this->user->lang[$this->c_class->get_name()],
); );
} }
} }
@@ -587,6 +596,46 @@ class portal_module
} }
closedir($dh); closedir($dh);
// Find new modules
foreach ($this->modules as $module_class => $module)
{
if ($module_class !== '\board3\portal\modules\custom')
{
if (in_array($column_string, array('left', 'right')))
{
// does the module already exist in the side columns?
if (isset($module_column[$module_class]) &&
(in_array('left', $module_column[$module_class]) || in_array('right', $module_column[$module_class])))
{
continue;
}
}
elseif (in_array($column_string, array('center', 'top', 'bottom')))
{
// does the module already exist in the center columns?
if (isset($module_column[$module_class]) &&
(in_array('center', $module_column[$module_class]) ||
in_array('top', $module_column[$module_class]) ||
in_array('bottom', $module_column[$module_class])))
{
continue;
}
}
}
if ($module->get_allowed_columns() & column_string_const($add_module))
{
if ($module->get_language())
{
$this->user->add_lang_ext('board3/portal', 'mods/portal/' . $module->get_language());
}
$fileinfo[] = array(
'module' => $module_class,
'name' => $this->user->lang[$module->get_name()],
);
}
}
// we sort the $fileinfo array by the name of the modules // we sort the $fileinfo array by the name of the modules
foreach($fileinfo as $key => $cur_file) foreach($fileinfo as $key => $cur_file)
{ {