Ignore:
Timestamp:
11/03/11 13:24:14 (12 years ago)
Author:
wmerlotto
Message:

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus, do modulo ExpressoAdmin.

File:
1 edited

Legend:

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

    r3887 r5133  
    4343                function check_acl($account_lid, $access) 
    4444                { 
    45                         $acl = $this->read_acl($account_lid); 
    46                         $array_acl = $this->make_array_acl($acl['acl']); 
     45                         
     46 
     47                        $array_acl =  $this->db_functions->read_acl($account_lid); 
    4748                         
    4849                        switch($access) 
    4950                        { 
    5051                                case list_users: 
    51                                         if ($array_acl[acl_add_users] || $array_acl[acl_edit_users] || $array_acl[acl_delete_users] || $array_acl[acl_change_users_password] || $array_acl[acl_change_users_quote] || $array_acl[acl_edit_sambausers_attributes] || $array_acl[acl_view_users] || $array_acl[acl_manipulate_corporative_information] || $array_acl[acl_edit_users_phonenumber] ) 
     52                                        if ($array_acl['acl_add_users'] || $array_acl['acl_edit_users'] || $array_acl['acl_delete_users'] || $array_acl['acl_change_users_password'] || $array_acl['acl_change_users_quote'] || $array_acl['acl_edit_sambausers_attributes'] || $array_acl['acl_view_users'] || $array_acl['acl_manipulate_corporative_information'] || $array_acl['acl_edit_users_phonenumber'] ) 
    5253                                                return true; 
    5354                                        break; 
    5455                                case list_groups: 
    55                                         if ($array_acl[acl_add_groups] || $array_acl[acl_edit_groups] || $array_acl[acl_delete_groups]) 
     56                                        if ($array_acl['acl_add_groups'] || $array_acl['acl_edit_groups'] || $array_acl['acl_delete_groups']) 
    5657                                                return true; 
    5758                                        break; 
    5859                                case list_maillists: 
    59                                         if ($array_acl[acl_add_maillists] || $array_acl[acl_edit_maillists] || $array_acl[acl_delete_maillists]) 
     60                                        if ($array_acl['acl_add_maillists'] || $array_acl['acl_edit_maillists'] || $array_acl['acl_delete_maillists']) 
    6061                                                return true; 
    6162                                        break; 
    6263                                case list_sectors: 
    63                                         if ($array_acl[acl_create_sectors] || $array_acl[acl_edit_sectors] || $array_acl[acl_delete_sectors]) 
     64                                        if ($array_acl['acl_create_sectors'] || $array_acl['acl_edit_sectors'] || $array_acl['acl_delete_sectors']) 
    6465                                                return true; 
    6566                                        break; 
    6667                                case list_computers: 
    67                                         if ($array_acl[acl_create_computers] || $array_acl[acl_edit_computers] || $array_acl[acl_delete_computers]) 
     68                                        if ($array_acl['acl_create_computers'] || $array_acl['acl_edit_computers'] || $array_acl['acl_delete_computers']) 
    6869                                                return true; 
    6970                                        break; 
    7071 
    7172                                case display_groups: 
    72                                         if ( $array_acl[acl_edit_users] || $array_acl[acl_view_users] || ($array_acl[acl_edit_sambausers_attributes] && ($this->current_config['expressoAdmin_samba_support'] == 'true')) ) 
     73                                        if ( $array_acl['acl_edit_users'] || $array_acl['acl_view_users'] || ($array_acl['acl_edit_sambausers_attributes'] && ($this->current_config['expressoAdmin_samba_support'] == 'true')) ) 
    7374                                                return true; 
    7475                                        break; 
    7576                                case display_emailconfig: 
    76                                         if ($array_acl[acl_edit_users] || $array_acl[acl_view_users]) 
     77                                        if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 
    7778                                                return true; 
    7879                                        break; 
    7980                                case display_applications: 
    80                                         if ($array_acl[acl_edit_users] || $array_acl[acl_view_users]) 
     81                                        if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 
    8182                                                return true; 
    8283                                        break; 
    8384                                case display_emaillists: 
    84                                         if ($array_acl[acl_edit_users] || $array_acl[acl_view_users]) 
     85                                        if ($array_acl['acl_edit_users'] || $array_acl['acl_view_users']) 
    8586                                                return true; 
    8687                                        break; 
    8788 
    8889                                case list_institutional_accounts: 
    89                                         if ($array_acl[acl_add_institutional_accounts] || $array_acl[acl_edit_institutional_accounts] || $array_acl[acl_delete_institutional_accounts]) 
     90                                        if ($array_acl['acl_add_institutional_accounts'] || $array_acl['acl_edit_institutional_accounts'] || $array_acl['acl_delete_institutional_accounts']) 
    9091                                                return true; 
    9192                                        break; 
    9293                                case list_shared_accounts: 
    93                                         if ($array_acl[acl_add_shared_accounts] || $array_acl[acl_edit_shared_accounts] || $array_acl[acl_delete_shared_accounts]) 
    94                                                 return true; 
    95                                         break; 
    96  
     94                                        if ($array_acl['acl_add_shared_accounts'] || $array_acl['acl_edit_shared_accounts'] || $array_acl['acl_delete_shared_accounts']) 
     95                                                return true; 
     96                                        break; 
     97                case configurations: 
     98                                        if ($array_acl['acl_active_blocking_sending_email_to_shared_accounts'] || $array_acl['acl_add_blocking_sending_email_to_shared_accounts_exception'] || $array_acl['acl_edit_and_remove_blocking_sending_email_to_shared_accounts_exception'] || $array_acl['acl_edit_maximum_number_of_recipients_generally'] || $array_acl['acl_add_maximum_number_of_recipients_by_user'] || $array_acl['acl_edit_and_remove_maximum_number_of_recipients_by_user'] || $array_acl['acl_add_maximum_number_of_recipients_by_group'] || $array_acl['acl_edit_and_remove_maximum_number_of_recipients_by_group']) 
     99                                                return true; 
     100                                        break; 
     101                                case messages_size: 
     102                                        if($array_acl['acl_add_messages_size_rule'] || $array_acl['acl_edit_messages_size_rule'] || $array_acl['acl_remove_messages_size_rule']) 
     103                                                return true; 
     104                                        break; 
    97105 
    98106                                default: 
     
    282290                {  
    283291                        $acl = $this->db_functions->read_acl($account_lid); 
    284                          
    285                         $result['acl'] = $acl[0]['acl']; 
    286                         $result['manager_lid'] = $acl[0]['manager_lid']; 
    287                         $result['raw_context'] = $acl[0]['context']; 
    288                          
    289                         $all_contexts = split("%", $acl[0]['context']); 
    290                         foreach ($all_contexts as $index=>$context) 
    291                         { 
    292                                 $result['contexts'][] = $context; 
    293                                 $result['contexts_display'][] = str_replace(", ", ".", ldap_dn2ufn( $context )); 
    294                         } 
    295                          
    296                         return $result; 
    297                 } 
    298                  
    299                 // Make a array read humam 
    300                 // Last acl:    2.147.483.648 -> edit users phonephone 
    301                 // Last acl:    4.294.967.296 -> add institutional accounts 
    302                 // Last acl:    8.589.934.592 -> edit institutional accounts 
    303                 // Last acl:   17.179.869.184 -> remove institutional accounts 
    304                 // Last acl:   34.359.738.368 -> add share accounts 
    305                 // Last acl:   68.719.476.736 -> edit share accounts 
    306                 // Last acl:  137.438.953.472 -> delete share accounts 
    307                 // Last acl:  274.877.906.944 -> edit share accounts acl 
    308                 // Last acl:  549.755.813.888 -> edit quota share quote 
    309                 // Last acl:  1.099.511.627.776 -> empty share accounts inbox 
    310  
    311                 function make_array_acl($acl) 
    312                 { 
    313                         $array_acl_tmp = array(); 
    314                         $tmp = array(           "acl_add_users", 
    315                                                                 "acl_edit_users", 
    316                                                                 "acl_delete_users", 
    317                                                                 "acl_EMPTY1", 
    318                                                                 "acl_add_groups", 
    319                                                                 "acl_edit_groups", 
    320                                                                 "acl_delete_groups", 
    321                                                                 "acl_change_users_password", 
    322                                                                 "acl_add_maillists", 
    323                                                                 "acl_edit_maillists", 
    324                                                                 "acl_delete_maillists", 
    325                                                                 "acl_EMPTY2", 
    326                                                                 "acl_create_sectors", 
    327                                                                 "acl_edit_sectors", 
    328                                                                 "acl_delete_sectors", 
    329                                                                 "acl_edit_sambausers_attributes", 
    330                                                                 "acl_view_global_sessions", 
    331                                                                 "acl_view_logs", 
    332                                                                 "acl_change_users_quote", 
    333                                                                 "acl_set_user_default_password", 
    334                                                                 "acl_create_computers", 
    335                                                                 "acl_edit_computers", 
    336                                                                 "acl_delete_computers", 
    337                                                                 "acl_rename_users", 
    338                                                                 "acl_edit_sambadomains", 
    339                                                                 "acl_view_users", 
    340                                                                 "acl_edit_email_groups", 
    341                                                                 "acl_empty_user_inbox", 
    342                                                                 "acl_manipulate_corporative_information", 
    343                                                                 "acl_edit_users_picture", 
    344                                                                 "acl_edit_scl_email_lists", 
    345                                                                 "acl_edit_users_phonenumber", 
    346                                                                 "acl_add_institutional_accounts", 
    347                                                                 "acl_edit_institutional_accounts", 
    348                                                                 "acl_remove_institutional_accounts", 
    349                                                                 "acl_add_shared_accounts", 
    350                                                                 "acl_edit_shared_accounts", 
    351                                                                 "acl_delete_shared_accounts", 
    352                                                                 "acl_edit_shared_accounts_acl", 
    353                                                                 "acl_edit_shared_accounts_quote", 
    354                                                                 "acl_empty_shared_accounts_inbox" 
    355                                                                 ); 
    356  
    357                         foreach ($tmp as $index => $right) 
    358                         { 
    359                                 $bin = ''; 
    360                                 for ($i=0; $i<$index; $i++) 
    361                                 { 
    362                                         $bin .= '0'; 
    363                                 } 
    364                                 $bin = '1' . $bin; 
    365                                  
    366                                 $array_acl[$right] = $this->safeBitCheck(bindec($bin), $acl); 
    367                         } 
    368                         return $array_acl; 
    369                 } 
     292                        return $acl; 
     293                        } 
     294                         
    370295                 
    371296                function get_inactive_users($contexts) { 
     
    421346                                $justthese = array("uidnumber", "uid", "cn", "mail"); 
    422347                                $filter="(&(phpgwAccountType=u)(|(uid=*".$query."*)(sn=*".$query."*)(cn=*".$query."*)(givenName=*".$query."*)(mail=$query*)(mailAlternateAddress=$query*)))"; 
    423                                 $filter = preg_replace("/\*\*/","*",$filter); //Caso a query venha vazia, inibir a montagem do filtro com ** pois algumas versões do php mais recentes não corrigem isso no ldap_search 
     348 
    424349                                $tmp = array(); 
    425350                                foreach ($contexts as $index=>$context) 
     
    541466                } 
    542467                 
    543                 /*  
    544                         Funciona de maneira similar ao get_sectors_list, porém retorna a propria OU do contexto 
    545                         e monta o array de retorno de forma diferente, necessário para algumas mudanças implementadas 
    546                         no método admin.uisectors.list_sectors. 
    547                 */ 
    548                 function get_organizations2($contexts, $selected='', $referral=false, $show_invisible_ou=true) {                 
    549  
     468                function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 
     469                { 
     470                        $s = CreateObject('phpgwapi.sector_search_ldap'); 
     471                        $sectors_info = $s->get_sectors($selected, $referral, $show_invisible_ou); 
     472                        return $sectors_info; 
     473                }                
     474  
     475                // Get list of all levels, this function is used for sectors module. 
     476                function get_sectors_list($contexts) 
     477                { 
     478                        $a_sectors = array(); 
     479                         
    550480                        $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    551481                        $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    552482                        $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    553                                                  
     483                         
    554484                        ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    555                          
    556                         if ($referral) 
    557                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    558                         else 
    559                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    560                          
     485                        ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    561486                        ldap_bind($ldap_conn,$dn,$passwd); 
    562487                         
    563                         $justthese = array("dn","diskQuota","usersQuota","actualDiskQuota"); 
    564                         $filter = "(objectClass=organizationalUnit)"; 
    565                         foreach ($contexts as $context) { 
     488                        $justthese = array("dn"); 
     489                        $filter = "(ou=*)"; 
     490                         
     491                        $systemName = strtolower($GLOBALS['phpgw_info']['server']['system_name']); 
     492                        if ($systemName != '') 
     493                                $filter = "(&$filter(phpgwSystem=$systemName))"; 
     494                         
     495                        foreach ($contexts as $context) 
     496                        { 
    566497                                $search=ldap_search($ldap_conn, $context, $filter, $justthese); 
    567                                  
    568                                 ldap_sort($ldap_conn, $search, "ou"); 
    569                                 $info = ldap_get_entries($ldap_conn, $search); 
    570                                 ldap_close($ldap_conn); 
    571          
    572                                 // Retiro o count do array info e inverto o array para ordenaçãoo. 
    573                                 for ($i=0; $i<$info["count"]; $i++) 
    574                                 { 
    575                                         $dn = $info[$i]["dn"]; 
    576                                          
    577                                         // Necessário, pq em uma busca com ldapsearch objectClass=organizationalUnit, traz tb o próprio ou. 
    578                                         //if (strtolower($dn) == $context) 
    579                                                 //continue; 
    580          
    581                                         $array_dn = ldap_explode_dn ( $dn, 1 ); 
    582          
    583                                         $array_dn_reverse  = array_reverse ( $array_dn, true ); 
    584          
    585                                         // Retirar o indice count do array. 
    586                                         array_pop ( $array_dn_reverse ); 
    587          
    588                                         $inverted_dn[implode ( "#", $array_dn_reverse )] = $info[$i]; 
    589                                 } 
    590                         } 
    591                         // Ordenação por chave 
    592                         ksort($inverted_dn);                     
     498                        $info = ldap_get_entries($ldap_conn, $search); 
     499                        for ($i=0; $i<$info["count"]; $i++) 
     500                    { 
     501                        $a_sectors[] = $info[$i]['dn'];  
     502                    } 
     503                        } 
     504                 
     505                        ldap_close($ldap_conn); 
     506 
     507                        // Retiro o count do array info e inverto o array para ordenação. 
     508                foreach ($a_sectors as $context) 
     509            { 
     510 
     511 
     512                                $array_dn = ldap_explode_dn($context, 1 ); 
     513                                foreach($array_dn as $key=>$value){ 
     514                                        $array_dn[$key]=preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$value); 
     515                                }        
     516 
     517                $array_dn_reverse  = array_reverse ( $array_dn, true ); 
     518 
     519                                // Retirar o indice count do array. 
     520                                array_pop ( $array_dn_reverse ); 
     521 
     522                                $inverted_dn[$context] = implode ( "#", $array_dn_reverse ); 
     523                        } 
     524 
     525                        // Ordenação 
     526                        natcasesort($inverted_dn); 
    593527                         
    594528                        // Construção do select 
    595529                        $level = 0; 
    596530                        $options = array(); 
    597                         foreach ($inverted_dn as $dn=>$info_ou) 
     531                        foreach ($inverted_dn as $dn=>$invert_ufn) 
    598532                        { 
    599533                $display = ''; 
    600                                 $info_retorno = array(); 
    601                 $array_dn_reverse = explode ( "#", $dn ); 
     534 
     535                $array_dn_reverse = explode ( "#", $invert_ufn ); 
    602536                $array_dn  = array_reverse ( $array_dn_reverse, true ); 
    603537 
     
    613547 
    614548                reset ( $array_dn ); 
    615                 $display .= ' ' . (current ( $array_dn ) ); 
    616                                  
    617                                 $info_retorno['display'] = $display; 
    618                                 $info_retorno['dn'] = $info_ou['dn']; 
    619                                 $info_retorno['diskquota'] = $info_ou['diskquota'][0]; 
    620                                 $info_retorno['usersquota'] = $info_ou['usersquota'][0]; 
    621 //                              $info_retorno['actualdiskquota'] = round($this->get_actual_disk_usage($info_ou['dn']),2);//$info_ou['actualdiskquota'][0]; 
    622 //                              $info_retorno['actualnumusers'] = $this->get_num_users($info_ou['dn']); 
    623                                  
    624                                 array_push($options,$info_retorno); 
    625                                  
    626                 } 
    627                         return $options; 
    628                 }        
    629                  
    630                 function get_info($context, $referral = false) { 
    631                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    632                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    633                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    634                          
    635                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    636                          
    637                         if ($referral) 
    638                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    639                         else 
    640                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    641                          
    642                         ldap_bind($ldap_conn,$dn,$passwd); 
    643                          
    644                         $filter="(objectClass=organizationalUnit)"; 
    645                         $search=ldap_search($ldap_conn, $context, $filter); 
    646                         $result = ldap_get_entries($ldap_conn, $search); 
    647                         return $result; 
    648                                  
    649                 } 
    650  
    651                 function get_num_users($context,$selected='', $referral=false, $show_invisible_ou=true) { 
    652                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    653                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    654                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    655                          
    656                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    657                          
    658                         if ($referral) 
    659                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 1); 
    660                         else 
    661                                 ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    662                          
    663                         ldap_bind($ldap_conn,$dn,$passwd); 
    664                          
    665                         $justthese = array("dn"); 
    666                         $filter = "(objectClass=inetOrgPerson)"; 
    667                         $search=ldap_search($ldap_conn, $context, $filter, $justthese); 
    668                  
    669                 $retorno = ldap_count_entries($ldap_conn, $search); 
    670                         ldap_close($ldap_conn); 
    671                          
    672                         return $retorno; 
    673                 } 
    674                  
    675                 //Checa se existe quota para mais um usuï¿œrio no setor... se existir retorna true, senï¿œo false.               
    676                 function existe_quota_usuario($setor) { 
    677                         $num_users = $this->get_num_users($setor['dn']); 
    678                         //return $num_users . " --- " . $setor['usersquota'][0] 
    679                         if(($num_users>=$setor['usersquota'][0]) && ($setor['usersquota'][0]!=-1)) { 
    680                                 return false; 
    681                         } 
    682                         return true; 
    683                 } 
    684                  
    685                 //Checa se existe quota em disco para mais um usuário no setor... se existir retorna true, senão false. 
    686                 function existe_quota_disco($setor,$quota_novo_usuario) { 
    687                         settype($quota_novo_usuario,"float");            
    688                         $quota_novo_usuario /= 1024; //A quota vêm da interface em megabytes, deve se tornar gigabyte. 
    689  
    690                         $nova_quota = $this->get_actual_disk_usage($setor['dn']) + $quota_novo_usuario; 
    691                         if(( $nova_quota >= $setor['diskquota'][0] ) && ($setor['diskquota'][0] != -1)) { 
    692                                 return false; 
    693                         } 
    694                         return true; 
    695                 } 
    696                  
    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                  
    735                 // Soma as quotas de todos os usuï¿œrios daquele contexto. 
    736                 function get_actual_disk_usage($context,$app='expressoMail',$user=null) { 
    737                         $quota_usada=0; 
    738                         $contexts = array($context); 
    739                         $usuarios = $this->get_list('accounts', '', $contexts); 
    740  
    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                                 }                        
    763                         } 
    764                         return $quota_usada; 
    765                 } 
    766  
    767                 function get_sectors($selected='', $referral=false, $show_invisible_ou=true) 
    768                 { 
    769                         $s = CreateObject('phpgwapi.sector_search_ldap'); 
    770                         $sectors_info = $s->get_sectors($selected, $referral, $show_invisible_ou); 
    771                         return $sectors_info; 
    772                 }                
    773   
    774                 // Get list of all levels, this function is used for sectors module. 
    775                 function get_sectors_list($contexts) 
    776                 { 
    777                         $a_sectors = array(); 
    778                          
    779                         $dn                     = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 
    780                         $passwd         = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 
    781                         $ldap_conn      = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 
    782                          
    783                         ldap_set_option($ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3); 
    784                         ldap_set_option($ldap_conn, LDAP_OPT_REFERRALS, 0); 
    785                         ldap_bind($ldap_conn,$dn,$passwd); 
    786                          
    787                         $justthese = array("dn"); 
    788                         $filter = "(objectClass=organizationalUnit)"; 
    789                          
    790                         $systemName = strtolower($GLOBALS['phpgw_info']['server']['system_name']); 
    791                         if ($systemName != '') 
    792                                 $filter = "(&$filter(phpgwSystem=$systemName))"; 
    793                          
    794                         foreach ($contexts as $context) 
    795                         { 
    796                                 $search=ldap_search($ldap_conn, $context, $filter, $justthese); 
    797                         $info = ldap_get_entries($ldap_conn, $search); 
    798                         for ($i=0; $i<$info["count"]; $i++) 
    799                     { 
    800                         $a_sectors[] = $info[$i]['dn'];  
    801                     } 
    802                         } 
    803                  
    804                         ldap_close($ldap_conn); 
    805  
    806                         // Retiro o count do array info e inverto o array para ordenação. 
    807                 foreach ($a_sectors as $context) 
    808             { 
    809                                 $array_dn = ldap_explode_dn ( $context, 1 ); 
    810  
    811                 $array_dn_reverse  = array_reverse ( $array_dn, true ); 
    812  
    813                                 // Retirar o indice count do array. 
    814                                 array_pop ( $array_dn_reverse ); 
    815  
    816                                 $inverted_dn[$context] = implode ( "#", $array_dn_reverse ); 
    817                         } 
    818  
    819                         // Ordenação 
    820                         natcasesort($inverted_dn); 
    821                          
    822                         // Construção do select 
    823                         $level = 0; 
    824                         $options = array(); 
    825                         foreach ($inverted_dn as $dn=>$invert_ufn) 
    826                         { 
    827                 $display = ''; 
    828  
    829                 $array_dn_reverse = explode ( "#", $invert_ufn ); 
    830                 $array_dn  = array_reverse ( $array_dn_reverse, true ); 
    831  
    832                 $level = count( $array_dn ) - (int)(count(explode(",", $GLOBALS['phpgw_info']['server']['ldap_context'])) + 1); 
    833  
    834                 if ($level == 0) 
    835                         $display .= '+'; 
    836                 else  
    837                 { 
    838                                         for ($i=0; $i<$level; $i++) 
    839                                                 $display .= '---'; 
    840                 } 
    841  
    842                 reset ( $array_dn ); 
    843                 $display .= ' ' . (current ( $array_dn ) ); 
     549                $display .= ' ' . (current ( $array_dn )); 
    844550                                 
    845551                                $dn = trim(strtolower($dn)); 
     
    903609                        else 
    904610                                return $groups_id; 
    905                 } 
    906                 function make_list_personal_data_fields($account_lid, $acl = '') 
    907                 { 
    908                         // Sem restrição nenhuma na edição dos campos pessoais  => $acl=0; 
    909                         // Com restrição apenas na edição do Tel. Comercial     => $acl=1; 
    910                         // Com restrição apenas na edição do Tel. Celular               => $acl=2; 
    911                         // Com restrição na edição do Tel. Comercial e Celular  => $acl=3;                       
    912                         // Com restricao apenas na edicao do Tel. Residencial   => $acl=4; 
    913                         // .... 
    914                         // Com restricao de edição em todos os campos pessoais  => $acl=7; 
    915                          
    916                         $personal_data_fields = array(   
    917                                         array("text" => lang("%1 telephone number", lang("Commercial")) , "acl" => 1), 
    918                                         array("text" => lang("%1 telephone number", lang("Mobile"))             , "acl" => 2), 
    919                                         array("text" => lang("%1 telephone number", lang("Home Phone"))         , "acl" => 4), 
    920                                         array("text" => lang("Birthday")                                                                , "acl" => 8)); 
    921                         $list_personal_data = "<tr>"; 
    922                                                  
    923                         foreach($personal_data_fields as $i => $data_field)     { 
    924                                 $checked = ($data_field['acl'] & $acl) ? "CHECKED" : ""; 
    925                                 $list_personal_data .= "<td align=right bgcolor='#DDDDDD'>{$data_field['text']}</td>". 
    926                                 "<td bgcolor='#DDDDDD' width='10'><input type='checkbox' name='acl_block_personal_data[]'". 
    927                                 " value='{$data_field['acl']}' $checked></td>"; 
    928                         } 
    929                         $list_personal_data .= "</tr>"; 
    930                         return $list_personal_data; 
    931611                } 
    932612                 
     
    1116796                        return $array_langs; 
    1117797                } 
     798 
     799      
     800          
     801         function normalize_calendar_acl($acl) 
     802         { 
     803             $return = ''; 
     804 
     805             if($this->safeBitCheck(1, $acl)) 
     806                $return .= '1-'; 
     807             if($this->safeBitCheck(2, $acl)) 
     808                $return .= '2-'; 
     809             if($this->safeBitCheck(4, $acl)) 
     810                $return .= '4-'; 
     811             if($this->safeBitCheck(8, $acl)) 
     812                $return .= '8-'; 
     813             if($this->safeBitCheck(16, $acl)) 
     814                $return .= '16-'; 
     815              
     816             return $return; 
    1118817        } 
     818} 
    1119819         
    1120820        class sectors_object 
Note: See TracChangeset for help on using the changeset viewer.