[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 *************************************************************************************/ 10 11 /** 12 * Roles Record Model Class 13 */ 14 class Settings_Groups_Member_Model extends Vtiger_Base_Model { 15 16 const MEMBER_TYPE_USERS = 'Users'; 17 const MEMBER_TYPE_GROUPS = 'Groups'; 18 const MEMBER_TYPE_ROLES = 'Roles'; 19 const MEMBER_TYPE_ROLE_AND_SUBORDINATES = 'RoleAndSubordinates'; 20 21 /** 22 * Function to get the Qualified Id of the Group Member 23 * @return <Number> Id 24 */ 25 public function getId() { 26 return $this->get('id'); 27 } 28 29 public function getIdComponents() { 30 return explode(':', $$this->getId()); 31 } 32 33 public function getMemberType() { 34 $idComponents = $this->getIdComponents(); 35 if($idComponents && count($idComponents) > 0) { 36 return $idComponents[0]; 37 } 38 return false; 39 } 40 41 public function getMemberId() { 42 $idComponents = $this->getIdComponents(); 43 if($idComponents && count($idComponents) > 1) { 44 return $idComponents[1]; 45 } 46 return false; 47 } 48 49 /** 50 * Function to get the Group Name 51 * @return <String> 52 */ 53 public function getName() { 54 return $this->get('name'); 55 } 56 57 /** 58 * Function to get the Group Name 59 * @return <String> 60 */ 61 public function getQualifiedName() { 62 return $this->getMemberType().' - '.$this->get('name'); 63 } 64 65 public static function getIdComponentsFromQualifiedId($id) { 66 return explode(':', $id); 67 } 68 69 public static function getQualifiedId($type, $id) { 70 return $type.':'.$id; 71 } 72 73 public static function getAllByTypeForGroup($groupModel, $type) { 74 $db = PearDatabase::getInstance(); 75 76 $members = array(); 77 78 if($type == self::MEMBER_TYPE_USERS) { 79 $sql = 'SELECT vtiger_users.id, vtiger_users.last_name, vtiger_users.first_name FROM vtiger_users 80 INNER JOIN vtiger_users2group ON vtiger_users2group.userid = vtiger_users.id 81 WHERE vtiger_users2group.groupid = ?'; 82 $params = array($groupModel->getId()); 83 $result = $db->pquery($sql, $params); 84 $noOfUsers = $db->num_rows($result); 85 86 for($i=0; $i<$noOfUsers; ++$i) { 87 $row = $db->query_result_rowdata($result, $i); 88 $userId = $row['id']; 89 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_USERS, $userId); 90 $name = getFullNameFromArray('Users', $row); 91 $member = new self(); 92 $members[$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $name)->set('userId', $userId); 93 } 94 } 95 96 if($type == self::MEMBER_TYPE_GROUPS) { 97 $sql = 'SELECT vtiger_groups.groupid, vtiger_groups.groupname FROM vtiger_groups 98 INNER JOIN vtiger_group2grouprel ON vtiger_group2grouprel.containsgroupid = vtiger_groups.groupid 99 WHERE vtiger_group2grouprel.groupid = ?'; 100 $params = array($groupModel->getId()); 101 $result = $db->pquery($sql, $params); 102 $noOfGroups = $db->num_rows($result); 103 104 for($i=0; $i<$noOfGroups; ++$i) { 105 $row = $db->query_result_rowdata($result, $i); 106 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_GROUPS, $row['groupid']); 107 $name = $row['groupname']; 108 $member = new self(); 109 $members[$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $name)->set('groupId', $row['groupid']); 110 } 111 } 112 113 if($type == self::MEMBER_TYPE_ROLES) { 114 $sql = 'SELECT vtiger_role.roleid, vtiger_role.rolename FROM vtiger_role 115 INNER JOIN vtiger_group2role ON vtiger_group2role.roleid = vtiger_role.roleid 116 WHERE vtiger_group2role.groupid = ?'; 117 $params = array($groupModel->getId()); 118 $result = $db->pquery($sql, $params); 119 $noOfRoles = $db->num_rows($result); 120 121 for($i=0; $i<$noOfRoles; ++$i) { 122 $row = $db->query_result_rowdata($result, $i); 123 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_ROLES, $row['roleid']); 124 $name = $row['rolename']; 125 $member = new self(); 126 $members[$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $name)->set('roleId', $row['roleid']); 127 } 128 } 129 130 if($type == self::MEMBER_TYPE_ROLE_AND_SUBORDINATES) { 131 $sql = 'SELECT vtiger_role.roleid, vtiger_role.rolename FROM vtiger_role 132 INNER JOIN vtiger_group2rs ON vtiger_group2rs.roleandsubid = vtiger_role.roleid 133 WHERE vtiger_group2rs.groupid = ?'; 134 $params = array($groupModel->getId()); 135 $result = $db->pquery($sql, $params); 136 $noOfRoles = $db->num_rows($result); 137 138 for($i=0; $i<$noOfRoles; ++$i) { 139 $row = $db->query_result_rowdata($result, $i); 140 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_ROLE_AND_SUBORDINATES, $row['roleid']); 141 $name = $row['rolename']; 142 $member = new self(); 143 $members[$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $name)->set('roleId', $row['roleid']); 144 } 145 } 146 147 return $members; 148 } 149 150 /** 151 * Function to get Detail View Url of this member 152 * return <String> url 153 */ 154 public function getDetailViewUrl() { 155 list($type, $recordId) = self::getIdComponentsFromQualifiedId($this->getId()); 156 switch ($type) { 157 case 'Users' : $recordModel = Users_Record_Model::getCleanInstance($type); 158 $recordModel->setId($recordId); 159 return $recordModel->getDetailViewUrl(); 160 161 162 case 'RoleAndSubordinates' : 163 case 'Roles' : $recordModel = new Settings_Roles_Record_Model(); 164 $recordModel->set('roleid', $recordId); 165 return $recordModel->getEditViewUrl(); 166 167 case 'Groups' : $recordModel = new Settings_Groups_Record_Model(); 168 $recordModel->setId($recordId); 169 return $recordModel->getDetailViewUrl(); 170 } 171 } 172 173 /** 174 * Function to get all the groups 175 * @return <Array> - Array of Settings_Groups_Record_Model instances 176 */ 177 public static function getAllByGroup($groupModel) { 178 $db = PearDatabase::getInstance(); 179 180 $members = array(); 181 $members[self::MEMBER_TYPE_USERS] = self::getAllByTypeForGroup($groupModel, self::MEMBER_TYPE_USERS); 182 $members[self::MEMBER_TYPE_GROUPS] = self::getAllByTypeForGroup($groupModel, self::MEMBER_TYPE_GROUPS); 183 $members[self::MEMBER_TYPE_ROLES] = self::getAllByTypeForGroup($groupModel, self::MEMBER_TYPE_ROLES); 184 $members[self::MEMBER_TYPE_ROLE_AND_SUBORDINATES] = self::getAllByTypeForGroup($groupModel, self::MEMBER_TYPE_ROLE_AND_SUBORDINATES); 185 186 return $members; 187 } 188 189 /** 190 * Function to get all the groups 191 * @return <Array> - Array of Settings_Groups_Record_Model instances 192 */ 193 public static function getAll($onlyActive=true) { 194 $members = array(); 195 196 $allUsers = Users_Record_Model::getAll($onlyActive); 197 foreach($allUsers as $userId => $userModel) { 198 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_USERS, $userId); 199 $member = new self(); 200 $members[self::MEMBER_TYPE_USERS][$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $userModel->getName()); 201 } 202 203 $allGroups = Settings_Groups_Record_Model::getAll(); 204 foreach($allGroups as $groupId => $groupModel) { 205 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_GROUPS, $groupId); 206 $member = new self(); 207 $members[self::MEMBER_TYPE_GROUPS][$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $groupModel->getName()); 208 } 209 210 $allRoles = Settings_Roles_Record_Model::getAll(); 211 foreach($allRoles as $roleId => $roleModel) { 212 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_ROLES, $roleId); 213 $member = new self(); 214 $members[self::MEMBER_TYPE_ROLES][$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $roleModel->getName()); 215 216 $qualifiedId = self::getQualifiedId(self::MEMBER_TYPE_ROLE_AND_SUBORDINATES, $roleId); 217 $member = new self(); 218 $members[self::MEMBER_TYPE_ROLE_AND_SUBORDINATES][$qualifiedId] = $member->set('id', $qualifiedId)->set('name', $roleModel->getName()); 219 } 220 221 return $members; 222 } 223 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |