<?php

class Question
{
  private $id;
  private $question;
  private $course;
  private $answers = array();
  private $added_time;
  private $validated = false;
  private $validator = "";

  public function __construct($node = null)
  {
    if (isset($node))
    {
      $this->id = $node->getAttribute("id");
      $this->added_time = $node->getAttribute("addedtime");
      if (intval($node->getAttribute("validated")))
        $this->validated = true;
      $this->validator = $node->getAttribute("validator");
      $this->question = $node->getAttribute("question");
      $this->course = $node->getAttribute("course");

      $answers = $node->getElementByTagName("answer");
      for ($i = 0; $i < $answers->length; $i++)
        $this->answers[] = $answers->item($i)->getAttribute("answer");
    }
  }

  public static function new_Question($question, $answers, $course = null)
  {
    $q = new Question();
    $q->id = md5(time().$question);
    $q->added_time = time();
    $q->question = $question;
    $q->course = $course;

    if (!empty($answers))
    {
      if (is_array($answers))
      {
        foreach ($answers as $ans)
          $q->answers[] = $ans;
      }
      else
        $q->answers[] = $answers;
    }

    return $q;
  }

  public function print_test()
  {
    echo 'Cours concerné : ' . $this->course . "<br>";
    echo 'La question est : ' . $this->question . "<br>";
    echo 'Les réponses sont : ' . print_r($this->answers, true) . "<br/>";
    echo 'ID : ' . $this->id;
  }

  /**
   * Generate and fill an answer node
   * @param $answer The answer string
   * @param $scrore The score given by this answer
   */
  private function gen_anode($treeXML, $answer, $score = 1)
  {
    $anode = $treeXML->createElement("answer");

    $anode->setAttribute("answer", $answer);
    $anode->setAttribute("score", $score);

    return $anode;
  }

  /**
   * Generate XML corresponding to this question
   */
  public function to_xml($root)
  {
    $qnode = $root->createElement("question");

    $qnode->setAttribute("id", $this->id);
    $qnode->setAttribute("addedtime", $this->added_time);
    $qnode->setAttribute("validated", $this->validated);
    $qnode->setAttribute("validator", $this->validator);
    $qnode->setAttribute("course", $this->course);
    $qnode->setAttribute("question", $this->question);

    foreach ($this->answers as $ans)
      $qnode->appendChild($this->gen_anode($root, $ans));

    return $qnode;
  }
}

?>