Ticket #566: blockeditpersonaldata_expresso20_backport.patch
File blockeditpersonaldata_expresso20_backport.patch, 17.9 KB (added by niltonneto, 14 years ago) |
---|
-
expressoAdmin1_2/inc/class.db_functions.inc.php
420 420 } 421 421 else 422 422 $return['members'] = array(); 423 423 // ACL Block Personal Data 424 $query = "SELECT acl_rights FROM phpgw_acl WHERE acl_location = 'blockpersonaldata' AND acl_account = '" . $gidnumber . "'"; 425 $this->db->query($query); 426 if($this->db->next_record()) { 427 $block_personal_data = $this->db->row(); 428 $return['acl_block_personal_data'] = $block_personal_data['acl_rights']; 429 } 424 430 return $return; 425 431 } 426 432 … … 725 731 726 732 return; 727 733 } 728 734 function save_acl_personal_data($gidnumber, $new_acl_personal_data, $op = '') { 735 if($op == 'add') 736 $sql = "INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) " 737 . "VALUES('preferences','blockpersonaldata','$gidnumber',$new_acl_personal_data)"; 738 elseif($op == 'remove') 739 $sql = "DELETE FROM phpgw_acl WHERE acl_account = '$gidnumber' and acl_location = 'blockpersonaldata'"; 740 else 741 $sql = "UPDATE phpgw_acl SET acl_rights = $new_acl_personal_data WHERE acl_account = '$gidnumber' " 742 . "and acl_location = 'blockpersonaldata'"; 743 744 //error_log($sql); 745 $this->db->query($sql); 746 747 return; 748 } 729 749 } 730 750 ?> -
expressoAdmin1_2/inc/class.functions.inc.php
822 822 return true; 823 823 } 824 824 825 function make_list_personal_data_fields($account_lid, $acl = '') 826 { 827 // Sem restricao nenhuma na edicao dos campos pessoais => $acl=0; 828 // Com restricao apenas na edicao do Tel. Comercial => $acl=1; 829 // Com restricao apenas na edicao do Tel. Celular => $acl=2; 830 // Com restricao na edicao do Tel. Comercial e Celular => $acl=3; 831 // Com restricao apenas na edicao do Tel. Residencial => $acl=4; 832 // .... 833 // Com restricao de ediᅵᅵo em todos os campos pessoais => $acl=7; 834 835 $personal_data_fields = array( 836 array("text" => lang("%1 telephone number", lang("Commercial")) , "acl" => 1), 837 array("text" => lang("%1 telephone number", lang("Mobile")) , "acl" => 2), 838 array("text" => lang("%1 telephone number", lang("Home")) , "acl" => 4)); 839 $list_personal_data = "<tr>"; 840 841 foreach($personal_data_fields as $i => $data_field) { 842 $checked = ($data_field['acl'] & $acl) ? "CHECKED" : ""; 843 $list_personal_data .= "<td align=right bgcolor='#DDDDDD'>{$data_field['text']}</td>". 844 "<td bgcolor='#DDDDDD' width='10'><input type='checkbox' name='acl_block_personal_data[]'". 845 " value='{$data_field['acl']}' $checked></td>"; 846 } 847 $list_personal_data .= "</tr>"; 848 return $list_personal_data; 849 } 825 850 function make_lang($ram_lang) 826 851 { 827 852 $a_lang = split("_", $ram_lang); -
expressoAdmin1_2/inc/class.group.inc.php
111 111 { 112 112 $group_info['phpgwaccountvisible'] = '-1'; 113 113 } 114 114 // PERSONAL DATA FIELDS TO BLOCK. 115 if(is_array($params['acl_block_personal_data'])){ 116 $acl_personal_data = 0; 117 foreach($params['acl_block_personal_data'] as $i => $data_field){ 118 $acl_personal_data |= intval($data_field); 119 } 120 $this->db_functions->save_acl_personal_data($id, $acl_personal_data, 'add'); 121 } 115 122 $result = $this->ldap_functions->ldap_add_entry($dn, $group_info); 116 123 if (!$result['status']) 117 124 { … … 420 427 } 421 428 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 422 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 } 423 452 return $return; 424 453 } 425 454 -
expressoAdmin1_2/inc/class.uigroups.inc.php
195 195 $combo_manager_org .= $this->functions->get_organizations($context, trim(strtolower($group_info['context']))); 196 196 $combo_all_orgs = $this->functions->get_organizations($GLOBALS['phpgw_info']['server']['ldap_context'], trim(strtolower($group_info['context']))); 197 197 198 // Chama funcao para criar lista de campos disponiveis na edicao de dados pessoais. 199 $personal_data_fields = $this->functions->make_list_personal_data_fields($manager_lid); 198 200 // Chama funcao para criar lista de aplicativos disponiveis. 199 201 $apps = $this->functions->make_list_app($manager_lid); 200 202 … … 227 229 'concatenateDomain' => $this->current_config['expressoAdmin_concatenateDomain'], 228 230 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'], 229 231 'apps' => $apps, 232 'personal_data_fields' => $personal_data_fields, 230 233 'use_attrs_samba_checked' => '', 231 234 'disabled_samba' => 'disabled', 232 235 'display_samba_options' => $this->current_config['expressoAdmin_samba_support'] == 'true' ? '' : '"display:none"', … … 313 316 314 317 // Chama funcao para criar lista de aplicativos disponiveis. 315 318 $apps = $this->functions->make_list_app($manager_lid, $group_info['apps']); 316 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']); 317 321 // Cria combo de dominios do samba 318 322 if ($this->current_config['expressoAdmin_samba_support'] == 'true') 319 323 { … … 343 347 'email' => $group_info['email'], 344 348 'description' => $group_info['description'], 345 349 'apps' => $apps, 350 'personal_data_fields' => $personal_data_fields, 346 351 'use_attrs_samba_checked' => $group_info['sambaGroup'] ? 'CHECKED' : '', 347 352 'disabled_samba' => $group_info['sambaGroup'] ? '' : 'disabled', 348 353 'disable_email_groups' => $this->functions->check_acl($manager_lid,'edit_email_groups') ? '' : 'disabled', -
expressoAdmin1_2/templates/default/groups_form.tpl
Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
100 100 </tr> 101 101 102 102 <tr> 103 <td colspan="3"> 104 {lang_block_personal_data_edit}: 105 <br> 106 <table width="50%" border="0"> 107 {personal_data_fields} 108 </table> 109 </td> 110 </tr> 111 <tr> 103 112 <td colspan="3" align="left" bgcolor="{color_bg1}"> 104 113 <input type="button" value="{lang_save}" onClick="javascript:validate_fields('{type}','{restrictionsOnGroup}');"> 105 114 <input type="button" value="{lang_back}" onClick="document.location.href='{back_url}'"> -
phpgwapi/inc/class.accounts_ldap.inc.php
62 62 else 63 63 { 64 64 /* jakjr: using justthese with ldap_search */ 65 $justthese = array("uidnumber", "gidnumber", "uid", "cn", "givenname", "sn", "mail", "phpgwaccountstatus", "phpgwaccountexpires", "phpgwaccounttype", "phpgwlastpasswdchange","phpgwagreeterm","telephonenumber" );65 $justthese = array("uidnumber", "gidnumber", "uid", "cn", "givenname", "sn", "mail", "phpgwaccountstatus", "phpgwaccountexpires", "phpgwaccounttype", "phpgwlastpasswdchange","phpgwagreeterm","telephonenumber","mobile","homephone"); 66 66 $sri = @ldap_search($this->ds, $this->user_context, ("(&(uidnumber=" . (int)$this->account_id.")(phpgwaccounttype=u))"), $justthese); 67 67 } 68 68 if(!$sri) … … 89 89 $this->data['email'] = $allValues[0]['mail'][0]; 90 90 } 91 91 $this->data['telephonenumber'] = $allValues[0]['telephonenumber'][0]; 92 $this->data['mobile'] = $allValues[0]['mobile'][0]; 93 $this->data['homephone'] = $allValues[0]['homephone'][0]; 92 94 /* jakjr: this is not used for expressoLivre */ 93 95 /* 94 96 $this->data['lastlogin'] = $allValues[0]['phpgwaccountlastlogin'][0]; -
preferences/changepersonaldata.php
37 37 'form' => 'changepersonaldata.tpl' 38 38 )); 39 39 40 $GLOBALS['phpgw']->template->set_var('lang_commercial_telephonenumber',lang(' Commercial Telephone number'));40 $GLOBALS['phpgw']->template->set_var('lang_commercial_telephonenumber',lang('%1 telephone number',lang('Commercial'))); 41 41 $GLOBALS['phpgw']->template->set_var('lang_ps_commercial_telephonenumber', 42 42 lang('Observation') . ': ' . lang('This telephone number will apear in searches for your name, and it will be visible for all ExpressoLivre Users') . '.'); 43 $GLOBALS['phpgw']->template->set_var('lang_mobile_telephonenumber',lang('%1 telephone number',lang('Mobile'))); 44 $GLOBALS['phpgw']->template->set_var('lang_homephone_telephonenumber',lang('%1 telephone number',lang('Home'))); 43 45 $GLOBALS['phpgw']->template->set_var('lang_change',lang('Change')); 44 46 $GLOBALS['phpgw']->template->set_var('lang_cancel',lang('Cancel')); 45 47 $GLOBALS['phpgw']->template->set_var('form_action',$GLOBALS['phpgw']->link('/preferences/changepersonaldata.php')); 46 48 47 49 /* Get telephone number from ldap or from post */ 48 50 $ldap_conn = $GLOBALS['phpgw']->common->ldapConnect(); 49 $result = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], 'uid='.$GLOBALS['phpgw_info']['user']['account_lid'], array('telephonenumber' ));51 $result = ldap_search($ldap_conn, $GLOBALS['phpgw_info']['server']['ldap_context'], 'uid='.$GLOBALS['phpgw_info']['user']['account_lid'], array('telephonenumber','mobile','homephone')); 50 52 $entrie = ldap_get_entries($ldap_conn, $result); 51 $GLOBALS['phpgw']->template->set_var('telephonenumber',$_POST['telephonenumber'] ? $_POST['telephonenumber'] : $entrie[0]['telephonenumber'][0]); 53 54 /* BEGIN ACL Check for Personal Data Fields.*/ 55 $disabledTelephoneNumber = false; 56 $disabledMobile = false; 57 $disabledHomePhone = false; 58 if ($GLOBALS['phpgw']->acl->check('blockpersonaldata',1)) { 59 $disabledTelephoneNumber = '"disabled=true"'; 60 } 61 if ($GLOBALS['phpgw']->acl->check('blockpersonaldata',2)) { 62 $disabledMobile = '"disabled=true"'; 63 } 64 if ($GLOBALS['phpgw']->acl->check('blockpersonaldata',4)) { 65 $disabledHomePhone = '"disabled=true"'; 66 } 67 /* END ACL Check for Personal Data Fields.*/ 68 69 $GLOBALS['phpgw']->template->set_var('telephonenumber',($_POST['telephonenumber'] ? $_POST['telephonenumber'] : $entrie[0]['telephonenumber'][0]).$disabledTelephoneNumber); 70 $GLOBALS['phpgw']->template->set_var('mobile',($_POST['mobile'] ? $_POST['mobile'] : $entrie[0]['mobile'][0]).$disabledMobile); 71 $GLOBALS['phpgw']->template->set_var('homephone',($_POST['homephone'] ? $_POST['homephone'] : $entrie[0]['homephone'][0]).$disabledHomePhone); 72 73 52 74 ldap_close($ldap_conn); 53 75 54 76 if ($GLOBALS['phpgw_info']['server']['auth_type'] != 'ldap') … … 58 80 59 81 if ($_POST['change']) 60 82 { 61 if ($_POST['telephonenumber'] != $GLOBALS['phpgw_info']['user']['telephonenumber']) 83 if ($_POST['telephonenumber'] != $GLOBALS['phpgw_info']['user']['telephonenumber'] || $_POST['mobile'] != $GLOBALS['phpgw_info']['user']['mobile'] 84 || $_POST['homephone'] != $GLOBALS['phpgw_info']['user']['homephone']) 62 85 { 63 86 $pattern = '/\([0-9]{2,3}\)[0-9]{4}-[0-9]{4}$/'; 64 87 if ((strlen($_POST['telephonenumber']) != 0) && (!preg_match($pattern, $_POST['telephonenumber']))) 65 88 { 66 $errors[] = lang('Format of telephone number is invalid.');89 $errors[] = lang('Format of %1 telephone number is invalid.', lang("Commercial")); 67 90 } 68 else 91 if ((strlen($_POST['mobile']) != 0) && (!preg_match($pattern, $_POST['mobile']))) 92 { 93 $errors[] = lang('Format of %1 telephone number is invalid.', lang("Mobile")); 94 } 95 if ((strlen($_POST['homephone']) != 0) && (!preg_match($pattern, $_POST['homephone']))) 96 { 97 $errors[] = lang('Format of %1 telephone number is invalid.', lang("Home")); 98 } 99 if(!is_array($errors)) 69 100 { 70 101 // Use LDAP Replication mode, if available 71 102 if ( (!empty($GLOBALS['phpgw_info']['server']['ldap_master_host'])) && … … 83 114 $ldap_conn = $GLOBALS['phpgw']->common->ldapConnect(); 84 115 } 85 116 86 if ($GLOBALS['phpgw_info']['user']['telephonenumber']) 87 { 117 if(!$disabledTelephoneNumber && ($_POST['telephonenumber'] != $GLOBALS['phpgw_info']['user']['telephonenumber'])) { 88 118 if (strlen($_POST['telephonenumber']) == 0) { 89 119 $info['telephonenumber'] = $GLOBALS['phpgw_info']['user']['telephonenumber']; 90 120 $result = @ldap_mod_del($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 91 121 } 122 elseif(strlen($GLOBALS['phpgw_info']['user']['telephonenumber']) == 0) { 123 $info['telephonenumber'] = $_POST['telephonenumber']; 124 $result = @ldap_mod_add($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 125 } 92 126 else { 93 127 $info['telephonenumber'] = $_POST['telephonenumber']; 94 128 $result = @ldap_mod_replace($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 95 129 } 130 unset($info['telephonenumber']); 96 131 } 97 else 98 { 99 $info['telephonenumber'] = $_POST['telephonenumber']; 100 $result = @ldap_mod_add($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 132 if (!$disabledMobile && ($_POST['mobile'] != $GLOBALS['phpgw_info']['user']['mobile'])) { 133 if (strlen($_POST['mobile']) == 0) { 134 $info['mobile'] = $GLOBALS['phpgw_info']['user']['mobile']; 135 $result = @ldap_mod_del($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 136 } 137 elseif(strlen($GLOBALS['phpgw_info']['user']['mobile']) == 0) { 138 $info['mobile'] = $_POST['mobile']; 139 $result = @ldap_mod_add($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 140 } 141 else { 142 $info['mobile'] = $_POST['mobile']; 143 $result = @ldap_mod_replace($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 144 } 145 unset($info['mobile']); 101 146 } 147 if (!$disabledHomePhone && ($_POST['homephone'] != $GLOBALS['phpgw_info']['user']['homephone'])) { 148 if (strlen($_POST['homephone']) == 0) { 149 $info['homephone'] = $GLOBALS['phpgw_info']['user']['homephone']; 150 $result = @ldap_mod_del($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 151 } 152 elseif(strlen($GLOBALS['phpgw_info']['user']['homephone']) == 0) { 153 $info['homephone'] = $_POST['homephone']; 154 $result = @ldap_mod_add($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 155 } 156 else { 157 $info['homephone'] = $_POST['homephone']; 158 $result = @ldap_mod_replace($ldap_conn, $GLOBALS['phpgw_info']['user']['account_dn'], $info); 159 } 160 unset($info['homephone']); 161 } 162 ldap_close($ldap_conn); 102 163 } 103 164 104 165 if(is_array($errors)) -
preferences/templates/default/changepersonaldata.tpl
Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
17 17 <p style="text-align:justify; width:350px;"><b><font color='red'>{lang_ps_commercial_telephonenumber}</font></b></p> 18 18 </td> 19 19 </tr> 20 <tr><td colspan=2 height="20px"></td></tr> 21 <tr> 22 <td> 23 {lang_mobile_telephonenumber}: 24 </td> 25 <td> 26 <input type="input" autocomplete="off" name="mobile" size=12 value="{mobile}" maxlength="13" onkeyUp="FormatTelephoneNumber(event, this);"> (xx)xxxx-xxxx 27 </td> 28 </tr> 29 <tr> 30 <td> 31 {lang_homephone_telephonenumber}: 32 </td> 33 <td> 34 <input type="input" autocomplete="off" name="homephone" size=12 value="{homephone}" maxlength="13" onkeyUp="FormatTelephoneNumber(event, this);"> (xx)xxxx-xxxx 35 </td> 36 </tr> 37 <tr><td colspan=2 height="20px"></td></tr> 38 20 39 <tr> 21 40 <td colspan="3"> 22 41 <table cellspacing="0"><tr><br>