예제 #1
0
 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);
 }
예제 #2
0
 /**
  * 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);
 }