diff --git a/include/utils/VtlibUtils.php b/include/utils/VtlibUtils.php index 274343ff1191e312224488bf029b1d376522ded1..90a5e8cd40ac597ca1f13ebb6d9ea3ec1167eca4 100644 --- a/include/utils/VtlibUtils.php +++ b/include/utils/VtlibUtils.php @@ -145,46 +145,52 @@ function vtlib_moduleAlwaysActive() { * Toggle the module (enable/disable) */ function vtlib_toggleModuleAccess($modules, $enable_disable) { - global $adb, $__cache_module_activeinfo; - + global $adb, $__cache_module_activeinfo, $current_user; + include_once('vtlib/Vtiger/Module.php'); + + // Checks if the user is admin or not + $isAdmin = is_admin($current_user); + if($isAdmin == true) { + if(is_string($modules)) $modules = array($modules); + $event_type = false; + + if($enable_disable === true) { + $enable_disable = 0; + $event_type = Vtiger_Module::EVENT_MODULE_ENABLED; + } else if($enable_disable === false) { + $enable_disable = 1; + $event_type = Vtiger_Module::EVENT_MODULE_DISABLED; + //Update default landing page to dashboard if module is disabled. + $adb->pquery('UPDATE vtiger_users SET defaultlandingpage = ? WHERE defaultlandingpage IN(' . generateQuestionMarks($modules) . ')', array_merge(array('Home'), $modules)); + } + + $checkResult = $adb->pquery('SELECT name FROM vtiger_tab WHERE name IN ('. generateQuestionMarks($modules) .')', array($modules)); + $rows = $adb->num_rows($checkResult); + for($i=0; $i<$rows; $i++) { + $existingModules[] = $adb->query_result($checkResult, $i, 'name'); + } - if(is_string($modules)) $modules = array($modules); - $event_type = false; - - if($enable_disable === true) { - $enable_disable = 0; - $event_type = Vtiger_Module::EVENT_MODULE_ENABLED; - } else if($enable_disable === false) { - $enable_disable = 1; - $event_type = Vtiger_Module::EVENT_MODULE_DISABLED; - //Update default landing page to dashboard if module is disabled. - $adb->pquery('UPDATE vtiger_users SET defaultlandingpage = ? WHERE defaultlandingpage IN(' . generateQuestionMarks($modules) . ')', array_merge(array('Home'), $modules)); - } - - $checkResult = $adb->pquery('SELECT name FROM vtiger_tab WHERE name IN ('. generateQuestionMarks($modules) .')', array($modules)); - $rows = $adb->num_rows($checkResult); - for($i=0; $i<$rows; $i++) { - $existingModules[] = $adb->query_result($checkResult, $i, 'name'); - } - - foreach($modules as $module) { - if (in_array($module, $existingModules)) { // check if module exists then only update and trigger events - $adb->pquery("UPDATE vtiger_tab set presence = ? WHERE name = ?", array($enable_disable, $module)); - $__cache_module_activeinfo[$module] = $enable_disable; - Vtiger_Module::fireEvent($module, $event_type); - Vtiger_Cache::flushModuleCache($module); + foreach($modules as $module) { + if (in_array($module, $existingModules)) { // check if module exists then only update and trigger events + $adb->pquery("UPDATE vtiger_tab set presence = ? WHERE name = ?", array($enable_disable, $module)); + $__cache_module_activeinfo[$module] = $enable_disable; + Vtiger_Module::fireEvent($module, $event_type); + Vtiger_Cache::flushModuleCache($module); + } } - } - create_tab_data_file(); - create_parenttab_data_file(); + create_tab_data_file(); + create_parenttab_data_file(); - // UserPrivilege file needs to be regenerated if module state is changed from - // vtiger 5.1.0 onwards - global $vtiger_current_version; - if(version_compare($vtiger_current_version, '5.0.4', '>')) { - vtlib_RecreateUserPrivilegeFiles(); + // UserPrivilege file needs to be regenerated if module state is changed from + // vtiger 5.1.0 onwards + global $vtiger_current_version; + if(version_compare($vtiger_current_version, '5.0.4', '>')) { + vtlib_RecreateUserPrivilegeFiles(); + } + } else { + throw new Exception ("Permission denied, only admin users can toggle module access"); } }