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) || !self::$isCacheValid) { $administration = Administration::getSettings('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)) { // TODO: decode JSON rather than base64 $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]); } } $tabs = $this->get_key_array(SugarACL::filterModuleList($tabs, 'access', true)); $system_tabs_result = $tabs; } else { $system_tabs_result = $this->get_key_array($moduleList); } } else { $system_tabs_result = $this->get_key_array($moduleList); } self::$isCacheValid = true; } return $system_tabs_result; }
function get_body(&$ss, $vardef) { $modules = array(); require_once 'modules/ModuleBuilder/parsers/relationships/DeployedRelationships.php'; $relatableModules = array_keys(DeployedRelationships::findRelatableModules()); foreach ($relatableModules as $module) { $modules[$module] = translate('LBL_MODULE_NAME', $module); } $modules = SugarACL::filterModuleList($modules); unset($modules[""]); unset($modules['Activities']); // cannot relate to Activities as only Activities' submodules have records; use a Flex Relate instead! // tyoung bug 18631 - reduce potential confusion when creating a relate custom field for Products - actually points to the Product Catalog, so label it that way in the drop down list if (isset($modules['ProductTemplates']) && $modules['ProductTemplates'] == 'Product') { $modules['ProductTemplates'] = translate('LBL_MODULE_NAME', 'ProductTemplates'); } // C.L. - Merge from studio_rel_user branch $modules['Users'] = translate('LBL_MODULE_NAME', 'Users'); asort($modules); $ss->assign('modules', $modules); return $ss->fetch('modules/DynamicFields/templates/Fields/Forms/relate.tpl'); }
public function ACLFilter() { $GLOBALS['moduleList'] = SugarACL::filterModuleList($GLOBALS['moduleList'], 'access', true); }
/** * Gets a module list that is filtered by ACLs * * @param array $list List of modules for the application * @return array */ public function getFilteredModuleList($list) { $user = $this->getCurrentUser(); if (!empty($user->id) && !empty($GLOBALS['sugar_config']['roleBasedViews']) && !$this->public) { $list = SugarACL::filterModuleList($list); } return $list; }
function parse_list_modules(&$listArray) { global $modListHeader; $returnArray = array(); foreach ($listArray as $optionName => $optionVal) { if (array_key_exists($optionName, $modListHeader)) { $returnArray[$optionName] = $optionVal; } // special case for products if (array_key_exists('Products', $modListHeader)) { $returnArray['ProductTemplates'] = $listArray['ProductTemplates']; } // special case for projects if (array_key_exists('Project', $modListHeader)) { $returnArray['ProjectTask'] = $listArray['ProjectTask']; } } $returnArray = SugarACL::filterModuleList($listArray, 'access', true); asort($returnArray); return $returnArray; }
function get_user_module_list($user) { $GLOBALS['log']->info('Begin: SoapHelperWebServices->get_user_module_list'); global $moduleList; $modules = array_flip(SugarACL::filterModuleList($moduleList, 'access', true)); // module names end up as keys global $modInvisList; foreach ($modInvisList as $invis) { $modules[$invis] = 'read_only'; } foreach ($modules as $key => $val) { if (!SugarACL::checkAccess($key, 'edit', array("owner_override" => true))) { // not accessible for write $modules[$key] = 'read_only'; } else { // access ok if ($modules[$key] != 'read_only') { $modules[$key] = ''; } } } $GLOBALS['log']->info('End: SoapHelperWebServices->get_user_module_list'); return $modules; }
function get_user_module_list($user) { global $moduleList, $modInvisList, $beanList, $beanFiles; $modules = array_flip(SugarACL::filterModuleList($moduleList, 'access', true)); // module names end up as keys foreach ($modInvisList as $invis) { $modules[$invis] = 'read_only'; } foreach ($modules as $key => $val) { if (!SugarACL::checkAccess($key, 'edit', array("owner_override" => true))) { // not accessible for write $modules[$key] = 'read_only'; } else { // access ok if ($modules[$key] != 'read_only') { $modules[$key] = ''; } } } //Remove all modules that don't have a beanFiles entry associated with it foreach ($modules as $module_name => $module) { if (isset($beanList[$module_name])) { $class_name = $beanList[$module_name]; if (empty($beanFiles[$class_name])) { unset($modules[$module_name]); } } else { unset($modules[$module_name]); } } return $modules; }