Changeset 1516 for trunk/expressoAdmin1_2/inc/class.functions.inc.php
- Timestamp:
- 10/20/09 10:46:34 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/inc/class.functions.inc.php
r597 r1516 522 522 $sectors_info = $s->get_organizations($context, $selected, $referral, $show_invisible_ou, $master); 523 523 return $sectors_info; 524 } 525 524 } 525 526 /* 527 Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto 528 e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas 529 no método admin.uisectors.list_sectors. 530 */ 531 function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) { 532 533 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 534 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 535 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 536 537 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 538 539 if ($referral) 540 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 541 else 542 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 543 544 ldap_bind($ldap_conn,$dn,$passwd); 545 546 $justthese = array("dn","diskQuota","usersQuota","actualDiskQuota"); 547 $filter = "(ou=*)"; 548 foreach ($contexts as $context) { 549 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 550 551 ldap_sort($ldap_conn, $search, "ou"); 552 $info = ldap_get_entries($ldap_conn, $search); 553 ldap_close($ldap_conn); 554 555 // Retiro o count do array info e inverto o array para ordenaçãoo. 556 for ($i=0; $i<$info["count"]; $i++) 557 { 558 $dn = $info[$i]["dn"]; 559 560 // Necessário, pq em uma busca com ldapsearch ou=*, traz tb o próprio ou. 561 //if (strtolower($dn) == $context) 562 //continue; 563 564 $array_dn = ldap_explode_dn ( $dn, 1 ); 565 566 $array_dn_reverse = array_reverse ( $array_dn, true ); 567 568 // Retirar o indice count do array. 569 array_pop ( $array_dn_reverse ); 570 571 $inverted_dn[implode ( "#", $array_dn_reverse )] = $info[$i]; 572 } 573 } 574 // Ordenação por chave 575 ksort($inverted_dn); 576 577 // Construção do select 578 $level = 0; 579 $options = array(); 580 foreach ($inverted_dn as $dn=>$info_ou) 581 { 582 $display = ''; 583 $info_retorno = array(); 584 $array_dn_reverse = explode ( "#", $dn ); 585 $array_dn = array_reverse ( $array_dn_reverse, true ); 586 587 $level = count( $array_dn ) - (int)(count(explode(",", $GLOBALS['phpgw_info']['server']['ldap_context'])) + 1); 588 589 if ($level == 0) 590 $display .= '+'; 591 else 592 { 593 for ($i=0; $i<$level; $i++) 594 $display .= '---'; 595 } 596 597 reset ( $array_dn ); 598 $display .= ' ' . (current ( $array_dn ) ); 599 600 $info_retorno['display'] = $display; 601 $info_retorno['dn'] = $info_ou['dn']; 602 $info_retorno['diskquota'] = $info_ou['diskquota'][0]; 603 $info_retorno['usersquota'] = $info_ou['usersquota'][0]; 604 // $info_retorno['actualdiskquota'] = round($this->get_actual_disk_usage($info_ou['dn']),2);//$info_ou['actualdiskquota'][0]; 605 // $info_retorno['actualnumusers'] = $this->get_num_users($info_ou['dn']); 606 607 array_push($options,$info_retorno); 608 609 } 610 return $options; 611 } 612 613 function get_info($context, $referral = false) { 614 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 615 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 616 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 617 618 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 619 620 if ($referral) 621 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 622 else 623 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 624 625 ldap_bind($ldap_conn,$dn,$passwd); 626 627 $filter="(objectClass=organizationalUnit)"; 628 $search=ldap_search($ldap_conn, $context, $filter); 629 $result = ldap_get_entries($ldap_conn, $search); 630 return $result; 631 632 } 633 634 function get_num_users($context,$selected='', $referral=false, $show_invisible_ou=true) { 635 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 636 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 637 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 638 639 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 640 641 if ($referral) 642 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 643 else 644 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 645 646 ldap_bind($ldap_conn,$dn,$passwd); 647 648 $justthese = array("dn"); 649 $filter = "(objectClass=inetOrgPerson)"; 650 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 651 652 $retorno = ldap_count_entries($ldap_conn, $search); 653 ldap_close($ldap_conn); 654 655 return $retorno; 656 } 657 658 //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false. 659 function existe_quota_usuario($setor) { 660 $num_users = $this->get_num_users($setor['dn']); 661 //return $num_users . " --- " . $setor['usersquota'][0] 662 if(($num_users>=$setor['usersquota'][0]) && ($setor['usersquota'][0]!=-1)) { 663 return false; 664 } 665 return true; 666 } 667 668 //Checa se existe quota em disco para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false. 669 function existe_quota_disco($setor,$quota_novo_usuario) { 670 settype($quota_novo_usuario,"float"); 671 $quota_novo_usuario /= 1024; //A quota vï¿œm da interface em megabytes, deve se tornar gigabyte. 672 673 $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; 674 if(( $nova_quota >= $setor['diskquota'][0] ) && ($setor['diskquota'][0] != -1)) { 675 return false; 676 } 677 return true; 678 } 679 680 // Soma as quotas de todos os usuï¿œrios daquele contexto. 681 function get_actual_disk_usage($context) { 682 $quota_usada=0; 683 $contexts = array($context); 684 $usuarios = $this->get_list('accounts', '', $contexts); 685 686 $imap_functions = new imap_functions(); 687 foreach($usuarios as $usuario) { 688 $temp = $imap_functions->get_user_info($usuario['account_lid']); 689 if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta... 690 $quota_usada += ($temp['mailquota'] / 1024); 691 } 692 return $quota_usada; 693 } 694 526 695 function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 527 696 {
Note: See TracChangeset
for help on using the changeset viewer.