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

Revision 623, 28.9 KB checked in by niltonneto, 15 years ago (diff)

Resolve #399.

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