source: trunk/expressoAdmin1_2/inc/class.imap_functions.inc.php @ 396

Revision 396, 6.3 KB checked in by niltonneto, 16 years ago (diff)

Modificações referente a opção de configurar um ldap_master
no setup do Expresso, usado somente para escrita.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
Line 
1<?php
2
3include_once('class.functions.inc.php');
4
5class imap_functions
6{
7        var $functions;
8        var $imap;
9        var $imapDelimiter;
10        var $imap_admin;
11        var $imap_passwd;
12        var $imap_server;
13        var $imap_port;
14       
15        function imap_functions(){
16                $this->imap_admin       = $_SESSION['phpgw_info']['expresso']['email_server']['imapAdminUsername'];
17                $this->imap_passwd      = $_SESSION['phpgw_info']['expresso']['email_server']['imapAdminPW'];
18                $this->imap_server      = $_SESSION['phpgw_info']['expresso']['email_server']['imapServer'];
19                $this->imap_port        = $_SESSION['phpgw_info']['expresso']['email_server']['imapPort'];
20                $this->imapDelimiter= $_SESSION['phpgw_info']['expresso']['email_server']['imapDelimiter'];
21                $this->imap             = imap_open('{'.$this->imap_server.':'.$this->imap_port.'/novalidate-cert}', $this->imap_admin, $this->imap_passwd, OP_HALFOPEN);
22                $this->functions        = new functions;
23        }
24       
25        function create($uid, $mailquota)
26        {
27                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid))
28                {
29                        $error = imap_errors();
30                        $result['status'] = false;
31                        $result['msg'] = 'Erro na funcao imap_function->create(INBOX): ' . $error[0];
32                        return $result;
33                }
34                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . "Enviados"))
35                {
36                        $error = imap_errors();
37                        $result['status'] = false;
38                        $result['msg'] = 'Erro na funcao imap_function->create(Enviados): ' . $error[0];
39                        return $result;
40                }
41                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . "Rascunhos"))
42                {
43                        $error = imap_errors();
44                        $result['status'] = false;
45                        $result['msg'] = 'Erro na funcao imap_function->create(Rascunho): ' . $error[0];
46                        return $result;
47                }
48                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . "Lixeira"))
49                {
50                        $error = imap_errors();
51                        $result['status'] = false;
52                        $result['msg'] = 'Erro na funcao imap_function->create(Lixeira): ' . $error[0];
53                        return $result;
54                }
55                if (!imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($mailquota*1024)))
56                {
57                        $error = imap_errors();
58                        $result['status'] = false;
59                        $result['msg'] = 'Erro na funcao imap_function->create(set_quota): ' . $error[0];
60                        return $result;
61                }
62               
63                $result['status'] = true;
64                return $result;
65        }
66       
67        function get_user_info($uid)
68        {
69                $get_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid);
70               
71                if (count($get_quota) == 0)
72                {
73                        $quota['mailquota'] = '-1';
74                        $quota['mailquota_used'] = '-1';
75                }       
76                else
77                {
78                        $quota['mailquota'] = round (($get_quota['limit'] / 1024), 2);
79                        $quota['mailquota_used'] = round (($get_quota['usage'] / 1024), 2);
80                }
81                       
82                return $quota;
83        }
84       
85        function change_user_quota($uid, $quota)
86        {
87                $set_quota = imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($quota*1024));
88                return true;
89        }
90       
91        function delete_user($uid)
92        {
93                $result['status'] = true;
94               
95                //Seta acl imap para poder deletar o user.
96                // Esta sem tratamento de erro, pois o retorno da funcao deve ter um bug.
97                imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, 'c');
98               
99                if (!imap_deletemailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid))
100                {
101                        $result['status'] = false;
102                        $result['msg'] = "Erro na funcao imap_function->delete_user.\nRetorno do servidor: " . imap_last_error();
103                }
104               
105                return $result;
106        }
107       
108        function rename_mailbox($old_mailbox, $new_mailbox)
109        {
110                $quota = @imap_get_quotaroot($this->imap, '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $old_mailbox);
111                $limit = $quota['STORAGE']['limit'];
112               
113                @imap_set_quota($this->imap, '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $old_mailbox, -1);
114                       
115                $result_rename = @imap_renamemailbox($this->imap,
116                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $old_mailbox,
117                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $new_mailbox);
118               
119                @imap_set_quota($this->imap, '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $new_mailbox, $limit);
120               
121                if (!$result_rename)
122                {
123                        $result['status'] = false;
124                        $result['msg'] = "Erro na funcao imap_function->rename_mailbox.\nRetorno do servidor: " . imap_last_error();
125                }
126                else
127                {
128                        $result['status'] = true;
129                }
130               
131                return $result;
132        }
133       
134        function empty_inbox($params)
135        {
136                // Verifica o acesso do gerente
137                if (!$this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'empty_user_inbox'))
138                {
139                        $result['status'] = false;
140                        $result['msg'] = 'Você não tem acesso para executar esta operação.';
141                        return $result;
142                }
143               
144                if ($_SESSION['phpgw_info']['expressomail']['email_server']['imapTLSEncryption'] == 'yes')
145                {
146                        $imap_options = '/tls/novalidate-cert';
147                }
148                else
149                {
150                        $imap_options = '/notls/novalidate-cert';
151                }
152
153               
154                $result['status'] = true;
155                $uid = $params['uid'];
156               
157                $return_setacl = imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, 'lrswipcda');
158               
159                if ($return_setacl)
160                {
161                        //$mbox_stream = imap_open('{'.$this->imap_server.':'.$this->imap_port.$imap_options.'/user="'.$uid.'"}', $this->imap_admin, $this->imap_passwd);
162                        $mbox_stream = imap_open('{'.$this->imap_server.':'.$this->imap_port.$imap_options .'}user'. $this->imapDelimiter . $uid, $this->imap_admin, $this->imap_passwd);
163                       
164                        $check = imap_mailboxmsginfo($mbox_stream);
165                        $inbox_size = (string)(round ((($check->Size)/(1024*1024)), 2));
166                       
167                        $return_imap_delete = imap_delete($mbox_stream,'1:*');
168                        imap_close($mbox_stream, CL_EXPUNGE);
169                       
170                        imap_setacl ($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, '');
171                       
172                        if ($return_imap_delete)
173                        {
174                                $result['inbox_size'] = $inbox_size;
175                               
176                                $get_user_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid);
177                                $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2));
178                        }
179                        else
180                        {
181                                $result['status'] = false;
182                                $result['msg'] = "Nao foi possivel esvaziar a caixa postal do usuario:\n" . imap_last_error();
183                        }
184                }
185                else
186                {
187                        $result['status'] = false;
188                        $result['msg'] = "Nao foi possivel modificar a acl do usuario:\n" . imap_last_error();
189                }
190                return $result;
191        }
192}
Note: See TracBrowser for help on using the repository browser.