[ticket/289] Add method for getting portal modules
This commit is contained in:
@@ -156,23 +156,7 @@ class main
|
|||||||
*/
|
*/
|
||||||
foreach ($this->portal_modules as $row)
|
foreach ($this->portal_modules as $row)
|
||||||
{
|
{
|
||||||
if($row['module_status'] == B3_MODULE_DISABLED)
|
if (!($module = $this->get_portal_module($row)))
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do not try to load non-existent modules
|
|
||||||
if (!($module = $this->portal_helper->get_module($row['module_classname'])))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check for permissions before loading anything
|
|
||||||
* the default group of a user always defines his/her permission (KISS)
|
|
||||||
*/
|
|
||||||
$group_ary = (!empty($row['module_group_ids'])) ? explode(',', $row['module_group_ids']) : '';
|
|
||||||
if ((is_array($group_ary) && !in_array($this->user->data['group_id'], $group_ary)))
|
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -274,6 +258,47 @@ class main
|
|||||||
return ($module_classname === '\board3\portal\modules\whois_online') ? true : $display_online;
|
return ($module_classname === '\board3\portal\modules\whois_online') ? true : $display_online;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get portal module and run module start checks
|
||||||
|
*
|
||||||
|
* @param array $row Module row
|
||||||
|
*
|
||||||
|
* @return mixed False if one of the module checks failed, the module
|
||||||
|
* object if checks were successful
|
||||||
|
*/
|
||||||
|
protected function get_portal_module($row)
|
||||||
|
{
|
||||||
|
// Do not try to load non-existent or disabled modules
|
||||||
|
if ($row['module_status'] == B3_MODULE_DISABLED || !is_object($module = $this->portal_helper->get_module($row['module_classname'])))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check for permissions before loading anything
|
||||||
|
* the default group of a user always defines his/her permission
|
||||||
|
*/
|
||||||
|
return ($this->check_group_access($row)) ? $module : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if user is in required groups
|
||||||
|
*
|
||||||
|
* @param array $row Module row
|
||||||
|
*/
|
||||||
|
protected function check_group_access($row)
|
||||||
|
{
|
||||||
|
$group_ary = (!empty($row['module_group_ids'])) ? explode(',', $row['module_group_ids']) : '';
|
||||||
|
if ((is_array($group_ary) && !in_array($this->user->data['group_id'], $group_ary)))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load language file of module
|
* Load language file of module
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user