source: trunk/mobile/inc/class.ui_home.inc.php @ 8206

Revision 8206, 14.0 KB checked in by angelo, 11 years ago (diff)

Ticket #3483 - Falha de autenticacao no Expresso Mobile

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