Ignore:
Timestamp:
03/22/11 10:26:07 (13 years ago)
Author:
eduardoalex
Message:

Ticket #1250 - Adição do controle de quotas por OU

Location:
branches/2.2/expressoAdmin1_2/inc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/expressoAdmin1_2/inc/class.bosectors.inc.php

    r3850 r3887  
    8686                        } 
    8787                         
     88                        if( isset($_POST['file_manager_quota']) ) 
     89                        { 
     90                                $controlled_by_quota = true; 
     91                                $sector_info['fileManagerQuota'] = (trim($_POST['file_manager_quota']) != "") ? $_POST['file_manager_quota'] : "0"; 
     92                        } 
     93                         
    8894                        if($controlled_by_quota) 
    8995                                $sector_info['objectClass'][]   = 'phpgwQuotaControlled'; 
     
    136142                         
    137143                        //Modifica o conteúdo das cotas. 
    138                         if( (isset($_POST['disk_quota']) ) && (isset($_POST['users_quota']) ) ) { //se for passado alguma coisa, lógico 
     144                        if( (isset($_POST['disk_quota']) )  
     145                                || (isset($_POST['users_quota']) )  
     146                                || (isset($_POST['file_manager_quota']) )) { //se for passado alguma coisa, lógico 
    139147                                if(!$controlled_by_quota) { 
    140148                                        $ldap_mod_add['objectClass'][] = 'phpgwQuotaControlled'; 
     
    145153                                $ldap_mod_replace['diskQuota'] = $_POST['disk_quota']; 
    146154                                $ldap_mod_replace['usersQuota'] = $_POST['users_quota']; 
     155                                $ldap_mod_replace['fileManagerQuota'] = $_POST['file_manager_quota']; 
    147156                                $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace); 
    148157                        } 
  • branches/2.2/expressoAdmin1_2/inc/class.functions.inc.php

    r3549 r3887  
    683683                } 
    684684                 
    685                 //Checa se existe quota em disco para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false. 
     685                //Checa se existe quota em disco para mais um usuário no setor... se existir retorna true, senão false. 
    686686                function existe_quota_disco($setor,$quota_novo_usuario) { 
    687687                        settype($quota_novo_usuario,"float");            
    688                         $quota_novo_usuario /= 1024; //A quota vï¿œm da interface em megabytes, deve se tornar gigabyte. 
     688                        $quota_novo_usuario /= 1024; //A quota vêm da interface em megabytes, deve se tornar gigabyte. 
    689689 
    690690                        $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; 
     
    695695                } 
    696696                 
     697                function has_file_disk_quota($home_directory,$quota) { 
     698                        $uid = substr($home_directory,strpos($home_directory,"/home/")+6); 
     699                        $context = $this->get_ou_context_from_uid($uid); 
     700                         
     701                        $sector = $this->get_info($context); 
     702                        $new_quota = $this->get_actual_disk_usage($sector[0]['dn'],'FileManager',$uid) + $quota; 
     703                        if(( $new_quota > $sector[0]['filemanagerquota'][0] ) && ($sector[0]['filemanagerquota'][0] != -1)) { 
     704                                return false; 
     705                        } 
     706                        return true; 
     707                } 
     708                 
     709                function get_ou_context_from_uid($uid,$referral = false) { 
     710                        $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
     711                        $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
     712                        $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
     713                        $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 
     714                         
     715                        ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
     716                         
     717                        if ($referral) 
     718                                ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
     719                        else 
     720                                ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
     721                         
     722                        ldap_bind($ldap_conn,$dn,$passwd); 
     723                        $filter="(&(objectClass=phpgwAccount)(uid=$uid))"; 
     724                        $search=ldap_search($ldap_conn, $context, $filter); 
     725                        $result = ldap_get_entries($ldap_conn, $search); 
     726                         
     727                        if($result['count']>0){ 
     728                                $dn = $result[0]['dn']; 
     729                                return substr($dn,strpos($dn,$uid.",")+strlen($uid.",")); 
     730                        } 
     731                        else 
     732                                return false; 
     733                } 
     734                 
    697735                // Soma as quotas de todos os usuï¿œrios daquele contexto. 
    698                 function get_actual_disk_usage($context) { 
     736                function get_actual_disk_usage($context,$app='expressoMail',$user=null) { 
    699737                        $quota_usada=0; 
    700738                        $contexts = array($context); 
    701739                        $usuarios = $this->get_list('accounts', '', $contexts); 
    702740 
    703                         $imap_functions = new imap_functions(); 
    704                         foreach($usuarios as $usuario) { 
    705                                 $temp = $imap_functions->get_user_info($usuario['account_lid']); 
    706                                 if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta... 
    707                                         $quota_usada += ($temp['mailquota'] / 1024); 
     741                        if($app=='expressoMail') { 
     742                                $imap_functions = new imap_functions();  
     743                                foreach($usuarios as $usuario) { 
     744                                        $temp = $imap_functions->get_user_info($usuario['account_lid']); 
     745                                        if($temp['mailquota'] != -1) //Usuï¿œrio sem cota nï¿œo conta... 
     746                                                $quota_usada += ($temp['mailquota'] / 1024); 
     747                                } 
     748                        } 
     749                        else if($app=='FileManager'){ //FileManager 
     750                                $uids = ''; 
     751                                foreach($usuarios as $usuario) { 
     752                                        if($usuario['account_lid']!=$user) 
     753                                                $uids.="'/home/".$usuario['account_lid']."',"; 
     754                                } 
     755                                $uids.="'a'"; //hack the last comma 
     756                                $query = "select 1 as num,sum(quota_size) as quota from phpgw_vfs_quota where directory in ($uids) group by num"; 
     757                                $GLOBALS['phpgw']->db->query($query); 
     758                                if($GLOBALS['phpgw']->db->next_record()) 
     759                                { 
     760                                        $result = $GLOBALS['phpgw']->db->row(); 
     761                                        $quota_usada = $result["quota"]; 
     762                                }                        
    708763                        } 
    709764                        return $quota_usada; 
  • branches/2.2/expressoAdmin1_2/inc/class.uisectors.inc.php

    r3359 r3887  
    196196                                'disk_quota'        => $_POST['disk_quota'], 
    197197                                'users_quota'       => $_POST['users_quota'], 
     198                                'file_manager_quota'=> $_POST['file_manager_quota'], 
    198199                                'manager_org'           => $combo_manager_org, 
    199200                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
     
    251252                                $sector_disk_quota = $sector_info[0]['diskquota'][0]; 
    252253                                $sector_users_quota = $sector_info[0]['usersquota'][0]; 
     254                                $sector_file_manager_quota = $sector_info[0]['filemanagerquota'][0]; 
    253255                                $sector_associated_domain = $sector_info[0]['associateddomain'][0]; 
    254256                                $_POST['sector_visible'] = $sector_info[0]['phpgwaccountvisible'][0]; 
     
    267269                                'disk_quota'        => $_POST['disk_quota'] == '' ? $sector_disk_quota : $_POST['disk_quota'], 
    268270                                'users_quota'       => $_POST['users_quota'] == '' ? $sector_users_quota : $_POST['users_quota'], 
     271                                'file_manager_quota'=> $_POST['file_manager_quota'] == '' ? $sector_file_manager_quota : $_POST['file_manager_quota'], 
    269272                                'lang_add'                      => lang('Add'), 
    270273                                'disable'                       => 'disabled', 
Note: See TracChangeset for help on using the changeset viewer.