Changeset 491
- Timestamp:
- 09/30/08 16:06:33 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mobile/inc/class.ui_mobilecc.inc.php
r480 r491 5 5 var $bo; 6 6 var $page_info = array ( 7 'actual_catalog' => false 7 'actual_catalog' => false, 8 'is_external_catalog' => false 8 9 ); 9 10 … … 12 13 ); 13 14 14 function ui_mobilecc() { 15 /** 16 * Construtor... 17 * 18 */ 19 public function ui_mobilecc() { 15 20 $this->nextmatchs = CreateObject('phpgwapi.nextmatchs'); 16 21 } 17 22 18 function set_catalog($catalog) { 19 $this->bo= CreateObject("contactcenter.".$catalog); 23 /** 24 * Inicia um BO de catálogo do módulo de contactcenter. 25 * @return 26 * @param $catalog String com o catálogo 27 */ 28 private function set_catalog($catalog) { 29 if(strpos($catalog,'bo_global_ldap_catalog')===false) //Ldap? 30 $this->bo= CreateObject("contactcenter.".$catalog); 31 else { 32 $exploded = explode("#",$catalog); 33 $this->bo= CreateObject("contactcenter.bo_global_ldap_catalog",$exploded[1],$exploded[2],$exploded[3]); 34 if($exploded[3]==1) 35 $this->page_info['is_external_catalog'] = true; 36 else { 37 $this->page_info['is_external_catalog'] = false; 38 } 39 40 } 20 41 $this->page_info['actual_catalog'] = $catalog; 21 42 } 22 43 23 function find($name) { 24 if(($this->page_info['actual_catalog']!="bo_people_catalog") 25 && ($this->page_info['actual_catalog']!="bo_group_manager") 26 && ($this->page_info['actual_catalog']!="bo_shared_catalog_manager")) { 44 /** 45 * Busca um nome a partir do catálogo. Se nenhum for informado previamente, 46 * retorna um array vazio. 47 * 48 * Caso o catálogo atual seja grupos, a busca será por títulos, caso seja 49 * contatos pessoais, será por names_ordered, se for contato no ldap, será 50 * por cn. 51 * 52 * @return array, com os ids relativos a busca 53 * @param $name string com o nome à ser buscado. 54 */ 55 public function find($name) { 56 if(!$this->page_info["actual_catalog"]) 57 return array(); 58 59 if($this->page_info['actual_catalog']=="bo_group_manager") { //parametros de busca para grupos 60 $id = 'group.id_group'; 61 $what = array('group.title',$id); 62 $search = "group.title"; 63 } 64 else { //parametros de busca para pessoas 65 $id = 'contact.id_contact'; 66 $search = "contact.names_ordered"; 67 $what = array('contact.names_ordered',$id); 68 } 69 70 if ((strpos($this->page_info["actual_catalog"],'bo_global_ldap_catalog')!==false) && 71 (!$this->page_info['is_external_catalog'])) { //Ldap do expresso, leva em conta alguns atributos do expresso 72 73 array_push($what,'contact.object_class', 74 'contact.account_visible', 75 'contact.account_status' 76 ); 77 27 78 $rules = array( 28 79 0 => array( … … 51 102 $rules = array(); 52 103 } 53 $search='contact.names_ordered'; 54 $id = 'contact.id_contact'; 55 if($this->page_info['actual_catalog']=="bo_group_manager") { 56 $search = 'group.title'; 57 $id = 'group.id_group'; 58 } 59 60 array_push($rules,array( 61 'field' => $search, 62 'type' => 'iLIKE', 63 'value' => '%'.$name.'%' 64 )); 65 66 $ids = $this->bo->find(array($id),$rules); 67 foreach($ids as $id_r) { 104 105 106 107 if ($name != '') { //String em branco, não preciso adicionar essa regra 108 array_push($rules,array( 109 'field' => $search, 110 'type' => 'iLIKE', 111 'value' => '%'.$name.'%' 112 )); 113 } 114 115 $ids = $this->bo->find($what,$rules); 116 117 foreach($ids as $id_r) { //Quero apenas os ids, como valores nas posições do array 68 118 $retorno[] = $id_r[substr($id,strpos($id,".")+1)]; 69 119 } 120 70 121 return $retorno; 71 122 } 72 123 124 /** 125 * Monta a lista de contatos na tela, de acordo com a busca. Se não foi feita 126 * busca, mostra apenas o formulário para pesquisa. 127 * 128 * @return 129 */ 130 73 131 function contacts_list() { 74 132 75 133 $entries = array(); 76 134 $actual_page = 0; 135 77 136 /////////////// Pego os ids referente a consulta, se a mesma foi feita 78 137 if(isset($_POST['name'])) { … … 86 145 } 87 146 } 88 else if(isset($_GET['page'])) { 147 else if(isset($_GET['page'])) { 89 148 $this->set_catalog($_SESSION["mobile_search_catalog"]); 90 149 $ids = array_slice($_SESSION["mobile_search_ids"],($_GET['page']-1)*10,10); //Página solicitada … … 93 152 else 94 153 $ids = false; 95 154 96 155 ///////////// Pego os dados dos ids da página em questão. 97 if(!is_array($ids) ) {156 if(!is_array($ids) || count($_SESSION["mobile_search_ids"])>100) { 98 157 $entries = array(); 99 158 } 100 159 else { //Só pego os dados completos caso haja resultado na busca 101 if( ($this->page_info['actual_catalog']=="bo_people_catalog")) {160 if($this->page_info['actual_catalog']!="bo_group_manager") { //Se não for grupo, tenho que ordenar as connections 102 161 $entries = $this->bo->get_multiple_entries($ids,array("names_ordered"=>true,"id_contact"=>true,"connections"=>true)); 103 162 /** … … 113 172 } 114 173 array_multisort($default, SORT_DESC, $type, SORT_ASC, $valor['connections']); 115 } 174 }//Fim da ordenação 116 175 } 117 176 else { … … 119 178 } 120 179 } 121 180 122 181 ///////////////// Monto os dados gerais da página no template. 123 182 $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); … … 142 201 $p->set_var($texts); 143 202 144 /////////// Preenche o combo 145 $p->set_var(array('option_value'=>'bo_people_catalog','option_text'=>'Pessoal')); 146 if($this->page_info['actual_catalog']=="bo_people_catalog") 147 $p->set_var('selected','selected'); 148 else 149 $p->set_var('selected',''); 150 $p->parse('options','option',True); 151 $p->set_var(array('option_value'=>'bo_group_manager','option_text'=>'Grupos')); 152 if($this->page_info['actual_catalog']=="bo_group_manager") 153 $p->set_var('selected','selected'); 154 else 155 $p->set_var('selected',''); 156 $p->parse('options','option',True); 157 203 /////////// Preenche o combo de catálogos 204 205 $bo_cc = CreateObject("contactcenter.bo_contactcenter"); 206 $branchs = $bo_cc->get_catalog_tree(); 207 208 foreach($branchs as $branch) { 209 210 if($branch['class']!="bo_global_ldap_catalog") 211 $p->set_var(array('option_value'=>$branch['class'],'option_text'=>$branch['name'])); 212 213 else 214 $p->set_var(array('option_value'=>$branch['class']."#". 215 $branch['class_args'][0]."#". 216 $branch['value']."#". 217 $branch['external'], 218 'option_text'=>$branch['name'])); //No value eu passo também o id, o contexto e se é externo, quando é um ldap 219 220 if(($this->page_info['actual_catalog']==$branch['class']) || 221 ($this->page_info['actual_catalog']==$branch['class']."#".$branch['class_args'][0]."#".$branch['value']."#".$branch['external'])) 222 $p->set_var('selected','selected'); 223 else 224 $p->set_var('selected',''); 225 $p->parse('options','option',True); 226 } 158 227 159 228 /////////// Monta o resultado da pesquisa 160 229 $p->set_var('th_theme',$GLOBALS['phpgw_info']['theme']['th_bg']); 161 if(empty($entries) && isset($_POST["name"])) { //Se foi feita a busca e não teve resultados... 230 231 if(empty($entries) && isset($_POST["name"]) && count($_SESSION["mobile_search_ids"])<=100) { //Se foi feita a busca e não teve resultados... 162 232 $p->set_var('message',lang('No matches found')); 163 233 $p->parse('rows','row_empty',True); 164 234 } 165 else if((isset($_POST["name"])) || (isset($_GET["page"]))){ //Se teve resultados... 235 else if(count($_SESSION["mobile_search_ids"])>100) { //Muitos resultados... 236 $p->set_var('message',lang('too many results')); 237 $p->parse('rows','row_empty',True); 238 } 239 else if((isset($_POST["name"])) || (isset($_GET["page"]))){ //Renderizar... 240 166 241 /////////// Preenche o cabeçalho da consulta 167 if($this->page_info['actual_catalog'] =="bo_people_catalog") {242 if($this->page_info['actual_catalog']!="bo_group_manager") { 168 243 $p->set_var( 169 244 array('lang_people_name' => lang("Name"), … … 179 254 $p->parse('header','group_header',True); 180 255 } 256 181 257 /////////// Preencho as linhas do resultado 182 258 foreach($entries as $entry) { 183 259 $this->nextmatchs->template_alternate_row_color($p); 184 if($this->page_info['actual_catalog']=="bo_people_catalog") { 260 if(($this->page_info['actual_catalog']!="bo_group_manager") && 261 (strpos($this->page_info['actual_catalog'],'bo_global_ldap_catalog')===false)){ //People 185 262 $var = array('row_nome'=>$entry['names_ordered']); 186 263 $conn1 = array_shift($entry['connections']); … … 204 281 $p->parse('rows','row',True); 205 282 } 206 else {283 else if($this->page_info['actual_catalog']=="bo_group_manager"){ //Grupos 207 284 $var = array( 208 285 'row_group_name'=>$entry['short_name'], … … 213 290 $p->parse('rows','row_group',True); 214 291 } 292 else { //Ldap 293 $var = array('row_nome'=>$entry['names_ordered'][0]); 294 $conn1 = array_shift($entry['connections']); 295 if(($conn1==NULL)) { 296 $var['row_telefone'] = ' '; 297 $var['row_email'] = ' '; 298 } 299 else if($conn1['id_type']==1) { 300 $var['row_email'] = $conn1['connection_value']; 301 $conn2=array_shift($entry['connections']); 302 if($conn2==NULL) 303 $var['row_telefone'] = ' '; 304 else 305 $var['row_telefone'] = $conn2['connection_value']; 306 } 307 else if($conn1['id_type']==2) { 308 $var['row_email'] = ' '; 309 $var['row_telefone'] = $conn1['connection_value']; 310 } 311 $p->set_var($var); 312 $p->parse('rows','row',True); 313 } 215 314 } 216 315 } 217 316 218 317 ////////////////// Monto a paginação 219 $num_pages = count($_SESSION["mobile_search_ids"])/10; 220 if((count($_SESSION["mobile_search_ids"])%10!=0) || ($num_pages<1)) 221 $num_pages++; 222 if($actual_page!=0) { 223 for($i=1;$i<=$num_pages;$i++) { 224 $p->set_var('num_page',$i); 225 $p->set_var('display_page',$i); 226 if($i!=$actual_page) 227 $p->parse('pages','page',True); 228 else 229 $p->parse('pages','page_no_link',True); 230 } 231 } 232 233 if($actual_page>1) { 234 $p->set_var('num_page',$actual_page-1); 235 $p->set_var('display_page','<'); 236 $p->parse('back','page',True); 237 } 238 239 if(($actual_page!=floor($num_pages)) && (floor($num_pages)>1) && ($actual_page!=0)) { 240 $p->set_var('num_page',$actual_page+1); 241 $p->set_var('display_page','>'); 242 $p->parse('next','page',True); 243 } 318 if(!empty($entries) && count($_SESSION["mobile_search_ids"])<=100) { 319 $num_pages = count($_SESSION["mobile_search_ids"])/10; 320 321 if((count($_SESSION["mobile_search_ids"])%10!=0) || ($num_pages<1)) 322 $num_pages++; 323 if($actual_page!=0) { 324 for($i=1;$i<=$num_pages;$i++) { 325 $p->set_var('num_page',$i); 326 $p->set_var('display_page',$i); 327 if($i!=$actual_page) 328 $p->parse('pages','page',True); 329 else 330 $p->parse('pages','page_no_link',True); 331 } 332 } 333 334 if($actual_page>1) { 335 $p->set_var('num_page',$actual_page-1); 336 $p->set_var('display_page','<'); 337 $p->parse('back','page',True); 338 } 339 340 if(($actual_page!=floor($num_pages)) && (floor($num_pages)>1) && ($actual_page!=0)) { 341 $p->set_var('num_page',$actual_page+1); 342 $p->set_var('display_page','>'); 343 $p->parse('next','page',True); 344 } 345 } 244 346 245 347 $p->pfp('out','body');
Note: See TracChangeset
for help on using the changeset viewer.