source: companies/serpro/expressoAdminSerpro/inc/class.imap_functions.inc.php @ 903

Revision 903, 6.0 KB checked in by niltonneto, 15 years ago (diff)

Importacao inicial do Expresso do Serpro

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 função 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 . "Sent"))
35                {
36                        $error = imap_errors();
37                        $result['status'] = false;
38                        $result['msg'] = 'Erro na função 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 . "Drafts"))
42                {
43                        $error = imap_errors();
44                        $result['status'] = false;
45                        $result['msg'] = 'Erro na função 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 . "Trash"))
49                {
50                        $error = imap_errors();
51                        $result['status'] = false;
52                        $result['msg'] = 'Erro na função 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 função 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 account_exist($uid)
86        {
87                $get_acl = @imap_getacl($this->imap,"user" . $this->imapDelimiter . $uid);
88                if ($get_acl)
89                        {
90                        $return=true;
91                        }
92                        else
93                        {
94                        $return=false;
95                        }
96                return $return;
97        }
98
99        function change_user_quota($uid, $quota)
100        {
101                $set_quota = imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($quota*1024));
102                return true;
103        }
104
105        function delete_user($uid)
106        {
107                $result['status'] = true;
108
109                //Seta acl imap para poder deletar o user.
110                // Esta sem tratamento de erro, pois o retorno da função deve ter um bug.
111                imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, 'c');
112
113                if (!imap_deletemailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid))
114                {
115                        $result['status'] = false;
116                        $result['msg'] = "Erro na função imap_function->delete_user.\nRetorno do servidor: " . imap_last_error();
117                }
118
119                return $result;
120        }
121
122        function rename_mailbox($old_mailbox, $new_mailbox)
123        {
124                $result['status'] = true;
125                $result_rename = imap_renamemailbox($this->imap,
126                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $old_mailbox,
127                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $new_mailbox);
128
129                if (!$result_rename)
130                {
131                        $result['status'] = false;
132                        $result['msg'] = "Erro na função imap_function->rename_mailbox.\nRetorno do servidor: " . imap_last_error();
133                }
134                return $result;
135        }
136
137        function empty_inbox($params)
138        {
139                // Verifica o acesso do gerente
140                if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'empty_user_inbox'))
141                {
142                        $result['status'] = false;
143                        $result['msg'] = 'Você não tem acesso para executar esta operação.';
144                        return $result;
145                }
146
147                if ($_SESSION['phpgw_info']['expressomail']['email_server']['imapTLSEncryption'] == 'yes')
148                {
149                        $imap_options = '/tls/novalidate-cert';
150                }
151                else
152                {
153                        $imap_options = '/notls/novalidate-cert';
154                }
155
156
157                $result['status'] = true;
158                $uid = $params['uid'];
159
160                $return_setacl = imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, 'lrswipcda');
161
162                if ($return_setacl)
163                {
164                        //$mbox_stream = imap_open('{'.$this->imap_server.':'.$this->imap_port.$imap_options.'/user="'.$uid.'"}', $this->imap_admin, $this->imap_passwd);
165                        $mbox_stream = imap_open('{'.$this->imap_server.':'.$this->imap_port.$imap_options .'}user'. $this->imapDelimiter . $uid, $this->imap_admin, $this->imap_passwd);
166
167                        $check = imap_mailboxmsginfo($mbox_stream);
168                        $inbox_size = (string)(round ((($check->Size)/(1024*1024)), 2));
169
170                        $return_imap_delete = imap_delete($mbox_stream,'1:*');
171                        imap_close($mbox_stream, CL_EXPUNGE);
172
173                        imap_setacl ($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, '');
174
175                        if ($return_imap_delete)
176                        {
177                                $result['inbox_size'] = $inbox_size;
178
179                                $get_user_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid);
180                                $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2));
181                        }
182                        else
183                        {
184                                $result['status'] = false;
185                                $result['msg'] = "Não foi possível esvaziar a caixa postal do usuário:\n" . imap_last_error();
186                        }
187                }
188                else
189                {
190                        $result['status'] = false;
191                        $result['msg'] = "Não foi possível modificar a acl do usuário:\n" . imap_last_error();
192                }
193                return $result;
194        }
195}
Note: See TracBrowser for help on using the repository browser.