| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- <?php
- /*
- *
- * OGP - Open Game Panel
- * Copyright (C) 2008 - 2018 The OGP Development Team
- *
- * http://www.opengamepanel.org/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- */
- error_reporting(E_ERROR);
- chdir("..");
- require_once("includes/helpers.php");
- require_once("includes/config.inc.php");
- require_once("includes/lang.php");
- require_once("includes/functions.php");
- function curPageURL() {
- $pageURL = ( isset($_SERVER['HTTPS']) and get_true_boolean($_SERVER['HTTPS']) ) ? "https://" : "http://";
- if ($_SERVER["SERVER_PORT"] != "80")
- $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
- else
- $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
- return $pageURL;
- }
- if(isset($_GET['file']))
- {
- $file = urldecode($_GET['file']);
- include($file);
- $constants = get_defined_constants(true);
- echo base64_encode(serialize($constants['user']));
- exit();
- }
- ?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <head>
- <title>OGP Lang Check</title>
- <style type='text/css'>
- .missing_lang {
- float: left;
- width: 100%;
- }
- .extra_lang {
- float: left;
- margin-left: 2em;
- }
- div h4 {
- padding: 0;
- margin: 0;
- }
- .clear {
- clear: both;
- }
- .file_vars {
- padding: 0;
- margin: 0;
- }
- .file_var h3 {
- margin: 0;
- padding: 0;
- }
- .lang {
- border: 1px dashed black;
- margin: 1em;
- padding: 1em;
- }
- .success {
- color: green;
- }
- .failure {
- color: red;
- }
- textarea {
- width: 80%;
- }
- </style>
- </head>
- <body>
- <h1>Open Game Panel - Language check</h1>
- <p>This page can be used to check what variables there are missing or there is extra compared to the
- default language (English).</p>
- <?php
- $db = createDatabaseConnection($db_type, $db_host, $db_user, $db_pass, $db_name, $table_prefix);
- $error_text = "";
- if (get_db_error_text($db,$error_text))
- {
- print_failure($error_text);
- return;
- }
- chdir("lang");
- $COMPARISON_LANG = "English";
- $global_comparison_lang_files = array();
- $gclf_tmp = glob($COMPARISON_LANG."/*.php");
- // Remove the directory from filename.
- foreach ( $gclf_tmp as $tmp )
- {
- $array_tmp = explode("/",$tmp);
- array_push($global_comparison_lang_files,$array_tmp[1]);
- }
- $gclf_tmp = glob($COMPARISON_LANG."/modules/*.php");
- foreach ( $gclf_tmp as $tmp )
- {
- $array_tmp = explode("/",$tmp);
- array_push($global_comparison_lang_files,"modules/".$array_tmp[2]);
- }
- $locale_files = makefilelist("./", ".|..|.svn", true, "folders");
- echo "<ul id='lang_list'>";
- foreach ($locale_files as $lang_name)
- {
- echo "<li><a href='#$lang_name'>$lang_name</a></li>\n";
- }
- echo "</ul>";
- startSession();
- if ( isset($_SESSION['users_login']) )
- {
- $userInfo = $db->getUser($_SESSION['users_login']);
- if( $db->isAdmin($_SESSION['user_id']) AND isset($_SESSION['users_passwd']) AND !empty($_SESSION['users_passwd']) AND $_SESSION['users_passwd'] == $userInfo['users_passwd'])
- {
- if( !empty( $_POST ) )
- {
- foreach ($locale_files as $lang_name)
- {
- if ( $lang_name == $COMPARISON_LANG ) continue;
-
- $lang_ok = true;
- foreach ( $global_comparison_lang_files as $glf )
- {
- $file = $lang_name."/".$glf;
- if( isset( $_POST[str_replace(".", "_", $file)] ) )
- {
- echo "<h2>".$lang_name."</h2>\n";
- echo $file."\n Values Added.";
- $add_values = '<?php '."\n";
- foreach ( $_POST as $var => $value )
- {
- if( $var != str_replace(".", "_", $file) )
- $add_values .= 'define(\''.$var.'\', "'.$value.'");'."\n";
- }
- $add_values .= '?>';
- $fh = fopen($file, 'a') or die("can't open file");
- fwrite($fh, $add_values);
- fclose($fh);
- }
- }
- }
- }
- }
- }
- $current_url = curPageURL();
- foreach ($global_comparison_lang_files as $glf)
- {
- $file = $COMPARISON_LANG."/".$glf;
- $contents = file_get_contents($current_url.'?file='.$file);
- $lang[$glf] = unserialize(base64_decode($contents));
- }
- // Check every lang.
- foreach ($locale_files as $lang_name)
- {
- if ( $lang_name == $COMPARISON_LANG ) continue;
- echo "<div id='$lang_name' class='lang'><h2>".$lang_name."</h2>\n";
- $lang_ok = true;
- foreach ( $global_comparison_lang_files as $glf )
- {
- $file = $lang_name."/".$glf;
- if ( !is_file($file) )
- {
- echo "<h3>File $file is missing</h3>\n";
- $lang_ok = false;
- continue;
- }
-
- $compare_lang = array();
- $contents = file_get_contents("$current_url?file=$file");
- $compare_lang = unserialize(base64_decode($contents));
- if(!is_array($compare_lang))
- echo "Errors where found at $file";
- $extra_lang_vars = @array_diff_key($compare_lang,$lang[$glf]);
- $missing_lang_vars = @array_diff_key($lang[$glf],$compare_lang);
- if(isset($extra_lang_vars['']))
- unset($extra_lang_vars['']);
- // If there is nothign wrong with the file lest skip it.
- if ( empty($missing_lang_vars) && empty($extra_lang_vars) )
- continue;
-
- echo "<div class='file_vars'>\n";
- echo "<h3>File: $file</h3>
- <form action='' method='POST' name='".str_replace(".", "_", $file)."' >\n";
-
- if ( !empty($missing_lang_vars) )
- {
- echo "<div class='missing_lang'><h4>Missing lang vars:</h4>\n";
- echo "<br>";
- foreach ( $missing_lang_vars as $var => $value )
- {
- echo "<label for='$var' >$var</label><br><textarea id='$var' name='$var'>".$lang[$glf][$var]."</textarea><br>\n";
- }
- echo "<input name='".str_replace(".", "_", $file)."' type='submit' />
- </form>
- </div>\n";
- $lang_ok = false;
- }
- if ( !empty($extra_lang_vars) )
- {
- echo "<div class='extra_lang'><h4>Extra lang vars:</h4>\n";
- echo "<ul>";
- foreach ( $extra_lang_vars as $var => $value )
- {
- echo "<li>$var</li>";
- }
- echo "</ul></div>";
- $lang_ok = false;
- }
- echo "</div><div class='clear'></div>\n";
- }
- if ( $lang_ok )
- {
- echo "<p class='success'>Lang is $lang_name is OK.</p>\n";
- }
- else
- {
- echo "<p class='failure'>Errors found from lang $lang_name.</p>\n";
- }
- echo "<div class='clear'></div> </div>\n";
- }
- ?>
- </html>
|