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

Revision 3466, 37.4 KB checked in by rafaelraymundo, 13 years ago (diff)

Ticket #1390 - ajustes de layout e folha de estilo do modulo.

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