source: branches/2.2/mobile/inc/class.ui_mobilemail.inc.php @ 3248

Revision 3248, 37.0 KB checked in by rafaelraymundo, 14 years ago (diff)

Ticket #1277 - Expresso Mobile não deleta mensagens

  • Property svn:executable set to *
Line 
1<?php
2        /**************************************************************************\
3        * eGroupWare                                                               *
4        * http://www.egroupware.org                                                *
5        * The file written by Mário César Kolling <mario.kolling@serpro.gov.br>    *
6        * --------------------------------------------                             *
7        *  This program is free software; you can redistribute it and/or modify it *
8        *  under the terms of the GNU General Public License as published by the   *
9        *  Free Software Foundation; either version 2 of the License, or (at your  *
10        *  option) any later version.                                              *
11        \**************************************************************************/
12
13        //TODO: Criar a Classe Widget.
14
15        include_once(PHPGW_INCLUDE_ROOT.'/expressoMail1_2/inc/class.imap_functions.inc.php');
16
17        // Classe principal do Mini Mail
18        class ui_mobilemail{
19
20                // Define as funções públicas
21                var $public_functions = array(
22                        'mail_list'     => True,
23                        'change_folder' => True,
24                        'change_page'   => True,
25                        'show_msg'      => True,
26                        'send_mail'     => True,
27                        //'reply_msg'   => True,
28                        'new_msg'       => True,
29                        'delete_msg'    => True,
30                        'confirm_delete_msg'    => True,
31                        'init_schedule' => true,
32                        'redirect' => true,
33                        'add_recipients' => true,
34                        'add_recipient' => true,
35                        'list_folders' => true
36                );
37
38                var $folders; // Pastas imap
39                var $current_folder; // Pasta corrente
40                var $current_page; // Página corrente da lista de e-mails da pasta corrente
41                var $imap_functions; // Variável que recebe um objeto do tipo class.imap_functions.inc.php
42                var $allowed_tags = '<p><a><br><em><strong><ol><li><ul><div><font>'; // Tags html que não serão removidas
43                        // ao mostrar corpo do e-mail
44
45
46                /*
47                 * @function mobilemail
48                 * @abstract Método construtor da classe principal do Mini Mail
49                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
50                 */
51                function ui_mobilemail()
52                {
53
54                        $this-> load_session();                                         
55
56                        // Recupera atributos da classe gravados na sessão
57                        $folders = $GLOBALS['phpgw']->session->appsession('mobilemail.folders','mobile');
58                        $current_folder = $GLOBALS['phpgw']->session->appsession('mobilemail.current_folder','mobile');
59                        $current_page = $GLOBALS['phpgw']->session->appsession('mobilemail.current_page','mobile');
60
61                        // Inicializa a classe class.imap_functions.inc.php
62                        $this->imap_functions = new imap_functions();
63
64                        // Testa a existência dos atributos da classe recuperadas da sessão, e as carrega ou inicializa.
65                        if ($folders)
66                        {
67                                $this->folders = $folders;
68                        }
69                        else
70                        {
71                                $this->folders = $this->imap_functions->get_folders_list(array('noSharedFolders' => true));
72                        }
73
74                        if ($current_folder)
75                        {
76                                $this->current_folder = $current_folder;
77                        }
78                        else
79                        {
80                                $this->current_folder = 0; // Define o folder INBOX como o folder corrente
81                        }
82
83                        if ($current_page)
84                        {
85                                $this->current_page = $current_page;
86                        }
87                        else
88                        {
89                                $this->current_page = 1; // Define a primeira página como página padrão
90                        }
91
92                }
93
94                /*
95                 * @function save_session
96                 * @abstract Salva os atributos da classe na sessão
97                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
98                 */
99                function save_session()
100                {
101
102                        $GLOBALS['phpgw']->session->appsession('mobilemail.folders','mobile',$this->folders);
103                        $GLOBALS['phpgw']->session->appsession('mobilemail.current_folder','mobile',$this->current_folder);
104                        $GLOBALS['phpgw']->session->appsession('mobilemail.current_page','mobile',$this->current_page);
105
106                }
107
108                /*
109                 * @function change_page
110                 * @abstract Troca a página de exibição da lista de e-mails, e mostra a nova página
111                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
112                 */
113                function change_page()
114                {
115                        if (isset($_GET['page']))
116                        {
117                                $this->current_page = $_GET['page'];
118                        }
119                        $this->mail_list();
120                        $this->save_session();
121                }
122
123                /*
124                 * @function change_folder
125                 * @abstract Troca a pasta do imap, e mostra a primeira página da nova pasta
126                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
127                 */
128                function change_folder()
129                {
130                        $folder = $_GET['folder'];
131                        if (isset($folder))
132                        {
133                                $this->current_folder = $folder;
134                                $this->current_page = 1;
135                        }
136                        $this->mail_list();
137                        $this->save_session();
138                }
139
140                /*
141                 * @function show_msg
142                 * @abstract Mostra a mensagem de e-mail requisitada
143                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
144                 */
145                 // TODO: retirar msg_folder dos parâmentros necessários no GET e usar $this->current_folder
146                function show_msg()
147                {
148                        $params = array();
149
150                        //TODO: testar chamar sem parâmetros para determinar se ocorre algum problema
151                        if (isset($_GET['msg_number']) && isset($_GET['msg_folder']))
152                        {
153                                $params = array(
154                                        'msg_number' => $_GET['msg_number'],
155                                        'msg_folder' => $_GET['msg_folder'],
156                                );
157                        }
158
159                        $msg = $this->imap_functions->get_info_msg($params);
160
161                        // Carrega o template
162                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
163                        $p->set_file(
164                                Array(
165                                        'view_msg_t' => 'view_msg.tpl'
166                                )
167                        );
168                        $p->set_block('view_msg_t', 'mail_header');
169                        $p->set_block('view_msg_t', 'mail_body');
170                        $p->set_block('view_msg_t', 'mail_footer');
171                        $p->set_block('view_msg_t', 'reply_msg');
172                        $p->set_block('view_msg_t', 'attachment_list');
173                        $p->set_block('view_msg_t', 'begin_anchor');
174                        $p->set_block('view_msg_t', 'end_anchor');
175
176                        // Define o cabeçalho do e-mail
177                        $p->set_var('from_label', lang("From"));
178                        $p->set_var('from', $msg['from']['full']);
179                        $p->set_var('to_label', lang("To"));
180
181                        $p->set_var('subject_label', lang("Subject"));
182                        $p->set_var('subject', $msg['subject']);
183                        $p->set_var('date_label', lang("Date"));
184                        $p->set_var('date', $msg['fulldate']);
185
186
187                        // Mostra o corpo do e-mail
188                        $p->set_var('body', strip_tags($msg['body'], $this->allowed_tags)); // Usa a função strip_tags() para filtrar
189                                // as tags que estão presentes no corpo do e-mail.
190                        $p->set_var('link_text', lang("Return"));
191                        $p->set_var('link', "index.php?menuaction=mobile.ui_mobilemail.mail_list");
192
193
194                        $p->set_var('reply_all_text', lang("Reply to all"));
195                        $p->set_var('forward_text', lang("Forward"));
196
197                        $p->set_var('reply_text', lang("Reply"));
198                        $p->set_var('Delete', lang("Delete"));
199                        $msg_number = $_GET['msg_number'];
200                        $msg_folder = $_GET['msg_folder'];
201                        $p->set_var('reply', "index.php?menuaction=mobile.ui_mobilemail.new_msg&msg_number=$msg_number&msg_folder=$msg_folder");
202                        $p->set_var('delete', "index.php?menuaction=mobile.ui_mobilemail.confirm_delete_msg&msg_number=$msg_number&msg_folder=$msg_folder");
203                        $p->set_var('reply_all', "index.php?menuaction=mobile.ui_mobilemail.new_msg&msg_number=$msg_number&msg_folder=$msg_folder&reply_all=true");
204                        $p->set_var('forward', "index.php?menuaction=mobile.ui_mobilemail.new_msg&msg_number=$msg_number&msg_folder=$msg_folder&forward=true");
205                        if (!empty($msg['attachments']) && !empty($msg['attachments']['names']))
206                        {
207                                $attachs = "<br>".lang("This message has the follow attachments:")."<br>";
208                                foreach($msg['attachments'] as $key => $attach) {
209                                        if(is_array($attach)) {
210                                                $attachs.=$attach['name']."&nbsp;&nbsp;&nbsp;&nbsp;";
211                                                if($GLOBALS['phpgw_info']['user']['preferences']['mobile']['download_attach']==1)
212                                                        $attachs.="<a href='../expressoMail1_2/inc/gotodownload.php?msg_folder=".
213                                                                        $msg_folder."&msg_number=".$msg_number."&idx_file=".$key.
214                                                                        "&msg_part=".$attach['pid']."&encoding=".$attach['encoding']."'>".
215                                                                        lang('Download')."</a><br>";
216                                                else
217                                                        $attachs.="<br>";
218                                        }
219                                        $p->set_var('attachment_message', $attachs);
220                                }
221                                //$p->set_var('attachment_message', lang('This message have attachment(s)'));
222                        }
223                        else
224                        {
225                                $p->set_var('attachment_message', lang('This message don\'t have attachment(s)'));
226                        }
227
228                        $p->parse('view_msg_t', 'end_anchor');
229                        $p->parse('view_msg_t', 'begin_anchor');
230                        //$p->pfp('view_msg_t', 'mail_header');
231                        /*$p->pfp('out', 'mail_header');
232                        //$p->pfp('view_msg_t', 'mail_body');
233                        $p->pfp('out', 'mail_body');
234                        //$p->pfp('view_msg_t', 'attachment_list');
235                        $p->pfp('out', 'attachment_list');
236                        //$p->pfp('view_msg_t', 'mail_footer');
237                        $p->pfp('out', 'reply_msg');
238                        //$p->pfp('out', 'mail_footer');*/
239
240                        //$p->pfp('view_msg_t', 'mail_header');
241                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'mail_header'));
242                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'mail_body'));
243                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'attachment_list'));
244                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'reply_msg'));
245                }
246
247                /*
248                 * @function index
249                 * @abstract Página inicial da aplicação mobilemail, mantém o estado atual. Ou seja, mostra lista de e-mails
250                 * do folder e página definidos pelos parâmetros current_folder e current_page.
251                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
252                 */
253                 // TODO: Talvez seja melhor voltar sempre para o Inbox e primeira página
254                function index()
255                {
256                        $this->print_folder_selection();
257                        $this->mail_list();
258                        $this->save_session();
259
260                }
261               
262                function load_session(){
263                        /************************************\
264                         * Inicialização do expressoMail1_2 *
265                        \************************************/
266                        // Get Data from ldap_manager and emailadmin.
267                        $ldap_manager = CreateObject('contactcenter.bo_ldap_manager');
268                        $boemailadmin   = CreateObject('emailadmin.bo');
269                        $emailadmin_profile = $boemailadmin->getProfileList();
270                        $_SESSION['phpgw_info']['expressomail']['email_server'] = $boemailadmin->getProfile($emailadmin_profile[0]['profileID']);
271                        $_SESSION['phpgw_info']['expressomail']['user'] = $GLOBALS['phpgw_info']['user'];
272                        $_SESSION['phpgw_info']['expressomail']['server'] = $GLOBALS['phpgw_info']['server'];
273                        $_SESSION['phpgw_info']['expressomail']['ldap_server'] = $ldap_manager ? $ldap_manager->srcs[1] : null;
274                        $_SESSION['phpgw_info']['expressomail']['user']['email'] = $GLOBALS['phpgw']->preferences->values['email'];
275               
276                        // Fix problem with cyrus delimiter changes in preferences.
277                        // Dots in names: enabled/disabled.
278                        $save_in_folder = @eregi_replace("INBOX/", "INBOX".$_SESSION['phpgw_info']['expressomail']['email_server']['imapDelimiter'], $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['save_in_folder']);
279                        $save_in_folder = @eregi_replace("INBOX.", "INBOX".$_SESSION['phpgw_info']['expressomail']['email_server']['imapDelimiter'], $save_in_folder);
280                        $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['save_in_folder'] = $save_in_folder;
281                        // End Fix.
282               
283                    // Loading Admin Config Module
284                    $c = CreateObject('phpgwapi.config','expressoMail1_2');
285                    $c->read_repository();
286                    $current_config = $c->config_data;
287                    $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_enable_log_messages'] = $current_config['expressoMail_enable_log_messages'];
288                    // Begin Set Anti-Spam options.
289                    $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_command_for_ham'] = $current_config['expressoMail_command_for_ham'];
290                    $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_command_for_spam'] = $current_config['expressoMail_command_for_spam'];
291                    $_SESSION['phpgw_info']['server']['expressomail']['expressoMail_use_spam_filter'] = $current_config['expressoMail_use_spam_filter'];
292
293                        echo '<script> var array_lang = new Array();var use_spam_filter = \''.$current_config['expressoMail_use_spam_filter'].'\' </script>';
294
295                        // End Set Anti-Spam options.
296               
297                    // Set Imap Folder names options
298                    $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']   = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']     ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']             : "Trash";
299                    $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder']  = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder'] ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder']       : "Drafts";
300                    $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder']    = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder']      ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder']              : "Spam";
301                    $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']    = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']      ? $_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']              : "Sent";
302
303                        include("../expressoMail1_2/inc/load_lang.php");                   
304       
305                }
306
307                /*
308                 * @function print_folder_selection
309                 * @abstract Imprime o folder corrente (INBOX)
310                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
311                 */
312                function print_folder_selection()
313                {
314                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
315                        $p->set_file(
316                                Array(
317                                        'mobilemail_t' => 'mobilemail.tpl'
318                                )
319                        );
320                        $p->set_block('mobilemail_t', 'inbox_folder_list');
321                        $p->set_var('lang_folder', lang('Folder'));
322                        $folder = str_replace("*","",lang($this->folders[$this->current_folder]['folder_name']));
323                        if(!$this->current_folder == 0){
324                                $p->set_var('lang_inbox', $folder.' :: <a title="'.lang('Inbox').'" href="index.php?menuaction=mobile.ui_mobilemail.mail_list&folder=0">'.lang('Inbox').'</a>');
325                        }else{
326                                $p->set_var('lang_inbox', lang('Inbox'));
327                        }
328                       
329                        //$p->set_var('folder_items', $folder_items);
330                        $p->parse('mobilemail_t', 'inbox_folder_list');                 
331                        //$p->fpf('out', 'mobilemail_t');
332                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'mobilemail_t'));
333
334                }
335
336                /*
337                 * @function old_print_folder_selection
338                 * @abstract Imprime na tela a caixa de seleção de folders
339                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
340                 */
341                function old_print_folder_selection()
342                {
343
344                        // Processa as options
345                        $folder_items = '';
346
347                        foreach ($this->folders as $i => $j)
348                        {
349
350                                $option_selected = '';
351                                $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
352                                $p->set_file(
353                                        Array(
354                                                'mobilemail_t' => 'mobilemail.tpl'
355                                        )
356                                );
357                                $p->set_block('mobilemail_t', 'folder_item');
358
359                                if (is_numeric($i))
360                                {
361                                        if ($i == $this->current_folder)
362                                        {
363                                                 $option_selected = 'selected="selected"';
364                                        }
365
366                                        $p->set_var('option_selected', $option_selected);
367                                        $p->set_var('folder_id', $j['folder_id']);
368                                        $p->set_var('folder_name', $j['folder_id']); // Mudar... provavelmente usar preg_replace
369                                                                                                                                 // para substituir cpf pelo nome do usuário.
370
371                                        if ($j['folder_unseen'] > 0)
372                                        {
373                                                $p->set_var('folder_unseen', ' - ('.$j['folder_unseen'].')');
374                                        }
375
376                                        $folder_items .= $p->fp('mobile_t', 'folder_item');
377                                }
378
379                        }
380
381                        // Processa o select
382                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
383                        $p->set_file(
384                                Array(
385                                        'mobilemail_t' => 'mobilemail.tpl'
386                                )
387                        );
388                        $p->set_block('mobilemail_t', 'folder_list');
389                        $p->set_var('folder_items', $folder_items);
390                        $p->parse('mobilemail_t', 'folder_list');                       
391                        //$p->pfp('out', 'mobilemail_t');
392                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'mobilemail_t'));
393
394                }
395
396                /*
397                 * @function mail_list
398                 * @abstract Imprime a lista de e-mails
399                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
400                 */
401                function mail_list()
402                {       
403               
404                        if($_GET['folder']){
405                                $this->current_folder = $_GET['folder'];
406                        }else{
407                                $this->current_folder = 0;
408                        }
409                        $this->print_folder_selection();
410                        $this->messages_per_page =
411                                        isset($GLOBALS['phpgw_info']['user']['preferences']['mobile']['max_message_per_page'])?
412                                        $GLOBALS['phpgw_info']['user']['preferences']['mobile']['max_message_per_page']:10;
413//              var $pages;
414//              var $actual_page;
415//              var $number_of_messages;
416
417                        if (!isset($this->number_of_messages))
418                        {
419                                $params = array(
420                                        'folder' => $this->folders[$this->current_folder]['folder_id'],
421                                );
422                                $this->number_of_messages = $this->imap_functions->get_num_msgs($params);
423                        }
424
425                        // Recalcular as páginas
426                        $this->pages = ceil($this->number_of_messages/$this->messages_per_page);
427                        $page = $this->current_page;
428                       
429                        if($_POST["searchEmail"]){
430                                $params = array(
431                                        'filter'                        => $_POST["searchEmail"]
432                                        );
433
434                                $messages = $this->imap_functions->mobile_search($params);
435                        }else{
436                                $params = array(
437                                        'folder'                        => $this->folders[$this->current_folder]['folder_id'],
438                                        'msg_range_begin'       => $this->current_page * $this->messages_per_page - ($this->messages_per_page - 1),
439                                        'msg_range_end'         => $this->current_page * $this->messages_per_page,
440                                        'sort_box_type'         => 'SORTARRIVAL',
441                                        'sort_box_reverse'      => 1
442                                );
443
444                                $messages = $this->imap_functions->get_range_msgs2($params);
445                        }
446                        $this->print_mails_list($messages);
447                        $this->print_page_navigation($this->pages, $this->current_page);
448
449                }
450
451                /*
452                 * @function print_mails_list
453                 * @abstract Imprime a lista de mensagens
454                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
455                 * @param array Um array com a lista de mensagens recuperado por $this->imap_functions->get_range_msgs2($params)
456                 */
457                function print_mails_list($messages)
458                {
459
460                        // Cria a lista de e-mails
461                        $mail_rows = '';
462                        if ($this->number_of_messages != 0)
463                        {
464                                foreach ($messages as $index => $msg)
465                                {
466                                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
467                                        $p->set_file(
468                                                Array(
469                                                        'mobilemail_t' => 'mobilemail.tpl'
470                                                )
471                                        );
472                                        $p->set_block('mobilemail_t', 'mail_row');
473                                        $p->set_block('mobilemail_t', 'end_strong');
474                                        $p->set_block('mobilemail_t', 'begin_strong');
475                                        $p->set_var('unseen_bkg', "#FFFFFF");
476
477                                        if (is_numeric($index))
478                                        {
479                                                !empty($msg['from']['name']) ? $from = $msg['from']['name'] : $from = $msg['from']['email'];
480                                                !empty($msg['subject']) ? $subject = $msg['subject'] : $subject = lang('[empty subject]');
481                                                if ($msg['Unseen'] == 'U'){ //Setando as mensagens nao lidas
482                                                        $p->set_var('strong_unseen_begin', trim($p->fp('mobilemail_t', 'begin_strong')));
483                                                        $p->set_var('strong_unseen_end', trim($p->fp('mobilemail_t', 'end_strong')));
484                                                        $p->set_var('unseen_bkg', "#E0ECFF");
485                                                        //$p->set_var('unseen_bkg', "#E8EEF7");
486                                        }
487                                                $p->set_var('from', $from);
488                                                $p->set_var('subject', $subject);
489                                                $p->set_var('msg_number', $msg['msg_number']);
490                                                $p->set_var('date', $msg['udate']);
491                                                $p->set_var('msg_folder', $this->folders[$this->current_folder]['folder_id']);
492                                                $p->set_var('from_label', lang('From'));
493                                                $mail_rows .= $p->fp('mobilemail_t', 'mail_row');
494                                        }
495                                }
496
497                                // Imprime a lista de e-mails
498                                $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
499                                $p->set_file(
500                                        Array(
501                                                'mobilemail_t' => 'mobilemail.tpl'
502                                        )
503                                );
504                                $p->set_block('mobilemail_t', 'mail_list');
505                                $p->set_var('mail_rows', $mail_rows);
506
507                                //$p->pfp('out', 'mail_list');
508                                $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'mail_list'));
509                        }
510                        else
511                        {
512                                // Lista de e-mails vazia
513                                $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
514                                $p->set_file(
515                                        Array(
516                                                'mobilemail_t' => 'mobilemail.tpl'
517                                        )
518                                );
519                                $p->set_block('mobilemail_t', 'empty_list');
520                                $p->set_var('empty_message', lang('Empty folder'));                             
521                                //$p->pfp('out', 'empty_list');
522                                $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'empty_list'));
523                        }
524                }
525
526                /*
527                 * @funtion print_page_navigation
528                 * @abstract Imprime a barra de navegação da lista de e-mails da pasta corrente. Quem chama essa função é quem faz o controle do modelo.
529                 * @author Mário César Kolling <mario.kolling@serpro.gov.br>
530                 * @param integer Número de páginas que serão geradas
531                 * @param integer Página corrente
532                 */
533                // TODO: mover este método para a classe page_navigation subclasse de widget
534                function print_page_navigation($number_of_pages, $page = 1)
535                {
536
537                        $pages = '';
538
539                        if ($number_of_pages != 0)
540                        {
541                                // Geração das páginas
542                                for ($i = 1; $i <= $number_of_pages ; $i++)
543                                {
544
545                                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
546                                        $p->set_file(
547                                                Array(
548                                                        'mobilemail_t' => 'mobilemail.tpl'
549                                                )
550                                        );
551
552                                        $p->set_block('mobilemail_t', 'space');
553                                        $p->set_block('mobilemail_t', 'begin_anchor');
554                                        $p->set_block('mobilemail_t', 'end_anchor');
555                                        $p->set_block('mobilemail_t', 'page_item');
556                                        $p->set_block('mobilemail_t', 'begin_strong');
557                                        $p->set_block('mobilemail_t', 'end_strong');
558
559                                        if ($i == $page)
560                                        {
561                                                // Se for a página sendo gerada for a página corrente,
562                                                // não gera a âncora e destaca o número (negrito)
563                                                $p->set_var('end_anchor', '');
564                                                $p->set_var('begin_anchor', '');
565                                                $p->set_var('begin_strong', trim($p->fp('mobilemail_t', 'begin_strong')));
566                                                $p->set_var('end_strong', trim($p->fp('mobilemail_t', 'end_strong')));
567                                        }
568                                        else
569                                        {
570                                                // Senão, gera a âncora
571                                                $p->set_var('begin_strong', '');
572                                                $p->set_var('end_strong', '');
573                                                $p->set_var('end_anchor', trim($p->fp('mobilemail_t', 'end_anchor')));
574                                                $p->set_var('begin_anchor_href', "index.php?menuaction=mobile.ui_mobilemail.change_page&page=$i");
575                                                $p->set_var('begin_anchor', trim($p->fp('mobilemail_t', 'begin_anchor')));
576                                        }
577
578                                        $p->set_var('page', $i);
579                                        //$pages .= trim($p->fp('mobilemail_t', 'page_item'));
580
581                                }
582                                $pages .= " ".$page." ".lang("of")." ".$number_of_pages." ";
583
584                                // Geração dos links "anterior" e "próximo"
585                                $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
586                                $p->set_file(
587                                        Array(
588                                                'mobilemail_t' => 'mobilemail.tpl'
589                                        )
590                                );
591
592                                //$p->set_block('mobilemail_t', 'space');
593                                $p->set_block('mobilemail_t', 'mail_footer');
594                                $p->set_block('mobilemail_t', 'previous');
595                                $p->set_block('mobilemail_t', 'next');
596
597                                $next_page = $page + 1;
598                                $previous_page = $page - 1;
599
600                                if ($page == 1)
601                                {
602                                        // Se for a primeira página, não imprime o link "anterior""
603                                        $p->set_var('previous', '');
604                                        if ($page == $number_of_pages)
605                                        {
606                                                // Se só existir uma página, não imprime o link "próximo"
607                                                $p->set_var('next', '');
608                                        }
609                                        else
610                                        {
611                                                $p->set_var('next_href', "index.php?menuaction=mobile.ui_mobilemail.change_page&page=$next_page");
612                                                $p->set_var('next', trim($p->fp('mobilemail_t', 'next')));
613                                        }
614
615                                }
616                                else if ($page == $number_of_pages)
617                                {
618                                        // Se for a última página, não imprime o link "próximo"
619                                        $p->set_var('next', '');
620                                        $p->set_var('previous_href', "index.php?menuaction=mobile.ui_mobilemail.change_page&page=$previous_page");
621                                        $p->set_var('previous', trim($p->fp('mobilemail_t', 'previous')));
622                                }
623                                else
624                                {
625                                        // Senão, imprime os links "anterior" e "próximo"
626                                        $p->set_var('previous_href', "index.php?menuaction=mobile.ui_mobilemail.change_page&page=$previous_page");
627                                        $p->set_var('previous', trim($p->fp('mobilemail_t', 'previous')));
628
629                                        $p->set_var('next_href', "index.php?menuaction=mobile.ui_mobilemail.change_page&page=$next_page");
630                                        $p->set_var('next', trim($p->fp('mobilemail_t', 'next')));
631                                }
632
633                                $p->set_var('pages', $pages);
634                                //$p->pfp('out', 'mail_footer');
635                                $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'mail_footer'));
636                        }
637
638                }
639
640                /*
641                 * @function new_msg()
642                 * @abstract Gera o formulário para criar novo e-mail.
643                 * @author Rommel de Brito Cysne <rommel.cysne@serpro.gov.br>
644                 
645                function new_msg()
646                {
647                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
648                        $p->set_file(
649                                Array(
650                                        'new_msg_t' => 'new_msg.tpl'
651                                )
652                        );
653
654                        $p->set_block('new_msg_t', 'msg_header');
655                        $p->set_block('new_msg_t', 'text');
656                        $p->set_block('new_msg_t', 'begin_form');
657                        $p->set_block('new_msg_t', 'end_form');
658                        $p->set_block('new_msg_t', 'hidden_area');
659
660                        $p->set_var('to_label', lang("To"));
661                        $p->set_var('to', "");
662                        $p->set_var('to_mail', "");
663
664                        $p->set_var('subject_label', lang("Subject"));
665                        $p->set_var('subject', "");
666
667                        $p->set_var('msg_number', $_GET['msg_number']);
668                        $p->set_var('msg_folder', $_GET['msg_folder']);
669
670                        $p->set_var('send_label', lang("Send"));
671
672                        $p->set_var('form_action', "index.php?menuaction=mobile.ui_mobilemail.send_mail");
673
674                        $p->pfp('out', 'begin_form');
675                        $p->pfp('out', 'msg_header');
676                        $p->pfp('out', 'text');
677                        $p->pfp('out', 'hidden_area');
678                        $p->pfp('out', 'end_form');
679
680               
681                }
682*/
683                /*
684                 * @function new_msg()
685                 * @abstract Gera o formulário para criar/enviar novo e-mail ou resposta de e-mail.
686                 * @author Rommel de Brito Cysne <rommel.cysne@serpro.gov.br>
687                 */
688               
689                function new_msg()
690                {
691                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
692                        $p->set_file(
693                                Array(
694                                        'new_msg_t' => 'new_msg.tpl'
695                                )
696                        );
697
698
699                        if (isset($_GET['msg_number']))
700                        {
701                                $params = array(
702                                        'msg_number' => $_GET['msg_number'],
703                                );
704
705                                $msg_number = $_GET['msg_number'];
706                        }
707               
708                        if($params)
709                                $msg = $this->imap_functions->get_info_msg($params);
710
711
712                        $p->set_block('new_msg_t', 'msg_header');
713                        $p->set_block('new_msg_t', 'text');
714                        $p->set_block('new_msg_t', 'begin_form');
715                        $p->set_block('new_msg_t', 'end_form');
716                        $p->set_block('new_msg_t', 'hidden_area');
717
718                        if($_GET['clk'])
719                        {
720                                $p->set_var('field_add_user', '<p>&nbsp;&nbsp;<input type="submit" name="action" value="'.lang("Add Recipient").'"></p>');
721                                $p->set_var('to_label', lang("To"));
722                                $p->set_var('to', "");
723                                $p->set_var('to_mail', "");
724                                $p->set_var('subject_label', lang("Subject"));
725                                $p->set_var('subject', "");
726
727                        }
728                        else if($_GET['cc_mob'])
729                        {
730
731                                $p->set_var('to_label', lang("To"));
732                                $p->set_var('to', $_GET['input_to']);
733                                $p->set_var('to_mail', $_GET['input_to_mail']);
734
735                                $p->set_var('subject_label', lang("Subject"));
736                                $p->set_var('subject', "");
737
738                                $p->set_var('msg_number', $_GET['msg_number']);
739                                $p->set_var('msg_folder', $_GET['msg_folder']);
740
741                                $p->set_var('read_only', 'readonly');
742                        }
743                        else if($_GET['reply_all']){
744                                $reply_to_all = $msg['from']['full'];
745                                $reply_to_all = $msg['toaddress2'] ? $reply_to_all.','.$msg['toaddress2']:$reply_to_all;
746                                $reply_to_all = $msg['cc'] ? $reply_to_all.','.$msg['cc']:$reply_to_all;
747                                $reply_to_all = $msg['bcc'] ? $reply_to_all.','.$msg['bcc']:$reply_to_all;
748                                $names = implode(',<br/>',explode(',',$reply_to_all));
749                               
750                                $array_emails = explode(',',$reply_to_all);
751                                $reply_to_all ='';
752                                foreach ($array_emails as $index => $email){
753                                        $flag = preg_match('/&lt;(.*?)&gt;/',$email,$reply);
754                                        $reply_to_all .= $flag == 0 ? $email.', ':$reply[1].', ';
755                                }
756                                                               
757                                $p->set_var('to_label', lang("To"));
758                                $p->set_var('to', $reply_to_all);
759
760                                $p->set_var('to_mail', $_GET['input_to_mail']);
761
762                                $p->set_var('subject_label', lang("Subject"));
763                                $p->set_var('subject', "Re:" . $msg['subject']);
764
765                                $p->set_var('msg_number', $_GET['msg_number']);
766                                $p->set_var('msg_folder', $_GET['msg_folder']);
767                        }
768                        else if($_GET['user_add']){
769                                $p->set_var('to_label', lang("To"));
770                               
771                                $listMail = implode(',',$_SESSION['mobile_mail']);
772                               
773                                $p->set_var('field_add_user', '<p>&nbsp;&nbsp;<input type="submit" name="action" value="'.lang("Add Recipient").'"></p>');
774                                $p->set_var('to', $listMail);
775                                $p->set_var('to_mail', $listMail);
776                                $p->set_var('subject_label', lang("Subject"));
777                                $p->set_var('subject', $_SESSION['subject_mail']);
778                                $p->set_var('body_value', $_SESSION['body_mail']);                             
779
780                                $p->set_var('msg_number', $_GET['msg_number']);
781                                $p->set_var('msg_folder', $_GET['msg_folder']);                 
782               
783                        }
784                        else if($_GET['forward']){
785                                $p->set_var('field_add_user', '<p>&nbsp;&nbsp;<input type="submit" name="action" value="'.lang("Add Recipient").'"></p>');
786                                $p->set_var('from_label', lang("From"));
787                                $p->set_var('from', $msg['toaddress2']);
788
789                                $p->set_var('to_label', lang("To"));
790                                $mail_to = $msg['from']['full'];
791
792                                $p->set_var('subject_label', lang("Subject"));
793                                $p->set_var('subject', "Enc:" . $msg['subject']);
794                                $p->set_var('body_value', strip_tags($msg['body'])); // Usa a função strip_tags() para filtrar
795                                // as tags que estão presentes no corpo do e-mail.
796                               
797                                $p->set_var('msg_number', $_GET['msg_number']);
798                                $p->set_var('msg_folder', $_GET['msg_folder']);                 
799               
800                        }
801                        else{
802                                $p->set_var('from_label', lang("From"));
803                                $p->set_var('from', $msg['toaddress2']);
804
805                                $p->set_var('to_label', lang("To"));
806                                $mail_to = $msg['from']['full'];
807                                $p->set_var('to', $msg['from']['name']);
808                                $p->set_var('to_mail', $msg['from']['email']);
809
810                                $p->set_var('subject_label', lang("Subject"));
811                                $p->set_var('subject', "Re:" . $msg['subject']);
812
813                                $p->set_var('msg_number', $_GET['msg_number']);
814                                $p->set_var('msg_folder', $_GET['msg_folder']);
815
816                                $p->set_var('read_only', "readonly");
817                        }
818                        $_SESSION['mobile_mail'] = Array();     
819                        $p->set_var('send_label', lang("Send"));
820                        $p->set_var('form_action', "index.php?menuaction=mobile.ui_mobilemail.redirect");
821
822                        /*$p->pfp('out', 'begin_form');
823                        $p->pfp('out', 'msg_header');
824                        $p->pfp('out', 'text');
825                        $p->pfp('out', 'hidden_area');
826                        $p->pfp('out', 'end_form');*/
827                       
828                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'begin_form'));
829                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'msg_header'));
830                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'text'));
831                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'hidden_area'));
832                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out', 'end_form'));
833                }
834
835                /*
836                 * @function send_mail()
837                 * @abstract Função que realiza o envio de e-mails.
838                 * @author Rommel de Brito Cysne <rommel.cysne@serpro.gov.br>
839                 */
840                function send_mail()
841                {
842                        //Chamada da classe phpmailer
843                        include_once(PHPGW_SERVER_ROOT."/expressoMail1_2/inc/class.phpmailer.php");
844
845                        //Recebe os dados do form (passados pelo POST)
846                        $userName = $_POST['input_to']; //"User Someone";
847                        $userMail = $_POST['input_to_mail']; //"user.someone@mail.com.br";
848                        $subject = $_POST['input_subject']; //"Mail Subject";
849                        $body = $_POST['body']; //"Mail body. Any text.";
850
851                        if($userMail == "")
852                        {
853                                $userMail = $userName;
854                        }
855
856                        //Cria objeto
857                        $mail = new PHPMailer();
858
859                        if(!$this->imap_functions->add_recipients("to", $userMail, &$mail))
860                        {
861                                $error_msg = lang("Some addresses in the To field were not recognized. Please make sure that all addresses are properly formed");
862                        }
863
864                        $mail->IsSMTP();
865                        $mail->Host = $_SESSION['phpgw_info']['expressomail']['email_server']['smtpServer'];
866                        $mail->Port = $_SESSION['phpgw_info']['expressomail']['email_server']['smtpPort'];
867
868                        $mail->SaveMessageInFolder = $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['save_in_folder'];
869                        //Envia os emails em formato HTML; se false -> desativa.
870                        $mail->IsHTML(true);
871                        //Email do remetente da mensagem
872                        $mail->Sender = $mail->From = $_SESSION['phpgw_info']['expressomail']['user']['email'];
873                        //Nome do remetente do email
874                        $mail->SenderName = $mail->FromName = $_SESSION['phpgw_info']['expressomail']['user']['fullname'];
875                        //Endereço de destino do email, ou seja, pra onde a mensagem vai
876                        //$mail->AddAddress("$userMail");
877                        //Assunto da mensagem
878                        $mail->Subject = $subject;
879                        //Corpo da mensagem
880                        $mail->Body .= "<br />$body<br />";
881
882                        //Cria um objeto template
883                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
884                        //Define o template para mensagens de retorno da funcao
885                        $p->set_file(
886                                Array(
887                                        'sent_msg_t' => 'sent_msg.tpl'
888                                )
889                        );
890
891                        $p->set_block('sent_msg_t','retorno');
892                        @header('Refresh: 1; url=./');
893
894                        //Se o e-mail nao for enviado por qualquer motivo...
895                        if(!$mail->Send())
896                        {
897                                //... é exibida a mensagem abaixo e o respectivo erro...
898                                $p->set_var('msg', lang("Message not sent"));
899                                $p->set_var('erro', lang("error") . $mail->ErrorInfo);
900
901                        //... caso contrário...
902                        }else {
903                                //... mostra mensagem de sucesso e link de retorno à lista de e-mail
904                                $p->set_var('msg', lang("Message sent successfully"));
905                                //$p->set_var('link_text', lang("Return"));
906                                //$p->set_var('link', "mobilemail_index.php");
907
908                        }
909
910                        //$p->pfp('out','retorno');
911                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out','retorno'));
912
913                }
914
915                function confirm_delete_msg()
916                {                                       
917                        //Cria um objeto template
918                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
919                        //Define o template para mensagens de retorno da funcao
920                        $p->set_file(
921                                Array(
922                                        'delete_msg_t' => 'delete_msg.tpl'
923                                )
924                        );
925                        $p->set_block('delete_msg_t','retorno');                       
926                        $p->set_var('lang_delete_msg', lang("Do you like to delete this message?"));                           
927                        $p->set_var('lang_yes', lang("Yes"));   
928                        $p->set_var('lang_no', lang("No"));
929                        $p->set_var('link_yes', 'index.php?menuaction=mobile.ui_mobilemail.delete_msg&msg_number='.$_GET['msg_number'].'&msg_folder='.$_GET['msg_folder']);
930                        $p->set_var('link_no', 'index.php?menuaction=mobile.ui_mobilemail.show_msg&amp;msg_number='.$_GET['msg_number'].'&amp;msg_folder='.$_GET['msg_folder']);       
931                       
932                        $p->pfp('out','retorno'); 
933                }
934
935                function delete_msg()
936                {
937                        if (isset($_GET['msg_number']))
938                        {
939                                $params = array(
940                                        'msgs_number' => $_GET['msg_number'],
941                                        'folder' => $_GET['msg_folder'],
942                                        'new_folder_name' => 'Trash',
943                                        'new_folder' => 'INBOX/Trash'
944                                );
945                        }       
946
947                        $this->imap_functions->move_messages($params);
948                        //Cria um objeto template
949                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
950                        //Define o template para mensagens de retorno da funcao
951                        $p->set_file(
952                                Array(
953                                        'move_msg_t' => 'sent_msg.tpl'
954                                )
955                        );
956                        $p->set_block('move_msg_t','retorno');
957                        //@header('Refresh: 1; url=./ui_mobilemail.index?folder='.$this->current_folder);                       
958                        $p->set_var('msg', lang("The message was moved to trash"));                             
959
960                        $p->pfp('out','retorno');                                 
961                   
962                }
963               
964                function get_folder_number($folder_name){
965                        foreach($this->folders as $folderNumber => $folder){
966                                if($folder['folder_id'] == $folder_name){
967                                        return $folderNumber;
968                                }
969                        }
970                        return 0;
971                }
972
973                function retorna()
974                {
975                       
976                }
977               
978                function init_schedule() {
979                       
980                        if($_POST['input_to'] != '' && !is_null($_POST['input_to']))
981                                array_push($_SESSION['mobile_mail'],$_POST['input_to']);                       
982                        $_SESSION['subject_mail'] = $_POST['input_subject'];
983                        $_SESSION['body_mail'] = $_POST['body'];
984                        $this->add_recipients();
985                }
986               
987               
988                function add_recipients() {
989           
990                        $ui_cc = CreateObject('mobile.ui_mobilecc');
991                        $ui_cc->contacts_list('mobilemail');
992                }
993               
994                function add_recipient() {
995                       
996                        $participants = $_SESSION["mobile_mail"];
997                       
998                        if(!is_array($participants))
999                                $participants = array();
1000                               
1001                        $participants[$_GET['cn']] = $_GET['mail'];
1002                       
1003                        $_SESSION["mobile_mail"] = $participants;
1004                        $this->add_recipients();
1005                }
1006               
1007                function redirect() {
1008                                if($_POST[action] == lang("Send")){
1009                                        $this->send_mail();
1010                                }else{
1011                                        $this->init_schedule();
1012                                }
1013                }
1014               
1015                function list_folders(){                       
1016                        $p = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
1017                        //Define o template para mensagens de retorno da funcao
1018                        $p->set_file(
1019                                Array(
1020                                        'folders_t' => 'folders.tpl'
1021                                )
1022                        );
1023                        $p->set_block('folders_t','retorno');
1024                       
1025                        $folders_list = '';
1026                        $array_folders = Array();
1027                        $this->folders = $this->imap_functions->get_folders_list(array('noSharedFolders' => true));             
1028                       
1029                        foreach($this->folders as $id => $folder)
1030                        {
1031                                if((strpos($folder['folder_id'],'user')===true && !is_array($folder)) || !is_numeric($id))
1032                                        continue;
1033                                        $array_folders[$folder['folder_id']]['id'] = $id;
1034                                        $array_folders[$folder['folder_id']]['folder_name'] = $folder['folder_name'];
1035                        }
1036                       
1037                        foreach($array_folders as $folder_id => $folder)
1038                        {
1039                                if(($folder_id != $_SESSION['phpgw_info']['user']['preferences']['expressoMail']['save_in_folder']) && ($folder['id'] != 0)){
1040                                        $folder_name = str_replace('*','',lang($folder['folder_name']));
1041                                        $folder_link = "index.php?menuaction=mobile.ui_mobilemail.mail_list&folder=".$folder['id'];
1042                                        $folders_list .= "<br>:: <a href=".$folder_link.">".$folder_name."</a>";
1043                                }
1044                        }
1045                        $p->set_var('folders_list', $folders_list);
1046                        $p->pfp('out','retorno');                                 
1047
1048                }
1049
1050        }
1051?>
Note: See TracBrowser for help on using the repository browser.