gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r635 - doodle-docs/WWW


From: grothoff
Subject: [GNUnet-SVN] r635 - doodle-docs/WWW
Date: Sun, 10 Apr 2005 23:02:30 -0700 (PDT)

Author: grothoff
Date: 2005-04-10 23:02:26 -0700 (Sun, 10 Apr 2005)
New Revision: 635

Modified:
   doodle-docs/WWW/commitMassTranslation.php
   doodle-docs/WWW/commitTranslation.php
   doodle-docs/WWW/editor.php
   doodle-docs/WWW/i18nhtml.inc
   doodle-docs/WWW/translate.php
   doodle-docs/WWW/vote.php
Log:
testing new i18nHTML

Modified: doodle-docs/WWW/commitMassTranslation.php
===================================================================
--- doodle-docs/WWW/commitMassTranslation.php   2005-04-10 17:54:37 UTC (rev 
634)
+++ doodle-docs/WWW/commitMassTranslation.php   2005-04-11 06:02:26 UTC (rev 
635)
@@ -26,6 +26,7 @@
   W("Translating to English currently not allowed.\n");
   die();
 }
+DOCTYPE("HTML", "Transitional");
 echo "<html><head>";
 TITLE("WWW translation: commit");
 echo "</head><body>";
@@ -37,6 +38,7 @@
     continue;
   if ( ($dec == "xlang") || ($dec == "start") )
     continue;
+  $val = fix($val);
   $query = "SELECT c FROM pending WHERE lang=\"$xlang\"";
   $result = mysql_query($query, $connection);
   $num = 0;
@@ -45,8 +47,10 @@
   while ($num > 0) {
     $num--;
     $row = mysql_fetch_array($result);
-    if ($dec == bin2hex(md5(urldecode($row["c"])))) {
-      $enc = mysql_real_escape_string($row["c"]);
+    $cx_plain = fix($row["c"]);
+    $cx_sql = mysql_real_escape_string($cx_plain);
+    if ($dec == bin2hex(md5($cx_plain))) {
+      $enc_sql = $cx_sql;
       break;
     }
   }
@@ -56,30 +60,32 @@
     P();
     continue;
   }  
-  $query = "DELETE FROM pending WHERE lang=\"$lang\" AND c=\"$enc\"";
+  $query = "DELETE FROM pending WHERE lang=\"$lang\" AND c=\"$enc_sql\"";
   mysql_query($query, $connection); 
-  $t = mysql_real_escape_string(to_unicode($val));
-  $query = "SELECT ranking FROM map WHERE name=\"$enc\" AND lang=\"$lang\" AND 
translation=\"$t\"";
+  $val_sql = mysql_real_escape_string(to_unicode($val));
+  $query = "SELECT ranking FROM map WHERE name=\"$enc_sql\"" .
+           " AND lang=\"$lang\" AND translation=\"$val_sql\"";
   $result = mysql_query($query, $connection);
   $num = 0;
   if ($result) 
     $num = mysql_numrows($result);
   if ($num == 0) {
-    $txtCnt = count_chars(urldecode($enc), 1);
-    $tCnt = count_chars($t, 1);
+    $txtCnt = count_chars(stripslashes($enc_sql), 1);
+    $tCnt = count_chars(stripslashes($val_sql), 1);
     if ($txtCnt[ord('%')] != $tCnt[ord('%')]) {
-      W("Commit '%s->%s' failed.", $enc, $t);
+      W("Commit '%s->%s' failed.", stripslashes($enc_sql), 
stripslashes($val_sql));
       W("The number of percent signs in source text and translation do not 
match.");     
       W("Note that you must preserve all %%s expressions unchanged.");
       W("Also, a single displayed %% sign must be translated into two (%%%%) 
such signs.");
       P();
     } else {
-      $query = "INSERT INTO map VALUES(\"$enc\", \"$lang\", \"$t\", 1, \"" . 
$_SERVER['REMOTE_ADDR'] . "\");";
+      $query = "INSERT INTO map VALUES(\"$enc_sql\", \"$lang\", " .
+               "\"$val_sql\", 1, \"" . $_SERVER['REMOTE_ADDR'] . "\");";
       mysql_query($query, $connection);
       $done++;
       W("Storing translation for &quot;%s&quot = &quot;%s&quot;.",
-        ARRAY(urldecode($enc),
-             urldecode($t)));
+        ARRAY(stripslashes($enc_sql),
+             stripslashes($val_sql)));
       BR();  
     }
   }  

Modified: doodle-docs/WWW/commitTranslation.php
===================================================================
--- doodle-docs/WWW/commitTranslation.php       2005-04-10 17:54:37 UTC (rev 
634)
+++ doodle-docs/WWW/commitTranslation.php       2005-04-11 06:02:26 UTC (rev 
635)
@@ -18,9 +18,6 @@
      Boston, MA 02111-1307, USA.
 */
 include("i18nhtml.inc");
-$text = mysql_real_escape_string($_REQUEST['text']);
-$translation = $_REQUEST['translation'];
-$back = $_REQUEST['back'];
 if (!$connection) {
   echo "Database is down. Cannot edit translations.";
   die();
@@ -29,39 +26,47 @@
   W("Translating to English is not allowed.\n");
   die();
 }
+$text            = urldecode($_REQUEST['text']);
+$text_sql        = mysql_real_escape_string($text);
+$translation     = fix($_REQUEST['translation']);
+$translation_sql = mysql_real_escape_string(to_unicode($translation));
 
-$t = mysql_real_escape_string(to_unicode($translation));
+$back            = $_REQUEST['back'];
 // check for identical translation
-$query = "SELECT ranking FROM map WHERE name=\"$text\" AND lang=\"$lang\" AND 
translation=\"$t\"";
+$query = "SELECT ranking FROM map WHERE name=\"$text_sql\"" . 
+         " AND lang=\"$lang\" AND translation=\"$translation_sql\"";
 $result = mysql_query($query, $connection);
 $num = 0;
-if ($result) {
+if ($result) 
   $num = mysql_numrows($result);
-}
 if ($num > 0) {
   echo "<html><head>";
   TITLE("Translation exists.");
   echo "</head><body>";
-  W("Translation exists.");   
+  W("Translation '%s' of sentence '%s' exists.",
+    fix($translation), $text);   
   extlink($back, "Back...");
   generateFooter();
   echo "</body></html>";
 } else {
-  $txtCnt = count_chars(urldecode($text), 1);
-  $tCnt = count_chars($t, 1);
+  $txtCnt = count_chars($text, 1);
+  $tCnt   = count_chars($translation, 1);
   if ($txtCnt[ord('%')] != $tCnt[ord('%')]) {
       echo "<html><head>";
       TITLE("Commit failed.");
       echo "</head><body>";
-      W("Commit failed.");
-      W("The number of percent signs in source text and translation do not 
match.");     
+      W("Commit failed ('%s' and '%s').", ARRAY($text, $translation));
+      W("The number of percent signs in source text and translation does not 
match.");     
       W("Note that you must preserve all %%s expressions unchanged.");
       W("Also, a single displayed %% sign must be translated into two (%%%%) 
such signs.");
       echo "</body></html>";
   } else {
-    $query = "INSERT INTO map VALUES(\"$text\", \"$lang\", \"$t\", 1, \"" . 
$_SERVER['REMOTE_ADDR'] . "\");";
+    $query = "INSERT INTO map VALUES(\"$text_sql\", \"$lang\", " .
+             "\"$translation_sql\", 1, \"" . $_SERVER['REMOTE_ADDR'] . "\");";
     $result = mysql_query($query, $connection);
     if ($result) {
+      $query = "DELETE FROM pending WHERE lang=\"$lang\" AND c=\"$text_sql\"";
+      mysql_query($query, $connection); 
       header("Location: " . $back); /* Redirect browser */
     } else {
       echo "<html><head>";

Modified: doodle-docs/WWW/editor.php
===================================================================
--- doodle-docs/WWW/editor.php  2005-04-10 17:54:37 UTC (rev 634)
+++ doodle-docs/WWW/editor.php  2005-04-11 06:02:26 UTC (rev 635)
@@ -22,6 +22,7 @@
   echo "Database is down. Cannot edit translations.";
   die();
 }
+DOCTYPE("HTML", "Transitional");
 echo "<html><head>";
 TITLE("WWW translation");
 echo "</head><body>";
@@ -51,12 +52,12 @@
   $start = $end - $max;
   if ($start < 0)
     $start = 0;
- }
+}
 
 if ($num == 0) {
   P();
   W("No missing translations for the selected target language were found.");
- } else {
+} else {
   P();
   W("%s translations to %s have been requested and were not available.",
     ARRAY($num,
@@ -71,45 +72,39 @@
   echo "<input type=hidden name=\"start\" value=\"$endp\">";
   
   echo "<table border=5>";
-  echo "<tr><th>";
-  W("Original");
-  echo "</th><th>";
-  W("Translation");
-  echo "</th></tr>";
+  echo "<tr>";
+  TH("Original");
+  TH("Translation");
+  echo "</tr>";
   for ($ii=0;$ii<$end;$ii++) {
     $row = mysql_fetch_array($result);
     if ($ii < $start)
       continue;
-    $cx = $row["c"];
+    $cx_plain = fix($row["c"]);
+    $cx_sql = mysql_real_escape_string($cx_sql);
     
-    $query = "SELECT ranking FROM map WHERE name=\"$cx\" AND lang=\"$lang\"";
+    $query = "SELECT ranking FROM map WHERE name=\"$cx_sql\" AND 
lang=\"$lang\"";
     $result2 = mysql_query($query, $connection);
     $num2 = 0;
     if ($result2) 
       $num2 = mysql_numrows($result2);
+    echo "<tr><td width=\"45%\">";
+    echo "&quot;$cx_plain&quot;";
+    echo "</td>\n\t<td width\"50\%\">";
     if ($num2 > 0) {
-      $query = "DELETE FROM pending WHERE lang=\"$lang\" AND c=\"$cx\"";
-      mysql_query($query, $connection); 
-      
-      echo "<tr><td width=\"45%\">";
-      $dec = urldecode($cx);
-      echo "&quot;" . $dec . "&quot;";
-      echo "</td>\n\t<td width\"50\%\">";
+      $query = "DELETE FROM pending WHERE lang=\"$lang\" AND c=\"$cx_sql\"";
+      mysql_query($query, $connection);      
       W("Skipped (already translated).");
+    } else {
+      echo "<input size=\"40\" maxlength=\"65535\" name=\"" . 
bin2hex(md5($cx_plain)) . "\"></td></tr>\n";
     }
-    else {
-      echo "<tr><td width=\"45%\">";
-      $dec = urldecode($cx);
-      echo "&quot;" . $dec . "&quot;";
-      echo "</td>\n\t<td width\"50\%\">";
-      echo "<input size=\"40\" maxlength=\"65535\" name=\"" . 
bin2hex(md5($dec)) . "\"></td></tr>\n";
-    }
   }
   echo "</tr></table>";
-  echo "<input type=submit value=\"I hereby give all these translations into 
the Public Domain (commit)\">";
+  echo "<input type=submit value=\"" . 
+       TRANSLATE_("I hereby give all these translations into the Public Domain 
(commit)") . 
+       "\">";
   echo "</form>";
-  
- }
+}
 if ($end < $num) {
   P();
   echo "<a href=\"" . $i18nHTMLbase . "editor.php?xlang=" . $lang . "&start=" 
. ($end + 1) . "\">";
@@ -117,10 +112,10 @@
   echo "</a>";
   if ($t == 1)
     translateLink($b);
- } else {
+} else {
   W("Statistics about translation progress can be found %s.\n",
     intlink_($i18nHTMLbase . "status.php", "here"));
- }
+}
 P();
 H2("Remarks");
 H3("The percent sign");

Modified: doodle-docs/WWW/i18nhtml.inc
===================================================================
--- doodle-docs/WWW/i18nhtml.inc        2005-04-10 17:54:37 UTC (rev 634)
+++ doodle-docs/WWW/i18nhtml.inc        2005-04-11 06:02:26 UTC (rev 635)
@@ -17,7 +17,6 @@
      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.
 */
-
   // This file defines the functions that will be used
   // to build the webpage.  The set may not contain everything
   // you might want, so feel free to define your own extensions.
@@ -35,13 +34,13 @@
   // Most of the code should be straight forward. Look
   // at some of the example files that use it and compare with
   // the generated pages. 
-
-
 // obtain user db specific configuration parameters
 include("i18nhtml_config.inc");
-
 header("Content-type: text/html; charset=utf-8");
 
+if (get_magic_quotes_gpc())
+  die('PHP misconfigured.  Disable get_magic_quotes.');
+
 // establish default connection to database server
 $connection = @mysql_connect($i18nHTMLsqlServer,
                             $i18nHTMLsqlUser,
@@ -57,24 +56,24 @@
   if (!$db_selected) {
      die ('Error selecting db : ' . mysql_error());
   }
- }
+}
 
 // ensure the mapping and pending tables exist, creating them if not
 $query="CREATE TABLE IF NOT EXISTS map" .
        " (name BLOB, lang TINYBLOB, translation BLOB, ranking INT, ip 
TINYTEXT, " .
        "INDEX(name(10)), INDEX(lang(4)), INDEX(ranking), 
INDEX(translation(10)))";
 $result = mysql_query($query, $connection);
-//if (!$result) {
-//   die('Unable to validate mapping table.  Invalid query: ' . mysql_error());
-//}
+if (($i18nHTMLdebug == 1) && (!$result)) {
+  die('Unable to validate map table.  Invalid query: ' . mysql_error());
+}
 
 $query="CREATE TABLE IF NOT EXISTS pending" .
        " (c BLOB, lang TINYBLOB, count INT, " .
        "INDEX(c(10)), INDEX(lang(4)), INDEX(count))";
 $result = mysql_query($query, $connection);
-//if (!$result) {
-//   die('Unable to validate pending table.  Invalid query: ' . mysql_error());
-//}
+if (($i18nHTMLdebug == 1) && (!$result)) {
+  die('Unable to validate pending table.  Invalid query: ' . mysql_error());
+}
 
 /* mapping of real-names to language codes */
 $languagecodes = array("English"=>"en",
@@ -102,7 +101,7 @@
                       "Swedish"=>"sv");
 
 /* try to automagically figure out user preferences */
-$hlang=$_SERVER["HTTP_ACCEPT_LANGUAGE"];
+$hlang = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
 if ($hlang) {
   $tok = strtok($hlang, ";");
   while ($tok) {
@@ -114,7 +113,7 @@
     }
     $tok = strtok(";");
   }
- }
+}
 // If no language is specified, use english.
 if ( (! $lang) || ($lang=="") )
   $lang = "English";
@@ -124,21 +123,23 @@
 $lang = ucfirst(strtolower($lang));
 $lang = mysql_real_escape_string($lang);
 $editor = $_REQUEST['editor'];
+$i18nHTMLhasTranslation = 0; // set by last call to translation_query()
 
-
-$htmlin  = array("&rsquo;", "&gt;", "&quot;", "&prime;", "&amp;");
-$htmlout = array("&#8217;" , "&#62;", "&#34;" , "&#8242" , "&#38;");
-
 /**
  * Replace certain HTML named special characters with their
  * numeric codes (some browsers don't work with the symbolic names).
  */
+$htmlin  = array("&rsquo;", "&gt;",  "&quot;", "&prime;", "&amp;", "\"",    
"'",      "`",       "&lsquo;");
+$htmlout = array("&#8217;", "&#62;", "&#34;" , "&#8242;", "&#38;", "&#34;", 
"&#8242;", "&#8217;", "&#8216;");
 function fix($a) {
   global $htmlin;
   global $htmlout;
   return str_replace($htmlin, $htmlout, $a);
 }
 
+// *************************************************
+// i18nHTML configuration API functions 
+// *************************************************
 
 // change the marker text shown to indicate text
 // is translatable (link to translate page text)
@@ -151,46 +152,18 @@
     $i18nHTMLmarker = $marker;
 }
 
+// ***************************************************
+// i18nHTML _internal_ API functions (don't look here)
+// ***************************************************
 
-// editor = ?         ;      // set by URL parameter, indicates in translation 
mode
-$i18nHTMLhasTranslation = 0; // set by last call to isTranslated() or 
translation_query()
-$i18nHTMLallowedits = 1;
-
-// indicate translate link should only be shown for untranslated items.
-function editOnlyUntranslatedText() {
-  global $i18nHTMLallowedits;
-  $i18nHTMLallowedits = 0;
-}
-
-// indicate translate link should always be shown (or set to indicated value).
-function editAllTranslations($v=null) {
-  global $i18nHTMLallowedits;
-  if ($v == "")
-    $i18nHTMLallowedits = 1;
-  else
-    $i18nHTMLallowedits = $v;
-}
-
-
-// displays a link to the page to enable one to
-// translate the given text ($a)
-// see translateLink_
-function translateLink($a, $hasTranslation=null) {
-  echo translateLink_($a, $hasTranslation);
-}
-
-// returns a HTML string to link to enable one to
-// translate the given text ($a) when
-// $editor has a nonzero value and either
-// $hasTranslation is 0 or $allowedits is nonzero;
-// otherwise and empty string ("") is returned.
-// $hasTranslation may be omitted to use result of
-// last isTranslated() or translation_query() call;
-function translateLink_($a, $hasTranslation=null) {
+// returns a HTML string to link to enable one to translate the given
+// text ($a) when $editor has a nonzero value or
+// $i18nHTMLhasTranslation is 0; otherwise and empty string ("") is
+// returned.
+function translateLink_($a) {
   global $lang;
   global $HTTP_SERVER_VARS;
   global $editor;
-  global $i18nHTMLallowedits;
   global $i18nHTMLhasTranslation;
   global $i18nHTMLmarker;
   global $i18nHTMLbase;
@@ -201,112 +174,21 @@
     $back = "http://"; . $HTTP_SERVER_VARS["HTTP_HOST"] . 
$HTTP_SERVER_VARS["REQUEST_URI"];
     return "<a href=\"" . $i18nHTMLbase . "translate.php?xlang=" 
       . $lang 
-      . "&amp;text=" . urlencode($a)
+      . "&amp;text=" . urlencode(fix($a))
       . "&amp;back=" . urlencode($back) 
       . "\">" . $i18nHTMLmarker . "</a>\n";
   } else
     return "";   
 }
 
-// return 1 if translation is available (or DB down)
-// assumes passed the original text as appears in source
-function isTranslated($a, $charset=null) {
-  global $connection;
-  global $lang;
-  global $editor;
-  global $i18nHTMLhasTranslation;
-
-  $i18nHTMLhasTranslation = 1; // assume translation until failure
-
-  if ( ("English" == $lang) || (!$connection) ) {
-    // Either hard-wired source language (so available) or
-    // database not available.
-    return 1;
-  }
-
-  //  $a = htmlentities($a, ENT_QUOTES, $charset);
-  $u = urlencode($a);
-
-  $query = "SELECT translation FROM map WHERE name=\"$u\" AND lang=\"$lang\" 
ORDER BY ranking DESC";
-  $result = mysql_query($query, $connection);
-  if (!$result) {
-    if ($i18nHTMLdebug != 0)
-      echo 'Unable to execute query $query: ' . mysql_error();
-  }
-
-  $num = 0;
-  if ($result)
-    $num = mysql_numrows($result);
-  if ($num > 0)
-    return 1;
-  else {
-    $i18nHTMLhasTranslation = 0; // no translation was found
-    return 0;   
-  }
+// displays a link to the page to enable one to
+// translate the given text ($a)
+// see translateLink_
+function translateLink($a) {
+  echo translateLink_($a);
 }
 
-
 /**
- * restore UTF-8 from HTML Unicode entities
- *
- * This function is triggered by the YACS handler during page
- * rendering.  It is aiming to transcode HTML Unicode entities
- * (eg, &amp;#8364;) back to actual UTF-8 encoding (eg, �).
- *
- * @param string a string with a mix of UTF-8 and of HTML Unicode entities
- * @return an UTF-8 string
- */
-function from_unicode($text) {
-  // translate extended ISO8859-1 chars, if any
-  $text = utf8_encode($text);
-  
-  // translate Unicode entities
-  $areas = preg_split('/&#(\d+?);/', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
-  $text = '';
-  $index = 0;
-  foreach($areas as $area) {
-    switch($index%2) {
-    case 0: // before entity
-      $text .= $area;
-      break;
-    case 1: // the entity itself
-      
-      // get the integer value
-      $unicode = intval($area);
-      
-      // one byte
-      if($unicode < 0x80) {
-       
-       $text .= chr($unicode);
-       
-       // two bytes
-      } elseif($unicode < 0x800) {
-       
-       $text .= chr( 0xC0 +  ( ( $unicode - ( $unicode % 0x40 ) ) / 0x40 ) );
-       $text .= chr( 0x80 + ( $unicode % 0x40 ) );
-       
-       // three bytes
-      } elseif($unicode < 0x10000) {
-       
-       $text .= chr( 0xE0 + ( ( $unicode - ( $unicode % 0x1000 ) ) / 0x1000 ) 
);
-       $text .= chr( 0x80 + ( ( ( $unicode % 0x1000 ) - ( $unicode % 0x40 ) ) 
/ 0x40 ) );
-       $text .= chr( 0x80 + ( $unicode % 0x40 ) );
-       
-       // more bytes, keep it as it is...
-      } else
-         $text .= '&#'.$unicode.';';
-      
-      break;
-    }
-    $index++;
-  }
-  
-  // the updated string
-  return $text;
-}
-
-
-/**
  * transcode unicode entities to/from HTML entities
  *
  * Also, this function transforms HTML entities into their equivalent Unicode 
entities.
@@ -319,8 +201,7 @@
  * @param boolean TRUE to transcode to Unicode, FALSE to transcode to HTML
  * @return a transcoded string
  */
-function transcode($input, $to_unicode=TRUE) {
-  
+function transcode($input, $to_unicode=TRUE) { 
   // initialize tables only once
   static $html_entities, $unicode_entities;
   if(!is_array($html_entities)) {
@@ -583,8 +464,7 @@
       $unicode_entities[] = $unicode_entity;
       $html_entities[] = $html_entity;
     }
-  }
-  
+  }  
   // transcode HTML entities to Unicode
   if($to_unicode)
     return str_replace($html_entities, $unicode_entities, $input);
@@ -594,9 +474,6 @@
     return str_replace($unicode_entities, $html_entities, $input);
 }
 
-
-
-
 /**
  * transcode multi-byte characters to HTML representations for Unicode
  *
@@ -618,119 +495,79 @@
  * @param string the original UTF-8 string
  * @return a string acceptable in an ISO-8859-1 storage system (ie., PHP4 + 
MySQl 3)
  */
-function to_unicode($input) {
-  
+function to_unicode($input) { 
   // transcode HTML entities to Unicode entities
-  $input = transcode($input);
-  
+  $input = transcode($input);  
   // scan the whole string
   $output = '';
   $index = 0;
-  while($index < strlen($input)) {
-    
+  while($index < strlen($input)) {  
     // look at one char
-    $char = ord($input[$index]);
-    
+    $char = ord($input[$index]);    
     // one byte (0xxxxxxx)
-    if($char < 0x80) {
-      
+    if ($char < 0x80) {      
       // some chars may be undefined
       $output .= chr($char);
-      $index += 1;
-      
+      $index += 1;      
       // two bytes (110xxxxx 10xxxxxx)
-    } elseif($char < 0xE0) {
-      
+    } else if ($char < 0xE0) {      
       // strip weird sequences (eg, C0 80 -> NUL)
       if($value = (($char % 0x20) * 0x40) + (ord($input[$index + 1]) % 0x40))
        $output .= '&#' . $value . ';';
-      $index += 2;
-      
+      $index += 2;      
       // three bytes (1110xxxx 10xxxxxx 10xxxxxx) example: euro sign = 
\xE2\x82\xAC -> &#8364;
-    } elseif($char < 0xF0) {
-      
+    } else if ($char < 0xF0) {      
       // strip weird sequences
       if($value = (($char % 0x10) * 0x1000) + ((ord($input[$index + 1]) % 
0x40) * 0x40) + (ord($input[$index + 2]) % 0x40))
        $output .= '&#' . $value . ';';
-      $index += 3;
-      
+      $index += 3;      
       // four bytes (11110xxx 10xxxxxx 10xxxxxx 10xxxxxx)
-    } elseif($char < 0xF8) {
-      
+    } else if($char < 0xF8) {      
       // strip weird sequences
-      if($value = (($char % 0x08) * 0x40000) + ((ord($input[$index + 1]) % 
0x40) * 0x1000) + ((ord($input[$index + 2]) % 0x40) * 0x40)
+      if ($value = (($char % 0x08) * 0x40000) + ((ord($input[$index + 1]) % 
0x40) * 0x1000) + ((ord($input[$index + 2]) % 0x40) * 0x40)
         + (ord($input[$index + 3]) % 0x40))
        $output .= '&#' . $value . ';';
-      $index += 4;
-      
+      $index += 4;      
       // five bytes (111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx)
-    } elseif($char < 0xFC) {
-      
+    } else if($char < 0xFC) {      
       // strip weird sequences
-      if($value = (($char % 0x04) * 0x1000000) + ((ord($input[$index + 1]) % 
0x40) * 0x40000) + ((ord($input[$index + 2]) % 0x40) * 0x1000)
+      if ($value = (($char % 0x04) * 0x1000000) + ((ord($input[$index + 1]) % 
0x40) * 0x40000) + ((ord($input[$index + 2]) % 0x40) * 0x1000)
         + ((ord($input[$index + 3]) % 0x40) * 0x40) + (ord($input[$index + 4]) 
% 0x40))
        $output .= '&#' . $value . ';';
-      $index += 5;
-      
+      $index += 5;      
       // six bytes (1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx)
-    } else {
-      
+    } else {      
       // strip weird sequences
-      if($value = (($char % 0x02) * 0x40000000) + ((ord($input[$index + 1]) % 
0x40) * 0x1000000) + ((ord($input[$index + 2]) % 0x40) * 0x40000)
+      if ($value = (($char % 0x02) * 0x40000000) + ((ord($input[$index + 1]) % 
0x40) * 0x1000000) + ((ord($input[$index + 2]) % 0x40) * 0x40000)
         + ((ord($input[$index + 3]) % 0x40) * 0x1000) + ((ord($input[$index + 
4]) % 0x40) * 0x40) + (ord($input[$index + 4]) % 0x40))
        $output .= '&#' . $value . ';';
       $index += 6;
-    }
-    
-  }
- 
+    }    
+  } 
   // return the translated string
   return $output;
 }
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// returns either the translated string
-// or the original string.  Assumes we
-// are passed the original string as occurs
-// in text; result will be html tokenized by
-// htmlentities() using default charset or
-// one indicated by $charset, to ensure all
-// required entities are converted for valid html output.
-// Note: it is assumed value in DB have already
-// ran through equivalent of htmlentities().
-// $i18nHTMLhasTranslation is set to nonzero value
-// if a translation is available or failure connecting
-// to database, otherwise it is set to 0.
-function translation_query($a, $charset=null) {
+// returns either the translated string or the original string.
+// Assumes we are passed the original string as occurs in text; result
+// will be html tokenized by htmlentities() using UTF8.
+// $i18nHTMLhasTranslation is set to nonzero value if a translation is
+// available or failure connecting to database, otherwise it is set to
+// 0.
+function translation_query($a) {
   global $connection;
   global $lang;
   global $i18nHTMLrecordMode;
   global $i18nHTMLhasTranslation;
   
   $i18nHTMLhasTranslation = 1; // assume translation until failure
-
   if ($a == "")
     return $a;
-
-  $u = mysql_real_escape_string(urlencode($a));
-  
+  $a = fix($a);
+  $a_sql = mysql_real_escape_string($a);
   if (!$connection) {
     // database not available, just print English
-    return fix($a);
+    return $a;
   }
   if ("English" == $lang) {
     // no need to translate english, that's the
@@ -738,20 +575,20 @@
     if ($i18nHTMLrecordMode == 2) {
       // if not already in pending table (and recordMode set to allow us)
       // then insert this string into it
-      $query = "SELECT count FROM pending WHERE c=\"$u\" AND lang=\"$lang\"";
+      $query = "SELECT count FROM pending WHERE c=\"$a_sql\" AND 
lang=\"$lang\"";
       $result = mysql_query($query, $connection);
       $num = 0;
       if ($result)
         $num = mysql_num_rows($result);
       if (0 == $num) {
-        $query = "INSERT INTO pending VALUES(\"$u\", \"$lang\", 0)";
+        $query = "INSERT INTO pending VALUES(\"$a_sql\", \"$lang\", 0)";
         mysql_query($query, $connection);
       }
     }
-    return fix($a);
+    return $a;
   }
   // attempt to get translations, ranked for best
-  $query = "SELECT translation FROM map WHERE name=\"$u\" AND lang=\"$lang\" 
ORDER BY ranking DESC";
+  $query = "SELECT translation FROM map WHERE name=\"$a_sql\" AND 
lang=\"$lang\" ORDER BY ranking DESC";
   $result = mysql_query($query, $connection);
   $num = 0;
   if ($result)
@@ -761,7 +598,7 @@
       // either insert untranslated item into pending table or update
       // referenced count; count is used to display more used strings
       // during mass translation before less common ones.
-      $query = "SELECT count FROM pending WHERE c=\"$u\" AND lang=\"$lang\"";
+      $query = "SELECT count FROM pending WHERE c=\"$a_sql\" AND 
lang=\"$lang\"";
       $result = mysql_query($query, $connection);
       $num = 0;
       if ($result)
@@ -770,20 +607,24 @@
       if ($num > 0) {
         $row = mysql_fetch_array($result);
         $count = $row["count"] + 1;
-        $query = "UPDATE pending SET count=$count WHERE c=\"$u\" AND 
lang=\"$lang\"";
+        $query = "UPDATE pending SET count=$count WHERE c=\"$a_sql\" AND 
lang=\"$lang\"";
       } else {
-        $query = "INSERT INTO pending VALUES(\"$u\", \"$lang\", 1)";
+        $query = "INSERT INTO pending VALUES(\"$a_sql\", \"$lang\", 1)";
       }
       mysql_query($query, $connection);       
     }
     $i18nHTMLhasTranslation = 0; // no translation was found
-    return fix($a);              // just return English string
+    return $a;              // just return English string
   } else { // translation available
     $row = mysql_fetch_array($result);
     return $row["translation"];
   }
 }
 
+// *************************************************
+// Fundamental i18nHTML API functions 
+// *************************************************
+
 // translate the sentence $a and return the result.
 function TRANSLATE_($a,$args=null) {
   if ($a == "")
@@ -791,6 +632,12 @@
   return vsprintf(translation_query($a), $args);
 }
 
+// translate the sentence $a and output just
+// the translated text (without link to translate.php)
+function TRANSLATE($a,$args=null) {
+  echo TRANSLATE_($a);
+}
+
 // translate the sentence $a adding a link
 // to enable editing translations and return the result.
 function W_($a,$args=null) {
@@ -799,81 +646,16 @@
   return TRANSLATE_($a,$args) . translateLink_($a);
 }
 
-// translate the sentence $a and output just
-// the translated text
-function TRANSLATE($a,$args=null) {
-  echo TRANSLATE_($a);
-}
-
 // translate the sentence $a appending a link
 // to enable edit the translation and output the
-// result. Returns 1 if a translation is needed.
+// result.
 function W($a, $args=NULL) {
-  global $i18nHTMLhasTranslation;
-
-  if ($a == "")
-    return 0;
-  echo W_($a, $args) . "\n";
-  return $i18nHTMLhasTranslation;
+  if ($a != "")
+    echo W_($a, $args) . "\n";
 }
 
-function LI($a,$b="") {
-  echo "<li>" . W_($a,$b) . "</li>\n";
-}
-
-function TITLE($a,$b="") {
-  global $lang;
-  global $languagecodes;
-  echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" 
>";
-  echo "<title>" . TRANSLATE_($a,$b) . "</title>\n";
-  if (isset($languagecodes[$lang])) {
-    echo "<meta name=\"content-language\" content=\"" . 
-         $languagecodes[$lang] . "\">";
-    echo "<meta name=\"language\" content=\"" . 
-         $languagecodes[$lang] . "\">";
-  }
-}
-
-
-function DT($a,$b="") {
-  echo "<dt>" . W_($a,$b) . "</dt>\n";
-}
-function DD($a,$b="") {
-  echo "<dd>" . W_($a,$b) . "</dd>\n";
-}
-function H1($a,$b="") {
-  echo "<h1>" . W_($a,$b) . "</h1>\n";
-}
-function H2($a,$b="") {
-  echo "<h2>" . W_($a,$b) . "</h2>\n";
-}
-function H3($a,$b="") {
-  echo "<h3>" . W_($a,$b) . "</h3>\n";
-}
-function H4($a,$b="") {
-  echo "<h4>" . W_($a,$b) . "</h4>\n";
-}
-function H5($a,$b="") {
-  echo "<h5>" . W_($a,$b) . "</h5>\n";
-}
-// 'verbatim' (untranslated) "pre"
-function PRE($a) {
-  echo "<pre>" . $a . "</pre>";
-}
-// 'verbatim' (untranslated) "li"
-function LIV($a) {
-  echo "<li>" . $a . "</li>\n";
-}
-
-
 // create internationalized, internal link to
 // $a.php with description $b 
-function intlink($a, $b) {  
-  echo intlink_($a, $b);
-}
-
-// create internationalized, internal link to
-// $a.php with description $b 
 function intlink_($a, $b) {  
   global $lang;
   
@@ -882,10 +664,10 @@
   return $ret;
 }
 
-// create internationalized, external link to
-// $a with description $b 
-function extlink($a, $b) {  
-  echo extlink_($a, $b);
+// create internationalized, internal link to
+// $a.php with description $b 
+function intlink($a, $b) {  
+  echo intlink_($a, $b);
 }
 
 // create internationalized, external link to
@@ -895,46 +677,17 @@
   return $ret;
 }
 
-function P($attr="") {
-  echo "<p $attr>\n";
+// create internationalized, external link to
+// $a with description $b 
+function extlink($a, $b) {  
+  echo extlink_($a, $b);
 }
 
-function BR() {
-  echo "<br />\n";
-}
 
-function HR() {
-  echo "<hr>\n";
-}
-function DTDD($a,$b) {
-  DT($a);
-  DD($b);
-}
-function LILI($a,$b) {
-  echo "<li>" . extlink_($a,$b) . "</li>\n";
-}
-function IMG($src, $alt, $align="CENTER", $width, $height, $border=0, 
$hspace=0, $vspace=0) {
-  echo IMG_($src, $alt, $align, $width, $height, $border, $hspace, $vspace);
-}
+// *************************************************
+// global, call-once helper functions
+// *************************************************
 
-function IMG_($src, $alt, $align="CENTER", $width, $height, $border=0, 
$hspace=0, $vspace=0) {
-  $ret = "";
-  
-  if ($align == "CENTER") 
-    $ret = $ret . "<p><center>\n";
-  $ret = $ret . "<img src=\"" . $src . "\" alt=\"";
-  $ret = $ret . TRANSLATE_($alt);
-  $ret = $ret . "\" align=\"" . $align . "\" width=$width height=$height 
border=$border hspace=$hspace vspace=$vspace>\n";
-  $ret = $ret . translateLink_($alt);
-  if ($align == "CENTER") 
-    $ret = $ret . "</center><p>\n";
-  return $ret;
-}
-
-function ANCHOR($a) {
-  echo "<a name=\"$a\"></a>\n";
-}
-
 // outputs appropriate DOCTYPE declaration for the document
 // this should be the 1st line in your php file after including
 // i18nhtml.inc.  Valid types are: HTML for HTML 4 documents,
@@ -944,62 +697,68 @@
 // "Strict", or "Frameset", defaulting to "Transitional".
 // Note for XHTML1.1 $mode is ignored.
 // example:  
-//           -?php 
-//           include("../src/i18nhtml.inc");
+//           include("i18nhtml.inc");
 //           DOCTYPE("XHTML1");
-//           echo "<head><title>Blah</title><body>Blah...</body></html>";
-//           ?-
 function DOCTYPE($type=null, $mode=null) {
   // depending on $mode, use appropriate dtd
   if ($mode == "Strict") {
     $dtd = "strict";
     if ($type != "XHTML1") // Strict not specified except for XHTML1.0
       $mode = "";
-  }
-  elseif ($mode == "Frameset") {
+  } else if ($mode == "Frameset") {
     $dtd = "frameset";
-  }
-  else { // $mode == Transitional, default, or unknown
+  } else { // $mode == Transitional, default, or unknown
     $dtd = "loose";
     $mode = "Transitional";
   }
-
   if ($type == "XHTML1")
     echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 " . $mode . "//EN\" 
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-"; . $dtd . ".dtd\">\n";
-  elseif ($type == "XHTML1.1")
+  else if ($type == "XHTML1.1")
     echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" 
\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\";>\n";
   else
     echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " . $mode . "//EN\" 
\"http://www.w3.org/TR/html4/"; . $dtd . ".dtd\">\n";
 }
 
+function TITLE($a,$b="") {
+  global $lang;
+  global $languagecodes;
+  echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" 
>";
+  echo "<title>" . TRANSLATE_($a,$b) . "</title>\n";
+  if (isset($languagecodes[$lang])) {
+    echo "<meta name=\"content-language\" content=\"" . 
+         $languagecodes[$lang] . "\">";
+    echo "<meta name=\"language\" content=\"" . 
+         $languagecodes[$lang] . "\">";
+  }
+}
 
 // displays a list of all languages currently available with
 // at least 1 translated string.
 function generateLanguageBar() {
   global $connection;
 
-if ($connection) {
-  echo "<center>[";
-  $query = "SELECT DISTINCT lang FROM map ORDER BY lang";
-  $result = mysql_query($query, $connection);
-  $num = 0;
-  if ($result)   
-    $num = mysql_numrows($result);
-  echo "<a href=\"?xlang=English\">";
-  W("English");
-  echo "</a>";
-  $last = "English";
-  for ($i=0;$i<$num;$i++) {
-    $row = mysql_fetch_array($result);
-    $next = $row["lang"];
-    if ($next == $last)
-      continue;
-    echo " | ";
-    echo "<a href=\"?xlang=$next\">" . W_($next) . "</a>";
-    $last = $next;
+  if ($connection) {
+    echo "<center>[";
+    $query = "SELECT DISTINCT lang FROM map ORDER BY lang";
+    $result = mysql_query($query, $connection);
+    $num = 0;
+    if ($result)   
+      $num = mysql_numrows($result);
+    echo "<a href=\"?xlang=English\">";
+    W("English");
+    echo "</a>";
+    $last = "English";
+    for ($i=0;$i<$num;$i++) {
+      $row = mysql_fetch_array($result);
+      $next = $row["lang"];
+      if ($next == $last)
+        continue;
+      echo " | ";
+      echo "<a href=\"?xlang=$next\">" . W_($next) . "</a>";
+      $last = $next;
+    }
+    echo "]</center>";
   }
-  echo "]</center>";
- }
 }
 
 
@@ -1009,24 +768,97 @@
 function generateFooter() {
   global $xlang;
   global $editor;
-  global $back;
   global $HTTP_SERVER_VARS;
 
   P();
   echo "Translation engine based on <a 
href=\"http://gnunet.org/i18nHTML/\";>i18nHTML</a> (C) 2003, 2004, 2005 
Christian Grothoff.<br />\n";
   if ( ($xlang) && ($xlang != "English") ) {
     $back = "http://"; . $HTTP_SERVER_VARS["HTTP_HOST"] . 
$HTTP_SERVER_VARS["REQUEST_URI"];
-    // echo "<span align=\"center\"><small>";
     echo "<center><small>\n";
     if ($editor != 1)
       echo " <a href=\"$back&amp;editor=1\">" . W_("enter translation mode") . 
"</a>";
     else
       W(" Translation Mode Active (for this page only)");
-    //echo "</small></span>";
     echo "</small></center>\n";
   }
   echo "</p>\n";
 }
 
-   
-?>
+// *************************************************
+// HTML construct helper functions
+// *************************************************
+
+function LI($a,$b="") {
+  echo "<li>" . W_($a,$b) . "</li>\n";
+}
+function TH($a,$b="") {
+  echo "<th>" . W_($a,$b) . "</th>\n";
+}
+function TD($a,$b="") {
+  echo "<td>" . W_($a,$b) . "</td>\n";
+}
+function DT($a,$b="") {
+  echo "<dt>" . W_($a,$b) . "</dt>\n";
+}
+function DD($a,$b="") {
+  echo "<dd>" . W_($a,$b) . "</dd>\n";
+}
+function H1($a,$b="") {
+  echo "<h1>" . W_($a,$b) . "</h1>\n";
+}
+function H2($a,$b="") {
+  echo "<h2>" . W_($a,$b) . "</h2>\n";
+}
+function H3($a,$b="") {
+  echo "<h3>" . W_($a,$b) . "</h3>\n";
+}
+function H4($a,$b="") {
+  echo "<h4>" . W_($a,$b) . "</h4>\n";
+}
+function H5($a,$b="") {
+  echo "<h5>" . W_($a,$b) . "</h5>\n";
+}
+function PRE($a) {
+  echo "<pre>" . $a . "</pre>";
+}
+// 'verbatim' (untranslated) "li"
+function LIV($a) {
+  echo "<li>" . $a . "</li>\n";
+}
+function P($attr="") {
+  echo "<p $attr>\n";
+}
+function BR() {
+  echo "<br />\n";
+}
+function HR() {
+  echo "<hr>\n";
+}
+function DTDD($a,$b) {
+  DT($a);
+  DD($b);
+}
+function LILI($a,$b) {
+  echo "<li>" . extlink_($a,$b) . "</li>\n";
+}
+function ANCHOR($a) {
+  echo "<a name=\"$a\"></a>\n";
+}
+function IMG_($src, $alt, $align="CENTER", $width, $height, $border=0, 
$hspace=0, $vspace=0) {
+  $ret = "";
+  
+  if ($align == "CENTER") 
+    $ret = $ret . "<p><center>\n";
+  $ret = $ret . "<img src=\"" . $src . "\" alt=\"";
+  $ret = $ret . TRANSLATE_($alt);
+  $ret = $ret . "\" align=\"" . $align . "\" width=$width height=$height 
border=$border hspace=$hspace vspace=$vspace>\n";
+  $ret = $ret . translateLink_($alt);
+  if ($align == "CENTER") 
+    $ret = $ret . "</center><p>\n";
+  return $ret;
+}
+function IMG($src, $alt, $align="CENTER", $width, $height, $border=0, 
$hspace=0, $vspace=0) {
+  echo IMG_($src, $alt, $align, $width, $height, $border, $hspace, $vspace);
+}
+
+?>
\ No newline at end of file

Modified: doodle-docs/WWW/translate.php
===================================================================
--- doodle-docs/WWW/translate.php       2005-04-10 17:54:37 UTC (rev 634)
+++ doodle-docs/WWW/translate.php       2005-04-11 06:02:26 UTC (rev 635)
@@ -1,6 +1,6 @@
 <?php
 /*
-     (C) 2003, 2004 Christian Grothoff
+     (C) 2003, 2004, 2005 Christian Grothoff
 
      This code is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -22,9 +22,10 @@
   echo "Database is down. Cannot edit translations.";
   die();
 }
-$text = $_REQUEST['text'];
+$text     = fix($_REQUEST['text']);
+$text_sql = mysql_real_escape_string($text);
+$text_url = urlencode($text);
 $back = $_REQUEST['back'];
-
 DOCTYPE("HTML", "Transitional");
 echo "<html><head>\n";
 TITLE("WWW translation");
@@ -37,66 +38,43 @@
   die();
  } 
 H2("Original Text");
-// if (get_magic_quotes_gpc()) $text = stripslashes($text);
 echo $text;
 H2("Translation");
 W("Destination language: ");
 W($lang);
 P();
 echo "<form method=\"POST\" action=\"" . $i18nHTMLbase . 
"commitTranslation.php\">\n";
-echo "<input type=hidden name=\"text\" value=\"" . urlencode($text) . "\">\n";
+echo "<input type=hidden name=\"text\" value=\"$text_url\">\n";
 echo "<input type=hidden name=\"xlang\" value=\"$xlang\">\n";
 echo "<input type=hidden name=\"back\" value=\"$back\">\n";
-/* 
-P();
-W("Character set:");
-<select size="1" name="charset">
-  <option value="UTF-8">Unicode UTF-8 encoding</option>
-  <option selected value="ISO-8859-1">ISO-8859-1 Western European, 
Latin-1</option>
-  <option value="ISO-8859-15">ISO-8859-15 Extended Western European</option>
-  <option value="cp1252">cp1252 Windows Western Europen</option>
-  <option value="cp866">cp866 DOS Cyrillic</option>
-  <option value="cp1251">cp1251 Windows Cyrillic</option>
-  <option value="KOI8-R">koi8-ru Russian</option>
-  <option value="BIG5">BIG5 Traditional Chinese</option>
-  <option value="GB2312">GB2312 Simplified Chinese</option>
-  <option value="Shift-JIS">Shift-JIS Japanese</option>
-  <option value="EUC-JP">EUC-JP Japanese</option>
-</select><br> */
 W("Translated text:");
-?>
-<input size="80" maxlength="65535" name="translation">
-<input type=submit value="I hereby give this translation into the Public 
Domain (commit)">
-</form>
-<?php
+echo "<input size=\"80\" maxlength=\"65535\" name=\"translation\">\n";
+echo "<input type=submit value=\"" . 
+     TRANSLATE_("I hereby give this translation into the Public Domain 
(commit)") . 
+     "\">\n";
+echo "</form>\n";
 P();
 
 H2("All available translations");
-?>
-<table border=5 width=95%>
-<tr><th><?php W("Language"); ?></th><th><?php W("Translation"); ?></th></tr>
-<?php
- $u = urlencode($text);
- $query = "SELECT translation,lang FROM map WHERE name=\"$u\" ORDER BY ranking 
DESC";
- $result = mysql_query($query, $connection);
- $num = 0;
- if ($result) 
-   $num = mysql_num_rows($result);
- for ($i=0;$i<$num;$i++) {
-   $row = mysql_fetch_array($result);
-
-   // we assume strings escaped before adding to DB
-   $translation = stripslashes($row["translation"]);
-
-   printf("<tr><td>%s</td><td><a href=\"" . $i18nHTMLbase . 
"vote.php?xlang=%s&text=%s&translation=%s\">%s</a></td></tr>\n",
-          W_($row["lang"]),
-          urlencode($row["lang"]),
-         $u,
-         urlencode(from_unicode($translation)),
-         fix(from_unicode($translation)));
- }
+echo "<table border=5 width=95%>\n";
+echo "<tr><th>" . W_("Language") . "</th><th>" . W_("Translation") . 
"</th></tr>\n";
+$query = "SELECT translation,lang FROM map WHERE name=\"$text_sql\" ORDER BY 
ranking DESC";
+$result = mysql_query($query, $connection);
+$num = 0;
+if ($result) 
+  $num = mysql_num_rows($result);
+for ($i=0;$i<$num;$i++) {
+  $row = mysql_fetch_array($result);
+  $translation = $row["translation"];
+  printf("<tr><td>%s</td><td><a href=\"" . $i18nHTMLbase . 
+         "vote.php?xlang=%s&text=%s&translation=%s\">%s</a></td></tr>\n",
+         W_($row["lang"]),
+         urlencode($row["lang"]),
+         urlencode($text_url),  // yes, we need urlencode twice!
+         urlencode(urlencode($translation)), // yes, we need urlencode twice!
+         fix($translation));
+}
 echo "</table>";
-
 H2("Remarks");
 H3("The percent sign");
 W("The %% sign is a special character.");
@@ -104,19 +82,15 @@
 W("The sequence %%s is used as a placeholder for links.");
 W("Currently, the translation can only access the links in the same order as 
the original text.");
 P();
-
 H3("Language specific special characters");
 W("Various languages use special characters.");
 W("The code has not been tested with certain character sets, such as 
Chinese.");
 W("If you are trying to translate the page to such a language, please contact 
the developerws if you encounter any problems.");
 P();
-
 H3("Copyright");
 W("The original english text is released under the GNU Free Documentation 
License (FDL).");
 W("Translations submitted to the webpage must be released to the public domain 
to ensure that we will not have any legal trouble.");
 W("If you have concerns or remarks regarding this policy, feel free to bring 
them to our attention.");
-
 generateFooter();
 echo "</body></html>";
-
 ?>

Modified: doodle-docs/WWW/vote.php
===================================================================
--- doodle-docs/WWW/vote.php    2005-04-10 17:54:37 UTC (rev 634)
+++ doodle-docs/WWW/vote.php    2005-04-11 06:02:26 UTC (rev 635)
@@ -17,26 +17,25 @@
      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      Boston, MA 02111-1307, USA.
 */
-  // This file records votes from users for translations.
-  // For sentences with multiple translations, the one with the most
-  // votes is displayed.
+// This file records votes from users for translations.
+// For sentences with multiple translations, the one with the most
+// votes is displayed.
 include("i18nhtml.inc");
+DOCTYPE("HTML", "Transitional");
 echo "<html><head>";
-echo "<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" >";
 TITLE("WWW translation: vote");
 echo "</head><body>";
 if (!$connection) {
   echo "Database is down. Cannot edit translations.";
   die();
  } 
-$text = $_REQUEST['text'];
-$translation = $_REQUEST['translation'];
-$u = mysql_real_escape_string($text);
-$t = mysql_real_escape_string(to_unicode($translation));
-echo "text = " . $text . "<br>\n";
-echo "translation = " . $translation . "<br>\n";
+$text            = fix(urldecode($_REQUEST['text']));
+$translation     = fix(urldecode($_REQUEST['translation']));
+$text_sql        = mysql_real_escape_string($text);
+$translation_sql = mysql_real_escape_string(to_unicode($translation));
 
-$query = "SELECT ranking FROM map WHERE name=\"$u\" AND lang=\"$lang\" AND 
translation=\"$t\"";
+$query = "SELECT ranking FROM map WHERE " .
+         "name=\"$text_sql\" AND lang=\"$lang\" AND 
translation=\"$translation_sql\"";
 $result = mysql_query($query, $connection);
 $num = 0;
 if ($result) 
@@ -44,11 +43,13 @@
 if ($num > 0) {
   $row = mysql_fetch_array($result);
   $ranking = $row["ranking"] + 1;
-  $query = "UPDATE map SET ranking=\"$ranking\" WHERE name=\"$u\" AND 
lang=\"$lang\" AND translation=\"$t\"";
+  $query = "UPDATE map SET ranking=\"$ranking\" WHERE " .
+           "name=\"$text_sql\" AND lang=\"$lang\" AND 
translation=\"$translation_sql\"";
   mysql_query($query, $connection);
   W("Ranking of translation is now: ");
   echo "$ranking";
- } else {
-  W("Translation does not exist (bug?).");
- }
+} else {
+  W("Translation '%s' of '%s' does not exist (bug?).",
+    ARRAY($translation, $text));
+}
 ?>





reply via email to

[Prev in Thread] Current Thread [Next in Thread]