Changeset 5133 for trunk/expressoAdmin1_2/inc
- Timestamp:
- 11/03/11 13:24:14 (12 years ago)
- Location:
- trunk/expressoAdmin1_2/inc
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/inc/class.bosectors.inc.php
r3915 r5133 48 48 $sector_info['objectClass'][1] = 'organizationalUnit'; 49 49 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 58 50 $systemName = $GLOBALS['phpgw_info']['server']['system_name']; 59 51 if ($systemName != '') … … 66 58 } 67 59 68 69 /*70 Insere as informações sobre quota total por usuários e por gigabytes de espaço em disco71 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 97 60 // Chama funcao para escrever no OpenLDAP, case de erro, volta com msg de erro. 98 61 if (!$this->so->write_ldap($dn, $sector_info)) … … 103 66 } 104 67 105 // 68 //Escreve no log 106 69 $this->db_functions->write_log("created sector", "$dn"); 107 70 … … 113 76 function save_sector() 114 77 { 115 $sector_info = $this->so->get_info($_POST['context']); 78 $context = utf8_encode($_POST['context']); 79 80 $sector_info = $this->so->get_info($context); 116 81 117 if (($_POST['sector_visible'] == 'on') && ($sector_info[ 0]['phpgwaccountvisible'][0] != '-1'))82 if (($_POST['sector_visible'] == 'on') && ($sector_info['phpgwaccountvisible'] != '-1')) 118 83 { 119 $phpgwAccount = $controlled_by_quota = false;120 84 foreach ($sector_info[0]['objectclass'] as $objectClass) 121 85 { 122 86 if ($objectClass == 'phpgwAccount') 123 87 $phpgwAccount = true; 124 if ($objectClass == 'phpgwquotacontrolled')125 $ controlled_by_quota = true;88 else 89 $phpgwAccount = false; 126 90 } 127 91 … … 134 98 $this->so->add_attribute($sector_info[0]['dn'], $ldap_mod_add); 135 99 } 136 else if($sector_info[0]['phpgwaccountvisible'][0] == '-1')100 else 137 101 { 138 102 $ldap_mod_del['objectClass'] = 'phpgwAccount'; … … 141 105 } 142 106 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ógico147 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 168 107 // Volta para o ListSectors 169 108 ExecMethod('expressoAdmin1_2.uisectors.list_sectors'); … … 184 123 $manager_context = $_POST['manager_context']; 185 124 186 125 $sector_dn = utf8_encode($sector_dn); 187 126 188 127 $sector_users = $this->so->get_sector_users($sector_dn); 128 189 129 for ($i=0; $i<count($sector_users)-1; $i++) 190 130 { -
trunk/expressoAdmin1_2/inc/class.db_functions.inc.php
r3251 r5133 33 33 function read_acl($account_lid) 34 34 { 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 } 51 57 /* 52 58 * Reativa os usuários desabilitados por tempo inativo modificando o seu ultimo acesso para o dia atual. … … 78 84 $manager_info = $this->read_acl($manager); 79 85 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)) 85 103 { 86 104 echo lang('error in') . 'copy_manager: ' . pg_last_error(); 87 105 return false; 88 106 } 107 } 108 109 110 } 111 112 89 113 90 114 //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'] . "'"; 92 116 $this->db->query($sql); 93 117 while($this->db->next_record()) … … 100 124 { 101 125 $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'] . "')"; 103 127 if (!$this->db->query($sql)) 104 128 { … … 432 456 $return['members'] = array(); 433 457 434 // ACL Block Personal Data435 $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 }441 458 return $return; 442 459 } … … 685 702 function manager_lid_exist($manager_lid) 686 703 { 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 . "'"; 688 705 $this->db->query($query); 689 706 while($this->db->next_record()) … … 697 714 function create_manager($params, $manager_acl) 698 715 { 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 703 729 704 730 //Escrevre no Banco as aplicações que o gerente tem direito de disponibilizar aos seus usuarios. … … 718 744 function save_manager($params, $manager_acl) 719 745 { 746 747 720 748 $params['manager_lid'] = $params['hidden_manager_lid']; 721 749 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 } 726 764 727 765 //Deleta as aplicações e adiciona as novas. … … 743 781 return; 744 782 } 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; 754 804 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 759 830 } 760 831 -
trunk/expressoAdmin1_2/inc/class.functions.inc.php
r3887 r5133 43 43 function check_acl($account_lid, $access) 44 44 { 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); 47 48 48 49 switch($access) 49 50 { 50 51 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'] ) 52 53 return true; 53 54 break; 54 55 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']) 56 57 return true; 57 58 break; 58 59 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']) 60 61 return true; 61 62 break; 62 63 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']) 64 65 return true; 65 66 break; 66 67 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']) 68 69 return true; 69 70 break; 70 71 71 72 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')) ) 73 74 return true; 74 75 break; 75 76 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']) 77 78 return true; 78 79 break; 79 80 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']) 81 82 return true; 82 83 break; 83 84 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']) 85 86 return true; 86 87 break; 87 88 88 89 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']) 90 91 return true; 91 92 break; 92 93 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; 97 105 98 106 default: … … 282 290 { 283 291 $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 370 295 371 296 function get_inactive_users($contexts) { … … 421 346 $justthese = array("uidnumber", "uid", "cn", "mail"); 422 347 $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 424 349 $tmp = array(); 425 350 foreach ($contexts as $index=>$context) … … 541 466 } 542 467 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 550 480 $dn = $GLOBALS['phpgw_info']['server']['ldap_root_dn']; 551 481 $passwd = $GLOBALS['phpgw_info']['server']['ldap_root_pw']; 552 482 $ldap_conn = ldap_connect($GLOBALS['phpgw_info']['server']['ldap_host']); 553 483 554 484 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); 561 486 ldap_bind($ldap_conn,$dn,$passwd); 562 487 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 { 566 497 $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); 593 527 594 528 // Construção do select 595 529 $level = 0; 596 530 $options = array(); 597 foreach ($inverted_dn as $dn=>$in fo_ou)531 foreach ($inverted_dn as $dn=>$invert_ufn) 598 532 { 599 533 $display = ''; 600 $info_retorno = array(); 601 $array_dn_reverse = explode ( "#", $ dn );534 535 $array_dn_reverse = explode ( "#", $invert_ufn ); 602 536 $array_dn = array_reverse ( $array_dn_reverse, true ); 603 537 … … 613 547 614 548 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 )); 844 550 845 551 $dn = trim(strtolower($dn)); … … 903 609 else 904 610 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;931 611 } 932 612 … … 1116 796 return $array_langs; 1117 797 } 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; 1118 817 } 818 } 1119 819 1120 820 class sectors_object -
trunk/expressoAdmin1_2/inc/class.group.inc.php
r3396 r5133 135 135 $return['msg'] .= $result['msg']; 136 136 } 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 }145 137 146 138 if ($return['status'] == true) … … 428 420 } 429 421 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 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 }452 422 453 423 return $return; … … 455 425 456 426 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); 461 431 462 432 $group_info = array_merge($group_info_ldap, $group_info_db); -
trunk/expressoAdmin1_2/inc/class.imap_functions.inc.php
r4059 r5133 23 23 $this->imap_server = $_SESSION['phpgw_info']['expresso']['email_server']['imapServer']; 24 24 $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";27 25 $this->imap_trashfolder = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultTrashFolder'] : str_replace("*","", $this->functions->lang("trash")); 28 26 $this->imap_sentfolder = $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder'] ? $_SESSION['phpgw_info']['expresso']['email_server']['imapDefaultSentFolder'] : str_replace("*","", $this->functions->lang("sent")); … … 70 68 return $result; 71 69 } 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)) 73 72 { 74 73 if (!imap_createmailbox($this->imap, '{'.$this->imap_server.'}' . "user" . $this->imapDelimiter . $uid . $this->imapDelimiter . $this->imap_spamfolder)) … … 78 77 $result['msg'] = $this->functions->lang('Error on function') . " imap_functions->create(".$this->imap_spamfolder."):" . $error[0]; 79 78 return $result; 80 } else {81 imap_setacl($this->imap, "user" . $this->imapDelimiter . $uid. $this->imapDelimiter . $this->imap_spamfolder , $this->imap_cyrususerspam, 'p');82 79 } 83 80 } 81 */ 84 82 85 83 if (!imap_set_quota($this->imap,"user" . $this->imapDelimiter . $uid, ($mailquota*1024))) … … 97 95 function get_user_info($uid) 98 96 { 99 $get_quota = @imap_get_quota ($this->imap,"user" . $this->imapDelimiter . $uid);97 $get_quota = @imap_get_quotaroot($this->imap,"user" . $this->imapDelimiter . $uid); 100 98 101 99 if (count($get_quota) == 0) … … 148 146 $result['status'] = true; 149 147 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)) 151 149 { 152 150 $result['status'] = false; … … 253 251 $result['inbox_size'] = $inbox_size; 254 252 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); 256 254 $result['mailquota_used'] = (string)(round(($get_user_quota['usage']/1024), 2)); 257 255 } … … 317 315 } 318 316 } 317 318 if( $result['status'] ) 319 $this->sendACLAdvice( $user, $acl, $mailbox ); 320 319 321 return $result; 320 322 } … … 373 375 return $result; 374 376 } 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)); 376 378 if( is_array($owners_acl_new)){ 377 379 foreach($owners_to_remove as $user => $acl){ … … 397 399 return $result; 398 400 } 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 } 399 493 } -
trunk/expressoAdmin1_2/inc/class.institutional_accounts.inc.php
r414 r5133 32 32 } 33 33 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 34 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 34 35 $GLOBALS['phpgw']->js->validate_file('jscode','institutional_accounts','expressoAdmin1_2'); 35 36 $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); -
trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
r3530 r5133 4 4 include_once(PHPGW_API_INC.'/class.common.inc.php'); 5 5 include_once('class.functions.inc.php'); 6 include_once('class.db_functions.inc.php'); 6 7 7 8 function ldapRebind($ldap_connection, $ldap_url) … … 22 23 var $functions; 23 24 var $manager_contexts; 25 var $db_functions; 24 26 25 27 function ldap_functions(){ … … 41 43 } 42 44 45 $this->db_functions = new db_functions(); 43 46 $this->functions = new functions; 44 47 $manager_acl = $this->functions->read_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid']); … … 46 49 } 47 50 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 )) 53 57 { 54 58 $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") . "."; 56 60 return $return; 57 61 } 58 62 59 63 $access_granted = false; 64 60 65 foreach ($this->manager_contexts as $idx=>$manager_context) 61 66 { 62 if (stristr($params['context'], $manager_context))67 if (stristr($context, $manager_context)) 63 68 { 64 69 $access_granted = true; … … 73 78 return $return; 74 79 } 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 // } 75 113 /* End: Access verification */ 76 114 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 */ 77 218 78 219 /* Begin: Validation */ … … 80 221 { 81 222 $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; 82 450 $result['msg'] = $this->functions->lang('Field mail or name is empty'); return $result; 83 451 } … … 96 464 if ($entries['count'] != 0) 97 465 { 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 102 484 /* End: Validation */ 103 485 104 486 $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'; 107 492 $info['uid'] = $params['uid']; 108 493 $info['mail'] = $params['mail']; 109 494 $info['description'] = utf8_encode($params['desc']); 110 495 $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'; 117 503 118 504 if ($params['accountStatus'] == 'on') … … 124 510 $info['phpgwAccountVisible'] = '-1'; 125 511 } 512 if( !empty( $params['mailalternateaddress'] ) ) 513 $info['mailalternateaddress'] = $params['mailalternateaddress']; 126 514 127 515 /*if (!empty($params['owners'])) … … 338 726 */ 339 727 340 $filter = "(o bjectClass=organizationalUnit)";728 $filter = "(ou=*)"; 341 729 $justthese = array("ou"); 342 730 $search = ldap_list($ldap_connection2, $context, $filter, $justthese); … … 437 825 438 826 $filter = "(&(phpgwAccountType=u)(cpf=$cpf))"; 439 $justthese = array("cn","uid" ,"mail");827 $justthese = array("cn","uid"); 440 828 $search = ldap_search($local_ldap_connection, $context, $filter, $justthese); 441 829 $entries = ldap_get_entries($local_ldap_connection,$search); 442 830 443 if ( ($entries['count'] > 0) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) )831 if ( ($entries['count'] != 1) && (strcasecmp($uid, $entries[0]['uid'][0]) != 0) ) 444 832 { 445 833 if ($entries['count'] > 0) 446 834 { 447 $entries_text = "";835 $result['question'] = $this->functions->lang('Field CPF used by') . ":\n"; 448 836 for ($i=0; $i<$entries['count']; $i++) 449 837 { 450 838 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"; 452 840 } 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;457 841 $result['question'] .= $this->functions->lang("Do you want to continue anyway") . "?"; 458 842 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 467 843 } 468 844 } … … 487 863 $justthese = array("uid"); 488 864 $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 490 867 if( (isset($this->current_config['expressoAdmin_loginGenScript'])) && 491 868 ($this->current_config['expressoAdmin_loginGenScript'])) { … … 501 878 return array( 502 879 "status" => False, 503 "msg" => $this->functions->lang("Login interface not implemented (contact suport)")880 "msg" => lang("Login interface not implemented (contact suport)") 504 881 ); 505 882 } … … 665 1042 } 666 1043 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 667 1098 //Busca usuários de um contexto e já retorna as options do select; 668 1099 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 704 1121 function get_available_users2($params) 705 1122 { 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 735 1200 //Busca usuários e listas de um contexto e já retorna as options do select; 736 1201 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>------------------------------ '.$this->functions->lang('email lists').' ------------------------------ </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>----------------------------- '.$this->functions->lang('users').' ---------------------------- </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 738 1244 $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>------------------------------ '.$this->functions->lang('email lists').' ------------------------------ </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>----------------------------- '.$this->functions->lang('users').' ---------------------------- </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); 826 1258 return $options; 827 1259 } 828 1260 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"); 835 1271 836 $entries = ldap_get_entries($this->ldap, $groups_list);1272 $entries = ldap_get_entries($ldapMasterConnect, $maillists); 837 1273 838 1274 $options = ''; 839 1275 for ($i=0; $i<$entries['count']; $i++) 840 1276 { 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>"; 842 1278 } 843 1279 1280 ldap_close($ldapMasterConnect); 1281 1282 844 1283 return $options; 845 1284 } 846 1285 847 function get_available_maillists($params)1286 function get_available_shared_account($params) 848 1287 { 849 1288 if ( !$ldapMasterConnect = $this->ldapMasterConnect() ) 850 1289 return false; 851 1290 852 $context = $params['context']; 1291 $filtro =utf8_encode($params['filter']); 1292 $context =utf8_encode($params['context']);//adicionado 853 1293 $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); 855 1295 ldap_sort($ldapMasterConnect, $maillists, "uid"); 856 1296 … … 860 1300 for ($i=0; $i<$entries['count']; $i++) 861 1301 { 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>"; 863 1303 } 864 1304 … … 1132 1572 $result['departmentnumber'] = $entry[0]['departmentnumber'][0]; 1133 1573 $result['givenname'] = $entry[0]['givenname'][0]; 1134 $result['sn'] = $entry[0]['sn'][0];1574 $result['sn'] = utf8_decode($entry[0]['sn'][0]); 1135 1575 $result['telephonenumber'] = $entry[0]['telephonenumber'][0]; 1136 1576 $result['passwd_expired'] = $entry[0]['phpgwlastpasswdchange'][0]; … … 1192 1632 for ($i=0; $i<$entries['count']; $i++) 1193 1633 { 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]); 1195 1763 } 1196 1764 } … … 1240 1808 } 1241 1809 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) 1246 1813 { 1247 1814 $filter="(&(phpgwAccountType=g)(gidNumber=".$gidnumber."))"; … … 1272 1839 1273 1840 // Montagem dinamica do filtro 1274 $filter="(&( phpgwAccountType=u)(|";1841 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s))(|"; 1275 1842 for ($k=0; (($k<10) && ($i<$entry[0]['memberuid']['count'])); $k++) 1276 1843 { … … 1475 2042 if (count($gidnumbers)) 1476 2043 { 1477 $justthese = array("cn" );2044 $justthese = array("cn","uid"); 1478 2045 $i = 0; 1479 2046 foreach ($gidnumbers as $gidnumber) … … 1487 2054 1488 2055 else 2056 { 2057 $result['groups_info'][$i]['uid'] = $entry[0]['uid'][0]; 1489 2058 $result['groups_info'][$i]['cn'] = $entry[0]['cn'][0]; 2059 } 1490 2060 $result['groups_info'][$i]['gidnumber'] = $gidnumber; 1491 2061 … … 1510 2080 { 1511 2081 $justthese = array("uid"); 1512 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType= l))(uidNumber=".$uidnumber."))";2082 $filter="(&(|(phpgwAccountType=u)(phpgwAccountType=s)(phpgwAccountType=l))(uidNumber=".$uidnumber."))"; 1513 2083 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1514 2084 $entry = ldap_get_entries($this->ldap, $search); … … 1522 2092 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1523 2093 $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]; 1525 2104 } 1526 2105 … … 1947 2526 $search = ldap_search($this->ldap, $context, $filter, $justthese); 1948 2527 $count_entries = ldap_count_entries($this->ldap, $search); 1949 2528 1950 2529 if ($count_entries > 0) 1951 2530 return true; 1952 2531 else 1953 2532 return false; 1954 }1955 2533 } 2534 1956 2535 function add_sambadomain($sambadomainname, $sambasid, $context) 1957 2536 { … … 1965 2544 1966 2545 if (!@ldap_add ( $this->ldap, $dn, $entry )) 1967 {2546 { 1968 2547 $return['status'] = false; 1969 2548 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_sambadomain ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); … … 1974 2553 return $return; 1975 2554 } 1976 2555 1977 2556 function delete_sambadomain($sambadomainname) 1978 2557 { … … 1981 2560 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter); 1982 2561 $entry = ldap_get_entries($this->ldap, $search); 1983 2562 1984 2563 if ($entry['count'] != 0) 1985 2564 { 1986 2565 $dn = $entry[0]['dn']; 1987 2566 … … 1991 2570 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_sambadomain ($sambadomainname)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1992 2571 } 1993 1994 2572 } 2573 1995 2574 return $return; 1996 2575 } 1997 2576 1998 2577 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 2021 2593 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 else2120 $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 else2205 $info['accountStatus'] = array();2206 2207 if ($params['phpgwAccountVisible'] == 'on')2208 $info['phpgwAccountVisible'] = '-1';2209 else2210 $info['phpgwAccountVisible'] = array();2211 2212 if ($params['desc'] != '')2213 $info['description'] = utf8_encode($params['desc']);2214 else2215 $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 else2227 $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;2237 2594 } 2238 2595 … … 2257 2614 for ($i=0; $i<$entries['count']; $i++) 2258 2615 { 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]); 2261 2618 } 2262 2619 } … … 2299 2656 else 2300 2657 { 2301 $tmp_user_context = split(",", $entrie[0]['dn']);2658 $tmp_user_context = split(",", utf8_decode($entrie[0]['dn'])); 2302 2659 $tmp_reverse_user_context = array_reverse($tmp_user_context); 2303 2660 array_pop($tmp_reverse_user_context); … … 2307 2664 $return['accountStatus'] = $entrie[0]['accountstatus'][0]; 2308 2665 $return['phpgwAccountVisible'] = $entrie[0]['phpgwaccountvisible'][0]; 2309 $return['cn'] = $entrie[0]['cn'][0];2666 $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 2310 2667 $return['mail'] = $entrie[0]['mail'][0]; 2311 2668 $return['description'] = utf8_decode($entrie[0]['description'][0]); … … 2319 2676 if (!$tmp) {} 2320 2677 else 2321 $a_cn[$tmp['uidnumber']] = $tmp['cn'] ;2678 $a_cn[$tmp['uidnumber']] = $tmp['cn'].'('.$tmp['uid'].')'; 2322 2679 } 2323 2680 natcasesort($a_cn); … … 2341 2698 2342 2699 $input = $params['input']; 2343 $justthese = array("cn", " mail", "uid");2700 $justthese = array("cn", "dn", "mail", "uid"); 2344 2701 $trs = array(); 2345 2702 … … 2351 2708 for ($i=0; $i<$entries['count']; $i++) 2352 2709 { 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]); 2355 2712 } 2356 2713 } … … 2371 2728 } 2372 2729 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 else2452 $info['accountStatus'] = array();2453 2454 if ($params['phpgwAccountVisible'] == 'on')2455 $info['phpgwAccountVisible'] = '-1';2456 else2457 $info['phpgwAccountVisible'] = array();2458 2459 if ($params['desc'] != '')2460 $info['description'] = utf8_encode($params['desc']);2461 else2462 $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 2474 2730 function get_shared_account_data($params) 2475 2731 { … … 2501 2757 $return['status'] = 'true'; 2502 2758 $return['accountStatus'] = $entrie[0]['accountstatus'][0]; 2759 2503 2760 $return['phpgwAccountVisible'] = $entrie[0]['phpgwaccountvisible'][0]; 2504 $return['cn'] = $entrie[0]['cn'][0];2761 $return['cn'] = utf8_decode($entrie[0]['cn'][0]); 2505 2762 $return['mail'] = $entrie[0]['mail'][0]; 2506 2763 $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 2509 2770 2510 2771 return $return; … … 2512 2773 function mailforwardingaddress2uidnumber($mail) 2513 2774 { 2514 $justthese = array("uidnumber","cn" );2775 $justthese = array("uidnumber","cn", "uid"); 2515 2776 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(mail=$mail))"), $justthese); 2516 2777 $entrie = ldap_get_entries($this->ldap, $search); … … 2520 2781 { 2521 2782 $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]; 2523 2799 return $return; 2524 2800 } … … 2553 2829 } 2554 2830 2555 $dn = $entrie[0]['dn'];2831 $dn = utf8_decode($entrie[0]['dn']); 2556 2832 if (!@ldap_delete($this->ldap, $dn)) 2557 2833 { … … 2629 2905 } 2630 2906 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>------------------------------ '.$this->functions->lang('email lists').' ------------------------------ </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>----------------------------- '.$this->functions->lang('users').' ---------------------------- </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 2723 2908 2724 2909 } -
trunk/expressoAdmin1_2/inc/class.manager.inc.php
r3018 r5133 50 50 function make_manager_acl($array_post) 51 51 { 52 $total_manager_acl = 0; 52 53 $total_manager_acl = array(); 54 53 55 foreach ($array_post as $atribute=>$value) 54 56 { 55 57 $acl = strstr($atribute, 'acl_'); 56 58 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 64 62 } 63 65 64 return $total_manager_acl; 66 65 } … … 132 131 function manager_lid_exist($manager_lid) 133 132 { 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 . "'"; 135 134 $this->db->query($query); 136 135 while($this->db->next_record()) -
trunk/expressoAdmin1_2/inc/class.shared_accounts.inc.php
r1983 r5133 13 13 include_once('class.ldap_functions.inc.php'); 14 14 include_once('class.imap_functions.inc.php'); 15 include_once('class.db_functions.inc.php'); 15 16 16 17 class shared_accounts … … 19 20 var $ldap_functions; 20 21 var $imap_functions; 22 var $db_functions; 21 23 22 24 function shared_accounts() … … 26 28 $this->imap_functions = new imap_functions; 27 29 $this->functions = new functions; 30 $this->db_functions = new db_functions(); 28 31 29 32 } … … 42 45 $result &= $this->imap_functions->setaclfrombox($user,$acl,$params['uid']); 43 46 } 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 44 53 } 45 54 return $return; … … 53 62 $result = $this->ldap_functions->save_shared_accounts($params); 54 63 64 55 65 if( $result['status']){ 56 66 $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 } 57 74 } 58 75 … … 105 122 $owners_acl = $this->imap_functions->getaclfrombox($params); 106 123 $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; 107 128 $return['mailquota'] = $quota['mailquota']; 108 129 $return['display_empty_inbox'] = $this->functions->check_acl($_SESSION['phpgw_session']['session_lid'],'empty_shared_accounts_inbox') ? 'block' : 'none'; … … 114 135 { 115 136 $cn = $this->ldap_functions->uid2cn($key); 137 $uidnumber = $this->ldap_functions->uid2uidnumber($key); 138 139 if( $uid ) 140 $cn .= '(' . $uid . ')'; 141 116 142 $return['owners_options'] .= '<option value='. $key .'>' . $cn . '</option>'; 117 143 $return['owners'][$i] .= $key; 118 144 $return['owners_acl'][$i] .= $value; 145 $return['owners_calendar_acl'][$i] .= $calendarAcls[$key]; 119 146 $i++; 120 147 } … … 123 150 $return['owners'] = false; 124 151 $return['owners_acl'] = false; 152 $return['owners_calendar_acl'] == false; 125 153 } 154 126 155 return $return; 127 156 } 157 158 128 159 function delete($params){ 129 160 $result = $this->ldap_functions->delete_shared_account_data($params); … … 134 165 function get_shared_mail2uid($params){ 135 166 list($uid) = explode("@",$params['mail']); 136 if( preg_match("/^(ou|dc)=(\w+),.*/", $params['context'], $match) ){137 $uid = $uid."_".$match[2];138 }139 167 return $uid; 140 168 } -
trunk/expressoAdmin1_2/inc/class.sosectors.inc.php
r1850 r5133 48 48 function write_ldap($dn, $info) 49 49 { 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)) 51 53 { 52 54 $this->db_functions->write_log("write on ldap", "$dn"); … … 56 58 else 57 59 { 58 $this->db_functions->write_log("Error write on ldap", "$dn");60 echo lang('Error written in LDAP, function write_ldap'); 59 61 ldap_close($this->ldap_connection); 60 62 return false; … … 131 133 } 132 134 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 else143 {144 echo 'Erro na escrita no LDAP, funcao replace_attribute: ' . ldap_error($connection);145 ldap_close($connection);146 return false;147 }148 }149 150 135 function remove_attribute($dn, $info) 151 136 { -
trunk/expressoAdmin1_2/inc/class.uiaccounts.inc.php
r3458 r5133 48 48 } 49 49 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 50 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 50 51 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 51 52 $GLOBALS['phpgw']->js->validate_file('jscode','tabs','expressoAdmin1_2'); … … 407 408 $disabled_phonenumber = ''; 408 409 } 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 416 410 // SOMENTE GRUPOS 417 411 if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_groups'))) … … 434 428 $disabled_password = ''; 435 429 $disabled_samba = ''; 430 $disabled_phonenumber = ''; 436 431 $disabled_group = ''; 437 432 } … … 496 491 foreach ($user_info['groups_info'] as $group) 497 492 { 498 $array_groups[$group['gidnumber']] = $group['cn'] ;493 $array_groups[$group['gidnumber']] = $group['cn'].'('.$group['uid'].')'; 499 494 } 500 495 natcasesort($array_groups); … … 551 546 foreach ($array_maillist as $uid=>$option) 552 547 { 553 $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option . "</option>";548 $ea_select_user_maillists_options .= "<option value=" . $uid . ">" . $option.'('.$uid . ")</option>"; 554 549 } 555 550 } -
trunk/expressoAdmin1_2/inc/class.uigroups.inc.php
r3251 r5133 43 43 } 44 44 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 45 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 45 46 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 46 47 $GLOBALS['phpgw']->js->validate_file('jscode','groups','expressoAdmin1_2'); … … 198 199 // Chama funcao para criar lista de aplicativos disponiveis. 199 200 $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);202 201 203 202 // Cria combo de dominio samba … … 230 229 'defaultDomain' => $this->current_config['expressoAdmin_defaultDomain'], 231 230 'apps' => $apps, 232 'personal_data_fields' => $personal_data_fields,233 231 'use_attrs_samba_checked' => '', 234 232 'disabled_samba' => 'disabled', … … 302 300 if ($array_users_type[$uidnumber] == 'u') 303 301 { 304 $users .= "<option value=" . $uidnumber . ">" . $cn . " [" . $array_users_uid[$uidnumber] . "]</option>";305 } 306 else307 { 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 }*/ 310 308 } 311 309 … … 317 315 // Chama funcao para criar lista de aplicativos disponiveis. 318 316 $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']);321 317 322 318 // Cria combo de dominios do samba … … 349 345 'description' => $group_info['description'], 350 346 'apps' => $apps, 351 'personal_data_fields' => $personal_data_fields,352 347 'use_attrs_samba_checked' => $group_info['sambaGroup'] ? 'CHECKED' : '', 353 348 'disabled_samba' => $group_info['sambaGroup'] ? '' : 'disabled', -
trunk/expressoAdmin1_2/inc/class.uimaillists.inc.php
r4280 r5133 39 39 } 40 40 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 41 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 41 42 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 42 43 $GLOBALS['phpgw']->js->validate_file('jscode','maillists','expressoAdmin1_2'); … … 166 167 function add_maillists() 167 168 { 168 if($this->current_config['users_auto_search'] == "true"){169 169 $GLOBALS['phpgw']->js->set_onload('get_available_users(document.forms[0].org_context.value, document.forms[0].ea_check_allUsers.checked);'); 170 } 170 171 171 $manager_lid = $GLOBALS['phpgw']->accounts->data['account_lid']; 172 172 $manager_acl = $this->functions->read_acl($manager_lid); … … 206 206 'combo_manager_org' => $combo_manager_org, 207 207 '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'] 211 209 ); 212 210 $p->set_var($var); … … 263 261 if ($array_users_type[$mail] == 'u') 264 262 { 265 $users .= "<option value=" . $mail . ">" . $cn . " [" . $array_users_uid[$mail] . "]</option>";263 $users .= "<option value=" . $mail . ">" . utf8_decode($cn) . " (" . $array_users_uid[$mail] . ")</option>"; 266 264 } 267 265 elseif ($array_users_type[$mail] == 'l') 268 266 { 269 $lists .= "<option value=" . $mail . ">" . $cn . " [" . $array_users_uid[$mail] . "]</option>";267 $lists .= "<option value=" . $mail . ">" . utf8_decode($cn) . " (" . $array_users_uid[$mail] . ")</option>"; 270 268 } 271 269 else 272 270 { 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>"; 274 272 } 275 273 } … … 307 305 'phpgwAccountVisible_checked' => $maillist_info['phpgwAccountVisible'] == '-1' ? 'CHECKED' : '', 308 306 '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'] 312 308 ); 313 309 $p->set_var($var); … … 345 341 346 342 // 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'])) ); 348 346 349 347 // Usuarios de senders. … … 376 374 'accountRestrictive_checked' => $maillist_info['accountRestrictive'] == 'mailListRestriction' ? 'CHECKED' : '', 377 375 '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 381 377 ); 382 378 $p->set_var($var); -
trunk/expressoAdmin1_2/inc/class.uimanagers.inc.php
r1684 r5133 36 36 } 37 37 $GLOBALS['phpgw']->js->validate_file('jscode','connector','expressoAdmin1_2');#diretorio, arquivo.js, aplicacao 38 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 38 39 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 39 40 $GLOBALS['phpgw']->js->validate_file('jscode','managers','expressoAdmin1_2'); … … 87 88 88 89 // 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 '; 90 91 $GLOBALS['phpgw']->db->query($query); 91 92 while($GLOBALS['phpgw']->db->next_record()) … … 215 216 $manager_lid = $_GET['manager_lid']; 216 217 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 ."'"; 218 219 $GLOBALS['phpgw']->db->query($query); 219 220 … … 257 258 if ($first_time) 258 259 { 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']); 263 262 //Pesquisa no Banco e pega os valores dos apps. 264 263 $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 20 20 'validate_data_sectors_edit' => True, 21 21 'delete_sector' => True, 22 'css' => True, 23 'view_cota' => True 22 'css' => True 24 23 ); 25 24 … … 47 46 48 47 // 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 } 50 52 51 53 unset($GLOBALS['phpgw_info']['flags']['noheader']); … … 61 63 $p->set_block('sectors','row_empty','row_empty'); 62 64 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); 65 66 66 67 $var = Array( … … 68 69 'back_url' => $GLOBALS['phpgw']->link('/expressoAdmin1_2/index.php'), 69 70 '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 73 74 $p->set_var($var); 74 75 $p->set_var($this->functions->make_dinamic_lang($p, 'list')); … … 97 98 $var = Array( 98 99 '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) 101 102 ); 102 103 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 107 106 108 107 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'); 110 109 else 111 110 $var['inactives_link'] = lang('disabled'); … … 115 114 if ($can_edit) 116 115 { 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))); 118 117 } 119 118 else … … 124 123 if ($can_delete) 125 124 { 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))); 127 126 } 128 127 else … … 139 138 $p->set_var($var); 140 139 141 if ($this->functions->check_acl($manager_lid,'create_sectors')) {142 140 $p->set_var('input_add','<input type="submit" value="' . lang('Add Sectors') . '">'); 143 }144 else {145 $p->set_var('input_add',' ');146 }147 141 148 142 $p->parse('rows','row_empty',True); … … 163 157 $context = $_GET['context']; 164 158 $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); 165 161 } 166 162 else … … 193 189 'context' => $context == '' ? $GLOBALS['phpgw_info']['server']['ldap_context'] : $context, 194 190 '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'],199 191 'manager_org' => $combo_manager_org, 200 192 'sector_visible_checked'=> $_POST['sector_visible'] ? 'checked' : '', … … 202 194 ); 203 195 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']); 212 198 213 199 $p->set_var($var); … … 225 211 $context = $_GET['context']; 226 212 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 228 220 $combo_manager_org = substr( $combo_manager_org, 0, ( strpos($combo_manager_org, '</option>') + 9 ) ); 229 221 … … 250 242 { 251 243 $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];256 244 $_POST['sector_visible'] = $sector_info[0]['phpgwaccountvisible'][0]; 257 245 } … … 266 254 'manager_org' => $combo_manager_org, 267 255 '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 272 257 'lang_add' => lang('Add'), 273 258 'disable' => 'disabled', 274 259 '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 286 265 $p->set_var($var); 287 266 $p->set_var($this->functions->make_dinamic_lang($p, 'list')); 288 267 289 268 $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 template315 $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');342 269 } 343 270 … … 371 298 $acl = $this->functions->read_acl($account_lid); 372 299 $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); 373 303 374 304 // Verifica se tem acesso a este modulo … … 394 324 $sector_name = $tmp_sector_name[1]; 395 325 326 396 327 // 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'])); 400 331 401 332 $users_list = ''; … … 415 346 { 416 347 if ($subsector['dn'] != $_GET['context']) 417 $subsectors_list .= $subsector['ou'][0] . '<br>';348 $subsectors_list .= utf8_decode($subsector['ou'][0] . '<br>'); 418 349 } 419 350 … … 431 362 'sectors_list' => $subsectors_list 432 363 ); 364 $var['sector_name'] = preg_replace("/\\\([0-9A-Fa-f]{2})/e", "''.chr(hexdec('\\1')).''",$var['sector_name']); 365 433 366 $p->set_var($var); 434 367 $p->set_var($this->functions->make_dinamic_lang($p, 'list')); -
trunk/expressoAdmin1_2/inc/class.uishared_accounts.inc.php
r1913 r5133 1 1 <?php 2 2 /***********************************************************************************\ 3 * Expresso Administra ᅵᅵo *3 * Expresso Administração * 4 4 * by Joao Alfredo Knopik Junior (joao.alfredo@gmail.com, jakjr@celepar.pr.gov.br) * 5 5 * modified by Valmir Andre de Sena valmirse@gmail.com valmir.sena@ati.pe.gov.br … … 37 37 $GLOBALS['phpgw']->js->validate_file('modal','modal','expressoAdmin1_2'); 38 38 $GLOBALS['phpgw']->js->validate_file('jscode','expressoadmin','expressoAdmin1_2'); 39 $GLOBALS['phpgw']->js->validate_file('jscode','finder','expressoAdmin1_2'); 39 40 $c = CreateObject('phpgwapi.config','expressoAdmin1_2'); 40 41 $c->read_repository(); … … 96 97 97 98 $var = Array( 98 'mailquota' => $this->current_config['expressoAdmin_default UserQuota'],99 'mailquota' => $this->current_config['expressoAdmin_defaultSharedAccountQuota'], 99 100 'changequote_disabled' => $this->functions->check_acl($account_lid,'edit_shared_accounts_quote') ? '' : 'readonly', 100 101 'disabled_empty_inbox' => $this->functions->check_acl($account_lid,'empty_shared_accounts_inbox') ? '' : 'disabled', -
trunk/expressoAdmin1_2/inc/class.user.inc.php
r3528 r5133 36 36 $return['status'] = true; 37 37 38 if($this->db_functions->use_cota_control()) {39 //Verifica quota de usuários e disco40 $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 53 38 // Verifica o acesso do gerente 54 39 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'add_users')) … … 318 303 */ 319 304 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 330 305 $manager_account_lid = $_SESSION['phpgw_session']['session_lid']; 331 306 if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && … … 435 410 $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber']; 436 411 $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']); 437 414 } 438 415 else if (($old_values['telephonenumber'] != '') && ($new_values['telephonenumber'] == '')) … … 542 519 { 543 520 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) 546 522 { 547 523 $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') . '.'; 549 525 } 550 526 else … … 568 544 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_users')) 569 545 { 570 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////571 546 // Passwd Expired - Sem atributo 572 547 if (($old_values['passwd_expired'] == '') && ($new_values['passwd_expired'] == '1'))
Note: See TracChangeset
for help on using the changeset viewer.