source: trunk/expressoAdmin1_2/inc/class.shared_accounts.inc.php @ 5942

Revision 5942, 8.7 KB checked in by eduardow, 12 years ago (diff)

Ticket #2619 - Corecao na falta de uids de participantes na interface de administracao de contas compartilhadas .

Line 
1<?php
2        /***********************************************************************************\
3        * Expresso Administraᅵᅵo                                                                                                                    *
4        * by Valmir André de Sena (valmirse@gmail.com, valmir.sena@ati.pe.gov.br
5        * ----------------------------------------------------------------------------------*
6        *  This program is free software; you can redistribute it and/or modify it                      *
7        *  under the terms of the GNU General Public License as published by the                        *
8        *  Free Software Foundation; either version 2 of the License, or (at your                       *
9        *  option) any later version.                                                                                                           *
10        \***********************************************************************************/
11
12include_once('class.functions.inc.php');
13include_once('class.ldap_functions.inc.php');
14include_once('class.imap_functions.inc.php');
15include_once('class.db_functions.inc.php');
16
17        class shared_accounts
18        {
19                var $functions;
20                var $ldap_functions;
21                var $imap_functions;
22                var $db_functions;
23
24                function shared_accounts()
25                {                       
26                       
27                        $this->ldap_functions = new ldap_functions;                     
28                        $this->imap_functions = new imap_functions;
29                        $this->functions = new functions;
30                        $this->db_functions = new db_functions();
31                       
32                }
33                function create($params)
34                {
35                        $params['uid'] =  $this->get_shared_mail2uid($params);
36                        $return = $this->ldap_functions->create_shared_accounts($params);
37                                               
38                        if( $return['status'] ){
39                                //Create mailbox                               
40                                $mailquota = 10;
41                                $return = $this->imap_functions->create($params['uid'], $params['mailquota']);
42                                $owners_acl_new = unserialize($params['owners_acl']);
43                                //add new users e set permissions
44                                foreach($owners_acl_new as $user => $acl){
45                                   $result &= $this->imap_functions->setaclfrombox($user,$acl,$params['uid']);
46                                }
47                                $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']);
48                                $owner = $this->ldap_functions->uid2uidnumber($params['uid']);
49                                foreach($owners_calendar_acl_new as $user => $acl){
50                                   $result &= $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner);
51                                }
52
53                        }               
54                        return $return;
55                }
56       
57                function save($params)
58                {
59                       
60                        $params['uid'] = $this->get_shared_mail2uid($params);
61                        $params['old_uid'] = $this->get_shared_dn2uid($params['anchor']);
62                        $result = $this->ldap_functions->save_shared_accounts($params);
63
64
65                        if( $result['status']){
66                            $result = $this->imap_functions->save_shared_account($params);                           
67
68                            $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']);
69
70                            $owner = $params['uidnumber'];
71                            foreach($owners_calendar_acl_new as $user => $acl){
72                              $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner);
73                            }
74                        }
75
76                      return  $result;
77                }
78               
79                function get($params)
80                {
81                        if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'list_institutional_accounts'))
82                        {
83                                $return['status'] = false;
84                                $return['msg'] = $this->functions->lang('You do not have right to list institutional accounts') . ".";
85                                return $return;
86                        }
87
88                        $input = $params['input'];
89                        $justthese = array("cn", "mail", "uid");
90                        $trs = array();
91
92                        foreach ($this->manager_contexts as $idx=>$context)
93                        {
94                                $shared_accounts = ldap_search($this->ldap, $context, ("(&(phpgwAccountType=s)(|(mail=$input*)(cn=*$input*)))"), $justthese);
95                                $entries = ldap_get_entries($this->ldap, $shared_accounts);
96
97                                for ($i=0; $i<$entries['count']; $i++)
98                                {
99                                        $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>";
100                                        $trs[$tr] = $entries[$i]['cn'][0];
101                                }
102                        }
103       
104                        $trs_string = '';
105                        if (count($trs))
106                        {
107                                natcasesort($trs);
108                                foreach ($trs as $tr=>$cn)
109                                {
110                                        $trs_string .= $tr;
111                                }
112                        }
113
114                        $return['status'] = 'true';
115                        $return['trs'] = $trs_string;
116                        return $return;
117                }
118       
119                function get_data($params)
120                {
121                        $return = $this->ldap_functions->get_shared_account_data($params);
122                        $owners_acl = $this->imap_functions->getaclfrombox($params);
123                        $uid = $params['uid'];
124                        $quota = $this->imap_functions->get_user_info($params['uid']);
125                        $owner = $this->ldap_functions->uid2uidnumber($params['uid']);
126                        $calendarAcls = $this->db_functions->get_calendar_acls($owner);
127
128                        $return['uidnumber'] = $owner;
129                        $return['mailquota'] = $quota['mailquota'];
130                        $return['display_empty_inbox'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'empty_shared_accounts_inbox') ? 'block' : 'none';
131                        $return['allow_edit_shared_account_acl'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'edit_shared_accounts_acl');
132                        $return['mailquota_used'] = $quota['mailquota_used'];                       
133                        $i = 0;
134                        if( is_array($owners_acl) ){
135                                foreach($owners_acl as $key => $value)
136                                {
137                                        $cn = $this->ldap_functions->uid2cn($key);
138                                        $uidnumber = $this->ldap_functions->uid2uidnumber($key);
139                                       
140                                        if( $uid )
141                                            $cn .= '(' . $uid . ')';
142
143                                        $return['owners_options'] .= '<option value='. $key .'>' . $cn . '</option>';
144                                        $return['owners'][$i] .= $key;
145                                        $return['owners_acl'][$i] .= $value;
146                                        $return['owners_calendar_acl'][$i] .= $calendarAcls[$key];
147                                        $i++;
148                                }
149                        } else {
150                                $return['owners_options'] = false;
151                                $return['owners'] = false;
152                                $return['owners_acl'] = false;
153                                $return['owners_calendar_acl'] == false;
154                        }                       
155
156
157                        return $return;
158                }
159
160               
161                function delete($params){
162                    $result = $this->ldap_functions->delete_shared_account_data($params);
163                    if( $result['status'] ) $result = $this->imap_functions->delete_mailbox($params['uid']);
164                    return $result;
165                }
166                //Get the shared uid from mail
167                function get_shared_mail2uid($params){
168                        list($uid) = explode("@",$params['mail']);
169                        return $uid;
170                }
171                function get_shared_dn2uid($dn){
172                        $uid = "";
173                        list($uid) = explode(",", str_replace("uid=","", $dn));
174                        return $uid;                   
175                }
176                function empty_inbox($params){
177                    $params['uid'] = $this->get_shared_dn2uid($params['uid']);
178                    return $this->imap_functions->empty_shared_account_inbox($params);
179                }
180       
181}
182?>
Note: See TracBrowser for help on using the repository browser.