multilanguage portal skeleton
authorMagnus Manske <magnusmanske@users.mediawiki.org>
Fri, 7 Jan 2005 19:38:58 +0000 (19:38 +0000)
committerMagnus Manske <magnusmanske@users.mediawiki.org>
Fri, 7 Jan 2005 19:38:58 +0000 (19:38 +0000)
maintenance/portal.php [new file with mode: 0644]

diff --git a/maintenance/portal.php b/maintenance/portal.php
new file mode 100644 (file)
index 0000000..f99820a
--- /dev/null
@@ -0,0 +1,111 @@
+<?
+
+$textsourcefile_web = "http://meta.wikipedia.org/w/index.php?title=PortalText&action=raw" ;
+$textsourcefile = "t.txt" ;
+#$articlecountfile_web = "http://magnusmanske.de/wikipedia/num.txt" ;
+$articlecountfile_web = "num.txt" ;
+$articlecountfile = "n.txt" ;
+$perrow = 3 ;
+
+if ( isset ( $HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"] ) )
+       $userlang = $HTTP_SERVER_VARS["HTTP_ACCEPT_LANGUAGE"] ;
+else $userlang = "" ;
+
+# Update local files
+if ( isset ( $_GET["update"] ) )
+       {
+       copy ( $textsourcefile_web , $textsourcefile ) ;
+       copy ( $articlecountfile_web , $articlecountfile ) ;
+       }
+
+# Reads a file into a string
+function readafile ( $filename )
+       {
+       $handle = fopen($filename, "r");
+       $contents = '';
+       while (!feof($handle))
+               $contents .= fread($handle, 8192);
+       fclose($handle);
+       return $contents ;
+       }
+
+# Parsing statistics file
+function get_numbers ( $filename )
+       {
+       $r = array () ;
+       $nt = readafile ( $filename ) ;
+       $nt = explode ( "\n" , $nt ) ;
+       foreach ( $nt AS $x )
+               {
+               $y = explode ( ":" , $x ) ;
+               if ( count ( $y ) == 2 )
+                       $r[strtolower($y[0])] = $y[1] ;
+               }
+       return $r ;
+       }
+       
+# Make shades for pref. language(s)
+function getshades ( $l )
+       {
+       $r = array () ;
+       $l = explode ( "," , $l ) ;
+       foreach ( $l AS $x )
+               {
+               $y = explode ( ";" , $x ) ;
+               if ( count ( $y ) == 2 ) $weight = array_pop ( explode ( "=" , $y[1] ) ) ;
+               else $weight = "1.0" ;
+               
+               $lang = array_shift ( $y ) ;
+               $lang = explode ( "-" , $lang ) ;
+               $lang = trim ( strtolower ( array_shift ( $lang ) ) ) ;
+
+               $w = 5 * $weight ;
+               $w = chr ( 70 - $w ) ;
+               $w = $w . $w ;
+               $w = $w.$w.$w ;
+               if ( !isset ( $r[$lang] ) || $r[$lang] < $w )
+                       $r[$lang] = $w ;
+               }
+       return $r ;
+       }
+
+# Parsing text file and generating output
+$n = get_numbers ( $articlecountfile ) ;
+$shade = getshades ( $userlang ) ;
+$l = "<table align=center border=1 width='50%' cellpadding=2>" ;
+$count = 0 ;
+$t = readafile ( $textsourcefile ) ;
+$t = explode ( "\n" , $t ) ;
+foreach ( $t AS $x )
+       {
+       $y = explode ( ":" , $x , 2 ) ;
+       if ( count ( $y ) == 2 )
+               {
+               $language = trim ( strtolower ( $y[0] ) ) ; # language id
+               if ( isset ( $n[$language] ) ) # Only if there's a number to show
+                       {
+                       $ltext = $y[1] ; # Language text
+                       $noa = $n[$language] ; # Number of articles
+                       $ltext = str_replace ( "###" , "<b>{$noa}</b>" , $ltext ) ;
+                       if ( isset ( $shade[$language] ) ) $s = " bgcolor='#" . $shade[$language] . "'" ;
+                       else $s = "" ;
+                       $ltext = "<td{$s}>{$ltext}</td>\n" ;
+                       if ( $count == 0 ) $l .= "<tr>" ;
+                       $l .= $ltext ;
+                       if ( $count == $perrow-1 )
+                               {
+                               $l .= "</tr>" ;
+                               $count = 0 ;
+                               }
+                       else $count++ ;
+                       }
+               }
+       }
+if ( $count != 0 ) $l .= "</tr>" ;
+$l .= "</table>" ;
+       
+print "<html><head></head><body>" ;
+print $l ;
+print "</body></html>" ;
+
+?>
\ No newline at end of file