changeset 64:6900beff8789

Improve multi-language support.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 24 Oct 2012 03:23:04 +0300
parents 6635246b70d9
children 2cfb0a7eac9b
files index.php
diffstat 1 files changed, 22 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/index.php	Wed Oct 24 02:54:10 2012 +0300
+++ b/index.php	Wed Oct 24 03:23:04 2012 +0300
@@ -2,14 +2,13 @@
 //
 // Yes, this is horrible. :|
 //
+$pageLang = "fi";
 $pageCharset = "utf-8";
 $internalCharset = "utf-8";
 $classDefault = "TTE9SNO";
 $classFile = "luokat.txt";
 $cacheFile = "coursecache.txt";
 $baseURI = "http://tnsp.org/luk/";
-//$infoURI = "http://www.oamk.fi/opiskelijalle/rakenne/opinto-opas/koulutusohjelmat/?sivu=oj&kieli=FI&opas=2010-2011&vuosi=10S11K&koodi1=";
-$infoURI = "http://www.oamk.fi/opiskelijalle/rakenne/opinto-opas/koulutusohjelmat/?sivu=oj&kieli=FI&koodi1=";
 
 $pageCSSData = array("cookie" => "lukcss", "prefix" => $baseURI."luk");
 $pageCSSAlts = array("blue" => "1", "old" => "2", "purple" => "3");
@@ -33,8 +32,8 @@
   ),
   
   "beta" => array(
-    "en" => " NOTICE! Lukkari v2.0beta is not yet finished. Features present in the previous version but currently missing (mini-mode) will return soon.",
-    "fi" => " HUOM! Lukkari v2.0beta on vielä keskeneräinen. Vanhassa versiossa olleet puuttuvat ominaisuudet (mini-moodi) palaavat piakkoin.",
+    "en" => " NOTICE! Lukkari v2.0beta is still under development. There may be bugs. Some old features (mini-mode) may not return.",
+    "fi" => " HUOM! Lukkari v2.0beta on vielä keskeneräinen. Bugeja voi olla. Jotkut vanhat ominaisuudet (mini-moodi) eivät välttämättä tule takaisin.",
   ),
 
   "viikossa" => array(
@@ -62,9 +61,6 @@
 {
   global $lukTranslations, $pageLang;
 
-  if (!isset($pageLang))
-    $pageLang = "fi";
-
   if (isset($lukTranslations[$msg]) && isset($lukTranslations[$msg][$pageLang]))
     $str = $lukTranslations[$msg][$pageLang];
   else
@@ -82,9 +78,6 @@
 {
   global $lukDayNames, $pageLang;
 
-  if (!isset($pageLang))
-    $pageLang = "fi";
-
   if (isset($lukDayNames[$pageLang]) && isset($lukDayNames[$pageLang][$day]))
     return $lukDayNames[$pageLang][$day];
   else
@@ -146,29 +139,35 @@
 
 function lukMatchCourse($id)
 {
-  global $cache, $infoURI, $cacheDirty, $internalCharset;
+  global $cache, $cacheDirty, $internalCharset, $pageLang;
+
+  $uri = "http://www.oamk.fi/opiskelijalle/rakenne/opinto-opas/koulutusohjelmat/?sivu=oj&kieli=".strtoupper($pageLang)."&koodi1=".$id;
+
+  // Create the index
+  if (!isset($cache[$id]))
+    $cache[$id] = array();
 
   // Check if course exists in cache
-  if (!isset($cache[$id]))
+  if (!isset($cache[$id][$pageLang]))
   {
     // Not cached, try to fetch data
     $cacheDirty = TRUE;
-    $data = @file_get_contents($infoURI.$id);
+    $data = @file_get_contents($uri);
     if ($data !== FALSE)
     {
       $data = iconv("iso-8859-1", $internalCharset, $data);
-      if (preg_match("#<td class=\"smallheadercell\"><strong>(.+?)\s+(\d+)\s*op\s*</strong></td>#", $data, $m))
+      if (preg_match("#<td class=\"smallheadercell\"><strong>(.+?)\s+(\d+)\s*(op|ECTS\s+cr)\s*</strong></td>#", $data, $m))
       {
         // Add data to cache
-        $cache[$id] = array("desc" => $m[1], "op" => intval($m[2]));
+        $cache[$id][$pageLang] = array("desc" => $m[1], "op" => intval($m[2]));
       }
     }
   }
   
-  if (isset($cache[$id]))
+  if (isset($cache[$id]) && isset($cache[$id][$pageLang]))
   {
-    return "<a target=\"_blank\" title=\"".lukChEntities($id." - ".$cache[$id]["op"]." op").
-    "\" href=\"".lukChEntities($infoURI.$id)."\">".lukChEntities($cache[$id]["desc"])."</a>";
+    return "<a target=\"_blank\" title=\"".lukChEntities($id." - ".$cache[$id][$pageLang]["op"]." op").
+    "\" href=\"".lukChEntities($uri)."\">".lukChEntities($cache[$id][$pageLang]["desc"])."</a>";
   }
   else
     return lukChEntities($id);
@@ -455,9 +454,9 @@
 
 echo "<div id=\"footer\">".
 lukMsg("contact").
-"<span style=\"color: red;\">".
+"<div style=\"color: red;\">".
 lukMsg("beta").
-"</span>
+"</div>
 </div>
 <div id=\"csssel\">
 <div id=\"ctitle\">Lukkari v2.0 beta</div>
@@ -478,14 +477,9 @@
 
 
 // Dump the course data cache, but only if it has changed
-if ($cacheDirty) {
-  // Create string containing the data
-  $str = "<?\n\$cache = array(\n";
-  foreach ($cache as $id => $data) {
-    $str .= "  \"".addslashes($id)."\" => array(\"desc\" => \"".
-            addslashes($data["desc"])."\", \"op\" => ".$data["op"]."),\n";
-  }
-  $str .= ");\n?>";
+if ($cacheDirty)
+{
+  $str = "<?\n\$cache = ".var_export($cache, TRUE)."\n?>";
   
   // Use locking to prevent concurrent access and dump data
   if (file_put_contents($cacheFile, $str, LOCK_EX) === FALSE) {