Changeset 6553 for trunk/expressoAdmin1_2/inc/class.functions.inc.php
- Timestamp:
- 06/20/12 12:31:51 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/inc/class.functions.inc.php
r5934 r6553 464 464 $sectors_info = $s->get_organizations($context, $selected, $referral, $show_invisible_ou, $master); 465 465 return $sectors_info; 466 } 467 466 } 467 468 /* 469 Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto 470 e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas 471 no método admin.uisectors.list_sectors. 472 */ 473 function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) { 474 475 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 476 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 477 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 478 479 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 480 481 if ($referral) 482 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 483 else 484 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 485 486 ldap_bind($ldap_conn,$dn,$passwd); 487 488 $justthese = array("dn","diskQuota","usersQuota","actualDiskQuota"); 489 $filter = "(ou=*)"; 490 foreach ($contexts as $context) { 491 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 492 493 ldap_sort($ldap_conn, $search, "ou"); 494 $info = ldap_get_entries($ldap_conn, $search); 495 ldap_close($ldap_conn); 496 497 // Retiro o count do array info e inverto o array para ordenaçãoo. 498 for ($i=0; $i<$info["count"]; $i++) 499 { 500 $dn = $info[$i]["dn"]; 501 502 // Necessário, pq em uma busca com ldapsearch ou=*, traz tb o próprio ou. 503 //if (strtolower($dn) == $context) 504 //continue; 505 506 $array_dn = ldap_explode_dn ( $dn, 1 ); 507 508 $array_dn_reverse = array_reverse ( $array_dn, true ); 509 510 // Retirar o indice count do array. 511 array_pop ( $array_dn_reverse ); 512 513 $inverted_dn[implode ( "#", $array_dn_reverse )] = $info[$i]; 514 } 515 } 516 // Ordenação por chave 517 ksort($inverted_dn); 518 519 // Construção do select 520 $level = 0; 521 $options = array(); 522 foreach ($inverted_dn as $dn=>$info_ou) 523 { 524 $display = ''; 525 $info_retorno = array(); 526 $array_dn_reverse = explode ( "#", $dn ); 527 $array_dn = array_reverse ( $array_dn_reverse, true ); 528 529 $level = count( $array_dn ) - (int)(count(explode(",", $GLOBALS['phpgw_info']['server']['ldap_context'])) + 1); 530 531 if ($level == 0) 532 $display .= '+'; 533 else 534 { 535 for ($i=0; $i<$level; $i++) 536 $display .= '---'; 537 } 538 539 reset ( $array_dn ); 540 $display .= ' ' . (current ( $array_dn ) ); 541 542 $info_retorno['display'] = $display; 543 $info_retorno['dn'] = $info_ou['dn']; 544 $info_retorno['diskquota'] = $info_ou['diskquota'][0]; 545 $info_retorno['usersquota'] = $info_ou['usersquota'][0]; 546 // $info_retorno['actualdiskquota'] = round($this->get_actual_disk_usage($info_ou['dn']),2);//$info_ou['actualdiskquota'][0]; 547 // $info_retorno['actualnumusers'] = $this->get_num_users($info_ou['dn']); 548 549 array_push($options,$info_retorno); 550 551 } 552 return $options; 553 } 554 555 function get_info($context, $referral = false) { 556 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 557 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 558 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 559 560 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 561 562 if ($referral) 563 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 564 else 565 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 566 567 ldap_bind($ldap_conn,$dn,$passwd); 568 569 $filter="(objectClass=organizationalUnit)"; 570 $search=ldap_search($ldap_conn, $context, $filter); 571 $result = ldap_get_entries($ldap_conn, $search); 572 return $result; 573 574 } 575 576 function get_num_users($context,$selected='', $referral=false, $show_invisible_ou=true) { 577 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 578 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 579 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 580 581 ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 582 583 if ($referral) 584 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 585 else 586 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 587 588 ldap_bind($ldap_conn,$dn,$passwd); 589 590 $justthese = array("dn"); 591 $filter = "(objectClass=inetOrgPerson)"; 592 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 593 594 $retorno = ldap_count_entries($ldap_conn, $search); 595 ldap_close($ldap_conn); 596 597 return $retorno; 598 } 599 600 //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false. 601 function existe_quota_usuario($setor) { 602 $num_users = $this->get_num_users($setor['dn']); 603 //return $num_users . " --- " . $setor['usersquota'][0] 604 if(($num_users>=$setor['usersquota'][0]) && ($setor['usersquota'][0]!=-1)) { 605 return false; 606 } 607 return true; 608 } 609 610 //Checa se existe quota em disco para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false. 611 function existe_quota_disco($setor,$quota_novo_usuario) { 612 settype($quota_novo_usuario,"float"); 613 $quota_novo_usuario /= 1024; //A quota vï¿œm da interface em megabytes, deve se tornar gigabyte. 614 615 $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; 616 if(( $nova_quota >= $setor['diskquota'][0] ) && ($setor['diskquota'][0] != -1)) { 617 return false; 618 } 619 return true; 620 } 621 622 // Soma as quotas de todos os usuï¿œrios daquele contexto. 623 function get_actual_disk_usage($context) { 624 $quota_usada=0; 625 $contexts = array($context); 626 $usuarios = $this->get_list('accounts', '', $contexts); 627 628 $imap_functions = new imap_functions(); 629 foreach($usuarios as $usuario) { 630 $temp = $imap_functions->get_user_info($usuario['account_lid']); 631 if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta... 632 $quota_usada += ($temp['mailquota'] / 1024); 633 } 634 return $quota_usada; 635 } 636 637 468 638 function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 469 639 {
Note: See TracChangeset
for help on using the changeset viewer.