Ignore:
Timestamp:
09/05/07 11:18:58 (17 years ago)
Author:
niltonneto
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php

    r63 r64  
    1010        var $current_config; 
    1111        var $functions; 
     12        var $manager_contexts; 
    1213         
    1314        function ldap_functions(){ 
     
    1617                $common = new common(); 
    1718                $this->ldap = $common->ldapConnect(); 
     19                 
    1820                $this->functions = new functions; 
     21                $manager_acl = $this->functions->read_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid']); 
     22                $this->manager_contexts = $manager_acl['contexts']; 
    1923        } 
    2024         
    2125        function validate_fields($params) 
    2226        { 
     27                /* ldap connection following referals and using Contac Center config*/ 
     28                if (is_array($_SESSION['phpgw_info']['expresso']['cc_ldap_server'])) 
     29                { 
     30                        $ldap_connection = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
     31                        if ($ldap_connection) 
     32                        { 
     33                                ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); 
     34                                ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); 
     35                                if ( ($GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
     36                                        ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['acc'], $GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
     37                                $context = $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['dn']; 
     38                        } 
     39                        else 
     40                        { 
     41                                $result['status'] = false; 
     42                                $result['msg'] = 'Falha na conexao com o ldap.'; 
     43                                return $result; 
     44                        } 
     45                } 
     46                else 
     47                { 
     48                        $ldap_connection = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
     49                        ldap_set_option($ldap_connection,LDAP_OPT_PROTOCOL_VERSION,3); 
     50                        ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); 
     51                        ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['server']['ldap_root_dn'], $GLOBALS['phpgw_info']['server']['ldap_root_pw']); 
     52                        $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
     53                } 
     54                 
    2355                $result['status'] = true; 
     56                 
    2457                $params = unserialize($params['attributes']); 
    2558                $type = $params['type']; 
    26                 $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
    2759                $uid = $params['uid']; 
    2860                $mail = $params['mail']; 
     
    3870                if (($type == 'create_user') || ($type == 'rename_user'))  
    3971                { 
    40                         // UID 
    41                         $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$uid))"; 
     72                        //UID 
     73                        if (($type == 'rename_user') && ($this->current_config['expressoAdmin_prefix_org'] == 'true')) 
     74                        { 
     75                                //Obtenho UID sem a organização. Na criação o uid já vem sem a organização 
     76                                $tmp_uid_without_org = split("-", $params['uid']); 
     77                                $tmp_reverse_uid_without_org = array_reverse($tmp_uid_without_org); 
     78                                array_pop($tmp_reverse_uid_without_org); 
     79                                $uid_without_org = implode("-", $tmp_reverse_uid_without_org); 
     80                                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(uid=$uid)(uid=$uid_without_org)))"; 
     81                        } 
     82                        else 
     83                        { 
     84                                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$uid))"; 
     85                        } 
    4286                        $justthese = array("uid"); 
    43                         $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    44                         $count_entries = ldap_count_entries($this->ldap,$search); 
     87                        $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     88                        $count_entries = ldap_count_entries($ldap_connection,$search); 
    4589                        if ($count_entries > 0) 
    4690                        { 
    4791                                $result['status'] = false; 
    48                                 $result['msg'] = 'LOGIN já esta sendo usado.'; 
     92                                $result['msg'] = 'LOGIN já está sendo utilizado.'; 
    4993                                return $result; 
    5094                        } 
     
    5397                        $filter = "(&(phpgwAccountType=g)(cn=$uid))"; 
    5498                        $justthese = array("cn"); 
    55                         $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    56                         $count_entries = ldap_count_entries($this->ldap,$search); 
     99                        $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     100                        $count_entries = ldap_count_entries($ldap_connection,$search); 
    57101                        if ($count_entries > 0) 
    58102                        { 
     
    61105                                return $result; 
    62106                        } 
    63                  
    64                         // UID em outras organizações 
    65                         //Quando tento retirar as organizações pelo expressoAdmin dá este erro. 
    66                         $filter = "(ou=*)"; 
    67                         $justthese = array("ou"); 
    68                         $search = ldap_list($this->ldap, $context, $filter, $justthese); 
    69                         $entries = ldap_get_entries($this->ldap,$search); 
    70                         foreach ($entries as $index=>$org) 
    71                         { 
    72                                 $organization = $org['ou'][0]; 
    73                                 $organization = strtolower($organization); 
     107                         
     108                         
     109                        // UID em outras organizações, pesquiso apenas na maquina local e se utilizar prefix_org 
     110                        if ($this->current_config['expressoAdmin_prefix_org'] == 'true') 
     111                        { 
     112                                $ldap_connection2 = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
     113                                ldap_set_option($ldap_connection2,LDAP_OPT_PROTOCOL_VERSION,3); 
     114                                ldap_set_option($ldap_connection2, LDAP_OPT_REFERRALS, false); 
     115                                ldap_bind($ldap_connection2, $GLOBALS['phpgw_info']['server']['ldap_root_dn'], $GLOBALS['phpgw_info']['server']['ldap_root_pw']); 
     116                                $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
    74117                                 
    75                                 $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$organization-$uid))"; 
    76                                 $justthese = array("uid"); 
    77                                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    78                                 $count_entries = ldap_count_entries($this->ldap,$search); 
    79                                 if ($count_entries > 0) 
     118                                //Obtenho UID sem a organização 
     119                                /* 
     120                                $tmp_uid_without_org = split("-", $params['uid']); 
     121                                if (count($tmp_uid_without_org) < 2) 
    80122                                { 
    81123                                        $result['status'] = false; 
    82                                         $result['msg'] = 'LOGIN já esta sendo usado por outro usuário em outra organização.'; 
     124                                        $result['msg'] = 'Novo login sem organização.'; 
    83125                                        return $result; 
    84126                                } 
     127                                $tmp_reverse_uid_without_org = array_reverse($tmp_uid_without_org); 
     128                                array_pop($tmp_reverse_uid_without_org); 
     129                                $uid_without_org = implode("-", $tmp_reverse_uid_without_org); 
     130                                */ 
     131                                 
     132                                $filter = "(ou=*)"; 
     133                                $justthese = array("ou"); 
     134                                $search = ldap_list($ldap_connection2, $context, $filter, $justthese); 
     135                                $entries = ldap_get_entries($ldap_connection2   ,$search); 
     136                                 
     137                                foreach ($entries as $index=>$org) 
     138                                { 
     139                                        $organization = $org['ou'][0]; 
     140                                        $organization = strtolower($organization); 
     141                                 
     142                                        $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$organization-$uid))"; 
     143                                         
     144                                        $justthese = array("uid"); 
     145                                        $search = ldap_search($ldap_connection2, $context, $filter, $justthese); 
     146                                        $count_entries = ldap_count_entries($ldap_connection2,$search); 
     147                                        if ($count_entries > 0) 
     148                                        { 
     149                                                $result['status'] = false; 
     150                                                $result['msg'] = 'LOGIN já esta sendo usado por outro usuário em outra organização.'; 
     151                                                ldap_close($ldap_connection2); 
     152                                                return $result; 
     153                                        } 
     154                                } 
     155                                ldap_close($ldap_connection2); 
    85156                        } 
    86157                } 
     
    94165                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mail)(mailalternateaddress=$mail)))"; 
    95166                $justthese = array("mail", "uid"); 
    96                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    97                 $entries = ldap_get_entries($this->ldap,$search); 
     167                $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     168                $entries = ldap_get_entries($ldap_connection,$search); 
    98169                if ($entries['count'] == 1){ 
    99170                        if ($entries[0]['uid'][0] != $uid){ 
    100171                                $result['status'] = false; 
    101172                                $result['msg'] = 'E-MAIL está sendo usado por 1 usuário: ' . $entries[0]['uid'][0]; 
    102                                 //ldap_close($this->ldap); 
     173                                //ldap_close($ldap_connection); 
    103174                                return $result; 
    104175                        } 
     
    106177                else if ($entries['count'] > 1){ 
    107178                        $result['status'] = false; 
    108                         $result['msg'] = 'E-MAIL está sendo usado por de 2 ou mais usuários.'; 
    109                         //ldap_close($this->ldap); 
     179                        $result['msg'] = 'E-MAIL está sendo usado por 2 ou mais usuários.'; 
     180                        //ldap_close($ldap_connection); 
    110181                        return $result; 
    111182                } 
     
    114185                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mailalternateaddress)(mailalternateaddress=$mailalternateaddress)))"; 
    115186                $justthese = array("mail", "uid"); 
    116                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    117                 $entries = ldap_get_entries($this->ldap,$search); 
     187                $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     188                $entries = ldap_get_entries($ldap_connection,$search); 
    118189                if ($entries['count'] == 1){ 
    119190                        if ($entries[0]['uid'][0] != $uid){ 
    120191                                $result['status'] = false; 
    121192                                $result['msg'] = "E-MAIL alternativo está sendo usado por 1 usuário: " . $entries[0]['uid'][0]; 
    122                                 //ldap_close($this->ldap); 
     193                                //ldap_close($ldap_connection); 
    123194                                return $result; 
    124195                        } 
     
    135206        function validate_fields_group($params) 
    136207        { 
    137                 $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
     208                /* ldap connection following referals and using Contac Center config*/ 
     209                if (is_array($_SESSION['phpgw_info']['expresso']['cc_ldap_server'])) 
     210                { 
     211                        $ldap_connection = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
     212                        if ($ldap_connection) 
     213                        { 
     214                                ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); 
     215                                ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); 
     216                                if ( ($GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
     217                                        ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['acc'], $GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
     218                                $context = $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['dn']; 
     219                        } 
     220                        else 
     221                        { 
     222                                $result['status'] = false; 
     223                                $result['msg'] = 'Falha na conexao com o ldap.'; 
     224                                return $result; 
     225                        } 
     226                } 
     227                else 
     228                { 
     229                        $ldap_connection = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
     230                        ldap_set_option($ldap_connection,LDAP_OPT_PROTOCOL_VERSION,3); 
     231                        ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); 
     232                        ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['server']['ldap_root_dn'], $GLOBALS['phpgw_info']['server']['ldap_root_pw']); 
     233                        $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
     234                } 
     235 
    138236                $cn = $params['cn']; 
    139237                $result['status'] = true; 
     
    149247                $filter = "(&(phpgwAccountType=g)(cn=$cn))"; 
    150248                $justthese = array("cn"); 
    151                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    152                 $count_entries = ldap_count_entries($this->ldap,$search); 
     249                $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     250                $count_entries = ldap_count_entries($ldap_connection,$search); 
    153251                if ($count_entries > 0) 
    154252                { 
     
    161259                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$cn))"; 
    162260                $justthese = array("uid"); 
    163                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    164                 $count_entries = ldap_count_entries($this->ldap,$search); 
     261                $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     262                $count_entries = ldap_count_entries($ldap_connection,$search); 
    165263                if ($count_entries > 0) 
    166264                { 
     
    175273        function validate_fields_maillist($params) 
    176274        { 
    177                 $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
     275                /* ldap connection following referals and using Contac Center config*/ 
     276                if (is_array($_SESSION['phpgw_info']['expresso']['cc_ldap_server'])) 
     277                { 
     278                        $ldap_connection = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
     279                        if ($ldap_connection) 
     280                        { 
     281                                ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3); 
     282                                ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); 
     283                                if ( ($GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
     284                                        ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['acc'], $GLOBALS['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
     285                                $context = $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['dn']; 
     286                        } 
     287                        else 
     288                        { 
     289                                $result['status'] = false; 
     290                                $result['msg'] = 'Falha na conexao com o ldap.'; 
     291                                return $result; 
     292                        } 
     293                } 
     294                else 
     295                { 
     296                        $ldap_connection = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
     297                        ldap_set_option($ldap_connection,LDAP_OPT_PROTOCOL_VERSION,3); 
     298                        ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, true); 
     299                        ldap_bind($ldap_connection, $GLOBALS['phpgw_info']['server']['ldap_root_dn'], $GLOBALS['phpgw_info']['server']['ldap_root_pw']); 
     300                        $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
     301                } 
     302                 
    178303                $uid = $params['uid']; 
    179304                $mail = $params['mail']; 
     
    190315                $filter = "(&(phpgwAccountType=l)(uid=$uid))"; 
    191316                $justthese = array("uid"); 
    192                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    193                 $count_entries = ldap_count_entries($this->ldap,$search); 
     317                $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     318                $count_entries = ldap_count_entries($ldap_connection,$search); 
    194319                if ($count_entries > 0) 
    195320                { 
     
    203328                $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mail)(mailalternateaddress=$mail)))"; 
    204329                $justthese = array("mail"); 
    205                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    206                 $count_entries = ldap_count_entries($this->ldap,$search); 
     330                $search = ldap_search($ldap_connection, $context, $filter, $justthese); 
     331                $count_entries = ldap_count_entries($ldap_connection,$search); 
    207332                if ($count_entries > 0) 
    208333                { 
     
    610735        } 
    611736         
    612         function get_user_info($uidnumber, $context) 
    613         { 
    614                 $filter="(&(phpgwAccountType=u)(uidNumber=".$uidnumber."))"; 
    615                 $search = ldap_search($this->ldap, $context, $filter); 
    616                 $entry = ldap_get_entries($this->ldap, $search); 
    617  
    618                 //Pega o dn do setor do usuario. 
    619                 $entry[0]['dn'] = strtolower($entry[0]['dn']); 
    620                 $sector_dn_array = explode(",", $entry[0]['dn']); 
    621                 for($i=1; $i<count($sector_dn_array); $i++) 
    622                         $sector_dn .= $sector_dn_array[$i] . ','; 
    623                 //Retira ultimo pipe. 
    624                 $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
    625                  
    626                 $result['context']                              = $sector_dn; 
    627                 $result['uid']                                  = $entry[0]['uid'][0]; 
    628                 $result['uidnumber']                    = $entry[0]['uidnumber'][0]; 
    629                 $result['gidnumber']                    = $entry[0]['gidnumber'][0]; 
    630                 $result['departmentnumber']             = $entry[0]['departmentnumber'][0]; 
    631                 $result['givenname']                    = $entry[0]['givenname'][0]; 
    632                 $result['sn']                                   = $entry[0]['sn'][0]; 
    633                 $result['telephonenumber']              = $entry[0]['telephonenumber'][0]; 
    634                 $result['phpgwaccountstatus']   = $entry[0]['phpgwaccountstatus'][0]; 
    635                 $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0]; 
    636                 $result['accountstatus']                = $entry[0]['accountstatus'][0]; 
    637                 $result['mail']                                 = $entry[0]['mail'][0]; 
    638                 $result['mailalternateaddress'] = $entry[0]['mailalternateaddress'][0]; 
    639                 $result['mailforwardingaddress']= $entry[0]['mailforwardingaddress'][0]; 
    640                 $result['deliverymode']                 = $entry[0]['deliverymode'][0]; 
    641                 $result['userPasswordRFC2617']  = $entry[0]['userpasswordrfc2617'][0]; 
    642  
    643                 //Photo 
    644                 if ($entry[0]['jpegphoto']['count'] == 1) 
    645                         $result['photo_exist'] = 'true'; 
    646                  
    647                 // Samba 
    648                 for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 
    649                 { 
    650                         if ($entry[0]['objectclass'][$i] == 'sambaSamAccount') 
    651                                 $result['sambaUser'] = true; 
    652                 }                 
    653                 if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($result['sambaUser'])) 
    654                 { 
    655                         $result['sambaaccflags'] = $entry[0]['sambaacctflags'][0]; 
    656                         $result['sambalogonscript'] = $entry[0]['sambalogonscript'][0]; 
    657                         $result['homedirectory'] = $entry[0]['homedirectory'][0]; 
    658                         $a_tmp = explode("-", $entry[0]['sambasid'][0]); 
    659                         array_pop($a_tmp); 
    660                         $result['sambasid'] = implode("-", $a_tmp); 
    661                 } 
    662  
    663                 // Verifica o acesso do gerente aos atributos corporativos 
    664                 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'manipulate_corporative_information')) 
    665                 { 
    666                         $result['corporative_information_employeenumber']= $entry[0]['employeenumber'][0]; 
    667                         $result['corporative_information_cpf']                  = $entry[0]['cpf'][0]; 
    668                         $result['corporative_information_rg']                   = $entry[0]['rg'][0]; 
    669                         $result['corporative_information_rguf']                 = $entry[0]['rguf'][0]; 
    670                 } 
    671                  
    672                 // MailLists 
     737        function get_user_info($uidnumber) 
     738        { 
     739                foreach ($this->manager_contexts as $index=>$context) 
     740                { 
     741                        $filter="(&(phpgwAccountType=u)(uidNumber=".$uidnumber."))"; 
     742                        $search = ldap_search($this->ldap, $context, $filter); 
     743                        $entry = ldap_get_entries($this->ldap, $search); 
     744                         
     745                        if ($entry['count']) 
     746                        { 
     747                                //Pega o dn do setor do usuario. 
     748                                $entry[0]['dn'] = strtolower($entry[0]['dn']); 
     749                                $sector_dn_array = explode(",", $entry[0]['dn']); 
     750                                for($i=1; $i<count($sector_dn_array); $i++) 
     751                                        $sector_dn .= $sector_dn_array[$i] . ','; 
     752                                //Retira ultimo pipe. 
     753                                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
     754                 
     755                                $result['context']                              = $sector_dn; 
     756                                $result['uid']                                  = $entry[0]['uid'][0]; 
     757                                $result['uidnumber']                    = $entry[0]['uidnumber'][0]; 
     758                                $result['gidnumber']                    = $entry[0]['gidnumber'][0]; 
     759                                $result['departmentnumber']             = $entry[0]['departmentnumber'][0]; 
     760                                $result['givenname']                    = $entry[0]['givenname'][0]; 
     761                                $result['sn']                                   = $entry[0]['sn'][0]; 
     762                                $result['telephonenumber']              = $entry[0]['telephonenumber'][0]; 
     763                                $result['phpgwaccountstatus']   = $entry[0]['phpgwaccountstatus'][0]; 
     764                                $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0]; 
     765                                $result['accountstatus']                = $entry[0]['accountstatus'][0]; 
     766                                $result['mail']                                 = $entry[0]['mail'][0]; 
     767                                $result['mailalternateaddress'] = $entry[0]['mailalternateaddress'][0]; 
     768                                $result['mailforwardingaddress']= $entry[0]['mailforwardingaddress'][0]; 
     769                                $result['deliverymode']                 = $entry[0]['deliverymode'][0]; 
     770                                $result['userPasswordRFC2617']  = $entry[0]['userpasswordrfc2617'][0]; 
     771 
     772                                //Photo 
     773                                if ($entry[0]['jpegphoto']['count'] == 1) 
     774                                        $result['photo_exist'] = 'true'; 
     775                 
     776                                // Samba 
     777                                for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 
     778                                { 
     779                                        if ($entry[0]['objectclass'][$i] == 'sambaSamAccount') 
     780                                                $result['sambaUser'] = true; 
     781                                } 
     782                                if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($result['sambaUser'])) 
     783                                { 
     784                                        $result['sambaaccflags'] = $entry[0]['sambaacctflags'][0]; 
     785                                        $result['sambalogonscript'] = $entry[0]['sambalogonscript'][0]; 
     786                                        $result['homedirectory'] = $entry[0]['homedirectory'][0]; 
     787                                        $a_tmp = explode("-", $entry[0]['sambasid'][0]); 
     788                                        array_pop($a_tmp); 
     789                                        $result['sambasid'] = implode("-", $a_tmp); 
     790                                } 
     791 
     792                                // Verifica o acesso do gerente aos atributos corporativos 
     793                                if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'manipulate_corporative_information')) 
     794                                { 
     795                                        $result['corporative_information_employeenumber']= $entry[0]['employeenumber'][0]; 
     796                                        $result['corporative_information_cpf']                  = $entry[0]['cpf'][0]; 
     797                                        $result['corporative_information_rg']                   = $entry[0]['rg'][0]; 
     798                                        $result['corporative_information_rguf']                 = $entry[0]['rguf'][0]; 
     799                                } 
     800                                 
     801                                // MailLists 
     802                                $result['maillists_info'] = $this->get_user_maillists($result['mail']); 
     803                                foreach ($result['maillists_info'] as $maillist) 
     804                                { 
     805                                        $result['maillists'][] = $maillist['uidnumber']; 
     806                                } 
     807                                 
     808                                // Groups 
     809                                $justthese = array("gidnumber","cn"); 
     810                                $filter="(&(phpgwAccountType=g)(memberuid=".$result['uid']."))"; 
     811                                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     812                        ldap_sort($this->ldap, $search, "cn"); 
     813                        $entries = ldap_get_entries($this->ldap, $search); 
     814                        for ($i=0; $i<$entries['count']; $i++) 
     815                        { 
     816                                $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = $entries[$i]['cn'][0]; 
     817                        } 
     818                        } 
     819                } 
     820                return $result; 
     821        } 
     822                 
     823        function get_user_maillists($mail) 
     824        { 
     825                $result = array(); 
     826                 
     827                //Mostra somente os mailists dos contextos do gerente 
    673828                $justthese = array("uid","mail","uidnumber"); 
    674                 $filter="(&(phpgwAccountType=l)(mailforwardingaddress=".$result['mail']."))"; 
    675                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    676         ldap_sort($this->ldap, $search, "uid"); 
    677         $entries = ldap_get_entries($this->ldap, $search); 
    678         for ($i=0; $i<$entries['count']; $i++) 
     829                $filter="(&(phpgwAccountType=l)(mailforwardingaddress=$mail))"; 
     830                 
     831                foreach ($this->manager_contexts as $index=>$context) 
     832                { 
     833                        $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     834                        //ldap_sort($this->ldap, $search, "uid"); 
     835                $entries = ldap_get_entries($this->ldap, $search); 
     836                 
     837                for ($i=0; $i<$entries['count']; $i++) 
     838                { 
     839                                $result[ $entries[$i]['uid'][0] ]['uidnumber']  = $entries[$i]['uidnumber'][0]; 
     840                                $result[ $entries[$i]['uid'][0] ]['uid']                = $entries[$i]['uid'][0]; 
     841                                $result[ $entries[$i]['uid'][0] ]['mail']               = $entries[$i]['mail'][0]; 
     842                                 
     843                                $a_tmp[] = $entries[$i]['uid'][0]; 
     844                } 
     845                } 
     846         
     847        natcasesort($a_tmp); 
     848         
     849        foreach ($a_tmp as $uid) 
    679850        { 
    680                 $result['maillists_info'][$i]['uidnumber'] = $entries[$i]['uidnumber'][0]; 
    681                 $result['maillists_info'][$i]['uid'] = $entries[$i]['uid'][0]; 
    682                 $result['maillists_info'][$i]['mail'] = $entries[$i]['mail'][0]; 
    683                 $result['maillists'][] = $entries[$i]['uidnumber'][0]; 
     851                $return[$uid]['uidnumber']      = $result[$uid]['uidnumber']; 
     852                        $return[$uid]['uid']            = $result[$uid]['uid']; 
     853                        $return[$uid]['mail']           = $result[$uid]['mail']; 
    684854        } 
    685          
    686         // Groups 
    687                 $justthese = array("gidnumber","cn"); 
    688                 $filter="(&(phpgwAccountType=g)(memberuid=".$result['uid']."))"; 
    689                 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    690         ldap_sort($this->ldap, $search, "cn"); 
    691         $entries = ldap_get_entries($this->ldap, $search); 
    692         for ($i=0; $i<$entries['count']; $i++) 
    693         { 
    694                 $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = $entries[$i]['cn'][0]; 
    695         } 
    696          
    697                 return $result;          
    698         } 
    699          
    700         function get_group_info($gidnumber, $context) 
    701         { 
    702                 $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 
    703                 $search = ldap_search($this->ldap, $context, $filter); 
    704                 $entry = ldap_get_entries($this->ldap, $search); 
    705  
    706                 //Pega o dn do setor do grupo. 
    707                 $entry[0]['dn'] = strtolower($entry[0]['dn']); 
    708                 $sector_dn_array = explode(",", $entry[0]['dn']); 
    709                 for($i=1; $i<count($sector_dn_array); $i++) 
    710                         $sector_dn .= $sector_dn_array[$i] . ','; 
    711                 //Retira ultimo pipe. 
    712                 $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
    713                  
    714                 $result['context']                              = $sector_dn; 
    715                 $result['cn']                                   = $entry[0]['cn'][0]; 
    716                 $result['description']                  = $entry[0]['description'][0]; 
    717                 $result['gidnumber']                    = $entry[0]['gidnumber'][0]; 
    718                 $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0]; 
    719                 $result['email']                                = $entry[0]['mail'][0]; 
    720                  
    721                 //MemberUid 
    722                 for ($i=0; $i<$entry[0]['memberuid']['count']; $i++) 
    723                 { 
    724                         $justthese = array("cn","uid","uidnumber"); 
    725                          
    726                         // Montagem dinamica do filtro 
    727                         $filter="(&(phpgwAccountType=u)(|"; 
    728                         for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++) 
    729                         { 
    730                                 $filter .= "(uid=".$entry[0]['memberuid'][$i].")"; 
    731                                 $i++; 
    732                         } 
    733                         $i--; 
    734                         $filter .= "))"; 
    735                          
    736                         $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    737                         $user_entry = ldap_get_entries($this->ldap, $search); 
    738  
    739                         for ($j=0; $j<$user_entry['count']; $j++) 
    740                         { 
    741                                 $result['memberuid_info'][$user_entry[$j]['uid'][0]]['cn'] = $user_entry[$j]['cn'][0]; 
    742                                 $result['memberuid_info'][$user_entry[$j]['uid'][0]]['uidnumber'] = $user_entry[$j]['uidnumber'][0]; 
    743                                 $result['memberuid_info'][$user_entry[$j]['uid'][0]]['type'] = 'u'; 
    744                         } 
    745                 } 
    746                  
    747                 // Retira o count do array 
    748                 array_shift($entry[0]['memberuid']); 
    749                  
    750                 // Checamos e-mails que não fazem parte do expresso. 
    751                 // Criamos um array temporario 
    752                 $tmp_array = array(); 
    753                 foreach ($result['memberuid_info'] as $uid => $user_data) 
    754                 { 
    755                         $tmp_array[] = $uid; 
    756                 } 
    757  
    758                 // Vemos a diferença 
    759                 $array_diff = array_diff($entry[0]['memberuid'], $tmp_array); 
    760                  
    761                 // Incluimos no resultado 
    762                 foreach ($array_diff as $index=>$uid) 
    763                 { 
    764                         $result['memberuid_info'][$uid]['cn'] = $uid; 
    765                 } 
    766                  
    767                 // Samba 
    768                 for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 
    769                 { 
    770                         if ($entry[0]['objectclass'][$i] == 'sambaGroupMapping') 
    771                                 $result['sambaGroup'] = true; 
    772  
    773                         $a_tmp = explode("-", $entry[0]['sambasid'][0]); 
    774                         array_pop($a_tmp); 
    775                         $result['sambasid'] = implode("-", $a_tmp); 
    776                 } 
    777  
    778                 return $result; 
     855                return $return; 
     856        } 
     857         
     858        function get_group_info($gidnumber) 
     859        { 
     860                foreach ($this->manager_contexts as $index=>$context) 
     861                { 
     862                        $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 
     863                        $search = ldap_search($this->ldap, $context, $filter); 
     864                        $entry = ldap_get_entries($this->ldap, $search); 
     865                         
     866                        if ($entry['count']) 
     867                        { 
     868                                //Pega o dn do setor do grupo. 
     869                                $entry[0]['dn'] = strtolower($entry[0]['dn']); 
     870                                $sector_dn_array = explode(",", $entry[0]['dn']); 
     871                                for($i=1; $i<count($sector_dn_array); $i++) 
     872                                        $sector_dn .= $sector_dn_array[$i] . ','; 
     873                                //Retira ultimo pipe. 
     874                                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
     875                 
     876                                $result['context']                              = $sector_dn; 
     877                                $result['cn']                                   = $entry[0]['cn'][0]; 
     878                                $result['description']                  = $entry[0]['description'][0]; 
     879                                $result['gidnumber']                    = $entry[0]['gidnumber'][0]; 
     880                                $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0]; 
     881                                $result['email']                                = $entry[0]['mail'][0]; 
     882                 
     883                                //MemberUid 
     884                                for ($i=0; $i<$entry[0]['memberuid']['count']; $i++) 
     885                                { 
     886                                        $justthese = array("cn","uid","uidnumber"); 
     887                         
     888                                        // Montagem dinamica do filtro 
     889                                        $filter="(&(phpgwAccountType=u)(|"; 
     890                                        for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++) 
     891                                        { 
     892                                                $filter .= "(uid=".$entry[0]['memberuid'][$i].")"; 
     893                                                $i++; 
     894                                        } 
     895                                        $i--; 
     896                                        $filter .= "))"; 
     897                         
     898                                        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     899                                        $user_entry = ldap_get_entries($this->ldap, $search); 
     900 
     901                                        for ($j=0; $j<$user_entry['count']; $j++) 
     902                                        { 
     903                                                $result['memberuid_info'][$user_entry[$j]['uid'][0]]['cn'] = $user_entry[$j]['cn'][0]; 
     904                                                $result['memberuid_info'][$user_entry[$j]['uid'][0]]['uidnumber'] = $user_entry[$j]['uidnumber'][0]; 
     905                                                $result['memberuid_info'][$user_entry[$j]['uid'][0]]['type'] = 'u'; 
     906                                        } 
     907                                } 
     908                 
     909                                // Retira o count do array 
     910                                array_shift($entry[0]['memberuid']); 
     911                 
     912                                // Checamos e-mails que não fazem parte do expresso. 
     913                                // Criamos um array temporario 
     914                                $tmp_array = array(); 
     915                                foreach ($result['memberuid_info'] as $uid => $user_data) 
     916                                { 
     917                                        $tmp_array[] = $uid; 
     918                                } 
     919 
     920                                // Vemos a diferença 
     921                                $array_diff = array_diff($entry[0]['memberuid'], $tmp_array); 
     922                 
     923                                // Incluimos no resultado 
     924                                foreach ($array_diff as $index=>$uid) 
     925                                { 
     926                                        $result['memberuid_info'][$uid]['cn'] = $uid; 
     927                                } 
     928                 
     929                                // Samba 
     930                                for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 
     931                                { 
     932                                        if ($entry[0]['objectclass'][$i] == 'sambaGroupMapping') 
     933                                                $result['sambaGroup'] = true; 
     934 
     935                                        $a_tmp = explode("-", $entry[0]['sambasid'][0]); 
     936                                        array_pop($a_tmp); 
     937                                        $result['sambasid'] = implode("-", $a_tmp); 
     938                                } 
     939                                return $result; 
     940                        } 
     941                } 
    779942        }        
    780943         
    781         function get_maillist_info($uidnumber, $context) 
    782         { 
    783                 $filter="(&(phpgwAccountType=l)(uidNumber=".$uidnumber."))"; 
    784                 $search = ldap_search($this->ldap, $context, $filter); 
    785                 $entry = ldap_get_entries($this->ldap, $search); 
    786          
    787                 //Pega o dn do setor do usuario. 
    788                 $entry[0]['dn'] = strtolower($entry[0]['dn']); 
    789                 $sector_dn_array = explode(",", $entry[0]['dn']); 
    790                 for($i=1; $i<count($sector_dn_array); $i++) 
    791                         $sector_dn .= $sector_dn_array[$i] . ','; 
    792                 //Retira ultimo pipe. 
    793                 $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
    794                          
    795                 $result['context']                              = $sector_dn; 
    796                 $result['uidnumber']                    = $entry[0]['uidnumber'][0]; 
    797                 $result['uid']                                  = $entry[0]['uid'][0]; 
    798                 $result['cn']                                   = $entry[0]['cn'][0]; 
    799                 $result['mail']                                 = $entry[0]['mail'][0]; 
    800                 $result['accountStatus']                = $entry[0]['accountstatus'][0]; 
    801                 $result['phpgwAccountVisible']  = $entry[0]['phpgwaccountvisible'][0]; 
    802                          
    803                 //Members 
    804                 for ($i=0; $i<$entry[0]['mailforwardingaddress']['count']; $i++) 
    805                 { 
    806                         $justthese = array("cn", "uidnumber", "uid", "phpgwaccounttype", "mail"); 
     944        function get_maillist_info($uidnumber) 
     945        { 
     946                foreach ($this->manager_contexts as $index=>$context) 
     947                { 
     948                        $filter="(&(phpgwAccountType=l)(uidNumber=".$uidnumber."))"; 
     949                        $search = ldap_search($this->ldap, $context, $filter); 
     950                        $entry = ldap_get_entries($this->ldap, $search); 
     951                         
     952                        if ($entry['count']) 
     953                        { 
     954                                //Pega o dn do setor do usuario. 
     955                                $entry[0]['dn'] = strtolower($entry[0]['dn']); 
     956                                $sector_dn_array = explode(",", $entry[0]['dn']); 
     957                                for($i=1; $i<count($sector_dn_array); $i++) 
     958                                        $sector_dn .= $sector_dn_array[$i] . ','; 
     959                                //Retira ultimo pipe. 
     960                                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
     961                         
     962                                $result['context']                              = $sector_dn; 
     963                                $result['uidnumber']                    = $entry[0]['uidnumber'][0]; 
     964                                $result['uid']                                  = $entry[0]['uid'][0]; 
     965                                $result['cn']                                   = $entry[0]['cn'][0]; 
     966                                $result['mail']                                 = $entry[0]['mail'][0]; 
     967                                $result['accountStatus']                = $entry[0]['accountstatus'][0]; 
     968                                $result['phpgwAccountVisible']  = $entry[0]['phpgwaccountvisible'][0]; 
     969                         
     970                                //Members 
     971                                for ($i=0; $i<$entry[0]['mailforwardingaddress']['count']; $i++) 
     972                                { 
     973                                        $justthese = array("cn", "uidnumber", "uid", "phpgwaccounttype", "mail"); 
    807974                                 
    808                         // Montagem dinamica do filtro 
    809                         $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|"; 
    810                         for ($k=0; (($k<10) && ($i<$entry[0]['mailforwardingaddress']['count'])); $k++) 
    811                         { 
    812                                 $filter .= "(mail=".$entry[0]['mailforwardingaddress'][$i].")"; 
    813                                 $i++; 
    814                         } 
    815                         $i--; 
    816                         $filter .= "))"; 
     975                                        // Montagem dinamica do filtro 
     976                                        $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|"; 
     977                                        for ($k=0; (($k<10) && ($i<$entry[0]['mailforwardingaddress']['count'])); $k++) 
     978                                        { 
     979                                                $filter .= "(mail=".$entry[0]['mailforwardingaddress'][$i].")"; 
     980                                                $i++; 
     981                                        } 
     982                                        $i--; 
     983                                        $filter .= "))"; 
    817984                                 
    818                         $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    819                         $user_entry = ldap_get_entries($this->ldap, $search); 
     985                                        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     986                                        $user_entry = ldap_get_entries($this->ldap, $search); 
    820987                                 
    821                         for ($j=0; $j<$user_entry['count']; $j++) 
    822                         { 
    823                                 $result['members_info'][$user_entry[$j]['uidnumber'][0]]['uid'] = $user_entry[$j]['uid'][0]; 
    824                                 $result['members_info'][$user_entry[$j]['uidnumber'][0]]['cn'] = $user_entry[$j]['cn'][0]; 
    825                                 $result['members_info'][$user_entry[$j]['uidnumber'][0]]['type'] = $user_entry[$j]['phpgwaccounttype'][0]; 
    826                                 $result['members_info'][$user_entry[$j]['uidnumber'][0]]['mail'] = $user_entry[$j]['mail'][0]; 
    827                                 $result['members'][] = $user_entry[$j]['uidnumber'][0]; 
    828                         } 
    829                 } 
    830  
    831                 // Retira o count do array 
    832                 array_shift($entry[0]['mailforwardingaddress']); 
    833  
    834                 // Checamos e-mails que não fazem parte do expresso. 
    835                 // Criamos um array temporario 
    836                 $tmp_array = array(); 
    837                 foreach ($result['members_info'] as $uid => $user_data) 
    838                 { 
    839                         $tmp_array[] = $user_data['mail']; 
    840                 } 
    841  
    842                 // Vemos a diferença 
    843                 $array_diff = array_diff($entry[0]['mailforwardingaddress'], $tmp_array); 
    844  
    845                 // Incluimos no resultado 
    846                 foreach ($array_diff as $index=>$mailforwardingaddress) 
    847                 { 
    848                         $result['members_info'][$mailforwardingaddress]['uid'] = $mailforwardingaddress; 
    849                         $result['members_info'][$mailforwardingaddress]['cn'] = 'E-Mail nao encontrado'; 
    850                         $result['members_info'][$mailforwardingaddress]['mailforwardingaddress'] = $mailforwardingaddress; 
    851                         $result['members'][] = $mailforwardingaddress; 
    852                 } 
    853                 return $result;  
     988                                        for ($j=0; $j<$user_entry['count']; $j++) 
     989                                        { 
     990                                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['uid'] = $user_entry[$j]['uid'][0]; 
     991                                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['cn'] = $user_entry[$j]['cn'][0]; 
     992                                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['type'] = $user_entry[$j]['phpgwaccounttype'][0]; 
     993                                                $result['members_info'][$user_entry[$j]['uidnumber'][0]]['mail'] = $user_entry[$j]['mail'][0]; 
     994                                                $result['members'][] = $user_entry[$j]['uidnumber'][0]; 
     995                                        } 
     996                                } 
     997 
     998                                // Retira o count do array 
     999                                array_shift($entry[0]['mailforwardingaddress']); 
     1000 
     1001                                // Checamos e-mails que não fazem parte do expresso. 
     1002                                // Criamos um array temporario 
     1003                                $tmp_array = array(); 
     1004                                foreach ($result['members_info'] as $uid => $user_data) 
     1005                                { 
     1006                                        $tmp_array[] = $user_data['mail']; 
     1007                                } 
     1008 
     1009                                // Vemos a diferença 
     1010                                $array_diff = array_diff($entry[0]['mailforwardingaddress'], $tmp_array); 
     1011 
     1012                                // Incluimos no resultado 
     1013                                foreach ($array_diff as $index=>$mailforwardingaddress) 
     1014                                { 
     1015                                        $result['members_info'][$mailforwardingaddress]['uid'] = $mailforwardingaddress; 
     1016                                        $result['members_info'][$mailforwardingaddress]['cn'] = 'E-Mail nao encontrado'; 
     1017                                        $result['members_info'][$mailforwardingaddress]['mailforwardingaddress'] = $mailforwardingaddress; 
     1018                                        $result['members'][] = $mailforwardingaddress; 
     1019                                } 
     1020                                return $result; 
     1021                        } 
     1022                } 
    8541023        }        
    8551024 
    856         function get_maillist_scl_info($uidnumber, $context) 
    857         { 
    858                 $filter="(&(phpgwAccountType=l)(uidNumber=".$uidnumber."))"; 
    859                 $search = ldap_search($this->ldap, $context, $filter); 
    860                 $entry = ldap_get_entries($this->ldap, $search); 
    861  
    862                 //Pega o dn do setor do usuario. 
    863                 $entry[0]['dn'] = strtolower($entry[0]['dn']); 
    864                 $sector_dn_array = explode(",", $entry[0]['dn']); 
    865                 for($i=1; $i<count($sector_dn_array); $i++) 
    866                         $sector_dn .= $sector_dn_array[$i] . ','; 
    867                 //Retira ultimo pipe. 
    868                 $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
    869                  
    870                 $result['dn']                                           = $entry[0]['dn']; 
    871                 $result['context']                                      = $sector_dn; 
    872                 $result['uidnumber']                            = $entry[0]['uidnumber'][0]; 
    873                 $result['uid']                                          = $entry[0]['uid'][0]; 
    874                 $result['cn']                                           = $entry[0]['cn'][0]; 
    875                 $result['mail']                                         = $entry[0]['mail'][0]; 
    876                 $result['accountStatus']                        = $entry[0]['accountstatus'][0]; 
    877                 $result['phpgwAccountVisible']          = $entry[0]['phpgwaccountvisible'][0]; 
    878                 $result['accountRestrictive']           = $entry[0]['accountrestrictive'][0]; 
    879                 $result['participantCanSendMail']       = $entry[0]['participantcansendmail'][0]; 
    880                  
    881                 //Senders 
    882                 for ($i=0; $i<$entry[0]['mailsenderaddress']['count']; $i++) 
    883                 { 
    884                         $justthese = array("cn", "uidnumber", "uid", "mail"); 
    885                         $filter="(&(phpgwAccountType=u)(mail=".$entry[0]['mailsenderaddress'][$i]."))"; 
    886                         $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    887                         $user_entry = ldap_get_entries($this->ldap, $search); 
    888                          
    889                         $result['senders_info'][$user_entry[0]['uidnumber'][0]]['uid'] = $user_entry[0]['uid'][0]; 
    890                         $result['senders_info'][$user_entry[0]['uidnumber'][0]]['cn'] = $user_entry[0]['cn'][0]; 
    891                         $result['senders_info'][$user_entry[0]['uidnumber'][0]]['mail'] = $user_entry[0]['mail'][0]; 
    892                         $result['members'][] = $user_entry[0]['uidnumber'][0]; 
    893                 } 
    894  
    895                 return $result; 
     1025        function get_maillist_scl_info($uidnumber) 
     1026        { 
     1027                foreach ($this->manager_contexts as $index=>$context) 
     1028                { 
     1029                        $filter="(&(phpgwAccountType=l)(uidNumber=$uidnumber))"; 
     1030                        $search = ldap_search($this->ldap, $context, $filter); 
     1031                        $entry = ldap_get_entries($this->ldap, $search); 
     1032 
     1033                        if ($entry['count']) 
     1034                        { 
     1035                                //Pega o dn do setor do usuario. 
     1036                                $entry[0]['dn'] = strtolower($entry[0]['dn']); 
     1037                                $sector_dn_array = explode(",", $entry[0]['dn']); 
     1038                                for($i=1; $i<count($sector_dn_array); $i++) 
     1039                                        $sector_dn .= $sector_dn_array[$i] . ','; 
     1040                                //Retira ultimo pipe. 
     1041                                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
     1042                 
     1043                                $result['dn']                                           = $entry[0]['dn']; 
     1044                                $result['context']                                      = $sector_dn; 
     1045                                $result['uidnumber']                            = $entry[0]['uidnumber'][0]; 
     1046                                $result['uid']                                          = $entry[0]['uid'][0]; 
     1047                                $result['cn']                                           = $entry[0]['cn'][0]; 
     1048                                $result['mail']                                         = $entry[0]['mail'][0]; 
     1049                                $result['accountStatus']                        = $entry[0]['accountstatus'][0]; 
     1050                                $result['phpgwAccountVisible']          = $entry[0]['phpgwaccountvisible'][0]; 
     1051                                $result['accountRestrictive']           = $entry[0]['accountrestrictive'][0]; 
     1052                                $result['participantCanSendMail']       = $entry[0]['participantcansendmail'][0]; 
     1053                 
     1054                                //Senders 
     1055                                for ($i=0; $i<$entry[0]['mailsenderaddress']['count']; $i++) 
     1056                                { 
     1057                                        $justthese = array("cn", "uidnumber", "uid", "mail"); 
     1058                                        $filter="(&(phpgwAccountType=u)(mail=".$entry[0]['mailsenderaddress'][$i]."))"; 
     1059                                        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     1060                                        $user_entry = ldap_get_entries($this->ldap, $search); 
     1061                         
     1062                                        $result['senders_info'][$user_entry[0]['uidnumber'][0]]['uid'] = $user_entry[0]['uid'][0]; 
     1063                                        $result['senders_info'][$user_entry[0]['uidnumber'][0]]['cn'] = $user_entry[0]['cn'][0]; 
     1064                                        $result['senders_info'][$user_entry[0]['uidnumber'][0]]['mail'] = $user_entry[0]['mail'][0]; 
     1065                                        $result['members'][] = $user_entry[0]['uidnumber'][0]; 
     1066                                } 
     1067                                return $result; 
     1068                        } 
     1069                } 
    8961070        }        
    8971071 
     
    9091083        } 
    9101084 
    911         function gidnumbers2cn($gidnumbers, $context) 
     1085        function gidnumbers2cn($gidnumbers) 
    9121086        { 
    9131087                $result = array(); 
     
    9271101                                        $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0]; 
    9281102                                $result['groups_info'][$i]['gidnumber'] = $gidnumber; 
    929                                  
    930                                 if (!strpos(strtolower($entry[0]['dn']), strtolower($context))) 
    931                                         $result['groups_info'][$i]['group_disabled'] = 'true'; 
    932                                 else 
    933                                         $result['groups_info'][$i]['group_disabled'] = 'false'; 
    934                                  
     1103                         
     1104                                /* o gerente pode excluir um grupo de um usuario onde este grupo esta em outra OU ? */ 
     1105                                /* é o mesmo que o manager editar um grupo de outra OU */ 
     1106                                $result['groups_info'][$i]['group_disabled'] = 'true'; 
     1107                                foreach ($this->manager_contexts as $index=>$context) 
     1108                                { 
     1109                                        if (strpos(strtolower($entry[0]['dn']), strtolower($context))) 
     1110                                        { 
     1111                                                $result['groups_info'][$i]['group_disabled'] = 'false'; 
     1112                                        } 
     1113                                } 
     1114 
    9351115                                $i++; 
    9361116                        } 
     
    10251205        function delete_user($user_info) 
    10261206        { 
     1207                // Verifica acesso do gerente (OU) ao tentar deletar um usuário. 
     1208                $manager_access = false; 
     1209                foreach ($this->manager_contexts as $index=>$context) 
     1210                { 
     1211                        if ( (strpos(strtolower($user_info['context']), strtolower($context))) || (strtolower($user_info['context']) == strtolower($context)) ) 
     1212                        { 
     1213                                $manager_access = true; 
     1214                                break; 
     1215                        } 
     1216                } 
     1217                if (!$manager_access) 
     1218                { 
     1219                        $return['status'] = false; 
     1220                        $return['msg'] .= 'Você não tem acesso para deletar este usuário.'; 
     1221                        return $return; 
     1222                } 
     1223                 
    10271224                $return['status'] = true; 
    10281225                 
     
    11201317        } 
    11211318 
     1319        function check_access_to_renamed($uid) 
     1320        { 
     1321                $justthese = array("dn"); 
     1322                $filter="(&(phpgwAccountType=u)(uid=$uid))"; 
     1323                 
     1324                foreach ($this->manager_contexts as $index=>$context) 
     1325                { 
     1326                        $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     1327                        $entry = ldap_get_entries($this->ldap, $search); 
     1328                        if ($entry['count']) 
     1329                                return true; 
     1330                } 
     1331            return false; 
     1332        } 
    11221333         
    11231334        function rename_uid($uid, $new_uid) 
     
    11911402                return $return; 
    11921403        } 
    1193 /* 
    1194         function rename_departmentnumber($old_dp, $new_dp) 
    1195         { 
    1196                 $return['status'] = true; 
    1197                  
    1198                 $justthese = array("dn"); 
    1199                 $filter="(&(phpgwAccountType=u)(departmentnumber=".$old_dp."))"; 
    1200                 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    1201             $entry = ldap_get_entries($this->ldap, $search); 
    1202                  
    1203             for ($i=0; $i<=$entry['count']; $i++) 
    1204             { 
    1205                 $dn = strtolower($entry[$i]['dn']); 
    1206                 $ldap_mod_replace = array(); 
    1207                 $ldap_mod_replace['departmentnumber'] = $new_dp; 
    1208                 @ldap_mod_replace ( $this->ldap, $dn,  $ldap_mod_replace); 
    1209                         //if (!@ldap_mod_replace ( $this->ldap, $dn,  $ldap_mod_replace)) 
    1210                         //{ 
    1211                         //      $return['status'] = false; 
    1212                         //      $return['msg'] .= 'Erro em ldap_funcitons->rename_departmentnumber: ' . ldap_error($this->ldap); 
    1213                         //} 
    1214             } 
    1215                 return $return; 
    1216         } 
    1217 */ 
    1218 /* 
    1219         function get_sambadomains($context) 
    1220         { 
    1221                 $return['status'] = true; 
    1222                 $return['sambaDomains'] = array(); 
    1223                  
    1224                 $justthese = array("sambaSID","sambaDomainName"); 
    1225                 $filter="(objectClass=sambaDomain)"; 
    1226                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    1227             $entry = ldap_get_entries($this->ldap, $search); 
    1228                  
    1229             for ($i=0; $i<$entry['count']; $i++) 
    1230             { 
    1231                         $return['sambaDomains'][$i]['samba_domain_sid'] = $entry[$i]['sambasid'][0]; 
    1232                         $return['sambaDomains'][$i]['samba_domain_name'] = $entry[$i]['sambadomainname'][0]; 
    1233                         $return['sambaDomains'][$i]['samba_domain_dn'] = $entry[$i]['dn']; 
    1234             } 
    1235              
    1236                 return $return; 
    1237         } 
    1238 */ 
    1239         function exist_sambadomains($context, $sambaDomainName) 
     1404         
     1405        function exist_sambadomains($contexts, $sambaDomainName) 
    12401406        { 
    12411407                $justthese = array("dn"); 
    12421408                $filter="(&(objectClass=sambaDomain)(sambaDomainName=$sambaDomainName))"; 
    1243                 $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    1244             $entry = ldap_get_entries($this->ldap, $search); 
     1409                 
     1410                foreach ($contexts as $index=>$context) 
     1411                { 
     1412                        $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     1413                    $entry = ldap_get_entries($this->ldap, $search); 
    12451414             
    1246                 if ($entry['count']) 
    1247                         return true; 
    1248                 else 
    1249                         return false; 
     1415                        if ($entry['count']) 
     1416                                return true; 
     1417                } 
     1418                return false; 
    12501419        } 
    12511420         
Note: See TracChangeset for help on using the changeset viewer.