Ignore:
Timestamp:
09/15/10 11:15:41 (14 years ago)
Author:
niltonneto
Message:

Ticket #566 - Implementado opção para bloquear edição de dados pessoais.

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

Legend:

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

    r1516 r3251  
    432432                        $return['members'] = array(); 
    433433 
     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                } 
    434441                return $return; 
    435442        } 
     
    736743                return; 
    737744        } 
     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'"; 
     754                                 
     755                //error_log($sql); 
     756                $this->db->query($sql); 
     757                 
     758                return; 
     759        } 
    738760         
    739761} 
  • branches/2.2/expressoAdmin1_2/inc/class.functions.inc.php

    r1913 r3251  
    849849                                return $groups_id; 
    850850                } 
     851                function make_list_personal_data_fields($account_lid, $acl = '') 
     852                { 
     853                        // Sem restrição nenhuma na edição dos campos pessoais  => $acl=0; 
     854                        // Com restrição apenas na edição do Tel. Comercial     => $acl=1; 
     855                        // Com restrição apenas na edição do Tel. Celular               => $acl=2; 
     856                        // Com restrição na edição do Tel. Comercial e Celular  => $acl=3;                       
     857                         
     858                        $personal_data_fields = array(   
     859                                        array("text" => lang("%1 telephone number", lang("Commercial")) , "acl" => 1), 
     860                                        array("text" => lang("%1 telephone number", lang("Mobile"))             , "acl" => 2)); 
     861                        $list_personal_data = "<tr>"; 
     862                                                 
     863                        foreach($personal_data_fields as $i => $data_field)     { 
     864                                $checked = ($data_field['acl'] & $acl) ? "CHECKED" : ""; 
     865                                $list_personal_data .= "<td align=right bgcolor='#DDDDDD'>{$data_field['text']}</td>". 
     866                                "<td bgcolor='#DDDDDD' width='10'><input type='checkbox' name='acl_block_personal_data[]'". 
     867                                " value='{$data_field['acl']}' $checked></td>"; 
     868                        } 
     869                        $list_personal_data .= "</tr>"; 
     870                        return $list_personal_data; 
     871                } 
    851872                 
    852873                function make_list_app($account_lid, $user_applications='', $disabled='') 
  • branches/2.2/expressoAdmin1_2/inc/class.group.inc.php

    r587 r3251  
    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                        } 
    137145                         
    138146                        if ($return['status'] == true) 
     
    419427                                        $this->db_functions->write_log("removed application from group","$app: $dn"); 
    420428                        } 
    421                         //////////////////////////////////////////////////////////////////////////////////////////////////////////////////                       
     429                        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     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                        } 
    422452                         
    423453                        return $return; 
  • branches/2.2/expressoAdmin1_2/inc/class.uigroups.inc.php

    r1847 r3251  
    198198                        // Chama funcao para criar lista de aplicativos disponiveis. 
    199199                        $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); 
    200202                         
    201203                        // Cria combo de dominio samba 
     
    228230                                'defaultDomain'                         => $this->current_config['expressoAdmin_defaultDomain'], 
    229231                                'apps'                                          => $apps, 
     232                                'personal_data_fields'          => $personal_data_fields, 
    230233                                'use_attrs_samba_checked'       => '', 
    231234                                'disabled_samba'                        => 'disabled', 
     
    314317                        // Chama funcao para criar lista de aplicativos disponiveis. 
    315318                        $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']); 
    316321                         
    317322                        // Cria combo de dominios do samba 
     
    344349                                'description'                           => $group_info['description'], 
    345350                                'apps'                                          => $apps, 
     351                                'personal_data_fields'          => $personal_data_fields, 
    346352                                'use_attrs_samba_checked'       => $group_info['sambaGroup'] ? 'CHECKED' : '', 
    347353                                'disabled_samba'                        => $group_info['sambaGroup'] ? '' : 'disabled', 
Note: See TracChangeset for help on using the changeset viewer.