Ignore:
Timestamp:
09/17/12 14:30:47 (12 years ago)
Author:
douglas
Message:

Ticket #0000 - Copiadas as alterações do Trunk. Versão final da 2.4.2.

Location:
branches/2.4
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2.4

  • branches/2.4/expressoMail1_2/inc/class.ldap_functions.inc.php

    r7083 r7228  
    8888                $this->ldap_context = $_SESSION['phpgw_info']['expressomail']['server']['ldap_context']; 
    8989 
    90                 if( isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host']) &&  
    91             isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn']) &&  
    92             isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) &&  
    93             $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host'] && 
     90                if( isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host']) && 
     91                        isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn']) && 
     92                        isset($_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) && 
     93                        $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_host'] && 
    9494                        $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_dn'] && 
    9595                        $_SESSION['phpgw_info']['expressomail']['server']['ldap_master_root_pw']) { 
     
    114114                $ID                     = $params['ID']; 
    115115                 
    116                 $ldapService = ServiceLocator::getService('ldap'); 
    117                 $filter =  $ldapService->getSearchFilter($params['search_for']); 
     116                $ldapService = ServiceLocator::getService('ldap'); 
     117                $filter =  $ldapService->getSearchFilter($params['search_for']); 
    118118 
    119119                $contacts_result = array(); 
     
    132132                if ($this->ds) 
    133133                { 
    134                     $ldapService->connection = $this->ds; 
    135                                 if($extendedinfo) 
    136                                         $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
    137                                 else  
    138                                         $justthese = array("cn", "mail", "telephoneNumber", "phpgwAccountVisible", "uidNumber","uid"); 
    139                 $types = false; 
    140  
    141                 if( $field == 'null' || $ID == 'null' ) 
     134                        $ldapService->connection = $this->ds; 
     135                        if($extendedinfo) 
     136                                $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
     137                        else  
     138                                $justthese = array("cn", "mail", "telephoneNumber", "phpgwAccountVisible", "uidNumber","uid"); 
     139                        $types = false; 
     140 
     141                        if( $field == 'null' || $ID == 'null' ) 
    142142                        { 
    143                     $justthese[] = "jpegphoto"; 
    144                     $types = 'u'; 
    145                 } 
     143                                $justthese[] = "jpegphoto"; 
     144                                $types = 'u'; 
     145                        } 
    146146 
    147147                $filter = $ldapService->getSearchFilter( $params['search_for'], $types ); 
    148148 
    149149                $sr=@ldap_search($this->ds, $this->ldap_context, $filter, $justthese, 0, $this->max_result); 
    150                          
    151                                 if(!$sr) 
    152                                         return null; 
    153  
    154                                 $count_entries = ldap_count_entries($this->ds,$sr); 
    155  
    156                 $info = ldap_get_entries($this->ds, $sr); 
     150 
     151                if(!$sr) 
     152                        return null; 
     153 
     154                $count_entries = ldap_count_entries($this->ds,$sr); 
     155 
     156                $info = ldap_get_entries($this->ds, $sr); 
    157157 
    158158            // New search only on user sector 
    159159            if ($count_entries == $this->max_result) 
    160160            { 
    161                 $overload = $count_entries; 
    162                                 } 
    163                                 else 
    164                                 { 
    165                                 $catalogsNum=count($this->external_srcs); 
    166                 for ($i=0; $i<=$catalogsNum; $i++)      { 
     161                        $overload = $count_entries; 
     162                } 
     163                else 
     164                { 
     165                        $catalogsNum=count($this->external_srcs); 
     166                                for ($i=0; $i<=$catalogsNum; $i++)      { 
    167167                                        if ($this->external_srcs[$i]["quicksearch"]) {  
    168168                                                $this->ldapConnect(true,$i); 
    169169                                                $filter="(|(cn=*$search_for*)(mail=*$search_for*))"; 
    170170                                                if($extendedinfo) 
    171                                         $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
     171                                                        $justthese = array("cn", "mail", "telephonenumber", "uid","uidNumber", "mobile", "phpgwaccountvisible", "employeenumber", "ou"); 
    172172                                                else  
    173173                                                        $justthese = array("cn", "mail", "telephoneNumber", "phpgwAccountVisible","uidNumber", "uid"); 
     
    185185                        } 
    186186 
    187             $tmp = array();  
    188         $tmp_users_from_user_org = array();  
    189  
    190         for ($i=0; $i<$info["count"]; $i++)  
    191         {  
    192                 $key = $info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' .    $info[$i]["ou"][0];  
    193  
    194                 if (/*(!$quickSearch_only_in_userSector) &&*/ preg_match("/$user_sector_dn/i", $info[$i]['dn']))  
     187                $tmp = array(); 
     188                $tmp_users_from_user_org = array(); 
     189 
     190                for ($i=0; $i<$info["count"]; $i++) 
     191                { 
     192                        $key = $info[$i]["mail"][0] . '%' . $info[$i]["telephonenumber"][0] . '%'. $info[$i]["mobile"][0] . '%' . $info[$i]["uid"][0] . '%' . $info[$i]["jpegphoto"]['count'] . '%' . $info[$i]["employeenumber"][0] . '%' .    $info[$i]["ou"][0]; 
     193 
     194                        if (/*(!$quickSearch_only_in_userSector) &&*/ preg_match("/$user_sector_dn/i", $info[$i]['dn'])) 
    195195                        { 
    196                                                 $tmp_users_from_user_org[$key] = utf8_decode($info[$i]["cn"][0]);  
    197                             continue;  
    198                     }  
    199  
    200                     $tmp[$key] = utf8_decode($info[$i]["cn"][0]);  
    201             }  
     196                                $tmp_users_from_user_org[$key] = utf8_decode($info[$i]["cn"][0]); 
     197                                continue; 
     198                        } 
     199 
     200                        $tmp[$key] = utf8_decode($info[$i]["cn"][0]); 
     201                } 
    202202 
    203203                        natcasesort($tmp_users_from_user_org); 
     
    219219                                } 
    220220                                $contacts_result['quickSearch_only_in_userSector'] = $quickSearch_only_in_userSector; 
    221                     $contacts_result['maxResult'] = $ldapService->limit;  
     221                                $contacts_result['maxResult'] = $ldapService->limit; 
    222222                        } 
    223223                        else 
     
    328328                                                        return $this->quickSearch($params); 
    329329                                                else 
    330                                                         return $this->quickSearchAll($params);                                                   
     330                                                        return $this->quickSearchAll($params); 
    331331                } 
    332332            } 
     
    340340        * @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br) 
    341341        * @sponsor    Caixa Econômica Federal 
    342         * @author     Prognus Software Livre <airton@prognus.com.br | prognus@prognus.com.br> 
     342        * @author     ProgquickSearchAllnus Software Livre <airton@prognus.com.br | prognus@prognus.com.br> 
    343343        * @param      <array> <$param> <parametros vindos do cliente> 
    344344        * @return     <array> <$retorno> <Array com os usuários de todos os catálogos, de acordo com o parâmetro> 
     
    405405        * @return     <array> <$retorno> <Array com os usuários do Catálogo Global, de acordo com o parâmetro> 
    406406        */ 
    407         function quickSearchGlobal($params, $all=false)  
     407        function quickSearchGlobal($params, $all=false) 
    408408        {               
    409409            include_once dirname(__FILE__). '/../../header.inc.php'; 
     
    482482                                        $search = ldap_get_entries($this->ds, $sr); 
    483483                                        for ($j=0; $j<$search["count"]; $j++) { 
    484                                                 $info_return[] = $search[$j]; 
     484                                                $search[$j]['isExternal'] = true; 
     485                        $info_return[] = $search[$j]; 
    485486                                        } 
    486487                                        $info_return["count"] = count($info_return)-1; 
     
    488489                        } 
    489490                        //---------------------------------------------------------------// 
    490                          
     491 
    491492            if($all == false) 
    492493                $info_return['type_catalog'] = "G"; 
     
    494495                        $info_return['extra_ldap_fields'] = $campos_extras;  
    495496                         
    496                         foreach($info_return as &$value){  
    497                     $value['type_contact'] = "G";  
    498  
    499                     //Converte a descrição dos filtros para ISO8859 corrigindo inconsitências com caractéres especiais  
    500                     if(isset($value['vacationinfo']) && isset($value['vacationinfo'][0]) && $value['vacationinfo'][0] != '')  
    501                             $value['vacationinfo'][0] = $this->toISO8859($value['vacationinfo'][0]);  
    502             }  
     497                        foreach($info_return as &$value){ 
     498                                $value['type_contact'] = "G"; 
     499 
     500                                //Converte a descrição dos filtros para ISO8859 corrigindo inconsitências com caractéres especiais 
     501                                if(isset($value['vacationinfo']) && isset($value['vacationinfo'][0]) && $value['vacationinfo'][0] != '') 
     502                                        $value['vacationinfo'][0] = $this->toISO8859($value['vacationinfo'][0]); 
     503                        } 
    503504 
    504505                        $info_return['search_for'] = $params['search_for']; 
    505                          
    506             return $info_return;   
     506            return $info_return;  
    507507        }  
    508508         
     
    898898        function getSharedUsersFrom($params){ 
    899899                $filter = ''; 
    900                 $i = 0;           
    901         //Added to save if must save sent messages in shared folder  
    902         $acl_save_sent_in_shared = array();  
    903          
    904         if($params['uids']) {  
    905                 $uids = explode(";",$params['uids']);  
    906                 $this->imap = new imap_functions();                       
    907                 foreach($uids as $index => $uid){  
    908                         $params = array();  
    909                         //Added to save if user has create permission  
    910                         $acl_create_message = array();  
    911                         $acl = $this->imap->getacltouser($uid ,true);  
    912     
    913                         if ( preg_match("/p/",$acl )){                           
    914                             $filter .= "(uid=$uid)";                                                      
    915                             $acl_save_sent_in_shared[ $i ] =$uid;  
    916                             $i++;  
    917                                                                          
    918                         }                                                         
    919                 }                         
     900        $i = 0;          
     901        //Added to save if must save sent messages in shared folder 
     902        $acl_save_sent_in_shared = array(); 
     903        
     904        if($params['uids']) { 
     905                $uids = explode(";",$params['uids']); 
     906                $this->imap = new imap_functions();                      
     907                foreach($uids as $index => $uid){ 
     908                        $params = array(); 
     909                        //Added to save if user has create permission 
     910                        $acl_create_message = array(); 
     911                        $acl = $this->imap->getacltouser($uid ,true); 
     912   
     913                        if ( preg_match("/p/",$acl )){                          
     914                            $filter .= "(uid=$uid)";                                                     
     915                            $acl_save_sent_in_shared[ $i ] =$uid; 
     916                            $i++; 
     917                                                                        
     918                        }                                                        
     919                }                        
    920920        } 
    921921                 
     
    937937                                } 
    938938                        } 
    939                  
     939 
    940940                        $info['myname'] = $_SESSION['phpgw_info']['expressomail']['user']['fullname']; 
    941941 
     
    953953                                $result = ldap_get_entries($this->ds, $sr); 
    954954                                for ($j = 0;$j < $result["count"]; $j++){ 
    955                                         $result[$j]['cn'][0] = utf8_decode($result[$j]['cn'][0]);  
    956                     $result[$j]['mail'][0] = $result[$j]['mail'][0];  
    957                     $result[$j]['save_shared'][0] = 'n';  
    958                     $info[$info['count']] = $result[$j];  
    959                     $info['count'] = (int)$info['count'] + 1;                                    
     955                                        $result[$j]['cn'][0] = utf8_decode($result[$j]['cn'][0]); 
     956                                        $result[$j]['mail'][0] = $result[$j]['mail'][0]; 
     957                                        $result[$j]['save_shared'][0] = 'n'; 
     958                                        $info[$info['count']] = $result[$j]; 
     959                                        $info['count'] = (int)$info['count'] + 1;                        
    960960                                } 
    961961                        } 
    962962 
    963963                        $_SESSION['phpgw_info']['expressomail']['user']['shared_mailboxes'] = $info; 
    964                          
     964 
    965965                        return $info; 
    966966                } 
Note: See TracChangeset for help on using the changeset viewer.