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

Revision 3595, 11.0 KB checked in by eduardoalex, 13 years ago (diff)

Ticket #1412 - adição do novo layout na tela de contatos.

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