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

Revision 309, 5.9 KB checked in by niltonneto, 16 years ago (diff)

Sincronização com versão publicada em 04/06/2008.

  • 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                $result['status'] = true;               
111                $result_rename = imap_renamemailbox($this->imap,
112                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $old_mailbox,
113                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $new_mailbox);
114               
115                if (!$result_rename)
116                {
117                        $result['status'] = false;
118                        $result['msg'] = "Erro na funcao imap_function->rename_mailbox.\nRetorno do servidor: " . imap_last_error();
119                }
120                return $result;
121        }
122       
123        function empty_inbox($params)
124        {
125                // Verifica o acesso do gerente
126                if (!$this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'empty_user_inbox'))
127                {
128                        $result['status'] = false;
129                        $result['msg'] = 'Você não tem acesso para executar esta operação.';
130                        return $result;
131                }
132               
133                if ($_SESSION['phpgw_info']['expressomail']['email_server']['imapTLSEncryption'] == 'yes')
134                {
135                        $imap_options = '/tls/novalidate-cert';
136                }
137                else
138                {
139                        $imap_options = '/notls/novalidate-cert';
140                }
141
142               
143                $result['status'] = true;
144                $uid = $params['uid'];
145               
146                $return_setacl = imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, 'lrswipcda');
147               
148                if ($return_setacl)
149                {
150                        //$mbox_stream = imap_open('{'.$this->imap_server.':'.$this->imap_port.$imap_options.'/user="'.$uid.'"}', $this->imap_admin, $this->imap_passwd);
151                        $mbox_stream = imap_open('{'.$this->imap_server.':'.$this->imap_port.$imap_options .'}user'. $this->imapDelimiter . $uid, $this->imap_admin, $this->imap_passwd);
152                       
153                        $check = imap_mailboxmsginfo($mbox_stream);
154                        $inbox_size = (string)(round ((($check->Size)/(1024*1024)), 2));
155                       
156                        $return_imap_delete = imap_delete($mbox_stream,'1:*');
157                        imap_close($mbox_stream, CL_EXPUNGE);
158                       
159                        imap_setacl ($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, '');
160                       
161                        if ($return_imap_delete)
162                        {
163                                $result['inbox_size'] = $inbox_size;
164                               
165                                $get_user_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid);
166                                $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2));
167                        }
168                        else
169                        {
170                                $result['status'] = false;
171                                $result['msg'] = "Nao foi possivel esvaziar a caixa postal do usuario:\n" . imap_last_error();
172                        }
173                }
174                else
175                {
176                        $result['status'] = false;
177                        $result['msg'] = "Nao foi possivel modificar a acl do usuario:\n" . imap_last_error();
178                }
179                return $result;
180        }
181}
Note: See TracBrowser for help on using the repository browser.