Changeset 414 for trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
- Timestamp:
- 09/12/08 11:39:24 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
r396 r414 123 123 { 124 124 $result['status'] = false; 125 $result['msg'] = 'Falha na conexao com o ldap.';125 $result['msg'] = $this->functions->lang('Connection with ldap fail') . "."; 126 126 return $result; 127 127 } … … 148 148 { 149 149 $result['status'] = false; 150 $result['msg'] = 'Este LOGIN não pode ser usado pois é uma conta de sistema.';150 $result['msg'] = $this->functions->lang('This LOGIN can not be used because is a System Account') . "."; 151 151 return $result; 152 152 } … … 197 197 198 198 $result['status'] = false; 199 $ result['msg'] = "LOGIN já está sendo utilizado por:\n" . $users;199 $this->functions->lang('This LOGIN is already used by') . ":\n" . $users; 200 200 return $result; 201 201 } … … 209 209 { 210 210 $result['status'] = false; 211 $result['msg'] = 'LOGIN do usuário já esta sendo usado por um grupo.';211 $result['msg'] = $this->functions->lang('This LOGIN is being used by a group') . "."; 212 212 return $result; 213 213 } … … 255 255 { 256 256 $result['status'] = false; 257 $result['msg'] = 'LOGIN já esta sendo usado por outro usuário em outra organização.';257 $result['msg'] = $this->functions->lang('This LOGIN is already used by a user in another organization') . "."; 258 258 ldap_close($ldap_connection2); 259 259 return $result; … … 277 277 if ($entries[0]['uid'][0] != $uid){ 278 278 $result['status'] = false; 279 $result['msg'] = 'E-MAIL está sendo usado por 1 usuário: ' . $entries[0]['uid'][0]; 280 //ldap_close($ldap_connection); 279 $result['msg'] = $this->functions->lang('Email is being used by 1 user') . ": " . $entries[0]['uid'][0]; 281 280 return $result; 282 281 } … … 284 283 else if ($entries['count'] > 1){ 285 284 $result['status'] = false; 286 $result['msg'] = 'E-MAIL está sendo usado por 2 ou mais usuários.'; 287 //ldap_close($ldap_connection); 285 $result['msg'] = $this->functions->lang('Email is being used by 2 or more users') . "."; 288 286 return $result; 289 287 } … … 297 295 if ($entries[0]['uid'][0] != $uid){ 298 296 $result['status'] = false; 299 $result['msg'] = "E-MAIL alternativo está sendo usado por 1 usuário: " . $entries[0]['uid'][0]; 300 //ldap_close($ldap_connection); 297 $result['msg'] = $this->functions->lang('Alternative email is being used by 1 user') . ": " . $entries[0]['uid'][0]; 301 298 return $result; 302 299 } … … 304 301 else if ($entries['count'] > 1){ 305 302 $result['status'] = false; 306 $result['msg'] = 'E-MAIL alternativo está sendo usado por 2 ou mais usuários.';303 $result['msg'] = $this->functions->lang('Alternative email is being used by 2 or more users') . "."; 307 304 return $result; 308 305 } … … 334 331 { 335 332 $result['status'] = false; 336 $result['msg'] = 'Falha na conexao com o ldap.';333 $result['msg'] = $this->functions->lang('Connection with ldap fail') . "."; 337 334 return $result; 338 335 } … … 389 386 { 390 387 $result['status'] = false; 391 $result['msg'] = 'Falha na conexao com o ldap.';388 $result['msg'] = $this->functions->lang('Connection with ldap fail') . "."; 392 389 return $result; 393 390 } … … 408 405 { 409 406 $result['status'] = false; 410 $result['msg'] = 'Este nome de grupo não pode ser usado pois é um grupo de sistema.';407 $result['msg'] = $this->functions->lang('This group name can not be used because is a System Account') . "."; 411 408 return $result; 412 409 } … … 420 417 { 421 418 $result['status'] = false; 422 $result['msg'] = 'NOME do grupo já está sendo usado.';419 $result['msg'] = $this->functions->lang('This name is already used') . "."; 423 420 return $result; 424 421 } … … 432 429 { 433 430 $result['status'] = false; 434 $result['msg'] = 'NOME do grupo já esta sendo usado por um usuário.';431 $result['msg'] = $this->functions->lang('This grupo name is already used by an user') . "."; 435 432 return $result; 436 433 } … … 456 453 { 457 454 $result['status'] = false; 458 $result['msg'] = 'Falha na conexao com o ldap.';455 $result['msg'] = $this->functions->lang('Connection with ldap fail') . "."; 459 456 return $result; 460 457 } … … 476 473 { 477 474 $result['status'] = false; 478 $result['msg'] = 'Este LOGIN não pode ser usado pois é uma conta de sistema.';475 $result['msg'] = $this->functions->lang('This LOGIN can not be used because is a System Account') . "."; 479 476 return $result; 480 477 } … … 488 485 { 489 486 $result['status'] = false; 490 $result['msg'] = 'LOGIN da lista já está sendo usado.';487 $result['msg'] = $this->functions->lang('This email list LOGIN is already used') . "."; 491 488 return $result; 492 489 } … … 500 497 { 501 498 $result['status'] = false; 502 $result['msg'] = 'E-MAIL da lista já está sendo usado.';499 $result['msg'] = $this->functions->lang('EMAIL is already used') . "."; 503 500 return $result; 504 501 } … … 543 540 return $options; 544 541 } 545 546 //Busca usuários de um contexto e já retorna as options do select;547 /*548 function get_available_users_and_maillist($params)549 {550 $context = $params['context'];551 $recursive = $params['recursive'];552 $justthese = array("cn", "uidNumber");553 $filter="(|(phpgwAccountType=u)(phpgwAccountType=l))";554 555 if ($recursive == 'true')556 $groups_list=ldap_search($this->ldap, $context, $filter, $justthese);557 else558 $groups_list=ldap_list($this->ldap, $context, $filter, $justthese);559 560 $entries = ldap_get_entries($this->ldap, $groups_list);561 562 for ($i=0; $i<$entries["count"]; $i++){563 $u_tmp[$entries[$i]["uidnumber"][0]] = $entries[$i]["cn"][0];564 }565 566 if (count($u_tmp))567 natcasesort($u_tmp);568 569 $i = 0;570 $users = array();571 572 if (count($u_tmp))573 {574 foreach ($u_tmp as $uidnumber => $cn)575 {576 $options .= "<option value=$uidnumber>$cn</option>";577 }578 unset($u_tmp);579 }580 581 return $options;582 }583 */584 542 585 543 //Busca usuários e listas de um contexto e já retorna as options do select; … … 722 680 $result['status'] = false; 723 681 $result['error_number'] = ldap_errno($this->ldap); 724 $result['msg'] = "Erro na funcao ldap_functions->ldap_add_entry ($dn).\nRetorno do servidor:". ldap_errno($this->ldap) . ldap_error($this->ldap);682 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->ldap_add_entry ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_errno($this->ldap) . ldap_error($this->ldap); 725 683 } 726 684 else … … 750 708 { 751 709 $result['status'] = false; 752 $result['msg'] = "Erro na funcao ldap_functions->ldap_save_photo ($dn).\nRetorno do servidor:". ldap_error($this->ldap);710 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->ldap_save_photo ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 753 711 } 754 712 … … 768 726 { 769 727 $result['status'] = false; 770 $result['msg'] = "Erro na funcao ldap_functions->ldap_remove_photo ($dn).\nRetorno do servidor:". ldap_error($this->ldap);728 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->ldap_remove_photo ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 771 729 } 772 730 … … 793 751 { 794 752 $result['status'] = false; 795 $result['msg'] = "Erro na funcao ldap_functions->add_user2group ($memberUid).\nRetorno do servidor:". ldap_error($this->ldap);753 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_user2group ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 796 754 } 797 755 return $result; … … 808 766 $res = @ldap_mod_del($this->ldap, $group_dn, $attrs); 809 767 810 /*echo 'usuarios recebidos para remocao no ldap';811 echo '<pre>';812 print_r($memberUid);*/813 814 768 if ($res) 815 769 { … … 819 773 { 820 774 $result['status'] = false; 821 $result['msg'] = "Erro na funcao ldap_functions->remove_user2group ($memberUid).\nRetorno do servidor:". ldap_error($this->ldap);775 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->remove_user2group ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 822 776 } 823 777 return $result; … … 829 783 { 830 784 $result['status'] = false; 831 $result['msg'] = "Falha de conexão com o openLDAP.\n\nRetorno do servidor:". ldap_error($ldapMasterConnect);785 $result['msg'] = $this->functions->lang('Ldap connection fail') . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($ldapMasterConnect); 832 786 return $result; 833 787 } … … 850 804 if (ldap_errno($ldapMasterConnect) == '50') 851 805 { 852 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\n" .853 "O usuário utilizado para gravação no LDAP, DEVE ter direito de escrita.\n".854 "O usuário " . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . " não tem este direito.\n".855 "Edite \"Configuração Global do Catálogo\", no módulo Administrador, Catálogo de Endereços e adicione um usuário com direitos de escrita.";806 $result['msg'] = $this->functions->lang('Error on the function') . ' ldap_functions->add_user2maillist' . ".\n" . 807 $this->functions->lang('The user used for record on LPDA, must have write access') . ".\n"; 808 $this->functions->lang('The user') . ' ' . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . ' ' . $this->functions->lang('does not have this access') . ".\n"; 809 $this->functions->lang('Edit Global Catalog Config, in the admin module, and add an user with write access') . ".\n"; 856 810 } 857 811 else 858 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\nRetorno do servidor:". ldap_error($ldapMasterConnect);812 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_user2maillist ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($ldapMasterConnect); 859 813 } 860 814 … … 878 832 { 879 833 $result['status'] = false; 880 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist_scp ($dn).\n\nRetorno do servidor:". ldap_error($this->ldap);834 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_user2maillist_scp ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 881 835 } 882 836 return $result; … … 888 842 { 889 843 $result['status'] = false; 890 $result['msg'] = "Falha de conexão com o openLDAP.\n\nRetorno do servidor:". ldap_error($ldapMasterConnect);844 $result['msg'] = $this->functions->lang('Ldap connection fail') . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($ldapMasterConnect); 891 845 return $result; 892 846 } … … 909 863 if (ldap_errno($ldapMasterConnect) == '50') 910 864 { 911 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\n" . 912 "O usuário utilizado para gravação no LDAP, DEVE ter direito de escrita.\n". 913 "O usuário " . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . " não tem este direito.\n". 914 "Edite \"Configuração Global do Catálogo\", no módulo Administrador, Catálogo de Endereços e adicione um usuário com direitos de escrita."; 865 866 $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 867 868 $result['msg'] = $this->functions->lang('Error on the function') . ' ldap_functions->add_user2maillist' . ".\n" . 869 $this->functions->lang('The user used for record on LPDA, must have write access') . ".\n"; 870 $this->functions->lang('The user') . ' ' . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . ' ' . $this->functions->lang('does not have this access') . ".\n"; 871 $this->functions->lang('Edit Global Catalog Config, in the admin module, and add an user with write access') . ".\n"; 915 872 } 916 873 else 917 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\nRetorno do servidor:". ldap_error($ldapMasterConnect);874 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_user2maillist ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($ldapMasterConnect); 918 875 } 919 876 ldap_close($ldapMasterConnect); … … 933 890 { 934 891 $result['status'] = false; 935 $result['msg'] = "Erro na funcao ldap_functions->remove_user2maillist_scp ($dn).\n\nRetorno do servidor:". ldap_error($this->ldap);892 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->remove_user2maillist_scp ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 936 893 } 937 894 return $result; … … 955 912 { 956 913 $result['status'] = false; 957 $result['msg'] = "Erro na funcao ldap_functions->replace_user2maillists ($old_mail).\nRetorno do servidor:". ldap_error($this->ldap);914 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->replace_user2maillists ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 958 915 } 959 916 } … … 1025 982 $result['corporative_information_rg'] = $entry[0]['rg'][0]; 1026 983 $result['corporative_information_rguf'] = $entry[0]['rguf'][0]; 984 $result['corporative_information_description'] = utf8_decode($entry[0]['description'][0]); 1027 985 } 1028 986 … … 1379 1337 { 1380 1338 $return['status'] = false; 1381 $return['msg'] = 'Erro em ldap_funcitons->change_user_context: ' . ldap_error($this->ldap);1339 $return['msg'] = $this->functions->lang('Error on function') . " ldap_functions->change_user_context ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1382 1340 } 1383 1341 else … … 1393 1351 $return['status'] = false; 1394 1352 $return['error_number'] = ldap_errno($this->ldap); 1395 $return['msg'] = 'Erro em ldap_funcitons->replace_user_attributes: ' . ldap_error($this->ldap);1353 $return['msg'] = $this->functions->lang('Error on function') . " ldap_functions->replace_user_attributes ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1396 1354 } 1397 1355 else 1398 1356 $return['status'] = true; 1399 1357 1358 print_r($return); 1400 1359 return $return; 1401 1360 } … … 1407 1366 $return['status'] = false; 1408 1367 $return['error_number'] = ldap_errno($this->ldap); 1409 $return['msg'] = 'Erro em ldap_funcitons->add_user_attributes: ' . ldap_error($this->ldap);1368 $return['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_user_attributes ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1410 1369 } 1411 1370 else … … 1420 1379 { 1421 1380 $return['status'] = false; 1422 $return['msg'] = 'Erro em ldap_funcitons->remove_user_attributes: ' . ldap_error($this->ldap);1381 $return['msg'] = $this->functions->lang('Error on function') . " ldap_functions->remove_user_attributes ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1423 1382 } 1424 1383 else … … 1456 1415 { 1457 1416 $return['status'] = false; 1458 $re turn['msg'] .= 'Você não tem acesso para deletar este usuário.';1417 $result['msg'] = $this->functions->lang('You do not have access to delete this user') . "."; 1459 1418 return $return; 1460 1419 } … … 1481 1440 { 1482 1441 $return['status'] = false; 1483 $re turn['msg'] .= "Erro em ldap_functions->delete_user from group ($dn): ". ldap_error($this->ldap);1442 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_user from group ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1484 1443 } 1485 1444 } … … 1500 1459 { 1501 1460 $result['status'] = false; 1502 $result['msg'] = "Erro na funcao ldap_functions->delete_user, instutional_accounts.\nRetorno do servidor:". ldap_error($this->ldap);1461 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_user, institutional accounts ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1503 1462 } 1504 1463 } … … 1514 1473 { 1515 1474 $return['status'] = false; 1516 $re turn['msg'] .= 'Erro ao conectar ao ldap_master: ' . ldap_error($this->ldap);1475 $result['msg'] = $this->functions->lang('Connection with ldap_master fail') . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1517 1476 return $return; 1518 1477 } … … 1532 1491 if (ldap_errno($ldapMasterConnect) == '50') 1533 1492 { 1534 $result['msg'] = "Erro na funcao ldap_functions->delete_user.\n" .1535 "O usuário utilizado para gravação no LDAP, DEVE ter direito de escrita.\n".1536 "O usuário " . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . " não tem este direito.\n".1537 "Edite \"Configuração Global do Catálogo\", no módulo Administrador, Catálogo de Endereços e adicione um usuário com direitos de escrita.";1493 $result['msg'] = $this->functions->lang('Error on the function') . ' ldap_functions->add_user2maillist' . ".\n" . 1494 $this->functions->lang('The user used for record on LPDA, must have write access') . ".\n"; 1495 $this->functions->lang('The user') . ' ' . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . ' ' . $this->functions->lang('does not have this access') . ".\n"; 1496 $this->functions->lang('Edit Global Catalog Config, in the admin module, and add an user with write access') . ".\n"; 1538 1497 } 1539 1498 else 1540 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\nRetorno do servidor:". ldap_error($ldapMasterConnect);1499 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_user, email lists ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($ldapMasterConnect); 1541 1500 } 1542 1501 } … … 1549 1508 { 1550 1509 $return['status'] = false; 1551 $re turn['msg'] .= 'Erro em ldap_funcitons->delete_user, listas de email: ' . ldap_error($this->ldap);1510 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_user, email lists ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($ldapMasterConnect); 1552 1511 } 1553 1512 … … 1580 1539 { 1581 1540 $return['status'] = false; 1582 $re turn['msg'] .= 'Erro em ldap_funcitons->delete_maillist, listas de email: ' . ldap_error($this->ldap);1541 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_maillist ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1583 1542 } 1584 1543 … … 1599 1558 { 1600 1559 $return['status'] = false; 1601 $re turn['msg'] .= 'Erro em ldap_funcitons->delete_maillist, listas de email: ' . ldap_error($this->ldap);1560 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_group ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1602 1561 } 1603 1562 … … 1660 1619 { 1661 1620 $return['status'] = false; 1662 $re turn['msg'] .= 'Erro em ldap_funcitons->rename_uid: ' . ldap_error($this->ldap);1621 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->rename_uid ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1663 1622 } 1664 1623 … … 1797 1756 { 1798 1757 $return['status'] = false; 1799 $re turn['msg'] = "Erro ao adicionar Samba Domain";1758 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->add_sambadomain ($dn)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1800 1759 } 1801 1760 else … … 1819 1778 { 1820 1779 $return['status'] = false; 1821 $re turn['msg'] .= "Erro em ldap_funcitons->delete_sambadomain ($sambadomainname).\nRetorno do servidor: ". ldap_error($this->ldap);1780 $result['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_sambadomain ($sambadomainname)" . ".\n" . $this->functions->lang('Server returns') . ': ' . ldap_error($this->ldap); 1822 1781 } 1823 1782 } … … 1835 1794 { 1836 1795 $return['status'] = 'false'; 1837 $re turn['msg'] = 'Nenhum resultado encontrado.';1796 $result['msg'] = $this->functions->lang('Any result was found') . '.'; 1838 1797 return $return; 1839 1798 } … … 2018 1977 { 2019 1978 $result['status'] = false; 2020 $result['msg'] = $this->functions->lang('Error in function') . ' ldap_functions->save_institutional_accounts: ldap_rename';1979 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 2021 1980 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 2022 1981 } … … 2054 2013 { 2055 2014 $result['status'] = false; 2056 $result['msg'] = $this->functions->lang('Error in function') . ' ldap_functions->save_institutional_accounts: ldap_modify';2015 $result['msg'] = $this->functions->lang('Error on function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 2057 2016 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 2058 2017 } … … 2119 2078 { 2120 2079 $return['status'] = 'false'; 2121 $re turn['msg'] = 'Problemas carregando dados.';2080 $result['msg'] = $this->functions->lang('Problems loading datas') . '.'; 2122 2081 } 2123 2082 else … … 2202 2161 { 2203 2162 $return['status'] = false; 2204 $return['msg'] = $this->functions->lang('Error in function') . " ldap_functions->delete_institutional_accounts: ldap_delete";2163 $return['msg'] = $this->functions->lang('Error on function') . " ldap_functions->delete_institutional_accounts: ldap_delete"; 2205 2164 $return['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 2206 2165 return $return; … … 2227 2186 { 2228 2187 $result['status'] = false; 2229 $return['msg'] = $this->functions->lang('Error in function') . " ldap_functions->replace_mail_from_institutional_account.";2188 $return['msg'] = $this->functions->lang('Error on function') . " ldap_functions->replace_mail_from_institutional_account."; 2230 2189 } 2231 2190 }
Note: See TracChangeset
for help on using the changeset viewer.