DIR : /home/kozerus/public_html/dgs/admin_do_translators.php
/home/kozerus/public_html/dgs
<?php
/*
Dragon Go Server
Copyright (C) 2001- Erik Ouchterlony, Rod Ival, Jens-Uwe Gaspar
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// translations remove for admin page: $TranslateGroups[] = "Admin";
require_once 'include/std_functions.php';
require_once 'include/form_functions.php';
require_once 'include/make_translationfiles.php';
function lang_illegal( $str)
{
return substr( $str
, strcspn( $str, '*?\\/"\':;[]{}<>' //special filename chars
. LANG_TRANSL_CHAR.LANG_CHARSET_CHAR)
, 1);
}
function retry_admin( $msg)
{
if ( $tmp = trim( $msg) )
{
$tmp = '?sysmsg='.urlencode($tmp);
$sep = URI_AMP;
}
else
{
$tmp = '';
$sep = '?';
}
foreach ( array(
'langname',
'browsercode',
'charenc',
'showlanguages',
'transluser',
'transladdlang',
) as $arg )
{
global $$arg;
if ( isset($$arg) && (!is_string($$arg) || $$arg>'') )
{
$tmp.= $sep.$arg."=".urlencode($$arg);
$sep = URI_AMP;
}
}
jump_to("admin_translators.php" . $tmp);
}//retry_admin
{
// NOTE: used by pages: admin_translators.php
connect2mysql();
$logged_in = who_is_logged( $player_row, LOGIN_DEFAULT_OPTS_ADM_OPS );
if ( !$logged_in )
error('not_logged_in', 'admin_do_translators');
if ( $player_row['ID'] <= GUESTS_ID_MAX )
error('not_allowed_for_guest', 'admin_do_translators');
if ( !(@$player_row['admin_level'] & ADMIN_TRANSLATORS) )
error('adminlevel_too_low', 'admin_do_translators');
/* Originally, the language code was a 2 letters code (like ISO 639-1).
Because of language particularities within the same charset (like
en-gb and en-us), the language code is now a "at least a 2 letters" code.
Because of get_preferred_browser_language(), it must follow the code
used by browsers, i.e. IANA Language Subtag Registry.
*/
$browsercode = trim(get_request_arg('browsercode'));
$charenc = trim(get_request_arg('charenc'));
$langname = trim(get_request_arg('langname'));
$showlanguages = @$_REQUEST['showlanguages'] ?'1' :'';
$addlanguage = @$_REQUEST['addlanguage'] ?'1' :'';
$transluser = get_request_arg('transluser');
$showpriv = @$_REQUEST['showpriv'] ?'1' :'';
$transladd = @$_REQUEST['transladd'] ?'1' :'';
$transladdlang = trim(get_request_arg('transladdlang'));
$translpriv = @$_REQUEST['translpriv'] ?'1' :'';
//transllang[] is a MULTIPLE select box
$transllang = get_request_arg('transllang');
// Normalization for the array_key_exists() matchings
$browsercode = strtolower($browsercode);
$charenc = strtolower($charenc);
$langname = ucfirst($langname); //ucfirst(strtolower($langname)); //ucwords()
$msg = '';
if ( $showlanguages )
retry_admin('');
if ( $addlanguage )
{
$tmp = lang_illegal( $browsercode.$langname.$charenc);
if ( $tmp )
retry_admin( "Sorry, there was an illegal character in a language field ($tmp)");
if ( strlen( $browsercode ) < 2 || empty( $langname ) || empty( $charenc ) )
retry_admin( "Sorry, there was a missing or incorrect field when adding a language.");
$tmp= language_exists( $browsercode, $charenc, $langname );
if ( $tmp )
retry_admin( "Sorry, the language you tried to add already exists."
."\n" . $tmp);
ta_begin();
{//HOT-section to add language for translator
$tmp = mysql_addslashes( $browsercode . LANG_CHARSET_CHAR . $charenc );
db_query( 'admin_do_translators.add.insert',
"INSERT INTO TranslationLanguages SET Name='" . mysql_addslashes($langname) . "', Language='$tmp'" );
make_known_languages(); //must be called from main dir
//insert the name of language to be translated
$row = mysql_single_fetch( 'admin_do_translators.add.find_group',
"SELECT ID FROM TranslationGroups WHERE Groupname='Users'")
or error('internal_error','admin_do_translators.add.find_group2');
$Group_ID = $row['ID'];
add_text_to_translate('admin_do_translators.add', $langname, $Group_ID);
}
ta_end();
retry_admin( sprintf( "Added language %s with code %s and character-encoding %s."
, $langname, $browsercode, $charenc ));
}
//-------------------
// Queries with a user:
$old_langs = '';
if ( $showpriv || $transladd || $translpriv )
{
if ( empty($transluser) )
retry_admin( "Sorry, you must specify a user.");
$row = mysql_single_fetch( 'admin_do_translators.user.find',
"SELECT Translator FROM Players WHERE Handle='".mysql_addslashes($transluser)."'" );
if ( !$row )
retry_admin( "Sorry, I couldn't find this user.");
if ( !empty($row['Translator']) )
$old_langs = $row['Translator'];
}
if ( $showpriv )
retry_admin('');
$translator_array = array();
$update_it = false;
if ( $transladd )
{
if ( !empty($transladdlang) )
{
if ( !language_exists( $transladdlang ) )
$transladdlang = '';
}
if ( empty($transladdlang) )
retry_admin( "Sorry, you must specify existing languages.");
if ( $old_langs )
$translator_array = explode( LANG_TRANSL_CHAR, $old_langs );
if ( in_array( $transladdlang, $translator_array) )
retry_admin( sprintf( "User %s is already translator for language %s.",
$transluser, $transladdlang) );
$translator_array[]= $transladdlang;
$update_it = 'admin_t4';
$msg = sprintf( "Added user %s as translator for language %s."
, $transluser, $transladdlang );
}
else if ( $translpriv )
{
if ( is_array( $transllang ) )
$translator_array = $transllang;
$update_it = 'admin_t5';
$msg = sprintf( "Changed translator privileges info for user %s."
, $transluser );
}
if ( $update_it )
{
$new_langs = implode( LANG_TRANSL_CHAR, array_unique($translator_array));
if ( $new_langs == $old_langs )
retry_admin( $msg);
ta_begin();
{//HOT-section to update languages of translator
db_query( "admin_do_translators.user.update($transluser,$new_langs)",
"UPDATE Players SET Translator='$new_langs'"
. " WHERE Handle='".mysql_addslashes($transluser)."' LIMIT 1" );
if ( mysql_affected_rows() != 1 )
error('internal_error', "admin_do_translators.user.update2($transluser,$new_langs)");
// Check result
$tmp = mysql_single_fetch( "admin_do_translators.user.translator($transluser)",
"SELECT Translator FROM Players WHERE Handle='".mysql_addslashes($transluser)."'" );
if ( !$tmp )
$update_it.= '.1';
else if ( !isset($tmp['Translator']) )
$update_it.= '.2';
else if ( $tmp['Translator'] != $new_langs )
$update_it.= '.3'; //surely, the field truncats the string
else
retry_admin( $msg);
// Something went wrong. Restore to old set then error
db_query( "admin_do_translators.user.revert($transluser,$old_langs)",
"UPDATE Players SET Translator='$old_langs'"
. " WHERE Handle='".mysql_addslashes($transluser)."' LIMIT 1" );
}
ta_end();
error('couldnt_update_translation', 'admin_do_translators.update_failed');
}
retry_admin('');
}
?>
//
koh5_pano
Drag mouse to navigate.
Navigation
- Left/Right Mouse drag: Changes camera heading.
- Up/Sown Mouse drag: Changes camera pitch.
- Scroll wheel: Changes camera field of view.
- I-Key: Displays Info panel with canvas size, image size and FPS.
17.Aug.2010, Martin Wengenmayer