public function initialize(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $qualifiedModuleName = $request->getModule(false); $record = $request->get('record'); $fromRecord = $request->get('from_record'); if (!empty($record)) { $recordModel = Settings_Profiles_Record_Model::getInstanceById($record); $viewer->assign('MODE', 'edit'); } elseif (!empty($fromRecord)) { $recordModel = Settings_Profiles_Record_Model::getInstanceById($fromRecord); $recordModel->getModulePermissions(); $recordModel->getGlobalPermissions(); $recordModel->set('profileid', ''); $viewer->assign('MODE', ''); $viewer->assign('IS_DUPLICATE_RECORD', $fromRecord); } else { $recordModel = new Settings_Profiles_Record_Model(); $viewer->assign('MODE', ''); } $viewer->assign('ALL_PROFILES', $recordModel->getAll()); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); $viewer->assign('ALL_BASIC_ACTIONS', Vtiger_Action_Model::getAllBasic(true)); $viewer->assign('ALL_UTILITY_ACTIONS', Vtiger_Action_Model::getAllUtility(true)); $viewer->assign('RECORD_MODEL', $recordModel); $viewer->assign('RECORD_ID', $record); $viewer->assign('MODULE', $moduleName); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); }
/** * Function to check whether the user has access to the specified action/operation on a given module by tabid * @param <Number> $tabId * @param <String/Number> $action * @return <Boolean> true/false */ public function hasModuleActionPermission($tabId, $action) { if (!is_a($action, 'Vtiger_Action_Model')) { $action = Vtiger_Action_Model::getInstance($action); } $actionId = $action->getId(); $profileTabsPermissions = $this->get('profile_action_permission'); $moduleModel = Vtiger_Module_Model::getInstance($tabId); return ($this->isAdminUser() || $profileTabsPermissions[$tabId][$actionId] === Settings_Profiles_Module_Model::IS_PERMITTED_VALUE) && $moduleModel->isActive(); }
public function process(Vtiger_Request $request) { $recordId = $request->get('record'); $moduleName = $request->getModule(); $qualifiedModuleName = $request->getModule(false); $recordModel = Settings_Profiles_Record_Model::getInstanceById($recordId); $viewer = $this->getViewer($request); $viewer->assign('MODULE', $moduleName); $viewer->assign('RECORD_ID', $recordId); $viewer->assign('RECORD_MODEL', $recordModel); $viewer->assign('ALL_BASIC_ACTIONS', Vtiger_Action_Model::getAllBasic(true)); $viewer->assign('ALL_UTILITY_ACTIONS', Vtiger_Action_Model::getAllUtility(true)); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->view('DetailView.tpl', $qualifiedModuleName); }
public static function getInstance($value, $force = false) { if (!self::$cachedInstances || $force) { self::$cachedInstances = self::getAll(); } if (self::$cachedInstances) { $actionid = Vtiger_Utils::isNumber($value) ? $value : false; foreach (self::$cachedInstances as $instance) { if ($actionid !== false) { if ($instance->get('actionid') == $actionid) { return $instance; } } else { if ($instance->get('actionname') == $value) { return $instance; } } } } return null; }
public function save() { $db = PearDatabase::getInstance(); $modulePermissions = $this->getModulePermissions(); $profileName = $this->get('profilename'); $description = $this->get('description'); $profilePermissions = $this->get('profile_permissions'); $calendarModule = Vtiger_Module_Model::getInstance('Calendar'); $eventModule = Vtiger_Module_Model::getInstance('Events'); $eventFieldsPermissions = $profilePermissions[$eventModule->getId()]['fields']; $profilePermissions[$eventModule->getId()] = $profilePermissions[$calendarModule->getId()]; $profilePermissions[$eventModule->getId()]['fields'] = $eventFieldsPermissions; $isProfileDirectlyRelatedToRole = 0; $isNewProfile = false; if ($this->has('directly_related_to_role')) { $isProfileDirectlyRelatedToRole = $this->get('directly_related_to_role'); } $profileId = $this->getId(); if (!$profileId) { $profileId = $db->getUniqueId('vtiger_profile'); $this->setId($profileId); $sql = 'INSERT INTO vtiger_profile(profileid, profilename, description, directly_related_to_role) VALUES (?,?,?,?)'; $params = array($profileId, $profileName, $description, $isProfileDirectlyRelatedToRole); $isNewProfile = true; } else { $sql = 'UPDATE vtiger_profile SET profilename=?, description=?, directly_related_to_role=? WHERE profileid=?'; $params = array($profileName, $description, $isProfileDirectlyRelatedToRole, $profileId); $db->pquery('DELETE FROM vtiger_profile2globalpermissions WHERE profileid=?', array($profileId)); } $db->pquery($sql, $params); $sql = 'INSERT INTO vtiger_profile2globalpermissions(profileid, globalactionid, globalactionpermission) VALUES (?,?,?)'; $params = array($profileId, Settings_Profiles_Module_Model::GLOBAL_ACTION_VIEW, $this->tranformInputPermissionValue($this->get('viewall'))); $db->pquery($sql, $params); $sql = 'INSERT INTO vtiger_profile2globalpermissions(profileid, globalactionid, globalactionpermission) VALUES (?,?,?)'; $params = array($profileId, Settings_Profiles_Module_Model::GLOBAL_ACTION_EDIT, $this->tranformInputPermissionValue($this->get('editall'))); $db->pquery($sql, $params); $allModuleModules = Vtiger_Module_Model::getAll(array(0), Settings_Profiles_Module_Model::getNonVisibleModulesList()); $allModuleModules[$eventModule->getId()] = $eventModule; if (count($allModuleModules) > 0) { $actionModels = Vtiger_Action_Model::getAll(true); foreach ($allModuleModules as $tabId => $moduleModel) { if ($moduleModel->isActive()) { $this->saveModulePermissions($moduleModel, $profilePermissions[$moduleModel->getId()]); } else { $permissions = array(); $permissions['is_permitted'] = Settings_Profiles_Module_Model::IS_PERMITTED_VALUE; if ($moduleModel->isEntityModule()) { $permissions['actions'] = array(); foreach ($actionModels as $actionModel) { if ($actionModel->isModuleEnabled($moduleModel)) { $permissions['actions'][$actionModel->getId()] = Settings_Profiles_Module_Model::IS_PERMITTED_VALUE; } } $permissions['fields'] = array(); $moduleFields = $moduleModel->getFields(); foreach ($moduleFields as $fieldModel) { if ($fieldModel->isEditEnabled()) { $permissions['fields'][$fieldModel->getId()] = Settings_Profiles_Record_Model::PROFILE_FIELD_READWRITE; } elseif ($fieldModel->isViewEnabled()) { $permissions['fields'][$fieldModel->getId()] = Settings_Profiles_Record_Model::PROFILE_FIELD_READONLY; } else { $permissions['fields'][$fieldModel->getId()] = Settings_Profiles_Record_Model::PROFILE_FIELD_INACTIVE; } } } $this->saveModulePermissions($moduleModel, $permissions); } } } if ($isNewProfile) { $this->saveUserAccessbleFieldsIntoProfile2Field(); } $this->recalculate(); return $profileId; }