source: branches/2.2/mobile/inc/class.ui_home.inc.php @ 3813

Revision 3813, 14.0 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #1587 - Remoção da duplicação das mensagens de erro e sucesso

RevLine 
[3556]1<?php
2    class ui_home {
[3571]3                var $imap_functions;
[3564]4                var $db;
5                var $bocalendar;
6                var $common;
7                var $template;
[3556]8       
[3564]9                var $public_functions = array(
10                        'index' => true,
[3727]11                        'search' => true,
12                        'change_template' => true
[3556]13                );
14               
15                function ui_home() {
[3564]16                        $this->template = CreateObject('phpgwapi.Template', PHPGW_SERVER_ROOT . '/mobile/templates/'.$GLOBALS['phpgw_info']['server']['template_set']);
17                        $this->common   = CreateObject('mobile.common_functions');
18                        $this->imap_functions   = CreateObject('expressoMail1_2.imap_functions');
19                        $this->db       = CreateObject('phpgwapi.db');
20                        $this->bocalendar = CreateObject('calendar.bocalendar');
[3556]21                }
22               
[3727]23                function change_template($params) {
24                        $GLOBALS['phpgw']->session->appsession('mobile.layout','mobile',$params['template']);
[3731]25                        header("location: index.php?menuaction=mobile.ui_mobilemail.change_folder&folder=0");
[3727]26                }
27               
[3571]28                function index($params) {
29                        $this->template->set_file(array('home_index' => 'home_index.tpl'));
[3641]30                        $this->template->set_file(array('home_search_bar' => 'search_bar.tpl'));
31                                       
[3564]32                        $this->template->set_block('home_index','page');       
33                        $this->template->set_block('home_index','folder_block');
[3641]34                        $this->template->set_block('home_index','commitment_block');   
35                        $this->template->set_block('home_search_bar','search_bar');
[3564]36                       
37                        //langs
38                        $this->template->set_var('lang_context_email', lang("context email"));
39                        $this->template->set_var('lang_context_contact', lang("context contact"));
40                        $this->template->set_var('lang_context_commitment', lang("context commitment"));
41                        $this->template->set_var('lang_search', lang("search"));
42                        $this->template->set_var('lang_my_mail', lang("my mail"));
43                        $this->template->set_var('lang_my_folders', lang("my folders"));
44                        $this->template->set_var('lang_my_commitments', lang("my commitments"));
[3773]45                        $this->template->set_var('lang_my_contacts', lang("my contacts"));
[3564]46                        $this->template->set_var('lang_new_mail', lang("new mail"));
47                        $this->template->set_var('lang_mark_as_read', lang("mark as read"));
48                        $this->template->set_var('lang_selected', lang("selected"));
49                       
50                        $accountId = $GLOBALS['phpgw_info']['user']['account_id'];
51                       
52                        //pegando as pastas
53                        $default_folders = $this->imap_functions->get_folders_list(array('noSharedFolders' => true, 'folderType' => 'default', 'noQuotaInfo' => true));
[3773]54                        $total_quota = $this->imap_functions->get_quota(array());
[3564]55                                       
56                        $this->set_folder_block($default_folders, "default_folders_box");
57                       
[3731]58                        $personal_folders = $this->imap_functions->get_folders_list(array('noSharedFolders' => true, 'folderType' => 'personal', 'noQuotaInfo' => true));
59                        $this->set_folder_block($personal_folders, "personal_folders_box", sizeof($default_folders));
[3564]60                       
61                        $this->template->set_var('quota_percent', $total_quota["quota_percent"]);
62                        $this->template->set_var('quota_used', $this->common->borkb($total_quota["quota_used"]*1024));
63                        $this->template->set_var('quota_limit', $this->common->borkb($total_quota["quota_limit"]*1024));
64                       
65                        //pegando os eventos do dia atual
66                        $year = $this->bocalendar->year;
67                        $month = $this->bocalendar->month;
68                        $day = $this->bocalendar->day;
69                       
70                        $tstart = mktime(0,0,0,$month,$day,$year);
71                       
[3734]72                        $tstop = $tstart + 86400; //(24horas*60min*60seg*1dia)
[3564]73                        $this->bocalendar->so->owner = $accountId;
74                        $this->bocalendar->so->open_box($accountId);
75                        $this->bocalendar->store_to_cache( array(
76                                'owner' => $accountId,
77                                'syear'  => date('Y',$tstart),
78                                'smonth' => date('m',$tstart),
79                                'sday'   => date('d',$tstart),
80                                'eyear'  => date('Y',$tstop),
81                                'emonth' => date('m',$tstop),
82                                'eday'   => date('d',$tstop)
83                        ) );
84                       
[3731]85                        $events = $this->bocalendar->cached_events;
[3564]86                       
[3734]87                        foreach($events[$year.$this->common->complete_string($month,2,"R","0").$this->common->complete_string($day,2,"R","0")] as $index=>$event)
[3564]88                        {
[3690]89                                $this->template->set_var('commitment_class', (($index%2==0) ? "fundo-azul-alinha" : "fundo-branco-alinha") );
[3564]90                                $this->template->set_var('commitment_time', $this->common->complete_string($event["start"]["hour"],2,"R","0") .":". $this->common->complete_string($event["start"]["min"],2,"R","0") );
91                                $this->template->set_var('commitment_title', $event["title"] );
92                               
[3734]93                                $this->template->parse('commitments_box', 'commitment_block' ,true);
[3571]94                        }
[3564]95                       
[3731]96                       
[3813]97                       
[3731]98                        if($GLOBALS['phpgw']->session->appsession('mobile.layout','mobile')=="mini_desktop") {
[3727]99                                $GLOBALS['phpgw_info']['mobiletemplate']->set_home($this->template->fp('out', 'page'));
[3731]100                        } else {
[3813]101                                $GLOBALS['phpgw_info']['mobiletemplate']->set_error_msg($params["error_message"]);
102                                $GLOBALS['phpgw_info']['mobiletemplate']->set_success_msg($params["success_message"]);
[3731]103                                $this->template->set_var('search',$this->template->fp('out','search_bar'));
[3727]104                                $GLOBALS['phpgw_info']['mobiletemplate']->set_content($this->template->fp('out', 'page'));
[3731]105                        }
[3773]106                }
[3727]107
[3773]108                function get_translate_default_folder_name_from_id($folder_id) {
109                        $imap_delimiter = $_SESSION['phpgw_info']['expressomail']['email_server']['imapDelimiter'];
110                       
111                        switch ($folder_id) {
112                                case 'INBOX':
113                                        return lang("Inbox");
114                                case 'INBOX'.$imap_delimiter.$_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultTrashFolder']:
115                                        return lang("Trash");
116                                case 'INBOX'.$imap_delimiter.$_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultDraftsFolder']:
117                                        return lang("Drafts");
118                                case 'INBOX'.$imap_delimiter.$_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSpamFolder']:
119                                        return lang("Spam");
120                                case 'INBOX'.$imap_delimiter.$_SESSION['phpgw_info']['expressomail']['email_server']['imapDefaultSentFolder']:
121                                        return lang("Sent");
122                                default:
123                                        return "";
124                        }
[3564]125                }
126               
127                /**
128                 *
129                 *
130                 * $index_increment utilizado para quando passar o array das pastas pessoais somar com a quantidade de pastas default.
131                 */
132                function set_folder_block($folders, $box_target, $index_increment = 0) {
133                        foreach($folders as $index=>$folder)
134                        {
[3690]135                                $this->template->set_var('folder_class', (($index%2==0) ? "par" : "par1") );
[3564]136                                $this->template->set_var('folder_id', $index + $index_increment );
[3773]137                               
138                                $translated_folder_name = $this->get_translate_default_folder_name_from_id($folder["folder_id"]);
139                               
140                                $this->template->set_var('folder_name', (($translated_folder_name == "") ? $folder["folder_name"] : $translated_folder_name) );
[3564]141                                $this->template->set_var('folder_unseen', $folder["folder_unseen"] );
142                               
143                                $this->imap_functions->open_mbox($folder["folder_id"],true);
144                                $this->template->set_var('folder_total_msg', $this->imap_functions->get_num_msgs(array('folder' => $folder["folder_id"] ) ) );
145                               
[3571]146                                $this->template->parse($box_target, 'folder_block' ,true);
[3564]147                        }
148                }
149               
[3600]150    function search($params) {
[3706]151       
[3600]152        if($_SERVER["HTTP_REFERER"] && strpos($_SERVER["HTTP_REFERER"], "ui_home.index")) {
153                if(!$params["default_folders"] &&
154                                         !$params["personal_folders"] &&
155                                         !$params["calendar_search"] &&
156                                         !$params["contacts_search"]) {
157                                               
158                                                header('Location: index.php?menuaction=menuaction=mobile.ui_home.index&error_message='.lang("need choose one option"));
159                                         }
160        }
161               
162                               
[3573]163                        include_once "class.ui_mobilecc.inc.php";
164                        $ui_mobilemail = CreateObject("mobile.ui_mobilemail");//Necessário para lista de emails, que é uma função estática
[3556]165
[3641]166                        $p = $this->template;
[3731]167                        $p->set_file(array('home_search' => 'home_search.tpl'));
168                        $p->set_file(array('home_search_bar' => 'search_bar.tpl'));
[3556]169                       
[3573]170                        //Langs gerais da página
[3731]171                        $p->set_block('home_search','main');
172                        $p->set_block("home_search","row_events");
173                        $p->set_block("home_search","no_events");
[3641]174                        $p->set_block('home_search_bar','search_bar');
175                       
[3573]176                        $p->set_var('search_param',$params['name']);
177                        $p->set_var('lang_back',lang('back'));
178                        $p->set_var('lang_new_message',ucfirst(lang('new message')));
179                        $p->set_var('lang_search',lang('search'));
180                        $p->set_var('lang_search_return',lang('search return'));
181                        $p->set_var('lang_your_search_was_by',ucfirst(lang('your search was by')));
182                        $p->set_var('lang_emails',ucfirst(lang('e-mails')));
183                        $p->set_var('lang_contacts',ucfirst(lang('contacts')));
184                        $p->set_var('lang_calendar',ucfirst(lang('calendar')));
185                        $p->set_var('lang_events',lang('events'));
186                        $p->set_var('default_folders',$params['default_folders']);
[3596]187                        $p->set_var('personal_folders',$params['personal_folders']);
188                        $p->set_var('folder_to_search',$params['folder_to_search']);
[3573]189                        $p->set_var('contacts_search',$params['contacts_search']);     
[3596]190                        $p->set_var('catalog_to_search',$params['catalog_to_search']);
[3573]191                        $p->set_var('calendar_search',$params['calendar_search']);
192                        $p->set_var('lang_more',lang("more")); 
193                        $p->set_var('lang_messages',lang("messages"));
194                        $p->set_var('show_more_contacts',"none");
195                        $p->set_var('show_more_messages',"none");
196                        $p->set_var('show_more_events',"none");
[3596]197                        $p->set_var('contacts_request_from',
[3731]198                                isset($params["request_from"])?
199                                $params["request_from"]:"none");
200                               
201                        if($GLOBALS['phpgw']->session->appsession('mobile.layout','mobile')!="mini_desktop") {
202                                $p->set_var('search',$p->fp('out','search_bar'));
203                        }
[3596]204
[3734]205                        if(!$params['name'] || trim($params['name']) == "" || strlen($params['name']) < 5 ) {
206                                $GLOBALS['phpgw_info']['mobiletemplate']->set_error_msg(lang("search word need not be empty and has more then four char"));
207                        } else {
208                                //E-mails
209                                $no_mail_search=false;
210                                if((!isset($params['folder_to_search'])) || ($params['folder_to_search']==="")) {
211                                        if($params['default_folders']==="1") {
212                                                if($params['personal_folders']!=="1")
213                                                        $mail_params['folderType'] = 'default';
214                                        }
215                                        else {
216                                                if($params['personal_folders']==="1")
217                                                        $mail_params['folderType'] = 'personal';
218                                                else
219                                                        $no_mail_search = true;
220                                        }
[3589]221                                }
222                                else {
[3734]223                                        $mail_params['folder'] = $params['folder_to_search'];
[3589]224                                }
[3573]225
[3734]226                                if(!$no_mail_search) {
227                                        $imap_functions = CreateObject('expressoMail1_2.imap_functions');
228                                        $mail_params['filter'] = $params["name"];
229                                        $mail_params['max_msgs'] = isset($params['max_msgs'])?$params['max_msgs']:10;
[3573]230                               
[3734]231                                        $p->set_var('next_max_msgs',$mail_params['max_msgs']+10);
232                                        $p->set_var('max_msgs',$mail_params['max_msgs']);
[3573]233
[3734]234                                        $messages = $imap_functions->mobile_search($mail_params);
235                                        if($mail_params['max_msgs']>=$messages["total_msgs"])
236                                                $p->set_var('show_more_messages',"none");
237                                        else
238                                                $p->set_var('show_more_messages',"block");
239                                        $p->set_var('mails',$ui_mobilemail->print_mails_list($messages));
240                                }
241                                else {
242                                        $p->set_var('show_mails',"none");
243                                }
[3556]244                       
[3734]245                                //Agenda
246                                if($params["calendar_search"]==="1") {
[3706]247                               
[3734]248                                        $bo_calendar = CreateObject('calendar.bocalendar',1);
249                                        $functions = CreateObject('mobile.common_functions');
[3573]250                               
[3734]251                                        $max_events = isset($params['max_events'])?$params['max_events']:10;
252                                        $p->set_var('next_max_events',$max_events+10);
253                                        $p->set_var('max_events',$max_events);
[3573]254                               
[3734]255                                        $event_ids = $bo_calendar->search_keywords($params['name']);
[3706]256                               
[3734]257                                        $bg = "fundo-azul-alinha";
258                                        if(!empty($event_ids)) {
259                                                $total_events_search = count($event_ids);
260                                                $event_ids = array_slice($event_ids,0,$max_events,true);
261                                                if($total_events_search>count($event_ids))
262                                                        $p->set_var('show_more_events',"block");
263                                                foreach($event_ids as $key => $id)
264                                                {
265                                                        $event = $bo_calendar->read_entry($id);
[3573]266                                               
[3734]267                                                        if(!$bo_calendar->check_perms(PHPGW_ACL_READ,$event))
268                                                        {
269                                                                continue;
270                                                        }
[3573]271       
[3734]272                                                        $p->set_var("bg",$bg=="fundo-azul-alinha"?$bg="fundo-branco-alinha":$bg="fundo-azul-alinha");
273                                                        $p->set_var("date",$functions->complete_string($event["start"]["mday"],2,"R","0")."/".
274                                                                                                $functions->complete_string($event["start"]["month"],2,"R","0")."/".
275                                                                                                $event["start"]["year"]." ".
276                                                                                                $functions->complete_string($event["start"]["hour"],2,"R","0").":".
277                                                                                                $functions->complete_string($event["start"]["min"],2,"R","0"));
278                                                        $p->set_var("title",$event["title"],40);
279                                                        $p->fp("calendar_results","row_events",True);
[3573]280                               
[3734]281                                                }
[3573]282                                        }
[3734]283                                        else {
284                                                $p->set_var("lang_no_results",lang("no results found"));
285                                                $p->parse("calendar_results","no_events");
286                                        }
[3556]287                                }
[3573]288                                else {
[3734]289                                        $p->set_var("show_calendar","none");
[3573]290                                }
[3706]291                       
[3734]292                                //Contatos                     
293                                if(($params["contacts_search"]==="1") ||
294                                                (isset($params["catalog_to_search"]) && $params["catalog_to_search"]!=="")) {
[3706]295
[3734]296                                        $bo_cc =  CreateObject('mobile.bo_mobilecc');
[3706]297                               
[3734]298                                        if(isset($params["catalog_to_search"]) && $params["catalog_to_search"]!=="")
299                                                $catalogs = array(0=>array("catalog"=>$params["catalog_to_search"],
300                                                                                                "label" => $params["catalog_to_search"]));
301                                        else
302                                                $catalogs = $bo_cc->get_all_catalogs();
[3706]303       
[3734]304                                        $max_contacts = isset($params['max_contacts'])?$params['max_contacts']:10;
305                                        $contacts_result = array();
306                                        $p->set_var('next_max_contacts',$max_contacts+10);
307                                        $p->set_var('max_contacts',$max_contacts);
[3706]308                               
309                               
[3734]310                                        foreach($catalogs as $catalog) {
311                                                if($catalog['catalog']==="bo_group_manager")
312                                                        continue;
313                                                if(count($contacts_result)>=$max_contacts) {
314                                                        $bo_cc->set_catalog($catalog['catalog']);
315                                                        $partial_result = $bo_cc->search("%".$params['name']."%","1");
316                                                        if(count($partial_result)>1) {
317                                                                $p->set_var('show_more_contacts',"block");
318                                                        }
319                                                        break;
320                                                }
321                                                $max_to_search = $max_contacts - count($contacts_result);//Só posso pedir no máximo o número máximo a ser visto menos o que já foi achado.
[3706]322                                                $bo_cc->set_catalog($catalog['catalog']);
[3734]323                                                $partial_result = $bo_cc->search("%".$params['name']."%",$max_to_search);
324                                                if($partial_result["has_more"]) {
[3706]325                                                        $p->set_var('show_more_contacts',"block");
[3734]326                                                        unset($partial_result["has_more"]);
[3706]327                                                }
328                                       
[3734]329                                                $contacts_result = array_merge($contacts_result,$partial_result);
[3706]330                                       
[3734]331                                        }
332                               
333                                        if(isset($params['request_from'])  && $params['request_from']!="none") //Buscas feitas requisitadas por outros modulos
334                                                $request_from = $params['request_from'];
335                                        else
336                                                $request_from = null;
337                                        $p->set_var('contacts',ui_mobilecc::print_contacts($contacts_result,false));
[3706]338                                }
[3734]339                                else {
340                                        $p->set_var('show_contacts',"none");
341                                }
[3706]342                        }
[3731]343                        $GLOBALS['phpgw_info']['mobiletemplate']->set_content($p->fp('out','main'));
[3556]344
[3564]345                }
346               
[3573]347               
[3564]348        }
[3556]349?>
Note: See TracBrowser for help on using the repository browser.