public function process(Vtiger_Request $request) { $viewer = $this->getViewer($request); $moduleName = $request->getModule(); $qualifiedModuleName = $request->getModule(false); $record = $request->get('record'); if (!empty($record)) { $recordModel = Settings_Groups_Record_Model::getInstance($record); $viewer->assign('MODE', 'edit'); } else { $recordModel = new Settings_Groups_Record_Model(); $viewer->assign('MODE', ''); } $viewer->assign('MEMBER_GROUPS', Settings_Groups_Member_Model::getAll(false)); $viewer->assign('RECORD_MODEL', $recordModel); $viewer->assign('RECORD_ID', $record); $viewer->assign('MODULE', $moduleName); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->view('EditView.tpl', $qualifiedModuleName); }
/** * Function to save the role */ public function save() { $db = PearDatabase::getInstance(); $groupId = $this->getId(); $mode = 'edit'; $oldUsersList = $this->getUsersList(true); if (empty($groupId)) { $mode = ''; $groupId = $db->getUniqueId('vtiger_users'); $this->setId($groupId); } if ($mode == 'edit') { $sql = 'UPDATE vtiger_groups SET groupname=?, description=? WHERE groupid=?'; $params = array($this->getName(), $this->getDescription(), $groupId); } else { $sql = 'INSERT INTO vtiger_groups(groupid, groupname, description) VALUES (?,?,?)'; $params = array($groupId, $this->getName(), $this->getDescription()); } $db->pquery($sql, $params); $members = $this->get('group_members'); if (is_array($members)) { $db->pquery('DELETE FROM vtiger_users2group WHERE groupid=?', array($groupId)); $db->pquery('DELETE FROM vtiger_group2grouprel WHERE groupid=?', array($groupId)); $db->pquery('DELETE FROM vtiger_group2role WHERE groupid=?', array($groupId)); $db->pquery('DELETE FROM vtiger_group2rs WHERE groupid=?', array($groupId)); $noOfMembers = count($members); for ($i = 0; $i < $noOfMembers; ++$i) { $id = $members[$i]; $idComponents = Settings_Groups_Member_Model::getIdComponentsFromQualifiedId($id); if ($idComponents && count($idComponents) == 2) { $memberType = $idComponents[0]; $memberId = $idComponents[1]; if ($memberType == Settings_Groups_Member_Model::MEMBER_TYPE_USERS) { $db->pquery('INSERT INTO vtiger_users2group(userid, groupid) VALUES (?,?)', array($memberId, $groupId)); } if ($memberType == Settings_Groups_Member_Model::MEMBER_TYPE_GROUPS) { $db->pquery('INSERT INTO vtiger_group2grouprel(containsgroupid, groupid) VALUES (?,?)', array($memberId, $groupId)); } if ($memberType == Settings_Groups_Member_Model::MEMBER_TYPE_ROLES) { $db->pquery('INSERT INTO vtiger_group2role(roleid, groupid) VALUES (?,?)', array($memberId, $groupId)); } if ($memberType == Settings_Groups_Member_Model::MEMBER_TYPE_ROLE_AND_SUBORDINATES) { $db->pquery('INSERT INTO vtiger_group2rs(roleandsubid, groupid) VALUES (?,?)', array($memberId, $groupId)); } } } } $modules = $this->get('modules'); if (is_array($modules)) { $db->pquery('DELETE FROM vtiger_group2modules WHERE groupid=?', array($groupId)); for ($i = 0; $i < count($modules); ++$i) { $db->pquery('INSERT INTO vtiger_group2modules(tabid, groupid) VALUES (?,?)', array($modules[$i], $groupId)); } } $this->recalculate($oldUsersList); $em = new VTEventsManager($db); $em->initTriggerCache(); $entityData = array(); $entityData['groupid'] = $groupId; $entityData['group_members'] = $members; $entityData['memberId'] = $memberId; $entityData['modules'] = $modules; $em->triggerEvent("vtiger.entity.aftergroupsave", $entityData); }