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

Revision 233, 6.9 KB checked in by wmerlotto, 16 years ago (diff)

Internacionalizacao do ExpressoAdmin

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