source: branches/2.3/ac/inc/class.ui_mobilemail.inc.php @ 5107

Revision 5107, 37.9 KB checked in by rafaelraymundo, 13 years ago (diff)

Ticket #2286 - Adicionado modulo acessivel ao Expresso.

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