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;
 }
Exemple #2
0
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;
 }
Exemple #5
0
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;
}