Add questions manager class

This commit is contained in:
Némunaire 2012-05-19 11:02:31 +02:00
parent ef33e787a4
commit 65f5d0d2ce
2 changed files with 153 additions and 0 deletions

71
QuestionsFile.class.php Normal file
View file

@ -0,0 +1,71 @@
<?php
require("Question.class.php");
class QuestionsFile
{
private var $filename;
private var $treeXML;
public function __construct($filename)
{
$this->filename = $filename;
$this->reload();
}
/**
* Load or reload the questions file.
* Unsave changes will be erased.
*/
private function reload()
{
$this->treeXML = new DOMDocument('1.0', 'UTF-8');
$this->treeXML->formatOutput = true;
if (isfile($this->filename))
{
$this->treeXML->load($this->filename);
$root_nodes = $this->treeXML->getElementsByTagName("questions");
if ($root_node->length > 0)
$this->root_node = $root_nodes->item(0);
else
throw Exception("Not a valid nemubot QuestionsFile.");
}
else
{
$this->root_node = $this->treeXML->createElement("questions");
$this->treeXML->appendChild($this->root_node);
}
}
/**
* Add a new question into the file
* @param $question The question object
*/
public function add_question($question)
{
$this->root_node->appendChild($question->to_xml($this->root_node));
}
/**
* Get a question from its unique identifiant
*/
public function get_question($id)
{
return new Question($this->root_node->getElementById($id));
}
/**
* Write changes into the real file
*/
public function save($newfilename = null)
{
if (!empty($newfilename))
$this->filename = $newfilename;
$this->treeXML->save($this->filename);
}
}
?>