Changeset 491


Ignore:
Timestamp:
09/30/08 16:06:33 (16 years ago)
Author:
eduardoalex
Message:

Incrementada busca em todos os catálogos.
Falta ainda busca por OU quando for catálogo de ldap, e filtro para buscar apenas nomes com mais de 4 letras

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mobile/inc/class.ui_mobilecc.inc.php

    r480 r491  
    55                var $bo; 
    66                var $page_info = array ( 
    7                                 'actual_catalog' => false 
     7                                'actual_catalog' => false, 
     8                                'is_external_catalog' => false 
    89                        ); 
    910                 
     
    1213                ); 
    1314                 
    14                 function ui_mobilecc() { 
     15                /** 
     16                 * Construtor... 
     17                 *  
     18                 */ 
     19                public function ui_mobilecc() { 
    1520                        $this->nextmatchs       = CreateObject('phpgwapi.nextmatchs'); 
    1621                } 
    1722                 
    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                        } 
    2041                        $this->page_info['actual_catalog'] = $catalog; 
    2142                } 
    2243                 
    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                                 
    2778                                $rules = array( 
    2879                                                        0 => array( 
     
    51102                                $rules = array(); 
    52103                        } 
    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 
    68118                                $retorno[] = $id_r[substr($id,strpos($id,".")+1)]; 
    69119                        } 
     120                         
    70121                        return $retorno; 
    71122                } 
    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                 
    73131                function contacts_list() { 
    74                          
     132 
    75133                        $entries = array(); 
    76134                        $actual_page = 0; 
     135 
    77136                        /////////////// Pego os ids referente a consulta, se a mesma foi feita 
    78137                        if(isset($_POST['name'])) { 
     
    86145                                } 
    87146                        } 
    88                         else if(isset($_GET['page'])) { 
     147                        else if(isset($_GET['page'])) {  
    89148                                $this->set_catalog($_SESSION["mobile_search_catalog"]); 
    90149                                $ids = array_slice($_SESSION["mobile_search_ids"],($_GET['page']-1)*10,10); //Página solicitada 
     
    93152                        else  
    94153                                $ids = false; 
    95                                  
     154 
    96155                        ///////////// 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) {  
    98157                                $entries = array(); 
    99158                        } 
    100159                        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 
    102161                                        $entries = $this->bo->get_multiple_entries($ids,array("names_ordered"=>true,"id_contact"=>true,"connections"=>true)); 
    103162                                        /** 
     
    113172                                                } 
    114173                                                array_multisort($default, SORT_DESC, $type, SORT_ASC, $valor['connections']); 
    115                                         } 
     174                                        }//Fim da ordenação 
    116175                                } 
    117176                                else { 
     
    119178                                } 
    120179                        } 
    121  
     180                         
    122181                        ///////////////// Monto os dados gerais da página no template. 
    123182                        $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); 
     
    142201                        $p->set_var($texts); 
    143202 
    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                        } 
    158227 
    159228                        /////////// Monta o resultado da pesquisa 
    160229                        $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... 
    162232                                $p->set_var('message',lang('No matches found')); 
    163233                                $p->parse('rows','row_empty',True); 
    164234                        } 
    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                                 
    166241                                /////////// 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") { 
    168243                                        $p->set_var( 
    169244                                                        array('lang_people_name' => lang("Name"), 
     
    179254                                        $p->parse('header','group_header',True); 
    180255                                } 
     256                                 
    181257                                /////////// Preencho as linhas do resultado 
    182258                                foreach($entries as $entry) { 
    183259                                        $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 
    185262                                                $var = array('row_nome'=>$entry['names_ordered']); 
    186263                                                $conn1 = array_shift($entry['connections']); 
     
    204281                                                $p->parse('rows','row',True); 
    205282                                        } 
    206                                         else { 
     283                                        else if($this->page_info['actual_catalog']=="bo_group_manager"){ //Grupos 
    207284                                                $var = array( 
    208285                                                                'row_group_name'=>$entry['short_name'], 
     
    213290                                                $p->parse('rows','row_group',True); 
    214291                                        } 
     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'] = '&nbsp;'; 
     297                                                        $var['row_email'] = '&nbsp;'; 
     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'] = '&nbsp'; 
     304                                                        else 
     305                                                                $var['row_telefone'] = $conn2['connection_value']; 
     306                                                } 
     307                                                else if($conn1['id_type']==2) { 
     308                                                        $var['row_email'] = '&nbsp;'; 
     309                                                        $var['row_telefone'] = $conn1['connection_value']; 
     310                                                } 
     311                                                $p->set_var($var); 
     312                                                $p->parse('rows','row',True); 
     313                                        } 
    215314                                } 
    216315                        } 
    217316                         
    218317                        ////////////////// 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                        }                        
    244346                         
    245347                        $p->pfp('out','body'); 
Note: See TracChangeset for help on using the changeset viewer.