source: trunk/instant_messenger/inc/class.contacts_im.inc.php @ 151

Revision 151, 2.5 KB checked in by niltonneto, 16 years ago (diff)

Commit da nova versão do módulo, usando agente em C.
Vide Página do módulo do Trac:
http://www.expressolivre.org/dev/wiki/messenger

A versão anterior encontra-se na subpasta bkp (32/64).

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2
3require_once "class.ldap_im.inc.php";
4require_once "class.db_im.inc.php";
5
6class contacts_im
7{
8        private $ldap;
9        private $db_user;
10       
11        function __construct()
12        {
13                $this->ldap = new ldap_im();
14                $this->db_user = new db_im();           
15        }
16
17        private function users_auth_im()
18        {
19                $db_acls = $this->db_user->get_accounts_acl();
20               
21                $search_uids = "|";
22                if(count($db_acls) > 0)
23                        foreach($db_acls as $tmp)
24                                $search_uids .= "(uidNumber=".$tmp['acl_account'].")";
25
26                // Busca Usuarios
27                $uids = $this->ldap->list_users_ldap($search_uids);
28               
29                $search_groups = "|";
30                if(count($db_acls) > 0)
31                        foreach($db_acls as $tmp)
32                                $search_groups .= "(gidNumber=".$tmp['acl_account'].")";
33 
34                // Busca Grupos
35                $groups = $this->ldap->list_groups_ldap($search_groups);
36       
37                $search_uids = "|";
38                if($groups)
39                {
40                        foreach($groups as $tmp)
41                        {
42                                $members = $tmp['members'];     
43                                foreach($members as $mb)               
44                                        $search_uids .= "(uid=".$mb.")";                       
45                        }
46                }
47               
48                if($uids)
49                {
50                        foreach($uids as $tmp) 
51                                $search_uids .= "(uid=".$tmp['uid'].")";
52                }
53                $uids_members = $this->ldap->list_users_ldap($search_uids);     
54               
55                if(count($uids_members) > 0)
56                        return $uids_members;
57                else
58                        return 0;
59        }
60               
61        function list_contacts($param)
62        {
63                $users  = $this->users_auth_im();
64                $order  = array();
65                $return = "<uids>";
66               
67                foreach($users as $tmp)
68                        $order[] = $tmp['cn'].";".$tmp['mail'].";".$tmp['uid'].";".$tmp['dn'];
69                                       
70                natsort($order);
71                $uid_unique = @array_values(@array_unique($order));
72               
73                foreach($uid_unique as $tmp)
74                {       
75                        $result = explode(";",$tmp);
76                        if(strtolower($result[3]) == strtolower($param['ou']))
77                        {
78                                $return .= "<data>";
79                                $return .= "<cn>" . $result[0] . "</cn>";
80                                $return .= "<mail>" . $result[1] . "</mail>";                           
81                                $return .= "<uid>" . $result[2] . "</uid>";
82                                $return .= "</data>";
83                        }
84                        unset($result);
85                }                       
86               
87                $return .= "</uids>";
88                return $return;
89        }
90       
91        function UserPermission($param)
92        {
93                $db_acls = $this->db_user->get_accounts_acl();
94                $members = array();             
95                $search_uid     = "";
96                $search_groups = "|";
97               
98                $search_uid = $this->ldap->list_users_ldap("uid=".$param['uid']);
99
100                foreach($db_acls as $tmp)
101                        if($tmp['acl_account'] == $search_uid[0]['uidnumber'])
102                                return 1;
103                        else
104                                $search_groups .= "(gidNumber=".$tmp['acl_account'].")";
105
106                $groups = $this->ldap->list_groups_ldap($search_groups);
107
108                if($groups)
109                foreach($groups as $tmp){
110                        $members = $tmp['members'];     
111                        foreach($members as $mb){               
112                                if(trim($mb) == trim($search_uid[0]['uid']))
113                                        return 1;
114                        }                       
115                }
116               
117                return 0;
118        }
119}
120?>
Note: See TracBrowser for help on using the repository browser.