source: trunk/mobile/inc/class.ui_mobilemail.inc.php @ 1709

Revision 1709, 35.9 KB checked in by eduardoalex, 14 years ago (diff)

Ticket #787 - Adicionada funcao mobile_search em imapfunctions para busca de emails no mobile

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