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

Revision 4040, 44.4 KB checked in by thiagoaos, 13 years ago (diff)

Ticket #1755 - Corrigido o layout da confirmação ao apagar mensagem no mobile.

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