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

Revision 3609, 43.1 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #1408 - Adição de envio de anexos, normal e no forward

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