Extensions/miniville

From DotBWiki
Jump to: navigation, search

Implement a miniville XML status parser

  • Requires libexpat to be compiled into PHP

Usage: <miniville>[villename]</miniville>

Optionally add a 'style=""' parameter to the tag, so it can style the table.

<?php
$wgExtensionFunctions[] = "wfMiniville";

function wfMiniville() {
  global $wgParser;
  $wgParser->setHook( "miniville", "render_miniville_xml" );
}

function render_miniville_xml ( $ville_name , $argv, $parser ) {
  $style="";
  if(isset($argv["style"])) {
    $style="style=\"".$argv["style"]."\"";
  }
  $c = file_get_contents("http://$ville_name.miniville.fr/xml",FALSE,NULL,0,1024);
  if(strstr($c,"<html>")!=FALSE) {
    return("<p>$ville_name not found</p>\n");
  }
  $p = xml_parser_create();
  xml_parse_into_struct($p, $c, $vals, $index);
  xml_parser_free($p);
  $url="";
  $htmltxt = "<table $style class=\"diff\" cellpadding=2>\n";
  for ($i=0; $i < count($vals); $i+=1) {
    if($vals[$i]["level"]==2) {
      $t=strtolower($vals[$i]["tag"]);
      $x="";
      if($t == "host") {
        $url="http://".$vals[$i]["value"]."/";
        $x="<a href=\"".$url."\">".ucfirst($t)."</url>";
      }
      if($t == "population") {
        $x="<a href=\"".$url."\">".ucfirst($t)."</url>";
      }
      if($t == "unemployment") {
        $x="<a href=\"".$url."ind\">".ucfirst($t)."</url>";
      }
      if($t == "transport") {
        $x="<a href=\"".$url."tra\">".ucfirst($t)."</url>";
      }
      if($t == "criminality")  {
        $x="<a href=\"".$url."sec\">".ucfirst($t)."</url>";
      }
      if($t == "pollution")  {
        $x="<a href=\"".$url."env\">".ucfirst($t)."</url>";
      }
      if($t == "incomes")  {
        $x="<a href=\"".$url."com\">".ucfirst($t)."</url>";
      }
      if($t == "ranking")  {
        $x=ucfirst($t);
      }
      if(strlen($x)!=0) {
        $htmltxt .= "<tr><td>".$x."</td><td>".$vals[$i]["value"]."</td></tr>\n";
      } else {
        //      $htmltxt .= "<tr><td>".ucfirst(strtolower($vals[$i]["tag"]))."</td><td>".$vals[$i]["value"]."</td></tr>\n";
      }
    }
  }
  $htmltxt .= "</table>\n";
  return $htmltxt;
}
?>