source: contrib/listAdmin/inc/class.imap_functions.inc.php @ 3312

Revision 3312, 3.9 KB checked in by rafaelraymundo, 14 years ago (diff)

Ticket #1174 - Disponibilização do módulo de Listas(Mailman)

Line 
1<?php
2
3class imap_functions
4{
5        var $imap;
6        var $imapDelimiter;
7        var $imap_admin;
8        var $imap_passwd;
9        var $imap_server;
10        var $imap_port;
11       
12        function imap_functions(){
13                $this->imap_admin       = $_SESSION['phpgw_info']['expresso']['email_server']['imapAdminUsername'];
14                $this->imap_passwd      = $_SESSION['phpgw_info']['expresso']['email_server']['imapAdminPW'];
15                $this->imap_server      = $_SESSION['phpgw_info']['expresso']['email_server']['imapServer'];
16                $this->imap_port        = $_SESSION['phpgw_info']['expresso']['email_server']['imapPort'];
17                $this->imapDelimiter= $_SESSION['phpgw_info']['expresso']['email_server']['imapDelimiter'];
18                $this->imap             = imap_open('{'.$this->imap_server.':'.$this->imap_port.'/novalidate-cert}', $this->imap_admin, $this->imap_passwd, OP_HALFOPEN);
19        }
20       
21        function create($uid, $mailquota)
22        {
23                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid))
24                {
25                        $error = imap_errors();
26                        $result['status'] = false;
27                        $result['msg'] = 'Erro na funcao imap_function->create(INBOX): ' . $error[0];
28                        $result['error'] = $error[0];
29                        return $result;
30                }
31                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . "Sent"))
32                {
33                        $error = imap_errors();
34                        $result['status'] = false;
35                        $result['msg'] = 'Erro na funcao imap_function->create(Enviados): ' . $error[0];
36                        return $result;
37                }
38                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . "Drafts"))
39                {
40                        $error = imap_errors();
41                        $result['status'] = false;
42                        $result['msg'] = 'Erro na funcao imap_function->create(Rascunho): ' . $error[0];
43                        return $result;
44                }
45                if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . "Trash"))
46                {
47                        $error = imap_errors();
48                        $result['status'] = false;
49                        $result['msg'] = 'Erro na funcao imap_function->create(Lixeira): ' . $error[0];
50                        return $result;
51                }
52                if (!imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($mailquota*1024)))
53                {
54                        $error = imap_errors();
55                        $result['status'] = false;
56                        $result['msg'] = 'Erro na funcao imap_function->create(set_quota): ' . $error[0];
57                        return $result;
58                }
59               
60                $result['status'] = true;
61                return $result;
62        }
63       
64        function get_user_info($uid)
65        {
66                $get_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid);
67               
68                if (count($get_quota) == 0)
69                {
70                        $quota['mailquota'] = '-1';
71                        $quota['mailquota_used'] = '-1';
72                }       
73                else
74                {
75                        $quota['mailquota'] = ($get_quota['limit'] / 1024);
76                        $quota['mailquota_used'] = ($get_quota['usage'] / 1024);
77                }
78                       
79                return $quota;
80        }
81       
82        function change_user_quota($uid, $quota)
83        {
84                $set_quota = imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($quota*1024));
85                return true;
86        }
87       
88        function delete_user($uid)
89        {
90                $result['status'] = true;
91               
92                //Seta acl imap para poder deletar o user.
93                // Esta sem tratamento de erro, pois o retorno da funcao deve ter um bug.
94                imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid, $this->imap_admin, 'c');
95               
96                if (!imap_deletemailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid))
97                {
98                        $result['status'] = false;
99                        $result['msg'] = "Erro na funcao imap_function->delete_user.\nRetorno do servidor: " . imap_last_error();
100                }
101               
102                return $result;
103        }
104       
105        function rename_mailbox($old_mailbox, $new_mailbox)
106        {
107                $result['status'] = true;               
108                $result_rename = imap_renamemailbox($this->imap,
109                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $old_mailbox,
110                                                '{'.$this->imap_server.':'.$this->imap_port.'}user' . $this->imapDelimiter . $new_mailbox);
111               
112                if (!$result_rename)
113                {
114                        $result['status'] = false;
115                        $result['msg'] = "Erro na funcao imap_function->rename_mailbox.\nRetorno do servidor: " . imap_last_error();
116                }
117                return $result;
118        }
119}
Note: See TracBrowser for help on using the repository browser.