<?php
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								This file can read data from an external csv source and output the same
							 | 
						|
								data in Google DataTable JSON format
							 | 
						|
								
							 | 
						|
								Note that it supposes that each data column contains numbers 
							 | 
						|
								
							 | 
						|
								*/
							 | 
						|
								
							 | 
						|
								header('Content-type: text/plain');
							 | 
						|
								
							 | 
						|
								// datasource url. This can be an external source
							 | 
						|
								//$datasourceUrl = "http://demo.almende.com/links/graph3d/js/examples/datasource_csv.php";
							 | 
						|
								$path = dirname("http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]) . '/';
							 | 
						|
								$dataSourceUrl = $path . "datasource_csv.php";
							 | 
						|
								
							 | 
						|
								$reqId = getReqId();
							 | 
						|
								$data = file_get_contents($dataSourceUrl);
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								$rows = split("\n", $data);
							 | 
						|
								
							 | 
						|
								// output the header part of the response
							 | 
						|
								echo "google.visualization.Query.setResponse({
							 | 
						|
								  version:'0.6',
							 | 
						|
								  reqId:'$reqId',
							 | 
						|
								  status:'ok',
							 | 
						|
								  table:{
							 | 
						|
								    cols:[
							 | 
						|
								";
							 | 
						|
								
							 | 
						|
								// output the column names
							 | 
						|
								$cols = split(",", $rows[0]);
							 | 
						|
								$colCount = count($cols);
							 | 
						|
								$colFirst = true;
							 | 
						|
								foreach($cols as $col) {
							 | 
						|
								  if ($colFirst == true) 
							 | 
						|
								    $colFirst = false;
							 | 
						|
								  else 
							 | 
						|
								    echo ",\n"; // end of previous label
							 | 
						|
								
							 | 
						|
								  $colStr = trim(str_replace('"', '', $col)); // TODO: bad way to remove enclosing quotes
							 | 
						|
								
							 | 
						|
								  echo "      {id:'$colStr', label:'$colStr', type:'number'}";
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								unset($rows[0]); // remove the first row with headers from the array
							 | 
						|
								
							 | 
						|
								// output the part between cols and rows
							 | 
						|
								echo "
							 | 
						|
								    ],
							 | 
						|
								    rows:[
							 | 
						|
								";
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								// output the data
							 | 
						|
								$firstRow = true;
							 | 
						|
								foreach ($rows as $row) {
							 | 
						|
								  $cols = split(",", $row);
							 | 
						|
								
							 | 
						|
								  if (count($cols) == $colCount) {
							 | 
						|
								    if ($firstRow == true) 
							 | 
						|
								      $firstRow = false;
							 | 
						|
								    else
							 | 
						|
								      echo ",\n"; // end of previous line
							 | 
						|
								
							 | 
						|
								    echo "      {c:[";  // start of the row
							 | 
						|
								
							 | 
						|
								    $firstCol = true;
							 | 
						|
								    foreach ($cols as $col) {
							 | 
						|
								      if ($firstCol == true)
							 | 
						|
								        $firstCol = false; 
							 | 
						|
								      else
							 | 
						|
								        echo ", ";  // end of previous value
							 | 
						|
								
							 | 
						|
								      echo "{v:" . $col . "}";
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    echo "]}";  // end of the row
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								// output the end part of the response
							 | 
						|
								echo "      
							 | 
						|
								    ]
							 | 
						|
								  }
							 | 
						|
								});
							 | 
						|
								";
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Retrieve the request id from the get/post data
							 | 
						|
								 * @return {number} $reqId       The request id, or 0 if not found
							 | 
						|
								 */ 
							 | 
						|
								function getReqId() {
							 | 
						|
								  $reqId = 0;
							 | 
						|
								
							 | 
						|
								  foreach ($_REQUEST as $req) {
							 | 
						|
								    if (substr($req, 0,6) == "reqId:") {
							 | 
						|
								      $reqId = substr($req, 6);
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  return $reqId;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								?>
							 |