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

Revision 3727, 12.7 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #1523 - Alterando estrutura do mobile para disponibilizar a versão desktop

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