Changeset 527 for trunk/mobile
- Timestamp:
- 10/13/08 12:41:14 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mobile/inc/class.ui_mobilecc.inc.php
r517 r527 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; 77 /////////////// Pego os ids referente a consulta, se a mesma foi feita 78 if(isset($_POST['name'])) { 79 $this->set_catalog($_POST['catalog']); 80 $ids = $this->find($_POST['name']); 81 if(is_array($ids)) { 82 $actual_page = 1; 83 $_SESSION["mobile_search_ids"] = $ids; 84 $_SESSION["mobile_search_catalog"] = $_POST['catalog']; 85 $ids = array_slice($ids,0,10); //Apenas a primeira página 86 } 87 } 88 else if(isset($_GET['page'])) { 89 $this->set_catalog($_SESSION["mobile_search_catalog"]); 90 $ids = array_slice($_SESSION["mobile_search_ids"],($_GET['page']-1)*10,10); //Página solicitada 91 $actual_page = $_GET['page']; 92 } 93 else 135 136 if(isset($_POST['name']) && strlen($_POST['name'])<4) //Busca apenas para nomes com mais de 4 palavras 94 137 $ids = false; 95 138 else { 139 /////////////// Pego os ids referente a consulta, se a mesma foi feita 140 if(isset($_POST['name'])) { 141 $this->set_catalog($_POST['catalog']); 142 $ids = $this->find($_POST['name']); 143 if(is_array($ids)) { 144 $actual_page = 1; 145 $_SESSION["mobile_search_ids"] = $ids; 146 $_SESSION["mobile_search_catalog"] = $_POST['catalog']; 147 $ids = array_slice($ids,0,10); //Apenas a primeira página 148 } 149 } 150 else if(isset($_GET['page'])) { 151 $this->set_catalog($_SESSION["mobile_search_catalog"]); 152 $ids = array_slice($_SESSION["mobile_search_ids"],($_GET['page']-1)*10,10); //Página solicitada 153 $actual_page = $_GET['page']; 154 } 155 else 156 $ids = false; 157 } 158 96 159 ///////////// Pego os dados dos ids da página em questão. 97 if(!is_array($ids) ) {160 if(!is_array($ids) || count($_SESSION["mobile_search_ids"])>100 || (isset($_POST["name"]) && strlen($_POST['name'])<4)) { 98 161 $entries = array(); 99 162 } 100 163 else { //Só pego os dados completos caso haja resultado na busca 101 if( ($this->page_info['actual_catalog']=="bo_people_catalog")) {164 if($this->page_info['actual_catalog']!="bo_group_manager") { //Se não for grupo, tenho que ordenar as connections 102 165 $entries = $this->bo->get_multiple_entries($ids,array("names_ordered"=>true,"id_contact"=>true,"connections"=>true)); 103 166 /** … … 113 176 } 114 177 array_multisort($default, SORT_DESC, $type, SORT_ASC, $valor['connections']); 115 } 178 }//Fim da ordenação 116 179 } 117 180 else { … … 119 182 } 120 183 } 121 184 122 185 ///////////////// Monto os dados gerais da página no template. 123 186 $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); … … 142 205 $p->set_var($texts); 143 206 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 207 /////////// Preenche o combo de catálogos 208 209 $bo_cc = CreateObject("contactcenter.bo_contactcenter"); 210 $branchs = $bo_cc->get_catalog_tree(); 211 212 213 foreach($branchs as $branch) { //Pego apenas a estrutura dos ramos vindos do banco, pois as do ldap estão confusas e com dados aparentemente inconsistentes. 214 if($branch['class']!="bo_global_ldap_catalog" && $branch['class']!="bo_catalog_group_catalog") { 215 $p->set_var(array('option_value'=>$branch['class'],'option_text'=>$branch['name'])); 216 217 if($this->page_info['actual_catalog']==$branch['class']) 218 $p->set_var('selected','selected'); 219 else 220 $p->set_var('selected',''); 221 $p->parse('options','option',True); 222 } 223 224 } 225 226 /////////// Preenche o combo, com dados do ldap 227 $bo_ldap_manager = CreateObject("contactcenter.bo_ldap_manager"); 228 $branchs = $bo_ldap_manager->get_all_ldap_sources(); 229 230 foreach($branchs as $id=>$branch) { //Ldaps expresso 231 $p->set_var(array('option_value'=>"bo_global_ldap_catalog#". 232 $id."#". 233 $branch['dn']."#". 234 0, 235 'option_text'=>$branch['name'])); //No value eu passo também o id, o contexto e se é externo, quando é um ldap 236 237 if($this->page_info['actual_catalog']=="bo_global_ldap_catalog#".$id."#".$branch['dn']."#". 0) 238 $p->set_var('selected','selected'); 239 else 240 $p->set_var('selected',''); 241 $p->parse('options','option',True); 242 } 243 244 $branchs = $bo_ldap_manager->get_external_ldap_sources(); 245 246 foreach($branchs as $id=>$branch) { //Ldaps externos 247 $p->set_var(array('option_value'=>"bo_global_ldap_catalog#". 248 $id."#". 249 $branch['dn']."#". 250 1, 251 'option_text'=>$branch['name'])); //No value eu passo também o id, o contexto e se é externo, quando é um ldap 252 253 if($this->page_info['actual_catalog']=="bo_global_ldap_catalog#".$id."#".$branch['dn']."#". 1) 254 $p->set_var('selected','selected'); 255 else 256 $p->set_var('selected',''); 257 $p->parse('options','option',True); 258 } 158 259 159 260 /////////// Monta o resultado da pesquisa 160 261 $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... 262 263 if(empty($entries) && isset($_POST["name"]) && count($_SESSION["mobile_search_ids"])<=100 && strlen($_POST['name'])>=4) { //Se foi feita a busca e não teve resultados... 162 264 $p->set_var('message',lang('No matches found')); 163 265 $p->parse('rows','row_empty',True); 164 266 } 165 else if((isset($_POST["name"])) || (isset($_GET["page"]))){ //Se teve resultados... 267 else if(count($_SESSION["mobile_search_ids"])>100) { //Muitos resultados... 268 $p->set_var('message',lang('too many results')); 269 $p->parse('rows','row_empty',True); 270 } 271 else if(isset($_POST["name"]) && strlen($_POST['name'])<4) { //Muitos resultados... 272 $p->set_var('message',lang('the search argument must have at least 4 digits')); 273 $p->parse('rows','row_empty',True); 274 } 275 else if((isset($_POST["name"])) || (isset($_GET["page"]))){ //Renderizar... 276 166 277 /////////// Preenche o cabeçalho da consulta 167 if($this->page_info['actual_catalog'] =="bo_people_catalog") {278 if($this->page_info['actual_catalog']!="bo_group_manager") { 168 279 $p->set_var( 169 280 array('lang_people_name' => lang("Name"), … … 179 290 $p->parse('header','group_header',True); 180 291 } 292 181 293 /////////// Preencho as linhas do resultado 182 294 foreach($entries as $entry) { 183 295 $this->nextmatchs->template_alternate_row_color($p); 184 if($this->page_info['actual_catalog']=="bo_people_catalog") { 296 if(($this->page_info['actual_catalog']!="bo_group_manager") && 297 (strpos($this->page_info['actual_catalog'],'bo_global_ldap_catalog')===false)){ //People 185 298 $var = array('row_nome'=>$entry['names_ordered']); 186 299 $conn1 = array_shift($entry['connections']); … … 205 318 $p->parse('rows','row',True); 206 319 } 207 else {320 else if($this->page_info['actual_catalog']=="bo_group_manager"){ //Grupos 208 321 $var = array( 209 322 'row_group_name'=>$entry['short_name'], … … 214 327 $p->parse('rows','row_group',True); 215 328 } 329 else { //Ldap 330 $var = array('row_nome'=>$entry['names_ordered'][0]); 331 $conn1 = array_shift($entry['connections']); 332 if(($conn1==NULL)) { 333 $var['row_telefone'] = ' '; 334 $var['row_email'] = ' '; 335 } 336 else if($conn1['id_type']==1) { 337 $var['row_email'] = $conn1['connection_value']; 338 $conn2=array_shift($entry['connections']); 339 if($conn2==NULL) 340 $var['row_telefone'] = ' '; 341 else 342 $var['row_telefone'] = $conn2['connection_value']; 343 } 344 else if($conn1['id_type']==2) { 345 $var['row_email'] = ' '; 346 $var['row_telefone'] = $conn1['connection_value']; 347 } 348 $var['form_action'] = "index.php?menuaction=mobile.mobilemail.new_msg"; 349 $p->set_var($var); 350 $p->parse('rows','row',True); 351 } 216 352 } 217 353 } 218 354 219 355 ////////////////// Monto a paginação 220 $num_pages = count($_SESSION["mobile_search_ids"])/10; 221 if((count($_SESSION["mobile_search_ids"])%10!=0) || ($num_pages<1)) 222 $num_pages++; 223 if($actual_page!=0) { 224 for($i=1;$i<=$num_pages;$i++) { 225 $p->set_var('num_page',$i); 226 $p->set_var('display_page',$i); 227 if($i!=$actual_page) 228 $p->parse('pages','page',True); 229 else 230 $p->parse('pages','page_no_link',True); 231 } 232 } 233 234 if($actual_page>1) { 235 $p->set_var('num_page',$actual_page-1); 236 $p->set_var('display_page','<'); 237 $p->parse('back','page',True); 238 } 239 240 if(($actual_page!=floor($num_pages)) && (floor($num_pages)>1) && ($actual_page!=0)) { 241 $p->set_var('num_page',$actual_page+1); 242 $p->set_var('display_page','>'); 243 $p->parse('next','page',True); 244 } 356 if(!empty($entries) && count($_SESSION["mobile_search_ids"])<=100) { 357 $num_pages = count($_SESSION["mobile_search_ids"])/10; 358 359 if((count($_SESSION["mobile_search_ids"])%10!=0) || ($num_pages<1)) 360 $num_pages++; 361 if($actual_page!=0) { 362 for($i=1;$i<=$num_pages;$i++) { 363 $p->set_var('num_page',$i); 364 $p->set_var('display_page',$i); 365 if($i!=$actual_page) 366 $p->parse('pages','page',True); 367 else 368 $p->parse('pages','page_no_link',True); 369 } 370 } 371 372 if($actual_page>1) { 373 $p->set_var('num_page',$actual_page-1); 374 $p->set_var('display_page','<'); 375 $p->parse('back','page',True); 376 } 377 378 if(($actual_page!=floor($num_pages)) && (floor($num_pages)>1) && ($actual_page!=0)) { 379 $p->set_var('num_page',$actual_page+1); 380 $p->set_var('display_page','>'); 381 $p->parse('next','page',True); 382 } 383 } 245 384 246 385 $p->pfp('out','body');
Note: See TracChangeset
for help on using the changeset viewer.