Changeset 64 for trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
- Timestamp:
- 09/05/07 11:18:58 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
r63 r64 10 10 var $current_config; 11 11 var $functions; 12 var $manager_contexts; 12 13 13 14 function ldap_functions(){ … … 16 17 $common = new common(); 17 18 $this->ldap = $common->ldapConnect(); 19 18 20 $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']; 19 23 } 20 24 21 25 function validate_fields($params) 22 26 { 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 23 55 $result['status'] = true; 56 24 57 $params = unserialize($params['attributes']); 25 58 $type = $params['type']; 26 $context = $GLOBALS['phpgw_info']['server']['ldap_context'];27 59 $uid = $params['uid']; 28 60 $mail = $params['mail']; … … 38 70 if (($type == 'create_user') || ($type == 'rename_user')) 39 71 { 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 } 42 86 $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); 45 89 if ($count_entries > 0) 46 90 { 47 91 $result['status'] = false; 48 $result['msg'] = 'LOGIN já est a sendo usado.';92 $result['msg'] = 'LOGIN já está sendo utilizado.'; 49 93 return $result; 50 94 } … … 53 97 $filter = "(&(phpgwAccountType=g)(cn=$uid))"; 54 98 $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); 57 101 if ($count_entries > 0) 58 102 { … … 61 105 return $result; 62 106 } 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']; 74 117 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) 80 122 { 81 123 $result['status'] = false; 82 $result['msg'] = ' LOGIN já esta sendo usado por outro usuário em outraorganização.';124 $result['msg'] = 'Novo login sem organização.'; 83 125 return $result; 84 126 } 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); 85 156 } 86 157 } … … 94 165 $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mail)(mailalternateaddress=$mail)))"; 95 166 $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); 98 169 if ($entries['count'] == 1){ 99 170 if ($entries[0]['uid'][0] != $uid){ 100 171 $result['status'] = false; 101 172 $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); 103 174 return $result; 104 175 } … … 106 177 else if ($entries['count'] > 1){ 107 178 $result['status'] = false; 108 $result['msg'] = 'E-MAIL está sendo usado por de2 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); 110 181 return $result; 111 182 } … … 114 185 $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mailalternateaddress)(mailalternateaddress=$mailalternateaddress)))"; 115 186 $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); 118 189 if ($entries['count'] == 1){ 119 190 if ($entries[0]['uid'][0] != $uid){ 120 191 $result['status'] = false; 121 192 $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); 123 194 return $result; 124 195 } … … 135 206 function validate_fields_group($params) 136 207 { 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 138 236 $cn = $params['cn']; 139 237 $result['status'] = true; … … 149 247 $filter = "(&(phpgwAccountType=g)(cn=$cn))"; 150 248 $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); 153 251 if ($count_entries > 0) 154 252 { … … 161 259 $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uid=$cn))"; 162 260 $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); 165 263 if ($count_entries > 0) 166 264 { … … 175 273 function validate_fields_maillist($params) 176 274 { 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 178 303 $uid = $params['uid']; 179 304 $mail = $params['mail']; … … 190 315 $filter = "(&(phpgwAccountType=l)(uid=$uid))"; 191 316 $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); 194 319 if ($count_entries > 0) 195 320 { … … 203 328 $filter = "(&(|(phpgwAccountType=u)(phpgwAccountType=l))(|(mail=$mail)(mailalternateaddress=$mail)))"; 204 329 $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); 207 332 if ($count_entries > 0) 208 333 { … … 610 735 } 611 736 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 673 828 $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) 679 850 { 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']; 684 854 } 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 } 779 942 } 780 943 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"); 807 974 808 // Montagem dinamica do filtro809 $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 .= "))"; 817 984 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); 820 987 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 } 854 1023 } 855 1024 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 } 896 1070 } 897 1071 … … 909 1083 } 910 1084 911 function gidnumbers2cn($gidnumbers , $context)1085 function gidnumbers2cn($gidnumbers) 912 1086 { 913 1087 $result = array(); … … 927 1101 $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0]; 928 1102 $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 935 1115 $i++; 936 1116 } … … 1025 1205 function delete_user($user_info) 1026 1206 { 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 1027 1224 $return['status'] = true; 1028 1225 … … 1120 1317 } 1121 1318 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 } 1122 1333 1123 1334 function rename_uid($uid, $new_uid) … … 1191 1402 return $return; 1192 1403 } 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) 1240 1406 { 1241 1407 $justthese = array("dn"); 1242 1408 $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); 1245 1414 1246 if ($entry['count'])1247 return true;1248 else1249 1415 if ($entry['count']) 1416 return true; 1417 } 1418 return false; 1250 1419 } 1251 1420
Note: See TracChangeset
for help on using the changeset viewer.