retrieveSettings('MySettings'); if (isset($administration->settings) && isset($administration->settings['MySettings_tab'])) { return true; } else { return false; } } function get_system_tabs() { global $moduleList; static $system_tabs_result = null; // if the value is not already cached, then retrieve it. if (empty($system_tabs_result)) { $administration = new Administration(); $administration->retrieveSettings('MySettings'); if (isset($administration->settings) && isset($administration->settings['MySettings_tab'])) { $tabs = $administration->settings['MySettings_tab']; $trimmed_tabs = trim($tabs); //make sure serialized string is not empty if (!empty($trimmed_tabs)) { $tabs = base64_decode($tabs); $tabs = unserialize($tabs); //Ensure modules saved in the prefences exist. foreach ($tabs as $id => $tab) { if (!in_array($tab, $moduleList)) unset($tabs[$id]); } $ACLController = new ACLController(); $ACLController->filterModuleList($tabs); $tabs = $this->get_key_array($tabs); $tabs['Home'] = 'Home'; $system_tabs_result = $tabs; }else { $system_tabs_result = $this->get_key_array($moduleList); } } else { $system_tabs_result = $this->get_key_array($moduleList); } } return $system_tabs_result; } function get_tabs_system() { global $moduleList; $tabs = $this->get_system_tabs(); $unsetTabs = $this->get_key_array($moduleList); foreach ($tabs as $tab) { unset($unsetTabs[$tab]); } $should_hide_iframes = !file_exists('modules/iFrames/iFrame.php'); if ($should_hide_iframes) { if (isset($unsetTabs['iFrames'])) { unset($unsetTabs['iFrames']); } else if (isset($tabs['iFrames'])) { unset($tabs['iFrames']); } } return array($tabs, $unsetTabs); } function set_system_tabs($tabs) { $administration = new Administration(); $serialized = base64_encode(serialize($tabs)); $administration->saveSetting('MySettings', 'tab', $serialized); } function get_users_can_edit() { $administration = new Administration(); $administration->retrieveSettings('MySettings'); if (isset($administration->settings) && isset($administration->settings['MySettings_disable_useredit'])) { if ($administration->settings['MySettings_disable_useredit'] == 'yes') { return false; } } return true; } function set_users_can_edit($boolean) { global $current_user; if (is_admin($current_user)) { $administration = new Administration(); if ($boolean) { $administration->saveSetting('MySettings', 'disable_useredit', 'no'); } else { $administration->saveSetting('MySettings', 'disable_useredit', 'yes'); } } } function get_key_array($arr) { $new = array(); if (!empty($arr)) { foreach ($arr as $val) { $new[$val] = $val; } } return $new; } function set_user_tabs($tabs, &$user, $type = 'display') { if (empty($user)) { global $current_user; $current_user->setPreference($type . '_tabs', $tabs); } else { $user->setPreference($type . '_tabs', $tabs); } } function get_user_tabs(&$user, $type = 'display') { $system_tabs = $this->get_system_tabs(); $tabs = $user->getPreference($type . '_tabs'); if (!empty($tabs)) { $tabs = $this->get_key_array($tabs); if ($type == 'display') $tabs['Home'] = 'Home'; return $tabs; } else { if ($type == 'display') return $system_tabs; else return array(); } } function get_unset_tabs($user) { global $moduleList; $tabs = $this->get_user_tabs($user); $unsetTabs = $this->get_key_array($moduleList); foreach ($tabs as $tab) { unset($unsetTabs[$tab]); } return $unsetTabs; } function get_old_user_tabs($user) { $system_tabs = $this->get_system_tabs(); $tabs = $user->getPreference('tabs'); if (!empty($tabs)) { $tabs = $this->get_key_array($tabs); $tabs['Home'] = 'Home'; foreach ($tabs as $tab) { if (!isset($system_tabs[$tab])) { unset($tabs[$tab]); } } return $tabs; } else { return $system_tabs; } } function get_old_tabs($user) { global $moduleList; $tabs = $this->get_old_user_tabs($user); $system_tabs = $this->get_system_tabs(); foreach ($tabs as $tab) { unset($system_tabs[$tab]); } return array($tabs, $system_tabs); } function get_tabs($user) { $display_tabs = $this->get_user_tabs($user, 'display'); $hide_tabs = $this->get_user_tabs($user, 'hide'); $remove_tabs = $this->get_user_tabs($user, 'remove'); $system_tabs = $this->get_system_tabs(); // remove access to tabs that roles do not give them permission to foreach ($system_tabs as $key => $value) { if (!isset($display_tabs[$key])) $display_tabs[$key] = $value; } //////////////////////////////////////////////////////////////////// // Jenny - Bug 6286: If someone has "old school roles" defined (before 4.0) and upgrades, // then they can't remove those old roles through the UI. Also, when new tabs are added, // users who had any of those "old school roles" defined have no way of being able to see // those roles. We need to disable role checking. //$roleCheck = query_user_has_roles($user->id); $roleCheck = 0; //////////////////////////////////////////////////////////////////// if ($roleCheck) { //grabs modules a user has access to via roles $role_tabs = get_user_allowed_modules($user->id); // adds modules to display_tabs if existant in roles foreach ($role_tabs as $key => $value) { if (!isset($display_tabs[$key])) $display_tabs[$key] = $value; } } // removes tabs from display_tabs if not existant in roles // or exist in the hidden tabs foreach ($display_tabs as $key => $value) { if ($roleCheck) { if (!isset($role_tabs[$key])) unset($display_tabs[$key]); } if (!isset($system_tabs[$key])) unset($display_tabs[$key]); if (isset($hide_tabs[$key])) unset($display_tabs[$key]); } // removes tabs from hide_tabs if not existant in roles foreach ($hide_tabs as $key => $value) { if ($roleCheck) { if (!isset($role_tabs[$key])) unset($hide_tabs[$key]); } if (!isset($system_tabs[$key])) unset($hide_tabs[$key]); } // remove tabs from user if admin has removed specific tabs foreach ($remove_tabs as $key => $value) { if (isset($display_tabs[$key])) unset($display_tabs[$key]); if (isset($hide_tabs[$key])) unset($hide_tabs[$key]); } return array($display_tabs, $hide_tabs, $remove_tabs); } function restore_tabs($user) { global $moduleList; $this->set_user_tabs($moduleList, $user); } function restore_system_tabs() { global $moduleList; $this->set_system_tabs($moduleList); } } ?>