[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/modules/Settings/Groups/models/ -> Member.php (source)

   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  }


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1