Example #1
0
 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());
 }
Example #2
0
 /**
  * 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();
 }
Example #3
0
 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);
 }
Example #4
0
 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;
 }
Example #5
0
 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;
 }