From f60cfd79a4e47608cb1b8f6223a8fb15965b9649 Mon Sep 17 00:00:00 2001
From: Tim Ansell <mithro@mithis.com>
Date: Sun, 14 Jun 2009 02:20:05 +1000
Subject: [PATCH] The registery transcriber now works.

---
 www/docs/register/README              |    6 +++
 www/docs/register/images.php          |   21 +++++++++++
 www/docs/register/index.php           |   30 ++++++++++++++++
 www/docs/register/register-toForm.php |   25 ++++++++++++-
 www/docs/register/register-toXML.php  |    3 ++
 www/docs/register/register.php        |   61 +++++++++++++++++++++------------
 www/docs/register/top.php             |   25 +++++++++++++
 7 files changed, 147 insertions(+), 24 deletions(-)
 create mode 100644 www/docs/register/README
 create mode 100644 www/docs/register/images.php
 create mode 100644 www/docs/register/index.php
 create mode 100644 www/docs/register/top.php

diff --git a/www/docs/register/README b/www/docs/register/README
new file mode 100644
index 0000000..32fea5c
--- /dev/null
+++ b/www/docs/register/README
@@ -0,0 +1,6 @@
+You need a copy of interests.tar.gz put extracted to create the interests folder.
+http://www.mithis.com/~tim/interests.tar.gz
+
+All the registery.xml files must be writable by the www server. 
+
+No conflict detection or other fancy stuff, last person to click the save button wins.
diff --git a/www/docs/register/images.php b/www/docs/register/images.php
new file mode 100644
index 0000000..5fb3b1c
--- /dev/null
+++ b/www/docs/register/images.php
@@ -0,0 +1,21 @@
+<html>
+<body>
+<?php
+
+$d = opendir('interests/'.$_GET['who']);
+
+$images = array();
+while (($filename = readdir($d)) !== false) { 
+	if (substr(strrchr($filename, '.'), 1) != "jpg")
+		continue;
+	$images[] = $filename;
+}
+
+sort($images);
+
+foreach($images as $image) {
+?>
+<img src="interests/<?php echo $_GET['who']."/".$image ?>" /><br />
+<?php } ?>
+</body>
+<html>
diff --git a/www/docs/register/index.php b/www/docs/register/index.php
new file mode 100644
index 0000000..0f73414
--- /dev/null
+++ b/www/docs/register/index.php
@@ -0,0 +1,30 @@
+
+<html>
+<body>
+
+<ul>
+
+<?php
+$people = array();
+
+$d1 = opendir('interests');
+while (($outerdir = readdir($d1)) !== false) {
+	$d2 = opendir("interests/$outerdir");
+
+	while (($innerdir = readdir($d2)) !== false) {
+		if (file_exists("interests/$outerdir/$innerdir/register.xml")) {
+			$people[] = "$outerdir/$innerdir";
+		}
+	}
+}
+
+sort($people);
+
+foreach($people as $fullname) {
+?>
+	<li><a href="top.php?who=<?php echo $fullname ?>"><?php echo $fullname ?></a></li>
+<?php } ?>
+</ul>
+
+</body>
+</html>
diff --git a/www/docs/register/register-toForm.php b/www/docs/register/register-toForm.php
index 2609421..c6c5641 100644
--- a/www/docs/register/register-toForm.php
+++ b/www/docs/register/register-toForm.php
@@ -1,4 +1,4 @@
-<form method="post" action="?register=<?php echo $_GET['register'] ?>">
+<form method="post" action="?who=<?php echo $_GET['who'] ?>">
 
 <h1>House of representatives Statement of Registrable Interests</h1>
 
@@ -9,10 +9,15 @@
   	<input type="radio" name="type" <?php if($this->type == "new") echo "checked";?> value="new">At date of election (newly elected members)
 </p>
 
+
 <p>Notes ...</p>
 
 <table>
 	<tr>
+		<td>Signed Date</td>
+		<td><input type="text" name="stamped_date" value="<?php echo $this->stamped_date; ?>"
+			onKeyPress="return noSubmit(event)"></td>
+	</tr><tr>
 		<td>Surname:</td>
 		<td><input type="text" name="surname" value="<?php echo $this->surname ?>"
 			onKeyPress="return noSubmit(event)"></td>
@@ -46,5 +51,21 @@ foreach($questions as $question) {
 	$question->toForm($this->questions);
 }
 ?>
-</form>
 
+<table>
+	<tr>
+		<td>Signed:</td>
+		<td>
+			<input type="radio" name="signed" <?php if($this->type == "continue") echo "checked";?> value="yes">Yes<br />
+			<input type="radio" name="signed" <?php if($this->type == "new") echo "checked";?> value="no">No
+		</td>
+	</tr><tr>
+		<td>Signed Date</td>
+		<td><input type="text" name="signed_date" value="<?php echo $this->signed_date; ?>"
+			onKeyPress="return noSubmit(event)"></td>
+	</tr>
+</table>
+
+<input type="submit" name="save" value="save">  
+
+</form>
diff --git a/www/docs/register/register-toXML.php b/www/docs/register/register-toXML.php
index 836dae6..1a4c17b 100644
--- a/www/docs/register/register-toXML.php
+++ b/www/docs/register/register-toXML.php
@@ -1,5 +1,6 @@
 <xml>
 	<register>
+		<stamped_date><?php echo $this->stamped_date; ?></stamped_date>
 		<type><?php echo $this->type; ?></type>
 		<surname><?php echo $this->surname; ?></surname>
 		<othernames><?php echo $this->othernames; ?></othernames>
@@ -11,5 +12,7 @@ foreach($questions as $question) {
 		$question->toXML($this->questions);
 }
 ?>
+		<signed><?php echo $this->signed; ?></signed>
+		<signed_date><?php echo $this->signed_date; ?></signed_date>
 	</register>
 </xml>
diff --git a/www/docs/register/register.php b/www/docs/register/register.php
index dfb9f48..316ba7f 100644
--- a/www/docs/register/register.php
+++ b/www/docs/register/register.php
@@ -1,11 +1,14 @@
 <?php
 
+require 'Date.php';
+define('DATE_FMT', "%Y/%m/%d");
+
 class Question {
 	var $persons = array("self" => "Self", "spouse" => "Spouse", "children" => "Dependent Children");
 	var $name;
 	var $description;
 	var $fields;
-	
+
 	function Question($name, $description, $fields) {
 		$this->name = $name;
 		$this->description = $description;
@@ -92,16 +95,21 @@ include "questions.php";
 $states = array("NSW", "QLD", "VIC", "WA", "SA", "TAS", "NT", "ACT");
 
 class Register {
+	var $stamped_date;
 	var $type;
 	var $surname;
 	var $othernames;
 	var $divison;
 	var $state;
+	var $signed;
+	var $signed_date;	
 
 	static function from_post($topopulate) {
 		global $states, $questions;
 		$r = new Register();
 
+		$r->stamped_date = $topopulate['stamped_date'];
+
 		if ($topopulate['type'] == "new" or $topopulate['type'] == "continue") 
 			$r->type = $topopulate['type'];
 
@@ -116,6 +124,12 @@ class Register {
 			$question->cleanup($topopulate['questions']);
 
 		$r->questions = $topopulate['questions'];
+
+		if ($topopulate['signed'] == "yes" or $topopulate['signed'] == "no")
+			$r->signed = $topopulate['signed'];
+
+		$r->signed_date = $topopulate['signed_date'];
+
 		return $r;
 	}
 
@@ -123,6 +137,8 @@ class Register {
 		global $states, $questions;
 		$r = new Register();
 
+		$r->stamped_date = $xml->stamped_date;
+
 		if ($xml->type == "new" or $xml->type == "continue") 
 			$r->type = (String)$xml->type;
 		
@@ -134,10 +150,13 @@ class Register {
 			$r->state = (String)$xml->state;
 	
 		$r->questions = array();
-		foreach($questions as $question) {
+		foreach($questions as $question)
 			$question->from_xml($xml, $r->questions);
-		}
 
+		if ($xml->signed == "yes" or $xml->signed == "no")
+			$r->signed = $xml->signed;
+
+		$r->signed_date = $xml->signed_date;
 		return $r;
 	}
 
@@ -237,31 +256,29 @@ function noSubmit(event) {
 
 <?php
 	// FIXME: Security bug - should check filename matches a given pattern
-	$register = $_GET['register'].".xml";
-	if (!file_exists($register)) {
-		die("Don't know about that person!");
+	$who = "interests/".$_GET['who']."/register.xml";
+	if (!file_exists($who)) {
+		die("Don't know about that person! $who");
 	}
 
-	if (isset($_POST['save'])) {
-		try {
-			$registerobj = Register::from_post($_POST);
+	try {
+		if (isset($_POST['save'])) {
+			$register = Register::from_post($_POST);
 			
-			$f = fopen($register, "w"); 
-			fwrite($f, $registerobj->toXML());
+			$f = fopen($who, "w"); 
+			fwrite($f, $register->toXML());
 			fclose($f);
-		} catch (Exception $e) {
-			$registerobj = new Register();
-		}
-	} else {
-		try {
-			$registerobj = Register::from_xml(simplexml_load_file($register)->register);
-		} catch (Exception $e) {
-			$registerobj = new Register();
+		} else {
+			$xml = @simplexml_load_file($who);
+			if (isset($xml->register))
+				$register = Register::from_xml($xml->register);
+			else
+				$register = new Register();
 		}
+	} catch (Exception $e) {
+		$register = new Register();
 	}
-	var_dump($registerobj);
-
-	$registerobj->toForm(); ?>
+	$register->toForm(); ?>
 
 </body>
 </html>
diff --git a/www/docs/register/top.php b/www/docs/register/top.php
new file mode 100644
index 0000000..1bb7c87
--- /dev/null
+++ b/www/docs/register/top.php
@@ -0,0 +1,25 @@
+<html>
+<style>
+	iframe {
+		height: 100%;
+		width: 49.5%;
+		padding: 0;
+		margin: 0;
+		border: 1px solid black;
+	}
+</style>
+<body>
+
+<form>
+<div id="header">
+	<h2>Register of interests for <?php echo $_GET['who'] ?></h2>
+</div>
+
+<iframe id="images" src="images.php?who=<?php echo $_GET['who'] ?>">
+</iframe>
+
+<iframe id="transcription" src="register.php?who=<?php echo $_GET['who'] ?>">
+</iframe>
+
+</body>
+</html>
-- 
1.5.4.3


