コード例 #1
0
ファイル: ACL.php プロジェクト: bhirsch/voipdrupal-4.7-1.0
 /**
  * Get all of the ACLs through ACL groups
  *
  * @param int $contact_id   -   ID of a contact to search for
  * @param int $group_id     -   ID of a group to search for
  * @return array            -   Array of assoc. arrays of ACL rules
  * @access public
  * @static
  */
 function &getACLGroups($contact_id = null, $group_id = null)
 {
     $contact_id = CRM_Utils_Type::escape($contact_id, 'Integer');
     $group_id = CRM_Utils_Type::escape($group_id, 'Integer');
     $rule =& new CRM_Core_BAO_ACL();
     $acl = CRM_Core_BAO_ACL::getTableName();
     $aclGroup = CRM_Core_BAO_ACLGroup::getTableName();
     $contact = CRM_Contact_BAO_Contact::getTableName();
     $domain = CRM_Core_DAO_Domain::getTableName();
     $c2g = CRM_Contact_BAO_GroupContact::getTableName();
     $group = CRM_Contact_BAO_Group::getTableName();
     $session =& CRM_Core_Session::singleton();
     $domainId = $session->get('domainID');
     $query = "   SELECT          {$acl}.* \n                        FROM            {$acl}\n                        INNER JOIN      {$aclGroup}\n                                ON      {$acl}.entity_table   = '{$aclGroup}'\n                                AND     {$acl}.entity_id      = {$aclGroup}.id";
     if (!empty($group_id)) {
         $query .= " INNER JOIN  {$c2g}\n                            ON      {$aclGroup}.entity_id     = {$c2g}.group_id\n                        WHERE       {$aclGroup}.entity_table  = '{$group}'\n                            AND     {$aclGroup}.is_active     = 1\n                            AND     {$c2g}.group_id           = {$group_id}";
         if (!empty($contact_id)) {
             $query .= " AND     {$c2g}.contact_id = {$contact_id}\n                            AND     {$c2g}.status = 'Added'";
         }
     } else {
         if (!empty($contact_id)) {
             $query .= " WHERE   {$aclGroup}.entity_table  = '{$contact}'\n                                AND {$aclGroup}.is_active     = 1\n                                AND {$aclGroup}.entity_id     = {$contact_id}";
         } else {
             $query .= " WHERE   {$aclGroup}.entity_table  = '{$domain}'\n                                AND {$aclGroup}.is_active     = 1\n                                AND {$aclGroup}.entity_id     = {$domain_id}";
         }
     }
     $results = array();
     $rule->query($query);
     while ($rule->fetch()) {
         $results[] =& $rule->toArray();
     }
     return $results;
 }