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.

Location:
trunk/expressoAdmin1_2/inc
Files:
17 edited

Legend:

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

    r3915 r5133  
    4848                        $sector_info['objectClass'][1]  = 'organizationalUnit'; 
    4949 
    50                         if( isset($_POST['associated_domain']) ) 
    51                         { 
    52                                 if ( $_POST['associated_domain'] != "") { 
    53                                         $sector_info['objectClass'][2]  = 'domainRelatedObject'; 
    54                                         $sector_info['associatedDomain'] = trim($_POST['associated_domain']); 
    55                                 } 
    56                         } 
    57  
    5850                        $systemName = $GLOBALS['phpgw_info']['server']['system_name']; 
    5951                        if ($systemName != '') 
     
    6658                        } 
    6759                         
    68                          
    69                         /* 
    70                          Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco  
    71                          Se não vierem os dados, ele coloca 0 (Caso não exista controle de cota). 
    72                         */ 
    73                          
    74                         $controlled_by_quota = false; 
    75  
    76                         if( isset($_POST['disk_quota']) ) 
    77                         { 
    78                                 $controlled_by_quota = true; 
    79                                 $sector_info['diskQuota'] = (trim($_POST['disk_quota']) != "") ? $_POST['disk_quota'] : "0"; 
    80                         } 
    81                          
    82                         if( isset($_POST['users_quota']) ) 
    83                         { 
    84                                 $controlled_by_quota = true; 
    85                                 $sector_info['usersQuota'] = (trim($_POST['users_quota']) != "") ? $_POST['users_quota'] : "0"; 
    86                         } 
    87                          
    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                          
    94                         if($controlled_by_quota) 
    95                                 $sector_info['objectClass'][]   = 'phpgwQuotaControlled'; 
    96                                  
    9760                        // Chama funcao para escrever no OpenLDAP, case de erro, volta com msg de erro. 
    9861                        if (!$this->so->write_ldap($dn, $sector_info)) 
     
    10366                        } 
    10467                         
    105                         // Escreve no log 
     68                        //Escreve no log 
    10669                        $this->db_functions->write_log("created sector", "$dn"); 
    10770                         
     
    11376        function save_sector() 
    11477                { 
    115                         $sector_info = $this->so->get_info($_POST['context']); 
     78                $context = utf8_encode($_POST['context']); 
     79 
     80                        $sector_info = $this->so->get_info($context); 
    11681                         
    117                         if (($_POST['sector_visible'] == 'on') && ($sector_info[0]['phpgwaccountvisible'][0] != '-1')) 
     82                        if (($_POST['sector_visible'] == 'on') && ($sector_info['phpgwaccountvisible'] != '-1')) 
    11883                        { 
    119                                 $phpgwAccount = $controlled_by_quota = false; 
    12084                                foreach ($sector_info[0]['objectclass'] as $objectClass) 
    12185                                { 
    12286                                        if ($objectClass == 'phpgwAccount') 
    12387                                                $phpgwAccount = true; 
    124                                         if ($objectClass == 'phpgwquotacontrolled') 
    125                                                 $controlled_by_quota = true; 
     88                                        else 
     89                                                $phpgwAccount = false; 
    12690                                } 
    12791                                 
     
    13498                                $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 
    13599                        } 
    136                         elseif($sector_info[0]['phpgwaccountvisible'][0] == '-1') 
     100                        else 
    137101                        { 
    138102                                $ldap_mod_del['objectClass'] = 'phpgwAccount'; 
     
    141105                        } 
    142106                         
    143                         //Modifica o conteúdo das cotas. 
    144                         if( (isset($_POST['disk_quota']) )  
    145                                 || (isset($_POST['users_quota']) )  
    146                                 || (isset($_POST['file_manager_quota']) )) { //se for passado alguma coisa, lógico 
    147                                  
    148                                 $file_manager_space = $this->functions->get_actual_disk_usage($_POST["context"],'FileManager'); 
    149                                 if($_POST["file_manager_quota"]<$file_manager_space){ 
    150                                         $_POST['error_messages'] = lang("Theres more disk space in use than the quota. It needs to be more than %1 MB",$file_manager_space); 
    151                                         $_GET['context'] = $_POST["context"]; 
    152                                         ExecMethod('expressoAdmin1_2.uisectors.edit_sector'); 
    153                                         return false; 
    154                                 } 
    155                                  
    156                                 if(!$controlled_by_quota) { 
    157                                         $ldap_mod_add['objectClass'][] = 'phpgwQuotaControlled'; 
    158                                         $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 
    159                                 } 
    160                                  
    161                                 $ldap_mod_replace = array(); 
    162                                 $ldap_mod_replace['diskQuota'] = $_POST['disk_quota']; 
    163                                 $ldap_mod_replace['usersQuota'] = $_POST['users_quota']; 
    164                                 $ldap_mod_replace['fileManagerQuota'] = $_POST['file_manager_quota']; 
    165                                 $this->so->replace_attribute($sector_info[0]['dn'], $ldap_mod_replace); 
    166                         } 
    167                                  
    168107                        // Volta para o ListSectors 
    169108                        ExecMethod('expressoAdmin1_2.uisectors.list_sectors'); 
     
    184123                        $manager_context = $_POST['manager_context']; 
    185124 
    186                          
     125                        $sector_dn = utf8_encode($sector_dn); 
    187126 
    188127                        $sector_users = $this->so->get_sector_users($sector_dn); 
     128 
    189129                        for ($i=0; $i<count($sector_users)-1; $i++) 
    190130                        { 
  • trunk/expressoAdmin1_2/inc/class.db_functions.inc.php

    r3251 r5133  
    3333        function read_acl($account_lid) 
    3434        { 
    35                 $query = "SELECT * FROM phpgw_expressoadmin WHERE manager_lid = '" . $account_lid . "'";  
    36                 $this->db->query($query); 
    37                 while($this->db->next_record()) 
    38                         $result[] = $this->db->row(); 
    39                 return $result; 
    40         } 
    41          
    42         //returns true if cotas control property is set. 
    43         function use_cota_control() { 
    44                 $query = "select * from phpgw_config where config_name='expressoAdmin_cotasOu' and config_value='true'"; 
    45                 $this->db->query($query); 
    46                 if($this->db->next_record()) 
    47                         return true; 
    48                 return false; 
    49         } 
    50          
     35                $query = "SELECT * FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $account_lid . "'"; 
     36                $this->db->query($query); 
     37 
     38                $acls = array(); 
     39                $context = null; 
     40                while($this->db->next_record()) 
     41                { 
     42                        $result = $this->db->row(); 
     43                        $acls[$result['acl_name']] = '1'; 
     44                        $context = $result['context']; 
     45        } 
     46         
     47                $all_contexts = split("%", $context); 
     48                foreach ($all_contexts as $index=>$context) 
     49                { 
     50                        $acls['contexts'][] = $context; 
     51                        $acls['contexts_display'][] = str_replace(", ", ".", ldap_dn2ufn( $context )); 
     52        } 
     53         
     54                $acls['raw_context'] = $context; 
     55                return $acls; 
     56        } 
    5157        /* 
    5258        *       Reativa os usuários desabilitados por tempo inativo modificando o seu ultimo acesso para o dia atual. 
     
    7884                $manager_info = $this->read_acl($manager); 
    7985                 
    80                 //Escrevre no Banco a ACL do gerente 
    81                 $sql = "INSERT INTO phpgw_expressoadmin (manager_lid, context, acl) " 
    82                 . "VALUES('" . $new_manager . "','" . $manager_info[0]['context'] . "','" . $manager_info[0]['acl'] . "')"; 
    83                  
    84                 if (!$this->db->query($sql)) 
     86                 //Deleta todas as acls do Gerente 
     87                $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $new_manager)); 
     88                 
     89                foreach ($manager_info as $info => $value) 
     90                { 
     91                    $acl  = strstr($info, 'acl_'); 
     92 
     93                    if ($acl !== false) 
     94                    { 
     95 
     96                            $fields = array( 
     97                                            'manager_lid' => $new_manager, 
     98                                            'context' =>    $manager_info['raw_context'], 
     99                                            'acl_name' => $acl, 
     100                                           ); 
     101 
     102                            if(!$this->db->insert('phpgw_expressoadmin_acls', $fields)) 
    85103                { 
    86104                        echo lang('error in') . 'copy_manager: ' . pg_last_error(); 
    87105                        return false; 
    88106                } 
     107                    } 
     108 
     109 
     110                } 
     111                 
     112         
    89113                 
    90114                //Pesquisa no Banco e pega os valores dos apps. 
    91                 $sql = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $manager_info[0]['manager_lid'] . "' AND context = '" . $manager_info[0]['context'] . "'"; 
     115                $sql = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $manager . "' AND context = '" . $manager_info['raw_context'] . "'"; 
    92116                $this->db->query($sql); 
    93117                while($this->db->next_record()) 
     
    100124                { 
    101125                        $sql = "INSERT INTO phpgw_expressoadmin_apps (manager_lid, context, app) " 
    102                         . "VALUES('" . $new_manager . "','" . $manager_info[0]['context'] . "','" . $aplications[$i]['app'] . "')"; 
     126                        . "VALUES('" . $new_manager . "','" . $manager_info['raw_context'] . "','" . $aplications[$i]['app'] . "')"; 
    103127                        if (!$this->db->query($sql)) 
    104128                        { 
     
    432456                        $return['members'] = array(); 
    433457 
    434                 //  ACL Block Personal Data 
    435                 $query = "SELECT acl_rights FROM phpgw_acl WHERE acl_location = 'blockpersonaldata' AND acl_account = '" . $gidnumber . "'"; 
    436                 $this->db->query($query); 
    437                 if($this->db->next_record()) { 
    438                         $block_personal_data = $this->db->row(); 
    439                         $return['acl_block_personal_data'] = $block_personal_data['acl_rights']; 
    440                 } 
    441458                return $return; 
    442459        } 
     
    685702        function manager_lid_exist($manager_lid) 
    686703        { 
    687                 $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $manager_lid . "'"; 
     704                $query = "SELECT manager_lid FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $manager_lid . "'"; 
    688705                $this->db->query($query); 
    689706                while($this->db->next_record()) 
     
    697714        function create_manager($params, $manager_acl) 
    698715        { 
    699                 //Escrevre no Banco a ACL do gerente 
    700                 $sql = "INSERT INTO phpgw_expressoadmin (manager_lid, context, acl) " 
    701                 . "VALUES('" . $params['ea_select_manager'] . "','" . $params['context'] . "','" . $manager_acl . "')"; 
    702                 $this->db->query($sql); 
     716 
     717                //Insere novas regras 
     718                foreach ($manager_acl as $acl) 
     719                { 
     720                    $fields = array( 
     721                                    'manager_lid' => $params['ea_select_manager'], 
     722                                    'context' =>    $params['context'], 
     723                                    'acl_name' => $acl, 
     724                                   ); 
     725 
     726                    $this->db->insert('phpgw_expressoadmin_acls', $fields); 
     727                } 
     728 
    703729                         
    704730                //Escrevre no Banco as aplicações que o gerente tem direito de disponibilizar aos seus usuarios. 
     
    718744        function save_manager($params, $manager_acl) 
    719745        { 
     746 
     747 
    720748                $params['manager_lid'] = $params['hidden_manager_lid']; 
    721749                 
    722                 //Executa update na tabela para atualizar ACL 
    723                 $sql = "UPDATE phpgw_expressoadmin SET context = '" . $params['context'] . "',acl = '" . $manager_acl 
    724                 . "' WHERE manager_lid = '" . $params['manager_lid'] ."'"; 
    725                 $this->db->query($sql); 
     750                //Deleta todas as acls do Gerente 
     751                $this->db->delete('phpgw_expressoadmin_acls',array('manager_lid' => $params['manager_lid'],'context' => $params['context'])); 
     752 
     753                //Insere novas regras 
     754                foreach ($manager_acl as $acl) 
     755                { 
     756                    $fields = array( 
     757                                    'manager_lid' => $params['manager_lid'], 
     758                                    'context' =>    $params['context'], 
     759                                    'acl_name' => $acl, 
     760                                   ); 
     761 
     762                    $this->db->insert('phpgw_expressoadmin_acls', $fields); 
     763                } 
    726764                         
    727765                //Deleta as aplicações e adiciona as novas. 
     
    743781                return; 
    744782        } 
    745         function save_acl_personal_data($gidnumber, $new_acl_personal_data, $op = '') { 
    746                 if($op == 'add') 
    747                         $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) " 
    748                                 . "VALUES('preferences','blockpersonaldata','$gidnumber',$new_acl_personal_data)";               
    749                 elseif($op == 'remove') 
    750                         $sql = "DELETE FROM phpgw_acl WHERE acl_account = '$gidnumber' and acl_location = 'blockpersonaldata'"; 
    751                 else 
    752                         $sql = "UPDATE phpgw_acl SET acl_rights = $new_acl_personal_data WHERE acl_account = '$gidnumber' " 
    753                                 . "and acl_location = 'blockpersonaldata'"; 
     783 
     784         function save_calendar_acls($user,$acl,$owner) 
     785         { 
     786 
     787 
     788             $aclArray = explode('-', $acl); 
     789             $rights = 0; 
     790 
     791             foreach ($aclArray as $number) 
     792                 $rights = $rights + $number; 
     793 
     794             $this->db->delete('phpgw_acl', array('acl_appname' => 'calendar','acl_location' => $user,'acl_account' => $owner), null, null); 
     795 
     796             if($rights > 0) 
     797             { 
     798                 if($this->db->insert('phpgw_acl', array('acl_appname' => 'calendar','acl_location' => $user,'acl_account' => $owner,'acl_rights' => $rights ), null, null, null)) 
     799                      return true; 
     800                else 
     801                     return false; 
     802             }else 
     803                 return true; 
    754804                                 
    755                 //error_log($sql); 
    756                 $this->db->query($sql); 
    757                  
    758                 return; 
     805         } 
     806 
     807         function get_calendar_acls($owner) 
     808         { 
     809 
     810                $colunas = array('acl_appname','acl_location','acl_account','acl_rights'); 
     811                $where = array('acl_appname' => 'calendar','acl_account' => $owner); 
     812                $this->db->select('phpgw_acl', $colunas, $where, null, null); 
     813 
     814                $return; 
     815 
     816                include_once 'class.ldap_functions.inc.php'; 
     817                $ldap = new ldap_functions(); 
     818                include_once 'class.functions.inc.php'; 
     819                $function = new functions(); 
     820 
     821 
     822                while ($this->db->next_record()) 
     823                { 
     824                    $row = $this->db->row(); 
     825                    $return[$ldap->uidnumber2uid($row['acl_location'])] = $function->normalize_calendar_acl($row['acl_rights']); 
     826                     
     827                } 
     828                return $return; 
     829                 
    759830        } 
    760831         
  • 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 
  • trunk/expressoAdmin1_2/inc/class.group.inc.php

    r3396 r5133  
    135135                                $return['msg'] .= $result['msg']; 
    136136                        } 
    137                         // PERSONAL DATA FIELDS TO BLOCK. 
    138                         if(is_array($params['acl_block_personal_data'])){ 
    139                                 $acl_personal_data = 0; 
    140                                 foreach($params['acl_block_personal_data'] as $i => $data_field){ 
    141                                         $acl_personal_data |= intval($data_field); 
    142                                 } 
    143                                 $this->db_functions->save_acl_personal_data($id, $acl_personal_data, 'add'); 
    144                         } 
    145137                         
    146138                        if ($return['status'] == true) 
     
    428420                        } 
    429421                        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    430                         // PERSONAL DATA FIELDS TO BLOCK. 
    431                         $old_acl_personal_data = intval($old_values['acl_block_personal_data']); 
    432                         $new_acl_personal_data = 0; 
    433                         if(is_array($new_values['acl_block_personal_data'])){                            
    434                                 foreach($new_values['acl_block_personal_data'] as $i => $data_field){ 
    435                                         $new_acl_personal_data |= intval($data_field); 
    436                                 } 
    437                         } 
    438                         if($new_acl_personal_data != $old_acl_personal_data){ 
    439                                 if($new_acl_personal_data > 0 && $old_acl_personal_data == 0) { 
    440                                         $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data, 'add'); 
    441                                         $this->db_functions->write_log("added ACL block personal data to group","dn:$dn -> acl: $new_acl_personal_data"); 
    442                                 } 
    443                                 elseif($new_acl_personal_data == 0 && $old_acl_personal_data > 0){ 
    444                                         $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data, 'remove'); 
    445                                         $this->db_functions->write_log("removed ACL block personal data to group","dn:$dn"); 
    446                                 } 
    447                                 else{ 
    448                                         $this->db_functions->save_acl_personal_data($new_values['gidnumber'], $new_acl_personal_data); 
    449                                         $this->db_functions->write_log("changed ACL block personal data to group","dn:$dn ->  acl: $old_acl_personal_data => $new_acl_personal_data"); 
    450                                 } 
    451                         } 
    452422                         
    453423                        return $return; 
     
    455425                 
    456426                 
    457                 function get_info($gidnumber,$use_global_context=false) 
    458                 { 
    459                         $group_info_ldap = $this->ldap_functions->get_group_info($gidnumber,$use_global_context); 
    460                         $group_info_db = $this->db_functions->get_group_info($gidnumber,$use_global_context); 
     427                function get_info($gidnumber) 
     428                { 
     429                        $group_info_ldap = $this->ldap_functions->get_group_info($gidnumber); 
     430                        $group_info_db = $this->db_functions->get_group_info($gidnumber); 
    461431                         
    462432                        $group_info = array_merge($group_info_ldap, $group_info_db); 
  • trunk/expressoAdmin1_2/inc/class.imap_functions.inc.php

    r4059 r5133  
    2323                $this->imap_server      = $_SESSION['phpgw_info']['expresso']['email_server']['imapServer']; 
    2424                $this->imap_port        = $_SESSION['phpgw_info']['expresso']['email_server']['imapPort']; 
    25                 $this->imap_createspamfolder    = $_SESSION['phpgw_info']['expresso']['email_server']['imapCreateSpamFolder']; 
    26                 $this->imap_cyrususerspam = $_SESSION['phpgw_info']['expresso']['email_server']['imapCyrusUserPostSpam'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapCyrusUserPostSpam'] : "anonymous"; 
    2725                $this->imap_trashfolder  = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder']  ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder']  : str_replace("*","", $this->functions->lang("trash")); 
    2826                $this->imap_sentfolder   = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder']   ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder']   : str_replace("*","", $this->functions->lang("sent")); 
     
    7068                        return $result; 
    7169                } 
    72                 if (!empty($this->imap_spamfolder) && $this->imap_createspamfolder == 'yes') 
     70                /* Esperando correção do william (prognus) sobre a utilização do DSPAM 
     71                if (!empty($this->imap_sentfolder)) 
    7372                { 
    7473                    if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . $this->imap_spamfolder)) 
     
    7877                            $result['msg'] = $this->functions->lang('Error on function') . " imap_functions->create(".$this->imap_spamfolder."):" . $error[0]; 
    7978                            return $result; 
    80                         } else { 
    81                                 imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid.  $this->imapDelimiter . $this->imap_spamfolder , $this->imap_cyrususerspam, 'p');                         
    8279         } 
    8380                }                
     81                */ 
    8482 
    8583                if (!imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($mailquota*1024)))  
     
    9795        function get_user_info($uid) 
    9896        { 
    99                 $get_quota = @imap_get_quota($this->imap,"user" . $this->imapDelimiter . $uid); 
     97                $get_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 
    10098                 
    10199                if (count($get_quota) == 0) 
     
    148146                $result['status'] = true; 
    149147 
    150                 if (!$quota = @imap_get_quota($this->imap, 'user' . $this->imapDelimiter . $old_mailbox)) 
     148                if (!$quota = @imap_get_quotaroot($this->imap, 'user' . $this->imapDelimiter . $old_mailbox)) 
    151149                { 
    152150                                $result['status'] = false; 
     
    253251                                $result['inbox_size'] = $inbox_size; 
    254252                                 
    255                                 $get_user_quota = @imap_get_quota($this->imap,"user" . $this->imapDelimiter . $uid); 
     253                                $get_user_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 
    256254                                $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2)); 
    257255                        } 
     
    317315                        } 
    318316                } 
     317 
     318                if( $result['status'] ) 
     319                    $this->sendACLAdvice( $user, $acl, $mailbox ); 
     320 
    319321                return $result; 
    320322        } 
     
    373375                                return $result; 
    374376            } 
    375             file_put_contents("/tmp/saida", "old ".print_r($owners_acl_old, true)."remove ".print_r($owners_to_remove, true)."add ".print_r($owners_to_add, true)."update ".print_r($owners_to_update, true)); 
     377            //file_put_contents("/tmp/saida", "old ".print_r($owners_acl_old, true)."remove ".print_r($owners_to_remove, true)."add ".print_r($owners_to_add, true)."update ".print_r($owners_to_update, true)); 
    376378            if( is_array($owners_acl_new)){ 
    377379                foreach($owners_to_remove as $user => $acl){ 
     
    397399            return $result; 
    398400        } 
     401         
     402        function sendACLAdvice( $user, $acls, $shared_account ) 
     403        { 
     404            //acl treat 
     405            $acl_labels = array( 'lrs' => 'read messages from this shared account', 
     406                                 'd' => 'delete/move messages from this shared account', 
     407                                 'wi' => 'create/add messages in this shared account', 
     408                                 'a' => 'send message by this shared account', 
     409                                 'p' => 'save sent messages in this shared account', 
     410                                 'c' => 'create or delete folders on this shared account' ); 
     411 
     412            $acl_found = array(); 
     413 
     414            foreach( $acl_labels as $acl => $label ) 
     415            { 
     416                if( strpos( $acls, $acl ) !== false ) 
     417                { 
     418                    $acl_found[] = $this->functions->lang( $label ); 
     419                } 
     420            } 
     421 
     422            $acl = implode( "<br/>", $acl_found ); 
     423 
     424            if( empty( $acl ) ) 
     425            return; 
     426 
     427            //body mail template generation 
     428            $body = $this->getTemplate( "body_email.tpl", array( "user" => $user, 
     429                                                                 "acl" => $acl, 
     430                                                                 "shared_account" => $shared_account ) ); 
     431 
     432            //ldap fetch mail to 
     433            require_once('class.ldap_functions.inc.php'); 
     434 
     435            if( !$ldap ) 
     436            { 
     437                $ldap = new ldap_functions(); 
     438            } 
     439 
     440            $to = $ldap->uid2mailforwardingaddress( $user ); 
     441            $to = $to['mail']; 
     442 
     443            //mail send service 
     444            $mail = ServiceLocator::getService( 'mail' ); 
     445            $mail->sendMail( $to, false, $this->functions->lang("Your user was add/updated in the shared account"), $body ); 
     446        } 
     447 
     448        function getTemplate( $tpls, $macros, $target = false ) 
     449        { 
     450            require_once( ROOT.'header.inc.php' ); 
     451 
     452            $template = CreateObject( 'phpgwapi.Template', PHPGW_APP_TPL ); 
     453 
     454            if( !is_array( $tpls ) ) 
     455            { 
     456                $tpls = array( $tpls ); 
     457            } 
     458 
     459            $keys = array_keys( $tpls ); 
     460 
     461            if( !array_diff_key( $tpl, array_keys( $keys ) ) ) 
     462            { 
     463                $newTpls = array(); 
     464 
     465                foreach( $tpls as $tpl ) 
     466                { 
     467                    $key = basename( $tpl ); 
     468 
     469                    $dot = strrpos( $key, '.' ); 
     470 
     471                    if( $dot !== false ) 
     472                    { 
     473                        $key = substr( $key, 0, $dot ); 
     474                    } 
     475 
     476                    $newTpls[ $key ] = $tpl; 
     477                } 
     478 
     479                $tpls = $newTpls; 
     480 
     481                $keys = array_keys( $tpls ); 
     482            } 
     483 
     484            $template->set_file( $tpls ); 
     485 
     486            $target = $target ? $tpls[ $target ] : $keys[0]; 
     487 
     488            $template->set_var( $this->functions->make_dinamic_lang( $template, $target ) ); 
     489            $template->set_var( $macros ); 
     490 
     491            return $template->fp( 'out', $target ); 
     492        } 
    399493} 
  • trunk/expressoAdmin1_2/inc/class.institutional_accounts.inc.php

    r414 r5133  
    3232                                } 
    3333                                $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     34                                $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    3435                                $GLOBALS['phpgw']->js->validate_file('jscode','institutional_accounts','expressoAdmin1_2'); 
    3536                                $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); 
  • trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php

    r3530 r5133  
    44include_once(PHPGW_API_INC.'/class.common.inc.php'); 
    55include_once('class.functions.inc.php'); 
     6include_once('class.db_functions.inc.php'); 
    67 
    78function ldapRebind($ldap_connection, $ldap_url) 
     
    2223        var $functions; 
    2324        var $manager_contexts; 
     25        var $db_functions; 
    2426         
    2527        function ldap_functions(){               
     
    4143                } 
    4244                 
     45                $this->db_functions = new db_functions(); 
    4346                $this->functions = new functions; 
    4447                $manager_acl = $this->functions->read_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid']); 
     
    4649        } 
    4750 
    48         function create_shared_accounts($params) 
    49                 { 
    50                         /* Begin: Access verification */ 
    51                          
    52                         if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_shared_accounts')) 
     51        function noAccess( $context, $target, $label = false ) 
     52                { 
     53            if( !$label ) 
     54                $label = str_replace( '_', ' ', $target ); 
     55                         
     56            if (!$this->functions->check_acl( $_SESSION['phpgw_info']['expresso']['user']['account_lid'], $target )) 
    5357                        { 
    5458                                $return['status'] = false; 
    55                                 $return['msg'] = $this->functions->lang('You do not have right to create shared accounts') . "."; 
     59                $return['msg'] = $this->functions->lang("You do not have right to $label") . "."; 
    5660                                return $return; 
    5761                        } 
    5862                         
    5963                        $access_granted = false; 
     64 
    6065                        foreach ($this->manager_contexts as $idx=>$manager_context) 
    6166                        { 
    62                                 if (stristr($params['context'], $manager_context)) 
     67                    if (stristr($context, $manager_context)) 
    6368                                { 
    6469                                        $access_granted = true; 
     
    7378                                return $return; 
    7479                        }                        
     80 
     81            return( false ); 
     82        } 
     83         
     84        function create_institutional_accounts($params) 
     85        { 
     86                /* Begin: Access verification */ 
     87                $forbidden = $this->noAccess( $params['context'], 'add_institutional_accounts', 'create institutional accounts' ); 
     88 
     89                if( $forbidden ) 
     90                    return( $forbidden ); 
     91//              if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts')) 
     92//              { 
     93//                      $return['status'] = false; 
     94//                      $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 
     95//                      return $return; 
     96//              } 
     97//               
     98//              $access_granted = false; 
     99//              foreach ($this->manager_contexts as $idx=>$manager_context) 
     100//              { 
     101//                      if (stristr($params['context'], $manager_context)) 
     102//                      { 
     103//                              $access_granted = true; 
     104//                              break; 
     105//                      } 
     106//              } 
     107//              if (!$access_granted) 
     108//              { 
     109//                      $return['status'] = false; 
     110//                      $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
     111//                      return $return; 
     112//              } 
    75113                        /* End: Access verification */ 
    76114         
     115                /* Begin: Validation */ 
     116                if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
     117                { 
     118                        $result['status'] = false; 
     119                        $result['msg']  = $this->functions->lang('Field mail or name is empty'); 
     120                        return $result; 
     121                } 
     122 
     123                if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
     124                { 
     125                        $result['status'] = false; 
     126                        $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
     127                        return $result; 
     128                } 
     129 
     130                $uid = 'institutional_account_' . $params['mail']; 
     131                $dn = "uid=$uid," . $params['context']; 
     132 
     133                $filter = "(mail=".$params['mail'].")"; 
     134                $justthese = array("cn"); 
     135                $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     136                $entries = @ldap_get_entries($this->ldap,$search); 
     137                if ($entries['count'] != 0) 
     138                { 
     139                        $result['status'] = false; 
     140                        $result['msg'] = $this->functions->lang('Field mail already in use'); 
     141                        return $result; 
     142                } 
     143                /* End: Validation */ 
     144                                                 
     145                $info = array(); 
     146                $info['cn']                                     = $params['cn']; 
     147                $info['sn']                                     = $params['cn']; 
     148                $info['uid']                            = $uid; 
     149                $info['mail']                           = $params['mail']; 
     150                $info['description']            = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['desc']); 
     151                $info['phpgwAccountType']       = 'i'; 
     152                $info['objectClass'][]          = 'inetOrgPerson'; 
     153                $info['objectClass'][]          = 'phpgwAccount'; 
     154                $info['objectClass'][]          = 'top'; 
     155                $info['objectClass'][]          = 'person'; 
     156                $info['objectClass'][]          = 'qmailUser'; 
     157                $info['objectClass'][]          = 'organizationalPerson'; 
     158                 
     159                if ($params['accountStatus'] == 'on') 
     160                { 
     161                        $info['accountStatus'] = 'active'; 
     162                } 
     163                if ($params['phpgwAccountVisible'] == 'on') 
     164                { 
     165                        $info['phpgwAccountVisible'] = '-1'; 
     166                } 
     167                 
     168                if (!empty($params['owners'])) 
     169                { 
     170                        foreach($params['owners'] as $index=>$uidnumber) 
     171                        { 
     172                                $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber); 
     173                        } 
     174                }                
     175                 
     176                $result = array(); 
     177                if (!@ldap_add ( $this->ldap, $dn, $info )) 
     178                { 
     179                        $result['status'] = false; 
     180                        $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->create_institutional_accounts'; 
     181                        $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     182                } 
     183                else 
     184                        $result['status'] = true; 
     185                 
     186                return $result; 
     187        } 
     188         
     189        function save_institutional_accounts($params) 
     190        { 
     191                /* Begin: Access verification */ 
     192                $forbidden = $this->noAccess( $params['context'], 'edit_institutional_accounts' ); 
     193 
     194                if( $forbidden ) 
     195                    return( $forbidden ); 
     196//              if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 
     197//              { 
     198//                      $return['status'] = false; 
     199//                      $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . "."; 
     200//                      return $return; 
     201//              } 
     202//              $access_granted = false; 
     203//              foreach ($this->manager_contexts as $idx=>$manager_context) 
     204//              { 
     205//                      if (stristr($params['context'], $manager_context)) 
     206//                      { 
     207//                              $access_granted = true; 
     208//                              break; 
     209//                      } 
     210//              } 
     211//              if (!$access_granted) 
     212//              { 
     213//                      $return['status'] = false; 
     214//                      $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
     215//                      return $return; 
     216//              } 
     217                /* End: Access verification */ 
    77218                                 
    78219                        /* Begin: Validation */ 
     
    80221                        { 
    81222                                $result['status'] = false; 
     223                        $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
     224                        return $result; 
     225                } 
     226 
     227                if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
     228                { 
     229                        $result['status'] = false; 
     230                        $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
     231                        return $result; 
     232                } 
     233 
     234                $uid = 'institutional_account_' . $params['mail']; 
     235                $dn = strtolower("uid=$uid," . $params['context']); 
     236                $anchor = strtolower($params['anchor']); 
     237 
     238                $filter = "(mail=".$params['mail'].")"; 
     239                $justthese = array("cn"); 
     240                $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     241                $entries = @ldap_get_entries($this->ldap,$search); 
     242                 
     243                if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 
     244                { 
     245                        $result['status'] = false; 
     246                        $result['msg'] = $this->functions->lang('Field mail already in use.'); 
     247                        return $result; 
     248                } 
     249                /* End: Validation */ 
     250                 
     251                $result = array(); 
     252                $result['status'] = true; 
     253                 
     254                if ($anchor != $dn) 
     255                { 
     256                        if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true)) 
     257                        { 
     258                                $result['status'] = false; 
     259                                $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 
     260                                $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     261                        } 
     262                } 
     263                 
     264                $info = array(); 
     265                $info['cn']                                     = $params['cn']; 
     266                $info['sn']                                     = $params['cn']; 
     267                $info['uid']                            = $uid; 
     268                $info['mail']                           = $params['mail']; 
     269                 
     270                if ($params['accountStatus'] == 'on') 
     271                        $info['accountStatus'] = 'active'; 
     272                else 
     273                        $info['accountStatus'] = array(); 
     274                 
     275                if ($params['phpgwAccountVisible'] == 'on') 
     276                        $info['phpgwAccountVisible'] = '-1'; 
     277                else 
     278                        $info['phpgwAccountVisible'] = array(); 
     279                 
     280                if ($params['desc'] != '') 
     281                        $info['description'] = utf8_encode($params['desc']); 
     282                else 
     283                        $info['description'] = array(); 
     284                 
     285                if (!empty($params['owners'])) 
     286                { 
     287                        foreach($params['owners'] as $index=>$uidnumber) 
     288                        { 
     289                                $mailForwardingAddress = $this->uidnumber2mail($uidnumber); 
     290                                if ($mailForwardingAddress != '') 
     291                                        $info['mailForwardingAddress'][] = $mailForwardingAddress; 
     292                        } 
     293                } 
     294                else 
     295                        $info['mailForwardingAddress'] = array(); 
     296                 
     297                if (!@ldap_modify ( $this->ldap, $dn, $info )) 
     298                { 
     299                        $result['status'] = false; 
     300                        $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 
     301                        $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     302                } 
     303 
     304                return $result; 
     305        } 
     306 
     307        function save_shared_accounts($params) 
     308        { 
     309                /* Begin: Access verification */ 
     310                $forbidden = $this->noAccess( $params['context'], 'edit_shared_accounts' ); 
     311 
     312                if( $forbidden ) 
     313                    return $forbidden; 
     314                 
     315                /* Begin: Validation */ 
     316                if(!$params['desc']) 
     317                { 
     318                    $result['status'] = false; 
     319                    $result['msg']  = $this->functions->lang('Field description is empty');     return $result; 
     320 
     321                } 
     322 
     323                if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
     324                { 
     325                        $result['status'] = false; 
     326                        $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
     327                        return $result; 
     328                } 
     329 
     330                if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
     331                { 
     332                        $result['status'] = false; 
     333                        $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
     334                        return $result; 
     335                }                        
     336 
     337                $dnReal = "uid=".$params['uid']."," . $params['context']; 
     338                $dn = strtolower("uid=".$params['uid']."," . $params['context']); 
     339                $anchor = strtolower($params['anchor']); 
     340 
     341                 
     342                $filter = "(mail=".$params['mail'].")"; 
     343                $justthese = array("cn","uidnumber"); 
     344                $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     345                $entries = @ldap_get_entries($this->ldap,$search); 
     346 
     347                //DEBUG: Alteracao para compatibilizar com LDAP da CAIXA. 
     348                // estas funcoes do ExpressoAdmin nao levam em consideracao o DN do objeto encontrado 
     349                // e o "codigo" assume que o DN comeca com UID quando na CAIXA comeca com CN. 
     350 
     351                // Se for encontrado somente um objeto e este estiver diferente do ANCHOR, entao pega o DN  
     352                // do resultado da busca 
     353                if ( ($entries['count'] == 1) && (utf8_decode($entries[0]['dn']) != $anchor) ) 
     354                { 
     355                        // Forca o DN 
     356                        $dn = strtolower (utf8_decode($entries[0]['dn'])); 
     357                        $dnReal = $entries[0]['dn']; 
     358                        $anchor = $dn; 
     359                } 
     360                 
     361                if ( ($entries['count'] > 1) || (($entries['count'] == 1) && (strtolower(utf8_decode($entries[0]['dn'])) != $anchor)) ) 
     362                { 
     363                        $result['status'] = false; 
     364                        $result['msg'] = $this->functions->lang('Field mail already in use.'); 
     365                        return $result; 
     366                } 
     367                /* End: Validation */ 
     368 
     369                $result = array(); 
     370                $result['status'] = true;               
     371 
     372                if ($anchor != $dn) 
     373                { 
     374                        if (!@ldap_rename($this->ldap, $params['anchor'], "uid=$params[uid]", $params['context'], true)) 
     375                        { 
     376                                $result['status'] = false; 
     377                                $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_rename'; 
     378                                $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     379                        } 
     380                } 
     381                 
     382                $info = array(); 
     383                $info['cn']             = utf8_encode($params['cn']); 
     384                $info['sn']             = utf8_encode($params['cn']); 
     385                $info['uid']            = $params['uid']; 
     386                $info['mail']           = $params['mail']; 
     387 
     388 
     389                $del = array(); 
     390 
     391                if( $params['mailalternateaddress'] ) 
     392                        $info['mailalternateaddress'] = $params['mailalternateaddress']; 
     393                else 
     394                    $del['mailalternateaddress'] = array(); 
     395 
     396                if ($params['accountStatus'] == 'on') 
     397                        $info['accountStatus'] = 'active'; 
     398                else 
     399                        $info['accountStatus'] = array(); 
     400                 
     401                if ($params['phpgwAccountVisible'] == 'on') 
     402                        $info['phpgwAccountVisible'] = '-1'; 
     403                else 
     404                        $info['phpgwAccountVisible'] = array(); 
     405                 
     406                if ($params['desc'] != '') 
     407                        $info['description'] = utf8_encode($params['desc']); 
     408                else 
     409                        $info['description'] = array(); 
     410 
     411                ldap_set_option ($this->ldap, LDAP_OPT_PROTOCOL_VERSION, 3); 
     412 
     413                if( !empty( $del ) ) 
     414                    @ldap_mod_del( $this->ldap, $dnReal, $del ); 
     415 
     416                if (!@ldap_modify ( $this->ldap,$dnReal, $info )) 
     417                { 
     418                        $result['status'] = false; 
     419                        $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_modify'; 
     420                        $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
     421                } 
     422                //print_r($info);echo "Teste $dn".$result['msg'];exit(); 
     423                return $result; 
     424        } 
     425 
     426        function create_shared_accounts($params) 
     427        { 
     428                /* Begin: Access verification */ 
     429 
     430                $forbidden = $this->noAccess( $params['context'], 'add_shared_accounts', 'create shared accounts' ); 
     431 
     432                if( $forbidden ) 
     433                    return( $forbidden ); 
     434 
     435                /* End: Access verification */ 
     436 
     437                         
     438                /* Begin: Validation */ 
     439 
     440                if(!$params['desc']) 
     441                { 
     442                    $result['status'] = false; 
     443                    $result['msg']  = $this->functions->lang('Field description is empty');     return $result; 
     444 
     445                } 
     446 
     447                if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
     448                { 
     449                        $result['status'] = false; 
    82450                                $result['msg']  = $this->functions->lang('Field mail or name is empty');        return $result; 
    83451                        } 
     
    96464                        if ($entries['count'] != 0) 
    97465                        { 
    98                                 $result['status'] = false; 
    99                                 $result['msg'] = $this->functions->lang('Field mail already in use'); 
    100                                 return $result; 
    101                         } 
     466                        $result['status'] = false; 
     467                        $result['msg'] = $this->functions->lang('Field mail already in use'); 
     468                        return $result; 
     469                } 
     470 
     471                // Leio o ID a ser usado na criação do objecto. Esta função já incrementa o ID no BD. 
     472                $next_id = ($this->db_functions->get_next_id('accounts')); 
     473                if ((!is_numeric($next_id['id'])) || (!$next_id['status'])) 
     474                { 
     475                        $return['status'] = false; 
     476                        $return['msg'] = $this->functions->lang('problems getting user id') . ".\n" . $id['msg']; 
     477                        return $return; 
     478                } 
     479                else 
     480                { 
     481                        $id = $next_id['id']; 
     482                        } 
     483 
    102484                        /* End: Validation */ 
    103485                                                         
    104486                        $info = array(); 
    105                         $info['cn']                                     = $params['cn']; 
    106                         $info['sn']                                     = $params['cn']; 
     487                $info['cn']                                     = utf8_encode($params['cn']); 
     488                $info['sn']                                     = utf8_encode($params['cn']); 
     489                $info['uidnumber']                                      = $id; 
     490                $info['homeDirectory']                          = '/dev/null'; 
     491                $info['gidNumber']                                      = '1000'; 
    107492                        $info['uid']                            = $params['uid']; 
    108493                        $info['mail']                           = $params['mail']; 
    109494                        $info['description'] = utf8_encode($params['desc']);                     
    110495                        $info['phpgwAccountType']       = 's'; 
    111                         $info['objectClass'][]          = 'inetOrgPerson'; 
    112                         $info['objectClass'][]          = 'phpgwAccount'; 
    113                         $info['objectClass'][]          = 'top'; 
    114                         $info['objectClass'][]          = 'person'; 
    115                         $info['objectClass'][]          = 'qmailUser'; 
    116                         $info['objectClass'][]          = 'organizationalPerson'; 
     496                $info['objectClass'][0]         = 'inetOrgPerson'; 
     497                $info['objectClass'][1]         = 'phpgwAccount'; 
     498                $info['objectClass'][2]         = 'top'; 
     499                $info['objectClass'][3]         = 'person'; 
     500                $info['objectClass'][4]         = 'qmailUser'; 
     501                $info['objectClass'][5]         = 'organizationalPerson'; 
     502                $info['objectClass'][6]         = 'posixAccount'; 
    117503                         
    118504                        if ($params['accountStatus'] == 'on') 
     
    124510                                $info['phpgwAccountVisible'] = '-1'; 
    125511                        } 
     512                if( !empty( $params['mailalternateaddress'] ) ) 
     513                        $info['mailalternateaddress'] = $params['mailalternateaddress']; 
    126514                         
    127515                        /*if (!empty($params['owners'])) 
     
    338726                                */ 
    339727                                 
    340                                 $filter = "(objectClass=organizationalUnit)"; 
     728                                $filter = "(ou=*)"; 
    341729                                $justthese = array("ou"); 
    342730                                $search = ldap_list($ldap_connection2, $context, $filter, $justthese); 
     
    437825                                 
    438826                                        $filter = "(&(phpgwAccountType=u)(cpf=$cpf))"; 
    439                                         $justthese = array("cn","uid","mail"); 
     827                                        $justthese = array("cn","uid"); 
    440828                                        $search = ldap_search($local_ldap_connection, $context, $filter, $justthese); 
    441829                                        $entries = ldap_get_entries($local_ldap_connection,$search); 
    442830                                 
    443                                         if ( ($entries['count'] > 0 ) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) ) 
     831                                        if ( ($entries['count'] != 1) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) ) 
    444832                                        { 
    445833                                                if ($entries['count'] > 0) 
    446834                                                { 
    447                                                                 $entries_text = ""; 
     835                                                        $result['question'] = $this->functions->lang('Field CPF used by') . ":\n"; 
    448836                                                                for ($i=0; $i<$entries['count']; $i++) 
    449837                                                                        { 
    450838                                                                                if (strcasecmp($uid, $entries[$i]['uid'][0]) != 0) 
    451                                                                                         $entries_text .= $entries[$i]['cn'][0] ." - ".$entries[0]['uid'][0] ." - ".$entries[$i]['mail'][0]."\n"; 
     839                                                                        $result['question'] .= "- " . $entries[$i]['cn'][0] . "\n"; 
    452840                                                                        } 
    453                                                                 if ($this->current_config['expressoAdmin_deny_same_cpf'] == 'false' )  
    454                                                                 {                                                                
    455                                                                         $result['question']  = $this->functions->lang('Field CPF used by') . ":\n"; 
    456                                                                         $result['question'] .= $entries_text; 
    457841                                                                        $result['question'] .= $this->functions->lang("Do you want to continue anyway") . "?"; 
    458842                                                                        return $result; 
    459                                                                 } else { 
    460                                                                         $result['status'] = false; 
    461                                                                         $result['msg']  = $this->functions->lang('Field CPF cannot be duplicated') . ".\n"; 
    462                                                                         $result['msg'] .= $this->functions->lang('Field CPF used by') . ":\n"; 
    463                                                                         $result['msg'] .= $entries_text; 
    464                                                                         return $result; 
    465                                                                 }                                                                
    466                                                                          
    467843                                                } 
    468844                                        } 
     
    487863                $justthese = array("uid"); 
    488864                $i=1; 
    489                 $login = array("status" => False,"msg" => $this->functions->lang("Login generator disabled")); 
     865                $login = array("status" => False,"msg" => lang("Login generator disabled")); 
     866                 
    490867                if( (isset($this->current_config['expressoAdmin_loginGenScript'])) &&  
    491868                                ($this->current_config['expressoAdmin_loginGenScript'])) { 
     
    501878                                return array( 
    502879                                        "status" => False, 
    503                                         "msg" => $this->functions->lang("Login interface not implemented (contact suport)") 
     880                                        "msg" => lang("Login interface not implemented (contact suport)") 
    504881                                ); 
    505882                        } 
     
    6651042        } 
    6661043 
     1044        function get_available( $params, $justthese = false, $targetTypes = false ) 
     1045        { 
     1046            $search = $params['sentence'] ? $params['sentence'] : $params['filter']; 
     1047                 
     1048            if( !$justthese ) 
     1049                $justthese = array('cn', 'uidNumber','uid'); 
     1050         
     1051            if( !$targetTypes ) 
     1052                $targetTypes = 'u'; 
     1053         
     1054            $ldapService = ServiceLocator::getService('ldap'); 
     1055                         
     1056            $entries = $ldapService->accountSearch( $search, $justthese, $params['context'], $targetTypes, 'cn' ); 
     1057 
     1058            return( $entries ); 
     1059        } 
     1060                         
     1061        function get_options( $entries, $label, $value = false, $uid = false ) 
     1062                { 
     1063            if( !$value ) 
     1064                $value = $label; 
     1065 
     1066            $options = ''; 
     1067            foreach( $entries as  $entry ) 
     1068                        { 
     1069                if( $uid ) 
     1070                    $entry[$label] .= '('.$entry[$uid].')'; 
     1071 
     1072                $options .= '<option value='.$entry[$value].'>'.$entry[$label].'</option>'; 
     1073                } 
     1074 
     1075        return $options; 
     1076        } 
     1077         
     1078        function get_json( $entries, $label, $value = false, $uid = false ) 
     1079        { 
     1080            if( !$value ) 
     1081                $value = $label; 
     1082 
     1083            $options = array(); 
     1084 
     1085            foreach( $entries as  $entry ) 
     1086            { 
     1087                if( $uid ) 
     1088                    $entry[$label] .= '('.$entry[$uid].')'; 
     1089 
     1090                 $options[] = '"'.$entry[$value].'"'.':'.'"'.$entry[$label].'"'; 
     1091 
     1092                        } 
     1093 
     1094             return "{".implode(',',$options)."}"; 
     1095        } 
     1096 
     1097 
    6671098        //Busca usuários de um contexto e já retorna as options do select; 
    6681099        function get_available_users($params) 
    669         { 
    670                 $context = $params['context']; 
    671                 $recursive = $params['recursive']; 
    672                 $justthese = array("cn", "uidNumber"); 
    673                 $filter="(phpgwAccountType=u)"; 
    674                  
    675                 if ($recursive == 'true') 
    676                         $groups_list=ldap_search($this->ldap, $context, $filter, $justthese); 
    677                 else 
    678                 $groups_list=ldap_list($this->ldap, $context, $filter, $justthese); 
    679          
    680         $entries = ldap_get_entries($this->ldap, $groups_list); 
    681          
    682                 for ($i=0; $i<$entries["count"]; $i++){ 
    683                         $u_tmp[$entries[$i]["uidnumber"][0]] = $entries[$i]["cn"][0]; 
    684                 } 
    685                          
    686                 if (count($u_tmp)) 
    687                         natcasesort($u_tmp); 
    688  
    689                 $i = 0; 
    690                 $users = array(); 
    691                          
    692                 if (count($u_tmp)) 
    693                 { 
    694                         foreach ($u_tmp as $uidnumber => $cn) 
    695                         { 
    696                                 $options .= "<option value=$uidnumber>$cn</option>"; 
    697                         } 
    698                         unset($u_tmp); 
    699                 } 
    700  
    701         return $options; 
    702         } 
    703         //Busca usuarios de um contexto e ja retorna as options do select; 
     1100                                { 
     1101             $entries = $this->get_available($params ); 
     1102 
     1103//              $options = ''; 
     1104//              foreach ($entries as  $value) 
     1105//                  $options .= '<option value='.$value['uidnumber'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1106 
     1107             return $this->get_options( $entries, 'cn', 'uidnumber', 'uid' ); 
     1108        } 
     1109 
     1110        //Busca usuários e contas compartilhadas de um contexto e já retorna as options do select; 
     1111        function get_available_users_and_shared_acounts($params) 
     1112        { 
     1113             $entries = $this->get_available($params, array('cn', 'uidNumber','uid'), array('u','s') ); 
     1114//              $options = ''; 
     1115//              foreach ($entries as  $value) 
     1116//                  $options .= '<option value='.$value['uidnumber'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1117                 
     1118             return $this->get_options( $entries, 'cn', 'uidnumber', 'uid' ); 
     1119        } 
     1120                 
    7041121        function get_available_users2($params) 
    7051122        { 
    706                 $context= $params['context']; 
    707                 $justthese = array("cn", "uid"); 
    708                 $filter = "(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1)))"; 
    709  
    710             if ($this->ldap) 
    711             { 
    712                         $sr=ldap_search($this->ldap, $context, $filter, $justthese); 
    713                         $entries = ldap_get_entries($this->ldap, $sr);                   
    714  
    715                         for ($i=0; $i<$entries["count"]; $i++){                          
    716                                         $u_tmp[$entries[$i]["uid"][0]] = $entries[$i]["cn"][0]; 
    717                         } 
    718  
    719                         natcasesort($u_tmp); 
    720  
    721                         $i = 0; 
    722                         $users = array(); 
    723  
    724                         if (count($u_tmp)) 
    725                         { 
    726                                 foreach ($u_tmp as $uidnumber => $cn) 
    727                                 { 
    728                                         $options .= "<option value=$uidnumber>$cn</option>"; 
    729                                 } 
    730                                 unset($u_tmp); 
    731                         }                        
    732                 return $options; 
    733                 } 
    734         } 
     1123             $entries = $this->get_available($params, array('cn', 'uid') ); 
     1124                 
     1125//              $options = array(); 
     1126//              foreach ($entries as $value) 
     1127//                  $options[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 
     1128                 
     1129             return $this->get_json( $entries, 'cn', 'uid', 'uid' ); 
     1130        } 
     1131 
     1132        function get_available_users3($params) 
     1133                { 
     1134             $ldapService = ServiceLocator::getService('ldap'); 
     1135             $groups = $ldapService->accountSearch($params['filter'], array('gidNumber','cn','uid'), $params['context'], 'g', 'cn'); 
     1136             $users = $ldapService->accountSearch($params['filter'], array('uidNumber','cn','uid'), $params['context'], 'u', 'cn'); 
     1137 
     1138             $user_options =''; 
     1139             $group_options =''; 
     1140             $user_options2 =''; 
     1141             $group_options2 =''; 
     1142 
     1143             foreach($groups as  $group) 
     1144             { 
     1145                $group_options .= '<option  value="'.$group['gidnumber'].'">'.$group['cn'].' ('.$group['gidnumber'].')</option>'."\n"; 
     1146                $group_options2 .= '<option  value="'.$group['gidnumber'].',G">'.$group['cn'].' ('.$group['gidnumber'].')</option>'."\n"; 
     1147                } 
     1148 
     1149             foreach($users as $user) 
     1150             { 
     1151                $user_options .= '<option  value="'.$user['uid'].'">'.$user['cn'].' ('.$user['uid'].')</option>'."\n"; 
     1152                $user_options2 .= '<option  value="'.$user['uid'].',U">'.$user['cn'].' ('.$user['uid'].')</option>'."\n"; 
     1153 
     1154             } 
     1155 
     1156            return array("users" => $user_options, "groups" => $group_options , "users2" => $user_options2, "groups2" => $group_options2); 
     1157        } 
     1158 
     1159        /** 
     1160         * @abstract Busca usuários de um contexto e retorna já formatado com as options do select. 
     1161         * @params array params com as informações do formulário com os dados do contexto e etc. 
     1162         * @return array com os usuários do contexto já com a formatação das options do select. 
     1163         */ 
     1164        function get_available_users_messages_size($params) 
     1165                        { 
     1166/*             $ldapService = ServiceLocator::getService('ldap'); 
     1167             $entries = $ldapService->accountSearch($params['sentence'], array('cn', 'uidNumber','uid'), $params['context'], 'u', 'cn'); 
     1168             $options = array(); 
     1169 
     1170             foreach ($entries as $value) 
     1171                 $options[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"';*/ 
     1172                  
     1173            $entries = $this->get_available( $params, array('cn', 'uid') ); 
     1174 
     1175             return $this->get_json( $entries, 'cn', 'uid','uid' ); 
     1176                        } 
     1177 
     1178        /** 
     1179         * @abstract Busca usuários e grupos de um contexto e retorna já formatado com as options do select. 
     1180         * @params array params com as informações do formulário com os dados do contexto e etc. 
     1181         * @return array com os usuários do contexto já com a formatação das options do select. 
     1182         */ 
     1183        function get_available_users_and_groups_messages_size($params) 
     1184        { 
     1185             $ldapService = ServiceLocator::getService('ldap'); 
     1186             $groups = $ldapService->accountSearch($params['sentence'], array('gidNumber','cn','uid'), $params['context'], 'g', 'cn'); 
     1187             $users = $ldapService->accountSearch($params['sentence'], array('cn','uid'), $params['context'], 'u', 'cn'); 
     1188             $optionsUsers = array(); 
     1189             $optionsGroups = array(); 
     1190             foreach ($users as $value) 
     1191                 $optionsUsers[] = '"'.$value['uid'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 
     1192 
     1193             foreach ($groups as $value) 
     1194                 $optionsGroups[] = '"'.$value['gidNumber'].'"'.':'.'"'.$value['cn'].'('.$value['uid'].')'.'"'; 
     1195 
     1196             return "{".implode(',',$optionsUsers).implode(',',$optionsGroups)."}"; 
     1197        } 
     1198 
     1199   
    7351200        //Busca usuários e listas de um contexto e já retorna as options do select; 
    7361201        function get_available_users_and_maillist($params) 
    737         { 
     1202                        { 
     1203 
     1204             $ldapService = ServiceLocator::getService('ldap'); 
     1205             $users = $ldapService->accountSearch($params['sentence'], array('cn', 'mail','uid'), $params['context'], 'u', 'cn'); 
     1206             $listas = $ldapService->accountSearch($params['sentence'], array('cn', 'mail','uid'), $params['context'], 'l', 'cn'); 
     1207             $options = ''; 
     1208             if(count($listas) > 0) 
     1209                                { 
     1210                 $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('email lists').'&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n"; 
     1211                 foreach ($listas as  $value) 
     1212                    $options .= '<option value='.$value['mail'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1213                                } 
     1214 
     1215             if(count($users) > 0) 
     1216             { 
     1217                $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('users').'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n"; 
     1218                foreach ($users as  $value) 
     1219                    $options .= '<option value='.$value['mail'].'>'.$value['cn'].'('.$value['uid'].')</option>'; 
     1220                        } 
     1221              
     1222             return $options; 
     1223                } 
     1224                 
     1225        function get_available_groups($params) 
     1226                { 
     1227//              $ldapService = ServiceLocator::getService('ldap'); 
     1228//              $entries = $ldapService->accountSearch($params['sentence'], array('cn', 'gidnumber'), $params['context'], 'g', 'cn'); 
     1229//              $options = ''; 
     1230//  
     1231//              foreach ($entries as  $value) 
     1232//                  $options .= '<option value='.$value['gidnumber'].'>'.$value['cn'].'</option>'; 
     1233                  
     1234            $entries = $this->get_available( $params, array( 'cn', 'gidNumber' ), 'g' ); 
     1235 
     1236             return $this->get_options( $entries, 'cn', 'gidnumber' ); 
     1237                } 
     1238                         
     1239        function get_available_maillists($params) 
     1240        { 
     1241                if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 
     1242                        return false; 
     1243                         
    7381244                $context = $params['context']; 
    739                 $recursive = $params['recursive']; 
    740                  
    741                 //Usado para retirar a própria lista das possibilidades de inclusão. 
    742                 $denied_uidnumber = $params['denied_uidnumber']; 
    743                  
    744                 $justthese = array("cn", "uidNumber", "mail"); 
    745                  
    746                 $users_filter="(phpgwAccountType=u)"; 
    747                 $lists_filter = $denied_uidnumber == '' ? "(phpgwAccountType=l)" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber)))"; 
    748                  
    749                 $users = Array(); 
    750                 $lists = Array();                
    751  
    752                 /* folling referral connection */ 
    753                 $ldap_conn_following_ref = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
    754                 if ($ldap_conn_following_ref) 
    755                 { 
    756                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_PROTOCOL_VERSION, 3); 
    757                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_REFERRALS, 1); 
    758  
    759                         if ( ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
    760                                 ldap_bind($ldap_conn_following_ref, $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'], $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
    761                 } 
    762                 else 
    763                         return false; 
    764  
    765                 if ($recursive == 'true') 
    766                         $users_search = ldap_search($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    767                 else 
    768                         $users_search = ldap_list($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    769  
    770                 /* email lists */ 
    771                 if($params['listSearch'] == 'true'){ 
    772                         if ($recursive == 'true') 
    773                                 $lists_search = ldap_search($ldap_conn_following_ref, $context, $lists_filter, $justthese);                      
    774                         else                     
    775                                 $lists_search = ldap_list($ldap_conn_following_ref, $context, $lists_filter, $justthese); 
    776  
    777                         $lists_entries = ldap_get_entries($ldap_conn_following_ref, $lists_search); 
    778  
    779                         for ($i=0; $i<$lists_entries["count"]; $i++) 
    780                         { 
    781                                 $l_tmp[$lists_entries[$i]["mail"][0]] = $lists_entries[$i]["cn"][0]; 
    782                         } 
    783  
    784                         if (count($l_tmp)) 
    785                                 natcasesort($l_tmp); 
    786  
    787                         $i = 0; 
    788                         $lists = array(); 
    789  
    790                         $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('email lists').'&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n";         
    791                         if (count($l_tmp)) 
    792                         { 
    793                                 foreach ($l_tmp as $mail => $cn) 
    794                                 { 
    795                                         $options .= "<option value=$mail>$cn</option>"; 
    796                                 } 
    797                                 unset($l_tmp); 
    798                         } 
    799                 } 
    800                  
    801                 /* users */ 
    802                 $users_entries = ldap_get_entries($ldap_conn_following_ref, $users_search); 
    803                 for ($i=0; $i<$users_entries["count"]; $i++) 
    804                 { 
    805                         $u_tmp[$users_entries[$i]["mail"][0]] = $users_entries[$i]["cn"][0]; 
    806                 } 
    807                          
    808                 if (count($u_tmp)) 
    809                         natcasesort($u_tmp); 
    810                          
    811                 $i = 0; 
    812                 $users = array(); 
    813                  
    814                 $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('users').'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n"; 
    815                          
    816                 if (count($u_tmp)) 
    817                 { 
    818                         foreach ($u_tmp as $mail => $cn) 
    819                         { 
    820                                 $options .= "<option value=$mail class='line-above'>$cn</option>"; 
    821                         } 
    822                         unset($u_tmp); 
    823                 } 
    824                  
    825                 ldap_close($ldap_conn_following_ref); 
     1245                $justthese = array("uid","mail","uidNumber"); 
     1246                $maillists=ldap_list($ldapMasterConnect, $context, ("(phpgwAccountType=l)"), $justthese); 
     1247                ldap_sort($ldapMasterConnect, $maillists, "uid"); 
     1248                 
     1249                $entries = ldap_get_entries($ldapMasterConnect, $maillists); 
     1250                         
     1251                $options = '';                   
     1252                for ($i=0; $i<$entries['count']; $i++) 
     1253                        { 
     1254                        $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['uid'][0] . " (" . $entries[$i]['mail'][0] . ")" . "</option>"; 
     1255                } 
     1256                 
     1257        ldap_close($ldapMasterConnect); 
    8261258                return $options; 
    8271259        } 
    8281260 
    829         function get_available_groups($params) 
    830         { 
    831                 $context = $params['context']; 
    832                 $justthese = array("cn", "gidNumber"); 
    833         $groups_list=ldap_list($this->ldap, $context, ("(phpgwAccountType=g)"), $justthese); 
    834         ldap_sort($this->ldap, $groups_list, "cn"); 
     1261        function get_available_institutional_account($params) 
     1262        { 
     1263            if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 
     1264                    return false; 
     1265 
     1266            $filtro =utf8_encode($params['filter']); 
     1267            $context =utf8_encode($params['context']);//adicionado 
     1268            $justthese = array("uid","mail","uidNumber"); 
     1269            $maillists=ldap_list($ldapMasterConnect, $context, ("(&(phpgwAccountType=i)(mail=*$filtro*))"), $justthese); 
     1270            ldap_sort($ldapMasterConnect, $maillists, "uid"); 
    8351271         
    836         $entries = ldap_get_entries($this->ldap, $groups_list); 
     1272            $entries = ldap_get_entries($ldapMasterConnect, $maillists); 
    8371273                 
    8381274                $options = ''; 
    8391275                for ($i=0; $i<$entries['count']; $i++) 
    8401276                { 
    841                         $options .= "<option value=" . $entries[$i]['gidnumber'][0] . ">" . $entries[$i]['cn'][0] . "</option>"; 
     1277                            $options .= "<option value=" . $entries[$i]['mail'][0] . ">" . $entries[$i]['mail'][0] . "</option>"; 
    8421278                } 
    8431279         
     1280            ldap_close($ldapMasterConnect); 
     1281 
     1282 
    8441283        return $options;                 
    8451284        } 
    8461285         
    847         function get_available_maillists($params) 
     1286        function get_available_shared_account($params) 
    8481287        { 
    8491288                if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 
    8501289                        return false; 
    8511290                 
    852                 $context = $params['context']; 
     1291            $filtro =utf8_encode($params['filter']); 
     1292            $context =utf8_encode($params['context']);//adicionado 
    8531293                $justthese = array("uid","mail","uidNumber"); 
    854         $maillists=ldap_list($ldapMasterConnect, $context, ("(phpgwAccountType=l)"), $justthese); 
     1294            $maillists=ldap_search($ldapMasterConnect, $context, ("(&(phpgwAccountType=s)(mail=*$filtro*))"), $justthese); 
    8551295        ldap_sort($ldapMasterConnect, $maillists, "uid"); 
    8561296         
     
    8601300                for ($i=0; $i<$entries['count']; $i++) 
    8611301                { 
    862                         $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['uid'][0] . " (" . $entries[$i]['mail'][0] . ")" . "</option>"; 
     1302                            $options .= "<option value=" . $entries[$i]['mail'][0] . ">" . $entries[$i]['mail'][0] . "</option>"; 
    8631303                } 
    8641304         
     
    11321572                                $result['departmentnumber']             = $entry[0]['departmentnumber'][0]; 
    11331573                                $result['givenname']                    = $entry[0]['givenname'][0]; 
    1134                                 $result['sn']                                   = $entry[0]['sn'][0]; 
     1574                                $result['sn']                                   = utf8_decode($entry[0]['sn'][0]); 
    11351575                                $result['telephonenumber']              = $entry[0]['telephonenumber'][0]; 
    11361576                                $result['passwd_expired']               = $entry[0]['phpgwlastpasswdchange'][0]; 
     
    11921632                        for ($i=0; $i<$entries['count']; $i++) 
    11931633                        { 
    1194                                 $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = $entries[$i]['cn'][0]; 
     1634                                $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = utf8_decode($entries[$i]['cn'][0]); 
     1635                        } 
     1636                        } 
     1637                } 
     1638                if (is_array($result)) 
     1639                        return $result; 
     1640                else 
     1641                        return false; 
     1642        } 
     1643 
     1644 
     1645        function get_user_cn_by_uid($uid) 
     1646        { 
     1647            foreach ($this->manager_contexts as $index=>$context) 
     1648            { 
     1649 
     1650                    $justthese = array("cn"); 
     1651                    $filter="(&(phpgwAccountType=u)(uid=".$uid."))"; 
     1652                    $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     1653                    $entry = ldap_get_entries($this->ldap, $search); 
     1654                    if($entry) 
     1655                        return utf8_decode($entry[0]['cn'][0]); 
     1656            } 
     1657            return null; 
     1658        } 
     1659 
     1660        function get_group_cn_by_gidnumber($gidnumber) 
     1661        { 
     1662            foreach ($this->manager_contexts as $index=>$context) 
     1663                { 
     1664                 
     1665                    $justthese = array("cn"); 
     1666                    $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 
     1667                    $search = ldap_search($this->ldap, $context, $filter, $justthese); 
     1668                    $entry = ldap_get_entries($this->ldap, $search); 
     1669                    if($entry) 
     1670                        return utf8_decode($entry[0]['cn'][0]); 
     1671                        } 
     1672            return null; 
     1673                } 
     1674                 
     1675         
     1676        function get_user_info_by_uid($uid) 
     1677        { 
     1678                foreach ($this->manager_contexts as $index=>$context) 
     1679                { 
     1680                        $filter="(&(phpgwAccountType=u)(uid=".$uid."))"; 
     1681                        $justthese = array("cn"); 
     1682                        $search = ldap_search($this->ldap, $context, $filter); 
     1683                        $entry = ldap_get_entries($this->ldap, $search); 
     1684                         
     1685                        if ($entry['count']) 
     1686                        { 
     1687                                //Pega o dn do setor do usuario. 
     1688                                $entry[0]['dn'] = strtolower($entry[0]['dn']); 
     1689                                $sector_dn_array = explode(",", $entry[0]['dn']); 
     1690                                for($i=1; $i<count($sector_dn_array); $i++) 
     1691                                        $sector_dn .= $sector_dn_array[$i] . ','; 
     1692                                //Retira ultimo pipe. 
     1693                                $sector_dn = substr($sector_dn,0,(strlen($sector_dn) - 1)); 
     1694                 
     1695                                $result['context']                              = $sector_dn; 
     1696                                $result['uid']                                  = $entry[0]['uid'][0]; 
     1697                                $result['cn']                                   = utf8_decode($entry[0]['cn'][0]); 
     1698                                $result['uidnumber']                    = $entry[0]['uidnumber'][0]; 
     1699                                $result['gidnumber']                    = $entry[0]['gidnumber'][0]; 
     1700                                $result['departmentnumber']             = $entry[0]['departmentnumber'][0]; 
     1701                                $result['givenname']                    = $entry[0]['givenname'][0]; 
     1702                                $result['sn']                                   = $entry[0]['sn'][0]; 
     1703                                $result['telephonenumber']              = $entry[0]['telephonenumber'][0]; 
     1704                                $result['passwd_expired']               = $entry[0]['phpgwlastpasswdchange'][0]; 
     1705                                $result['phpgwaccountstatus']   = $entry[0]['phpgwaccountstatus'][0]; 
     1706                                $result['phpgwaccountvisible']  = $entry[0]['phpgwaccountvisible'][0]; 
     1707                                $result['accountstatus']                = $entry[0]['accountstatus'][0]; 
     1708                                $result['mail']                                 = $entry[0]['mail'][0]; 
     1709                                $result['mailalternateaddress'] = $entry[0]['mailalternateaddress']; 
     1710                                $result['mailforwardingaddress']= $entry[0]['mailforwardingaddress']; 
     1711                                $result['deliverymode']                 = $entry[0]['deliverymode'][0]; 
     1712                                $result['userPasswordRFC2617']  = $entry[0]['userpasswordrfc2617'][0]; 
     1713 
     1714                                //Photo 
     1715                                if ($entry[0]['jpegphoto']['count'] == 1) 
     1716                                        $result['photo_exist'] = 'true'; 
     1717                 
     1718                                // Samba 
     1719                                for ($i=0; $i<$entry[0]['objectclass']['count']; $i++) 
     1720                                { 
     1721                                        if ($entry[0]['objectclass'][$i] == 'sambaSamAccount') 
     1722                                                $result['sambaUser'] = true; 
     1723                                } 
     1724                                if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($result['sambaUser'])) 
     1725                                { 
     1726                                        $result['sambaaccflags'] = $entry[0]['sambaacctflags'][0]; 
     1727                                        $result['sambalogonscript'] = $entry[0]['sambalogonscript'][0]; 
     1728                                        $result['homedirectory'] = $entry[0]['homedirectory'][0]; 
     1729                                        $a_tmp = explode("-", $entry[0]['sambasid'][0]); 
     1730                                        array_pop($a_tmp); 
     1731                                        $result['sambasid'] = implode("-", $a_tmp); 
     1732                                } 
     1733 
     1734                                // Verifica o acesso do gerente aos atributos corporativos 
     1735                                if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'manipulate_corporative_information')) 
     1736                                { 
     1737                                        $result['corporative_information_employeenumber']= $entry[0]['employeenumber'][0]; 
     1738                                        $result['corporative_information_cpf']                  = $entry[0]['cpf'][0]; 
     1739                                        $result['corporative_information_rg']                   = $entry[0]['rg'][0]; 
     1740                                        $result['corporative_information_rguf']                 = $entry[0]['rguf'][0]; 
     1741                                        $result['corporative_information_description']  = utf8_decode($entry[0]['description'][0]); 
     1742                                } 
     1743                                 
     1744                                // MailLists 
     1745                                $result['maillists_info'] = $this->get_user_maillists($result['mail']); 
     1746                                if($result['maillists_info']) 
     1747                                { 
     1748                                        foreach ($result['maillists_info'] as $maillist) 
     1749                                        { 
     1750                                                $result['maillists'][] = $maillist['uid']; 
     1751                                        } 
     1752                                } 
     1753                                 
     1754                                // Groups 
     1755                                $justthese = array("gidnumber","cn"); 
     1756                                $filter="(&(phpgwAccountType=g)(memberuid=".$result['uid']."))"; 
     1757                                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     1758                        ldap_sort($this->ldap, $search, "cn"); 
     1759                        $entries = ldap_get_entries($this->ldap, $search); 
     1760                        for ($i=0; $i<$entries['count']; $i++) 
     1761                        { 
     1762                                $result['groups_ldap'][ $entries[$i]['gidnumber'][0] ] = utf8_decode($entries[$i]['cn'][0]); 
    11951763                        } 
    11961764                        } 
     
    12401808        } 
    12411809         
    1242         function get_group_info($gidnumber,$use_global_context=false) 
    1243         { 
    1244                 $array_context = $use_global_context ? Array(0 => $GLOBALS['phpgw_info']['server']['ldap_context']) : $this->manager_contexts; 
    1245                 foreach ($array_context as $index=>$context) 
     1810        function get_group_info($gidnumber) 
     1811        { 
     1812                foreach ($this->manager_contexts as $index=>$context) 
    12461813                { 
    12471814                        $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; 
     
    12721839                         
    12731840                                        // Montagem dinamica do filtro 
    1274                                         $filter="(&(phpgwAccountType=u)(|"; 
     1841                                        $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s))(|"; 
    12751842                                        for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++) 
    12761843                                        { 
     
    14752042                if (count($gidnumbers)) 
    14762043                { 
    1477                         $justthese = array("cn"); 
     2044                        $justthese = array("cn","uid"); 
    14782045                        $i = 0; 
    14792046                        foreach ($gidnumbers as $gidnumber) 
     
    14872054                                         
    14882055                                else 
     2056                                { 
     2057                                        $result['groups_info'][$i]['uid'] = $entry[0]['uid'][0]; 
    14892058                                        $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0]; 
     2059                                } 
    14902060                                $result['groups_info'][$i]['gidnumber'] = $gidnumber; 
    14912061                         
     
    15102080        { 
    15112081                $justthese = array("uid"); 
    1512                 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=l))(uidNumber=".$uidnumber."))"; 
     2082                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uidNumber=".$uidnumber."))"; 
    15132083                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    15142084                $entry = ldap_get_entries($this->ldap, $search); 
     
    15222092                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    15232093                $entry = ldap_get_entries($this->ldap, $search); 
    1524                 return $entry[0]['cn'][0]; 
     2094                return utf8_decode($entry[0]['cn'][0]); 
     2095        } 
     2096 
     2097        function uid2uidnumber($uid) 
     2098        { 
     2099                $justthese = array("uidNumber"); 
     2100                $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uid=".$uid."))"; 
     2101                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
     2102                $entry = ldap_get_entries($this->ldap, $search); 
     2103                return $entry[0]['uidnumber'][0]; 
    15252104        } 
    15262105 
     
    19472526                $search = ldap_search($this->ldap, $context, $filter, $justthese); 
    19482527            $count_entries = ldap_count_entries($this->ldap, $search); 
    1949              
     2528                 
    19502529            if ($count_entries > 0) 
    19512530                return true; 
    19522531            else 
    19532532                return false; 
    1954         } 
    1955          
     2533                } 
     2534                 
    19562535        function add_sambadomain($sambadomainname, $sambasid, $context) 
    19572536        { 
     
    19652544                 
    19662545                if (!@ldap_add ( $this->ldap, $dn, $entry )) 
    1967                 { 
     2546                        { 
    19682547                        $return['status'] = false; 
    19692548                        $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_sambadomain ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 
     
    19742553                return $return; 
    19752554        } 
    1976          
     2555                 
    19772556        function delete_sambadomain($sambadomainname) 
    19782557        { 
     
    19812560                $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter); 
    19822561            $entry = ldap_get_entries($this->ldap, $search); 
    1983           
     2562                 
    19842563                if ($entry['count'] != 0) 
    1985             { 
     2564                { 
    19862565                        $dn = $entry[0]['dn']; 
    19872566                         
     
    19912570                                $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_sambadomain ($sambadomainname)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 
    19922571                        } 
    1993             } 
    1994              
     2572                } 
     2573                 
    19952574                return $return; 
    19962575        } 
    19972576         
    19982577        function search_user($params) 
    1999         { 
    2000                 $search = $params['search']; 
    2001                 $justthese = array("cn","uid", "mail"); 
    2002         $users_list=ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], "(&(phpgwAccountType=u) (|(cn=*$search*)(mail=$search*)) )", $justthese); 
    2003          
    2004         if (ldap_count_entries($this->ldap, $users_list) == 0) 
    2005         { 
    2006                 $return['status'] = 'false'; 
    2007                 $result['msg'] = $this->functions->lang('Any result was found') . '.'; 
    2008                 return $return; 
    2009         } 
    2010          
    2011         ldap_sort($this->ldap, $users_list, "cn"); 
    2012          
    2013         $entries = ldap_get_entries($this->ldap, $users_list); 
    2014                  
    2015                 $options = ''; 
    2016                 for ($i=0; $i<$entries['count']; $i++) 
    2017                 { 
    2018                         $options .= "<option value=" . $entries[$i]['uid'][0] . ">" . $entries[$i]['cn'][0] . " (".$entries[$i]['mail'][0].")" . "</option>"; 
    2019                 } 
    2020          
     2578                { 
     2579             $ldapService = ServiceLocator::getService('ldap'); 
     2580             $entries = $ldapService->accountSearch($params['search'], array('cn','uid', "mail"), $params['context'], 'u', 'cn'); 
     2581 
     2582             if (count($entries) == 0) 
     2583             { 
     2584                    $return['status'] = 'false'; 
     2585                    $return['msg'] = $this->functions->lang('Any result was found') . '.'; 
     2586                    return $return; 
     2587                } 
     2588             $options = ''; 
     2589 
     2590             foreach ($entries as  $value) 
     2591                 $options .= '<option value='.$value['uid'].'>'.$value['cn'].'('.$value['mail'].')'.'</option>'; 
     2592     
    20212593        return $options;                 
    2022         } 
    2023          
    2024         function create_institutional_accounts($params) 
    2025         { 
    2026                 /* Begin: Access verification */ 
    2027                 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts')) 
    2028                 { 
    2029                         $return['status'] = false; 
    2030                         $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 
    2031                         return $return; 
    2032                 } 
    2033                  
    2034                 $access_granted = false; 
    2035                 foreach ($this->manager_contexts as $idx=>$manager_context) 
    2036                 { 
    2037                         if (stristr($params['context'], $manager_context)) 
    2038                         { 
    2039                                 $access_granted = true; 
    2040                                 break; 
    2041                         } 
    2042                 } 
    2043                 if (!$access_granted) 
    2044                 { 
    2045                         $return['status'] = false; 
    2046                         $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
    2047                         return $return; 
    2048                 } 
    2049                 /* End: Access verification */ 
    2050  
    2051                 /* Begin: Validation */ 
    2052                 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
    2053                 { 
    2054                         $result['status'] = false; 
    2055                         $result['msg']  = $this->functions->lang('Field mail or name is empty'); 
    2056                         return $result; 
    2057                 } 
    2058  
    2059                 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
    2060                 { 
    2061                         $result['status'] = false; 
    2062                         $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
    2063                         return $result; 
    2064                 } 
    2065  
    2066                 $uid = 'institutional_account_' . $params['mail']; 
    2067                 $dn = "uid=$uid," . $params['context']; 
    2068  
    2069                 $filter = "(mail=".$params['mail'].")"; 
    2070                 $justthese = array("cn"); 
    2071                 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    2072                 $entries = @ldap_get_entries($this->ldap,$search); 
    2073                 if ($entries['count'] != 0) 
    2074                 { 
    2075                         $result['status'] = false; 
    2076                         $result['msg'] = $this->functions->lang('Field mail already in use'); 
    2077                         return $result; 
    2078                 } 
    2079                 /* End: Validation */ 
    2080                                                  
    2081                 $info = array(); 
    2082                 $info['cn']                                     = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['cn']); 
    2083                 $info['sn']                                     = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['cn']); 
    2084                 $info['uid']                            = $uid; 
    2085                 $info['mail']                           = $params['mail']; 
    2086                 $info['description']            = iconv("ISO-8859-1","UTF-8//TRANSLIT",$params['desc']); 
    2087                 $info['phpgwAccountType']       = 'i'; 
    2088                 $info['objectClass'][]          = 'inetOrgPerson'; 
    2089                 $info['objectClass'][]          = 'phpgwAccount'; 
    2090                 $info['objectClass'][]          = 'top'; 
    2091                 $info['objectClass'][]          = 'person'; 
    2092                 $info['objectClass'][]          = 'qmailUser'; 
    2093                 $info['objectClass'][]          = 'organizationalPerson'; 
    2094                  
    2095                 if ($params['accountStatus'] == 'on') 
    2096                 { 
    2097                         $info['accountStatus'] = 'active'; 
    2098                 } 
    2099                 if ($params['phpgwAccountVisible'] == 'on') 
    2100                 { 
    2101                         $info['phpgwAccountVisible'] = '-1'; 
    2102                 } 
    2103                  
    2104                 if (!empty($params['owners'])) 
    2105                 { 
    2106                         foreach($params['owners'] as $index=>$uidnumber) 
    2107                         { 
    2108                                 $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber); 
    2109                         } 
    2110                 }                
    2111                  
    2112                 $result = array(); 
    2113                 if (!@ldap_add ( $this->ldap, $dn, $info )) 
    2114                 { 
    2115                         $result['status'] = false; 
    2116                         $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->create_institutional_accounts'; 
    2117                         $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2118                 } 
    2119                 else 
    2120                         $result['status'] = true; 
    2121                  
    2122                 return $result; 
    2123         } 
    2124          
    2125         function save_institutional_accounts($params) 
    2126         { 
    2127                 /* Begin: Access verification */ 
    2128                 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 
    2129                 { 
    2130                         $return['status'] = false; 
    2131                         $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . "."; 
    2132                         return $return; 
    2133                 } 
    2134                 $access_granted = false; 
    2135                 foreach ($this->manager_contexts as $idx=>$manager_context) 
    2136                 { 
    2137                         if (stristr($params['context'], $manager_context)) 
    2138                         { 
    2139                                 $access_granted = true; 
    2140                                 break; 
    2141                         } 
    2142                 } 
    2143                 if (!$access_granted) 
    2144                 { 
    2145                         $return['status'] = false; 
    2146                         $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
    2147                         return $return; 
    2148                 } 
    2149                 /* End: Access verification */ 
    2150                  
    2151                 /* Begin: Validation */ 
    2152                 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
    2153                 { 
    2154                         $result['status'] = false; 
    2155                         $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
    2156                         return $result; 
    2157                 } 
    2158  
    2159                 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
    2160                 { 
    2161                         $result['status'] = false; 
    2162                         $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
    2163                         return $result; 
    2164                 } 
    2165  
    2166                 $uid = 'institutional_account_' . $params['mail']; 
    2167                 $dn = strtolower("uid=$uid," . $params['context']); 
    2168                 $anchor = strtolower($params['anchor']); 
    2169  
    2170                 $filter = "(mail=".$params['mail'].")"; 
    2171                 $justthese = array("cn"); 
    2172                 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    2173                 $entries = @ldap_get_entries($this->ldap,$search); 
    2174                  
    2175                 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 
    2176                 { 
    2177                         $result['status'] = false; 
    2178                         $result['msg'] = $this->functions->lang('Field mail already in use.'); 
    2179                         return $result; 
    2180                 } 
    2181                 /* End: Validation */ 
    2182                  
    2183                 $result = array(); 
    2184                 $result['status'] = true; 
    2185                  
    2186                 if ($anchor != $dn) 
    2187                 { 
    2188                         if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true)) 
    2189                         { 
    2190                                 $result['status'] = false; 
    2191                                 $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 
    2192                                 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2193                         } 
    2194                 } 
    2195                  
    2196                 $info = array(); 
    2197                 $info['cn']                                     = $params['cn']; 
    2198                 $info['sn']                                     = $params['cn']; 
    2199                 $info['uid']                            = $uid; 
    2200                 $info['mail']                           = $params['mail']; 
    2201                  
    2202                 if ($params['accountStatus'] == 'on') 
    2203                         $info['accountStatus'] = 'active'; 
    2204                 else 
    2205                         $info['accountStatus'] = array(); 
    2206                  
    2207                 if ($params['phpgwAccountVisible'] == 'on') 
    2208                         $info['phpgwAccountVisible'] = '-1'; 
    2209                 else 
    2210                         $info['phpgwAccountVisible'] = array(); 
    2211                  
    2212                 if ($params['desc'] != '') 
    2213                         $info['description'] = utf8_encode($params['desc']); 
    2214                 else 
    2215                         $info['description'] = array(); 
    2216                  
    2217                 if (!empty($params['owners'])) 
    2218                 { 
    2219                         foreach($params['owners'] as $index=>$uidnumber) 
    2220                         { 
    2221                                 $mailForwardingAddress = $this->uidnumber2mail($uidnumber); 
    2222                                 if ($mailForwardingAddress != '') 
    2223                                         $info['mailForwardingAddress'][] = $mailForwardingAddress; 
    2224                         } 
    2225                 } 
    2226                 else 
    2227                         $info['mailForwardingAddress'] = array(); 
    2228                  
    2229                 if (!@ldap_modify ( $this->ldap, $dn, $info )) 
    2230                 { 
    2231                         $result['status'] = false; 
    2232                         $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 
    2233                         $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2234                 } 
    2235  
    2236                 return $result; 
    22372594        } 
    22382595         
     
    22572614                        for ($i=0; $i<$entries['count']; $i++) 
    22582615                        { 
    2259                                 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
    2260                                 $trs[$tr] = $entries[$i]['cn'][0]; 
     2616                                $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]) . "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
     2617                                $trs[$tr] = utf8_decode($entries[$i]['cn'][0]); 
    22612618                        } 
    22622619                } 
     
    22992656                else 
    23002657                { 
    2301                         $tmp_user_context = split(",", $entrie[0]['dn']); 
     2658                        $tmp_user_context = split(",", utf8_decode($entrie[0]['dn'])); 
    23022659                        $tmp_reverse_user_context = array_reverse($tmp_user_context); 
    23032660                        array_pop($tmp_reverse_user_context); 
     
    23072664                        $return['accountStatus']                = $entrie[0]['accountstatus'][0]; 
    23082665                        $return['phpgwAccountVisible']  = $entrie[0]['phpgwaccountvisible'][0]; 
    2309                         $return['cn']                                   = $entrie[0]['cn'][0]; 
     2666                        $return['cn']                                   = utf8_decode($entrie[0]['cn'][0]); 
    23102667                        $return['mail']                                 = $entrie[0]['mail'][0]; 
    23112668                        $return['description']                  = utf8_decode($entrie[0]['description'][0]); 
     
    23192676                                        if (!$tmp) {} 
    23202677                                        else 
    2321                                                 $a_cn[$tmp['uidnumber']] = $tmp['cn']; 
     2678                                                $a_cn[$tmp['uidnumber']] = $tmp['cn'].'('.$tmp['uid'].')'; 
    23222679                                } 
    23232680                                natcasesort($a_cn); 
     
    23412698 
    23422699                $input = $params['input']; 
    2343                 $justthese = array("cn", "mail", "uid"); 
     2700                $justthese = array("cn", "dn", "mail", "uid"); 
    23442701                $trs = array(); 
    23452702                                 
     
    23512708                        for ($i=0; $i<$entries['count']; $i++) 
    23522709                        { 
    2353                                 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
    2354                                 $trs[$tr] = $entries[$i]['cn'][0]; 
     2710                                $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]) . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . utf8_decode($entries[$i]['cn'][0]). " (" . $entries[$i]['uid'][0] . ")" . "</td><td onClick=edit_shared_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "<td align='center' onClick=delete_shared_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 
     2711                                $trs[$tr] = utf8_decode($entries[$i]['cn'][0]); 
    23552712                        } 
    23562713                } 
     
    23712728        } 
    23722729         
    2373         function save_shared_accounts($params) 
    2374         { 
    2375                         /* Begin: Access verification */ 
    2376                         if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_shared_accounts')) 
    2377                         { 
    2378                                 $return['status'] = false; 
    2379                                 $return['msg'] = $this->functions->lang('You do not have right to edit shared accounts') . "."; 
    2380                                 return $return; 
    2381                         } 
    2382                         $access_granted = false; 
    2383                         foreach ($this->manager_contexts as $idx=>$manager_context) 
    2384                         { 
    2385                                 if (stristr($params['context'], $manager_context)) 
    2386                                 { 
    2387                                         $access_granted = true; 
    2388                                         break; 
    2389                                 } 
    2390                         } 
    2391                         if (!$access_granted) 
    2392                         { 
    2393                                 $return['status'] = false; 
    2394                                 $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 
    2395                                 return $return; 
    2396                         } 
    2397                         /* End: Access verification */ 
    2398                          
    2399                         /* Begin: Validation */ 
    2400                         if ( (empty($params['cn'])) || (empty($params['mail'])) ) 
    2401                         { 
    2402                                 $result['status'] = false; 
    2403                                 $result['msg']  = $this->functions->lang('Field mail or name is empty') . '.'; 
    2404                                 return $result; 
    2405                         } 
    2406          
    2407                         if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 
    2408                         { 
    2409                                 $result['status'] = false; 
    2410                                 $result['msg']  = $this->functions->lang('Field mail is not formed correcty') . '.'; 
    2411                                 return $result; 
    2412                         }                        
    2413                          
    2414                         $dn = strtolower("uid=$params[uid]," . $params['context']); 
    2415                         $anchor = strtolower($params['anchor']); 
    2416                          
    2417                         $filter = "(mail=".$params['mail'].")"; 
    2418                         $justthese = array("cn"); 
    2419                         $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 
    2420                         $entries = @ldap_get_entries($this->ldap,$search); 
    2421                          
    2422                         if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 
    2423                         { 
    2424                                 $result['status'] = false; 
    2425                                 $result['msg'] = $this->functions->lang('Field mail already in use.'); 
    2426                                 return $result; 
    2427                         } 
    2428                         /* End: Validation */ 
    2429  
    2430                         $result = array(); 
    2431                         $result['status'] = true; 
    2432                          
    2433                         if ($anchor != $dn) 
    2434                         { 
    2435                                 if (!@ldap_rename($this->ldap, $anchor, "uid=$params[uid]", $params['context'], true)) 
    2436                                 { 
    2437                                         $result['status'] = false; 
    2438                                         $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_rename'; 
    2439                                         $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2440                                 } 
    2441                         } 
    2442                          
    2443                         $info = array(); 
    2444                         $info['cn']                                     = $params['cn']; 
    2445                         $info['sn']                                     = $params['cn']; 
    2446                         $info['uid']                            = $params['uid']; 
    2447                         $info['mail']                           = $params['mail']; 
    2448                          
    2449                         if ($params['accountStatus'] == 'on') 
    2450                                 $info['accountStatus'] = 'active'; 
    2451                         else 
    2452                                 $info['accountStatus'] = array(); 
    2453                          
    2454                         if ($params['phpgwAccountVisible'] == 'on') 
    2455                                 $info['phpgwAccountVisible'] = '-1'; 
    2456                         else 
    2457                                 $info['phpgwAccountVisible'] = array(); 
    2458                          
    2459                         if ($params['desc'] != '') 
    2460                                 $info['description'] = utf8_encode($params['desc']); 
    2461                         else 
    2462                                 $info['description'] = array(); 
    2463                          
    2464                         if (!@ldap_modify ( $this->ldap, $dn, $info )) 
    2465                         { 
    2466                                 $result['status'] = false; 
    2467                                 $result['msg']  = $this->functions->lang('Error on function') . ' ldap_functions->save_shared_accounts: ldap_modify'; 
    2468                                 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 
    2469                         } 
    2470                         //print_r($info);echo "Teste $dn".$result['msg'];exit(); 
    2471                         return $result; 
    2472         }        
    2473          
    24742730        function get_shared_account_data($params) 
    24752731        { 
     
    25012757                        $return['status'] = 'true'; 
    25022758                        $return['accountStatus']                = $entrie[0]['accountstatus'][0]; 
     2759 
    25032760                        $return['phpgwAccountVisible']  = $entrie[0]['phpgwaccountvisible'][0]; 
    2504                         $return['cn']                                   = $entrie[0]['cn'][0]; 
     2761                        $return['cn']                   = utf8_decode($entrie[0]['cn'][0]); 
    25052762                        $return['mail']                                 = $entrie[0]['mail'][0]; 
    25062763                        $return['description']                  = utf8_decode($entrie[0]['description'][0]); 
    2507                          
    2508                 } 
     2764                        $return['dn']                   = utf8_decode($entrie[0]['dn']); 
     2765                        $return['mailalternateaddress'] = $entrie[0]['mailalternateaddress']; 
     2766                } 
     2767                 
     2768 
     2769                 
    25092770                 
    25102771                return $return; 
     
    25122773        function mailforwardingaddress2uidnumber($mail) 
    25132774        { 
    2514                 $justthese = array("uidnumber","cn"); 
     2775                $justthese = array("uidnumber","cn", "uid"); 
    25152776        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(mail=$mail))"), $justthese); 
    25162777        $entrie = ldap_get_entries($this->ldap, $search); 
     
    25202781                { 
    25212782                        $return['uidnumber'] = $entrie[0]['uidnumber'][0]; 
    2522                         $return['cn'] = $entrie[0]['cn'][0]; 
     2783                        $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 
     2784                        $return['uid'] = $entrie[0]['uid'][0]; 
     2785                        return $return; 
     2786                } 
     2787        } 
     2788 
     2789        function uid2mailforwardingaddress($uid) 
     2790        { 
     2791                $justthese = array("mail"); 
     2792        $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(uid=$uid))"), $justthese); 
     2793        $entrie = ldap_get_entries($this->ldap, $search); 
     2794                if ($entrie['count'] != 1) 
     2795                        return false; 
     2796                else 
     2797                { 
     2798                        $return['mail'] = $entrie[0]['mail'][0]; 
    25232799                        return $return; 
    25242800                } 
     
    25532829                }                
    25542830                 
    2555                 $dn = $entrie[0]['dn']; 
     2831                $dn = utf8_decode($entrie[0]['dn']); 
    25562832                if (!@ldap_delete($this->ldap, $dn)) 
    25572833                { 
     
    26292905        } 
    26302906 
    2631         function search_available_users_and_maillist($params) 
    2632         { 
    2633                 $context = $params['context']; 
    2634                 $recursive = $params['recursive']; 
    2635                  $filtro =utf8_encode($params['filter']); 
    2636                 //Usado para retirar a própria lista das possibilidades de inclusão. 
    2637                 $denied_uidnumber = $params['denied_uidnumber']; 
    2638                  
    2639                 $justthese = array("cn", "uidNumber", "mail");                           
    2640                  
    2641                 $users_filter="(&(phpgwaccounttype=u)(!(phpgwaccountvisible=-1))(phpgwaccountstatus=A)(|(cn=*$filtro*)(mail=$filtro*)))"; 
    2642                 $lists_filter = $denied_uidnumber == '' ? "(&(phpgwAccountType=l)(cn=*$filtro*))" : "(&(phpgwAccountType=l)(!(uidnumber=$denied_uidnumber))(|(cn=*$filtro*)(mail=$filtro*)))"; 
    2643                  
    2644                 $users = Array(); 
    2645                 $lists = Array();                
    2646  
    2647                 /* folling referral connection */ 
    2648                 $ldap_conn_following_ref = ldap_connect($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['host']); 
    2649                 if ($ldap_conn_following_ref) 
    2650                 { 
    2651                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_PROTOCOL_VERSION, 3); 
    2652                         ldap_set_option($ldap_conn_following_ref, LDAP_OPT_REFERRALS, 1); 
    2653  
    2654                         if ( ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] != '') && ($_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw'] != '') ) 
    2655                                 ldap_bind($ldap_conn_following_ref, $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'], $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['pw']); 
    2656                 } 
    2657                 else 
    2658                         return false; 
    2659                  
    2660                 if ($recursive == 'true') 
    2661                         $users_search = ldap_search($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    2662                 else 
    2663                         $users_search = ldap_list($ldap_conn_following_ref, $context, $users_filter, $justthese); 
    2664                  
    2665                 /* email lists */ 
    2666                 if($params['listSearch'] == 'true'){ 
    2667                         if ($recursive == 'true') 
    2668                                 $lists_search = ldap_search($ldap_conn_following_ref, $context, $lists_filter, $justthese);                      
    2669                         else                     
    2670                                 $lists_search = ldap_list($ldap_conn_following_ref, $context, $lists_filter, $justthese); 
    2671                                  
    2672                         $lists_entries = ldap_get_entries($ldap_conn_following_ref, $lists_search); 
    2673                          
    2674                         for ($i=0; $i<$lists_entries["count"]; $i++) 
    2675                         { 
    2676                                 $l_tmp[$lists_entries[$i]["mail"][0]] = $lists_entries[$i]["cn"][0]; 
    2677                         } 
    2678                                  
    2679                         if (count($l_tmp)) 
    2680                                 natcasesort($l_tmp); 
    2681                                  
    2682                         $i = 0; 
    2683                         $lists = array(); 
    2684                          
    2685                         $options .= '<option  value="-1" disabled>------------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('email lists').'&nbsp;&nbsp;&nbsp;&nbsp;------------------------------ </option>'."\n";         
    2686                         if (count($l_tmp)) 
    2687                         { 
    2688                                 foreach ($l_tmp as $mail => $cn) 
    2689                                 { 
    2690                                         $options .= "<option value=$mail>$cn</option>"; 
    2691                                 } 
    2692                                 unset($l_tmp); 
    2693                         } 
    2694                 } 
    2695                  
    2696                 /* users */ 
    2697                 $users_entries = ldap_get_entries($ldap_conn_following_ref, $users_search); 
    2698                 for ($i=0; $i<$users_entries["count"]; $i++) 
    2699                 { 
    2700                         $u_tmp[$users_entries[$i]["mail"][0]] = $users_entries[$i]["cn"][0]; 
    2701                 } 
    2702                          
    2703                 if (count($u_tmp)) 
    2704                         natcasesort($u_tmp); 
    2705                          
    2706                 $i = 0; 
    2707                 $users = array(); 
    2708                  
    2709                 $options .= '<option  value="-1" disabled>-----------------------------&nbsp;&nbsp;&nbsp;&nbsp;'.$this->functions->lang('users').'&nbsp;&nbsp;&nbsp;&nbsp;---------------------------- </option>'."\n"; 
    2710                          
    2711                 if (count($u_tmp)) 
    2712                 { 
    2713                         foreach ($u_tmp as $mail => $cn) 
    2714                         { 
    2715                                 $options .= "<option value=$mail class='line-above'>$cn</option>"; 
    2716                         } 
    2717                         unset($u_tmp); 
    2718                 } 
    2719                  
    2720                 ldap_close($ldap_conn_following_ref); 
    2721                 return $options; 
    2722         } 
     2907                 
    27232908 
    27242909} 
  • trunk/expressoAdmin1_2/inc/class.manager.inc.php

    r3018 r5133  
    5050                function make_manager_acl($array_post) 
    5151                { 
    52                         $total_manager_acl = 0; 
     52                     
     53                        $total_manager_acl = array(); 
     54 
    5355                        foreach ($array_post as $atribute=>$value) 
    5456                        { 
    5557                                $acl  = strstr($atribute, 'acl_'); 
    5658 
    57                                 if ($acl !== false) 
    58                                 { 
    59                                         /* Valmir Andre de Sena - valmir.sena@ati.pe.gov.br 
    60                                         * changed + operation to bcadd, because php plus operation get wrong over 41 bits 
    61                                         */ 
    62                                         $total_manager_acl = bcadd( $total_manager_acl, $value); 
    63                                 } 
     59                                if ($acl !== false && $value = 'true')   
     60                                        array_push($total_manager_acl, $atribute); 
     61 
    6462                        } 
     63                         
    6564                        return $total_manager_acl; 
    6665                } 
     
    132131                function manager_lid_exist($manager_lid) 
    133132                { 
    134                         $query = "SELECT manager_lid FROM phpgw_expressoadmin WHERE manager_lid = '" . $manager_lid . "'"; 
     133                        $query = "SELECT manager_lid FROM phpgw_expressoadmin_acls WHERE manager_lid = '" . $manager_lid . "'"; 
    135134                        $this->db->query($query); 
    136135                        while($this->db->next_record()) 
  • trunk/expressoAdmin1_2/inc/class.shared_accounts.inc.php

    r1983 r5133  
    1313include_once('class.ldap_functions.inc.php'); 
    1414include_once('class.imap_functions.inc.php'); 
     15include_once('class.db_functions.inc.php'); 
    1516 
    1617        class shared_accounts 
     
    1920                var $ldap_functions; 
    2021                var $imap_functions; 
     22                var $db_functions; 
    2123 
    2224                function shared_accounts() 
     
    2628                        $this->imap_functions = new imap_functions; 
    2729                        $this->functions = new functions; 
     30                        $this->db_functions = new db_functions(); 
    2831                         
    2932                } 
     
    4245                                   $result &= $this->imap_functions->setaclfrombox($user,$acl,$params['uid']); 
    4346                                } 
     47                                $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']); 
     48                                $owner = $this->ldap_functions->uid2uidnumber($params['uid']); 
     49                                foreach($owners_calendar_acl_new as $user => $acl){ 
     50                                   $result &= $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner); 
     51                                } 
     52 
    4453                        }                
    4554                        return $return; 
     
    5362                        $result = $this->ldap_functions->save_shared_accounts($params); 
    5463 
     64 
    5565                        if( $result['status']){ 
    5666                            $result = $this->imap_functions->save_shared_account($params);                             
     67 
     68                            $owners_calendar_acl_new = unserialize($params['owners_calendar_acl']); 
     69 
     70                            $owner = $params['uidnumber']; 
     71                            foreach($owners_calendar_acl_new as $user => $acl){ 
     72                              $this->db_functions->save_calendar_acls($this->ldap_functions->uid2uidnumber($user),$acl,$owner); 
     73                            } 
    5774                        } 
    5875 
     
    105122                        $owners_acl = $this->imap_functions->getaclfrombox($params); 
    106123                        $quota = $this->imap_functions->get_user_info($params['uid']); 
     124                        $owner = $this->ldap_functions->uid2uidnumber($params['uid']); 
     125                        $calendarAcls = $this->db_functions->get_calendar_acls($owner); 
     126 
     127                        $return['uidnumber'] = $owner; 
    107128                        $return['mailquota'] = $quota['mailquota']; 
    108129                        $return['display_empty_inbox'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'empty_shared_accounts_inbox') ? 'block' : 'none'; 
     
    114135                                { 
    115136                                        $cn = $this->ldap_functions->uid2cn($key); 
     137                                        $uidnumber = $this->ldap_functions->uid2uidnumber($key); 
     138                                         
     139                                        if( $uid ) 
     140                                            $cn .= '(' . $uid . ')'; 
     141                                         
    116142                                        $return['owners_options'] .= '<option value='. $key .'>' . $cn . '</option>'; 
    117143                                        $return['owners'][$i] .= $key; 
    118144                                        $return['owners_acl'][$i] .= $value; 
     145                                        $return['owners_calendar_acl'][$i] .= $calendarAcls[$key]; 
    119146                                        $i++; 
    120147                                } 
     
    123150                                $return['owners'] = false; 
    124151                                $return['owners_acl'] = false; 
     152                                $return['owners_calendar_acl'] == false; 
    125153                        }                         
     154 
    126155                        return $return; 
    127156                } 
     157 
     158                 
    128159                function delete($params){ 
    129160                    $result = $this->ldap_functions->delete_shared_account_data($params); 
     
    134165                function get_shared_mail2uid($params){ 
    135166                        list($uid) = explode("@",$params['mail']); 
    136                         if( preg_match("/^(ou|dc)=(\w+),.*/", $params['context'], $match) ){ 
    137                             $uid = $uid."_".$match[2]; 
    138                         } 
    139167                        return $uid; 
    140168                } 
  • trunk/expressoAdmin1_2/inc/class.sosectors.inc.php

    r1850 r5133  
    4848                function write_ldap($dn, $info) 
    4949                { 
    50                         if ( @ldap_add($this->ldap_connection, $dn, $info) ) 
     50                        $info['ou'] = utf8_encode($info['ou']); 
     51 
     52                        if (ldap_add($this->ldap_connection, utf8_encode($dn), $info)) 
    5153                        { 
    5254                                $this->db_functions->write_log("write on ldap", "$dn"); 
     
    5658                        else 
    5759                        { 
    58                                 $this->db_functions->write_log("Error write on ldap", "$dn"); 
     60                                echo lang('Error written in LDAP, function write_ldap'); 
    5961                                ldap_close($this->ldap_connection); 
    6062                                return false; 
     
    131133                } 
    132134 
    133                 function replace_attribute($dn, $info) 
    134                 { 
    135                         $connection = $GLOBALS['phpgw']->common->ldapConnect(); 
    136                          
    137                         if (ldap_mod_replace($connection, $dn, $info)) 
    138                         { 
    139                                 ldap_close($connection); 
    140                                 return true; 
    141                         } 
    142                         else 
    143                         { 
    144                                 echo 'Erro na escrita no LDAP, funcao replace_attribute: ' . ldap_error($connection); 
    145                                 ldap_close($connection); 
    146                                 return false; 
    147                         } 
    148                 }                
    149                  
    150135                function remove_attribute($dn, $info) 
    151136                { 
  • trunk/expressoAdmin1_2/inc/class.uiaccounts.inc.php

    r3458 r5133  
    4848                        } 
    4949                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     50                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    5051                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    5152                        $GLOBALS['phpgw']->js->validate_file('jscode','tabs','expressoAdmin1_2'); 
     
    407408                                $disabled_phonenumber = ''; 
    408409                        } 
    409                         elseif(($this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_users_phonenumber'))) { 
    410                                 $disabled_phonenumber = ''; 
    411                         } 
    412                         elseif(!$this->functions->check_acl($manager_account_lid,'edit_users_phonenumber')) { 
    413                                 $disabled_phonenumber = 'disabled'; 
    414                         } 
    415                          
    416410                        // SOMENTE GRUPOS 
    417411                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_groups'))) 
     
    434428                                $disabled_password = ''; 
    435429                                $disabled_samba = ''; 
     430                                $disabled_phonenumber = ''; 
    436431                                $disabled_group = ''; 
    437432                        } 
     
    496491                                foreach ($user_info['groups_info'] as $group) 
    497492                                { 
    498                                         $array_groups[$group['gidnumber']] = $group['cn']; 
     493                                        $array_groups[$group['gidnumber']] = $group['cn'].'('.$group['uid'].')'; 
    499494                                } 
    500495                                natcasesort($array_groups); 
     
    551546                                foreach ($array_maillist as $uid=>$option) 
    552547                                { 
    553                                         $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option . "</option>"; 
     548                                        $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option.'('.$uid . ")</option>"; 
    554549                                } 
    555550                        } 
  • trunk/expressoAdmin1_2/inc/class.uigroups.inc.php

    r3251 r5133  
    4343                        } 
    4444                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     45                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    4546                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    4647                        $GLOBALS['phpgw']->js->validate_file('jscode','groups','expressoAdmin1_2'); 
     
    198199                        // Chama funcao para criar lista de aplicativos disponiveis. 
    199200                        $apps = $this->functions->make_list_app($manager_lid); 
    200                         // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais. 
    201                         $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid); 
    202201                         
    203202                        // Cria combo de dominio samba 
     
    230229                                'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'], 
    231230                                'apps'                                          => $apps, 
    232                                 'personal_data_fields'          => $personal_data_fields, 
    233231                                'use_attrs_samba_checked'       => '', 
    234232                                'disabled_samba'                        => 'disabled', 
     
    302300                                        if ($array_users_type[$uidnumber] == 'u') 
    303301                                        { 
    304                                                 $users .= "<option value=" . $uidnumber . ">" . $cn . " [" . $array_users_uid[$uidnumber] . "]</option>"; 
    305                                         } 
    306                                         else 
    307                                         { 
    308                                                 $unknow .= "<option value=-1>" . $cn . " [Corrigir manualmente]</option>"; 
    309                                         } 
     302                                                $users .= "<option value=" . $uidnumber . ">" . utf8_decode($cn) . " (" . $array_users_uid[$uidnumber] . ")</option>"; 
     303                                        } 
     304/*                                      else 
     305                                        { 
     306                                                $unknow .= "<option value=-1>" . utf8_decode($cn) . " (Corrigir manualmente)</option>"; 
     307                                        }*/ 
    310308                                } 
    311309                                 
     
    317315                        // Chama funcao para criar lista de aplicativos disponiveis. 
    318316                        $apps = $this->functions->make_list_app($manager_lid, $group_info['apps']); 
    319                         // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais. 
    320                         $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid, $group_info['acl_block_personal_data']); 
    321317                         
    322318                        // Cria combo de dominios do samba 
     
    349345                                'description'                           => $group_info['description'], 
    350346                                'apps'                                          => $apps, 
    351                                 'personal_data_fields'          => $personal_data_fields, 
    352347                                'use_attrs_samba_checked'       => $group_info['sambaGroup'] ? 'CHECKED' : '', 
    353348                                'disabled_samba'                        => $group_info['sambaGroup'] ? '' : 'disabled', 
  • trunk/expressoAdmin1_2/inc/class.uimaillists.inc.php

    r4280 r5133  
    3939                        } 
    4040                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     41                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    4142                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    4243                        $GLOBALS['phpgw']->js->validate_file('jscode','maillists','expressoAdmin1_2'); 
     
    166167                function add_maillists() 
    167168                { 
    168                         if($this->current_config['users_auto_search'] == "true"){ 
    169169                                $GLOBALS['phpgw']->js->set_onload('get_available_users(document.forms[0].org_context.value, document.forms[0].ea_check_allUsers.checked);'); 
    170                         } 
     170 
    171171                        $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid']; 
    172172                        $manager_acl = $this->functions->read_acl($manager_lid); 
     
    206206                                'combo_manager_org'                     => $combo_manager_org, 
    207207                                'combo_all_orgs'                        => $combo_all_orgs, 
    208                                 'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'], 
    209                                 'autosearch'                            => ($this->current_config['users_auto_search'] == "") ? 0:$this->current_config['users_auto_search'], 
    210                                 'minNum'                                        => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 
     208                                'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'] 
    211209                        ); 
    212210                        $p->set_var($var); 
     
    263261                                        if ($array_users_type[$mail] == 'u') 
    264262                                        { 
    265                                                 $users .= "<option value=" . $mail . ">" . $cn .  " [" . $array_users_uid[$mail] . "]</option>"; 
     263                                                $users .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
    266264                                        } 
    267265                                        elseif ($array_users_type[$mail] == 'l') 
    268266                                        { 
    269                                                 $lists .= "<option value=" . $mail . ">" . $cn .  " [" . $array_users_uid[$mail] . "]</option>"; 
     267                                                $lists .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
    270268                                        } 
    271269                                        else 
    272270                                        { 
    273                                                 $mail_not_found .= "<option value=" . $mail . ">" . $cn .  " [" . $array_users_uid[$mail] . "]</option>"; 
     271                                                $mail_not_found .= "<option value=" . $mail . ">" . utf8_decode($cn) .  " (" . $array_users_uid[$mail] . ")</option>"; 
    274272                                        } 
    275273                                } 
     
    307305                                'phpgwAccountVisible_checked'   => $maillist_info['phpgwAccountVisible'] == '-1' ? 'CHECKED' : '', 
    308306                                'ea_select_usersInMaillist'             => $ea_select_usersInMaillist, 
    309                                 'defaultDomain'                                 => $this->current_config['expressoAdmin_defaultDomain'], 
    310                                 'autosearch'                            => $this->current_config['users_auto_search'], 
    311                                 'minNum'                                        => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 
     307                                'defaultDomain'                                 => $this->current_config['expressoAdmin_defaultDomain'] 
    312308                        ); 
    313309                        $p->set_var($var); 
     
    345341 
    346342                        // Pega combo das organizações e seleciona a org da lista.                       
    347                         $sectors = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context']); 
     343                        // $org = $this->functions->get_organizations($manager_context, trim(strtolower($maillist_info['context']))); 
     344                        foreach ($manager_contexts as $index=>$context) 
     345                                $sectors .= $this->functions->get_organizations($context, trim(strtolower($maillist_info['context'])) ); 
    348346 
    349347                        // Usuarios de senders. 
     
    376374                                'accountRestrictive_checked'    => $maillist_info['accountRestrictive'] == 'mailListRestriction' ? 'CHECKED' : '', 
    377375                                'participantCanSendMail_checked'=> $maillist_info['participantCanSendMail'] == 'TRUE' ? 'CHECKED' : '', 
    378                                 'ea_select_users_SCL_Maillist'  => $ea_select_users_SCL_Maillist, 
    379                                 'autosearch'                            => $this->current_config['users_auto_search'], 
    380                                 'minNum'                                        => ($this->current_config['min_num_characters'] == "") ? 0:$this->current_config['min_num_characters'] 
     376                                'ea_select_users_SCL_Maillist'  => $ea_select_users_SCL_Maillist 
    381377                        ); 
    382378                        $p->set_var($var); 
  • trunk/expressoAdmin1_2/inc/class.uimanagers.inc.php

    r1684 r5133  
    3636                        } 
    3737                        $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 
     38                        $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    3839                        $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
    3940                        $GLOBALS['phpgw']->js->validate_file('jscode','managers','expressoAdmin1_2'); 
     
    8788 
    8889                        // Le BD para pegar os administradors. 
    89                         $query = 'SELECT manager_lid,context FROM phpgw_expressoadmin ORDER by manager_lid'; 
     90                        $query = 'SELECT distinct manager_lid manager_lid,context FROM phpgw_expressoadmin_acls ORDER by manager_lid '; 
    9091                        $GLOBALS['phpgw']->db->query($query); 
    9192                        while($GLOBALS['phpgw']->db->next_record()) 
     
    215216                        $manager_lid = $_GET['manager_lid']; 
    216217                         
    217                         $query = "DELETE FROM phpgw_expressoadmin WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'"; 
     218                        $query = "DELETE FROM phpgw_expressoadmin_acls WHERE manager_lid = '".$manager_lid."' AND context = '" . $context ."'";  
    218219                        $GLOBALS['phpgw']->db->query($query); 
    219220                         
     
    257258                        if ($first_time) 
    258259                        { 
    259                                 //Pego ACL do gerente 
    260                                 $manager = $this->functions->read_acl($_GET['manager_lid']); 
    261                                 //Cria vetor da ACL 
    262                                 $manager_acl = $this->functions->make_array_acl($manager['acl']); 
     260                                 
     261                                $manager_acl = $this->functions->read_acl($_GET['manager_lid']); 
    263262                                //Pesquisa no Banco e pega os valores dos apps. 
    264263                                $query = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'"; 
  • trunk/expressoAdmin1_2/inc/class.uisectors.inc.php

    r3887 r5133  
    2020                        'validate_data_sectors_edit'    => True, 
    2121                        'delete_sector'                                 => True, 
    22                         'css'                                                   => True, 
    23                         'view_cota'                                             => True 
     22                        'css'                                                   => True 
    2423                ); 
    2524 
     
    4746 
    4847                        // Verifica se o administrador tem acesso. 
    49  
     48                        if (!$this->functions->check_acl($manager_lid,'list_sectors')) 
     49                        { 
     50                                $GLOBALS['phpgw']->redirect($GLOBALS['phpgw']->link('/expressoAdmin1_2/inc/access_denied.php')); 
     51                        } 
    5052                         
    5153                        unset($GLOBALS['phpgw_info']['flags']['noheader']); 
     
    6163                        $p->set_block('sectors','row_empty','row_empty'); 
    6264                         
    63                         //$sectors_info = $this->functions->get_sectors_list($contexts); 
    64                         $sectors_info = $this->functions->get_organizations2($contexts); 
     65                        $sectors_info = $this->functions->get_sectors_list($contexts); 
    6566                         
    6667                        $var = Array( 
     
    6869                                'back_url'                              => $GLOBALS['phpgw']->link('/expressoAdmin1_2/index.php'), 
    6970                                'context_display'               => $context_display, 
    70                                 'lang_inactives'                        => lang('list inactives'), 
    71                                 'lang_ver_cota'         => lang('view cota') 
    72                         ); 
     71                                'lang_inactives'                        => lang('list inactives') 
     72                        ); 
     73 
    7374                        $p->set_var($var); 
    7475                        $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 
     
    9798                                        $var = Array( 
    9899                                                'tr_color'    => $tr_color, 
    99                                                 'sector_name'  => $sector['display'], 
    100                                                 'cota_link' => $this->row_action('view','cota',$sector['dn']), 
     100                                                'sector_name'  => $sector, 
     101                                                'add_link' => $this->row_action('add','sector',$context) 
    101102                                        );       
    102103                                         
    103                                         if ($this->functions->check_acl($manager_lid,'create_sectors')) 
    104                                                 $p->set_var('add_link',$this->row_action('add','sector',$sector['dn'])); 
    105                                         else 
    106                                                 $p->set_var('add_link',' '); 
     104                                        $var['sector_name'] = utf8_decode($var['sector_name']); 
     105 
    107106                                                                         
    108107                                        if(isset($GLOBALS['phpgw_info']['server']['time_to_account_expires'])) 
    109                                                 $var['inactives_link'] = $this->row_action('list_inactive','users',$sector['dn'],'uiaccounts'); 
     108                                                $var['inactives_link'] = $this->row_action('list_inactive','users',$context,'uiaccounts'); 
    110109                                        else 
    111110                                                $var['inactives_link'] = lang('disabled'); 
     
    115114                                        if ($can_edit) 
    116115                                        { 
    117                                                 $p->set_var('edit_link',$this->row_action('edit','sector',$sector['dn'])); 
     116                                                $p->set_var('edit_link',$this->row_action('edit','sector',utf8_decode($context))); 
    118117                                        } 
    119118                                        else 
     
    124123                                        if ($can_delete) 
    125124                                        { 
    126                                                 $p->set_var('delete_link',$this->row_action('delete','sector',$sector['dn'])); 
     125                                                $p->set_var('delete_link',$this->row_action('delete','sector',utf8_decode($context))); 
    127126                                        } 
    128127                                        else 
     
    139138                        $p->set_var($var); 
    140139                         
    141                         if ($this->functions->check_acl($manager_lid,'create_sectors')) { 
    142140                                $p->set_var('input_add','<input type="submit" value="' . lang('Add Sectors') . '">'); 
    143                         } 
    144                         else { 
    145                                 $p->set_var('input_add',' '); 
    146                         } 
    147141                         
    148142                        $p->parse('rows','row_empty',True); 
     
    163157                                $context = $_GET['context']; 
    164158                                $combo_manager_org = $this->functions->get_organizations( $context, '', true, true, true ); 
     159                                $combo_manager_org = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$combo_manager_org); 
     160                                $combo_manager_org = utf8_decode($combo_manager_org); 
    165161                        } 
    166162                        else 
     
    193189                                'context'                       => $context == '' ? $GLOBALS['phpgw_info']['server']['ldap_context'] : $context, 
    194190                                'sector'                        => $_POST['sector'], 
    195                                 'associated_domain'             => $_POST['associated_domain'], 
    196                                 'disk_quota'        => $_POST['disk_quota'], 
    197                                 'users_quota'       => $_POST['users_quota'], 
    198                                 'file_manager_quota'=> $_POST['file_manager_quota'], 
    199191                                'manager_org'           => $combo_manager_org, 
    200192                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
     
    202194                        ); 
    203195                         
    204                         if($this->functions->db_functions->use_cota_control()) { 
    205                                 $var["open_comment_cotas"] = ""; 
    206                                 $var["close_comment_cotas"] =""; 
    207                         } 
    208                         else { 
    209                                 $var["open_comment_cotas"] = "<!--"; 
    210                                 $var["close_comment_cotas"] ="-->"; 
    211                         }        
     196                        $var['sector'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector']); 
     197                        $var['sector'] = utf8_decode($var['sector']); 
    212198                         
    213199                        $p->set_var($var); 
     
    225211                        $context = $_GET['context']; 
    226212 
    227                         $combo_manager_org = $this->functions->get_organizations($_GET['context'], '', true, true, true); 
     213                        $context = utf8_encode($context); 
     214                        $context = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$context); 
     215 
     216                        $combo_manager_org = $this->functions->get_organizations($context, '', true, true, true); 
     217 
     218                        $combo_manager_org = utf8_decode(preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$combo_manager_org)); 
     219 
    228220                        $combo_manager_org = substr( $combo_manager_org, 0, ( strpos($combo_manager_org, '</option>') + 9 ) ); 
    229221 
     
    250242                        { 
    251243                                $sector_info = $this->so->get_info($context); 
    252                                 $sector_disk_quota = $sector_info[0]['diskquota'][0]; 
    253                                 $sector_users_quota = $sector_info[0]['usersquota'][0]; 
    254                                 $sector_file_manager_quota = $sector_info[0]['filemanagerquota'][0]; 
    255                                 $sector_associated_domain = $sector_info[0]['associateddomain'][0]; 
    256244                                $_POST['sector_visible'] = $sector_info[0]['phpgwaccountvisible'][0]; 
    257245                        }  
     
    266254                                'manager_org'           => $combo_manager_org, 
    267255                                'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', 
    268                                 'associated_domain'        => $_POST['associated_domain'] == '' ? $sector_associated_domain : $_POST['associated_domain'], 
    269                                 'disk_quota'        => $_POST['disk_quota'] == '' ? $sector_disk_quota : $_POST['disk_quota'], 
    270                                 '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'], 
     256                                 
    272257                                'lang_add'                      => lang('Add'), 
    273258                                'disable'                       => 'disabled', 
    274259                                'error_messages'        => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>", 
    275                                 'lang_disk_quota'   => lang('disk quota'), 
    276                                 'lang_users_quota'  => lang('users quota') 
    277                         ); 
    278                         if($this->functions->db_functions->use_cota_control()) { 
    279                                 $var["open_comment_cotas"] = ""; 
    280                                 $var["close_comment_cotas"] =""; 
    281                         } 
    282                         else { 
    283                                 $var["open_comment_cotas"] = "<!--"; 
    284                                 $var["close_comment_cotas"] ="-->"; 
    285                         } 
     260                        ); 
     261 
     262                        $var['sector'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector']); 
     263                        $var['sector'] = utf8_decode($var['sector']); 
     264                         
    286265                        $p->set_var($var); 
    287266                        $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 
    288                          
     267 
    289268                        $p->pfp('out','edit_sector'); 
    290                 } 
    291                  
    292                 function view_cota() 
    293                 { 
    294                         $context = $_GET['context']; 
    295                         $a_tmp = explode(",", ldap_dn2ufn($context)); 
    296  
    297                         $sector_name = $a_tmp[0]; 
    298                         if($this->functions->db_functions->use_cota_control()) { 
    299                                 $sector_info = $this->so->get_info($context); 
    300                                 $sector_disk_cota = $sector_info[0]['diskquota'][0]; 
    301                                 $sector_users_cota = $sector_info[0]['usersquota'][0]; 
    302                         } 
    303                         else { 
    304                                 $sector_disk_cota = lang('cotas control disabled'); 
    305                                 $sector_users_cota = lang('cotas control disabled');                             
    306                         } 
    307  
    308  
    309                         unset($GLOBALS['phpgw_info']['flags']['noheader']); 
    310                         unset($GLOBALS['phpgw_info']['flags']['nonavbar']); 
    311                         $GLOBALS['phpgw_info']['flags']['app_header'] = $GLOBALS['phpgw_info']['apps']['expressoAdmin1_2']['title'].' - '.lang('Edit Sector'); 
    312                         $GLOBALS['phpgw']->common->phpgw_header(); 
    313                          
    314                         // Set o template 
    315                         $p = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); 
    316                         $p->set_file(Array('ver_cota' => 'sectors_cota.tpl')); 
    317                          
    318                  
    319                         // Seta variaveis utilizadas pelo tpl. 
    320                         $var = Array( 
    321                                 'back_url'                      => $GLOBALS['phpgw']->link('/index.php','menuaction=expressoAdmin1_2.uisectors.list_sectors'), 
    322                                 'th_bg'                         => $GLOBALS['phpgw_info']['theme']['th_bg'], 
    323                                 'context'                       => $context, 
    324                                 'sector'                        => $sector_name, 
    325                                 'disk_cota'        => $sector_disk_cota, 
    326                                 'users_cota'       => $sector_users_cota, 
    327                                 'actual_users'          => $this->functions->get_num_users($context), 
    328                                 'actual_disk'           => round($this->functions->get_actual_disk_usage($context),2),                           
    329                                  
    330                                 'lang_back'                     => lang('Back'), 
    331                                 'lang_context'          => lang('Context'), 
    332                                 'lang_sector_name'      => lang('Sector name'), 
    333                                 'lang_disk_cota'   => lang('disk usage cota'), 
    334                                 'lang_users_cota'  => lang('user number cota'), 
    335                                 'lang_user_number'  => lang('user number'), 
    336                                 'lang_disk_used'    => lang('disk usage'),                               
    337                                 'error_messages'        => $_POST['error_messages'] == '' ? '' : "<script type='text/javascript'>alert('".$_POST['error_messages']."')</script>", 
    338                         ); 
    339                         $p->set_var($var); 
    340  
    341                         $p->pfp('out','ver_cota'); 
    342269                }                        
    343270                 
     
    371298                        $acl = $this->functions->read_acl($account_lid); 
    372299                        $manager_context = $acl[0]['context']; 
     300                         
     301                        $manager_context = utf8_encode($manager_context); 
     302                        $manager_context = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$manager_context); 
    373303                         
    374304                        // Verifica se tem acesso a este modulo 
     
    394324                        $sector_name = $tmp_sector_name[1]; 
    395325                         
     326 
    396327                        // Get users of sector 
    397                         $sector_users           = $this->so->get_sector_users($_GET['context']); 
    398                         $sector_groups          = $this->so->get_sector_groups($_GET['context']); 
    399                         $sector_subsectors      = $this->so->get_sector_subsectors($_GET['context']); 
     328                        $sector_users           = $this->so->get_sector_users(utf8_encode($_GET['context'])); 
     329                        $sector_groups          = $this->so->get_sector_groups(utf8_encode($_GET['context'])); 
     330                        $sector_subsectors      = $this->so->get_sector_subsectors(utf8_encode($_GET['context'])); 
    400331                         
    401332                        $users_list = ''; 
     
    415346                        { 
    416347                                if ($subsector['dn'] != $_GET['context']) 
    417                                         $subsectors_list .= $subsector['ou'][0] . '<br>'; 
     348                                        $subsectors_list .= utf8_decode($subsector['ou'][0] . '<br>'); 
    418349                        } 
    419350 
     
    431362                                'sectors_list'                          => $subsectors_list  
    432363                        ); 
     364                        $var['sector_name'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector_name']); 
     365 
    433366                        $p->set_var($var); 
    434367                        $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 
  • trunk/expressoAdmin1_2/inc/class.uishared_accounts.inc.php

    r1913 r5133  
    11<?php 
    22        /***********************************************************************************\ 
    3         * Expresso Administraᅵᅵo                                                                                                                    * 
     3        * Expresso Administração                                                                                                                        * 
    44        * by Joao Alfredo Knopik Junior (joao.alfredo@gmail.com, jakjr@celepar.pr.gov.br)       * 
    55        * modified by Valmir Andre de Sena valmirse@gmail.com valmir.sena@ati.pe.gov.br 
     
    3737                                $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); 
    3838                                $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 
     39                                $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 
    3940                                $c = CreateObject('phpgwapi.config','expressoAdmin1_2'); 
    4041                                $c->read_repository(); 
     
    9697                         
    9798                        $var = Array( 
    98                             'mailquota' =>  $this->current_config['expressoAdmin_defaultUserQuota'], 
     99                            'mailquota' =>  $this->current_config['expressoAdmin_defaultSharedAccountQuota'], 
    99100                            'changequote_disabled' => $this->functions->check_acl($account_lid,'edit_shared_accounts_quote') ? '' : 'readonly', 
    100101                            'disabled_empty_inbox' => $this->functions->check_acl($account_lid,'empty_shared_accounts_inbox') ? '' : 'disabled', 
  • trunk/expressoAdmin1_2/inc/class.user.inc.php

    r3528 r5133  
    3636                        $return['status'] = true; 
    3737                 
    38                         if($this->db_functions->use_cota_control()) { 
    39                                 //Verifica quota de usuários e disco             
    40                                 $setor = $this->functions->get_info($params['context']); 
    41                                 if (!$this->functions->existe_quota_usuario($setor[0])) { 
    42                                         $return['status'] = false; 
    43                                         $return['msg'] = $this->functions->lang("user cota exceeded");//TODO colocar valor de acordo com tabela de traduções. 
    44                                         return $return; 
    45                                 }  
    46                                 if (!$this->functions->existe_quota_disco($setor[0],$params['mailquota'])) { 
    47                                         $return['status'] = false; 
    48                                         $return['msg'] = $this->functions->lang("disk cota exceeded");//TODO colocar valor de acordo com tabela de traduções. 
    49                                         return $return;                          
    50                                 } 
    51                         } 
    52                  
    5338                        // Verifica o acesso do gerente 
    5439                        if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'add_users')) 
     
    318303                        */ 
    319304 
    320                         //Verifica quota de disco, como estou alterando, não preciso checar quota de usuários. 
    321                         if($this->db_functions->use_cota_control()) {            
    322                                 $setor = $this->functions->get_info($new_values['context']); 
    323                                 if (!$this->functions->existe_quota_disco($setor[0],$new_values['mailquota'])) { 
    324                                         $return['status'] = false; 
    325                                         $return['msg'] = "Quota em disco excedida...";//TODO colocar valor de acordo com tabela de traduções. 
    326                                         return $return;                          
    327                                 } 
    328                         } 
    329  
    330305                        $manager_account_lid = $_SESSION['phpgw_session']['session_lid']; 
    331306                        if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && 
     
    435410                                        $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber']; 
    436411                                        $this->db_functions->write_log('modified user telephonenumber', $dn . ': ' . $old_values['telephonenumber'] . '->' . $new_values['telephonenumber']); 
     412                                        $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber'];  
     413                                        $this->db_functions->write_log('modified user telephonenumber', $dn . ': ' . $old_values['telephonenumber'] . '->' . $new_values['telephonenumber']);  
    437414                                } 
    438415                                else if (($old_values['telephonenumber'] != '') && ($new_values['telephonenumber'] == '')) 
     
    542519                                { 
    543520                                         
    544                                         $size_conf = $this->current_config['expressoAdmin_photo_length'] == '' ? 10000:$this->current_config['expressoAdmin_photo_length'] ; 
    545                                         if ($_FILES['photo']['size'] > $size_conf) 
     521                                        if ($_FILES['photo']['size'] > 10000) 
    546522                                        { 
    547523                                                $return['status'] = false; 
    548                                                 $return['msg'] .= $this->functions->lang('User photo could not be save because is bigger the').' '.($size_conf/1024).' kb.'; 
     524                                                $return['msg'] .= $this->functions->lang('User photo could not be save because is bigger the 10 kb') . '.'; 
    549525                                        } 
    550526                                        else 
     
    568544                        if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_users')) 
    569545                        { 
    570                                 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    571546                                // Passwd Expired - Sem atributo 
    572547                                if (($old_values['passwd_expired'] == '') && ($new_values['passwd_expired'] == '1')) 
Note: See TracChangeset for help on using the changeset viewer.