server/onyx/include/admin/import_themes.php
2013-11-08 21:19:39 +01:00

79 lines
1.8 KiB
PHP

<?php
if(!defined('ONYX')) exit;
if (!empty($_FILES["inputFile"]['tmp_name']))
{
$doc = new DOMDocument();
if (!$doc->load($_FILES["inputFile"]['tmp_name']))
{
erreur("Unable to parse given file. A XML file was expected.");
return;
}
// Define thema information
$theme = new Theme();
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//theme/title");
if (!is_null($elements))
{
foreach ($elements as $element)
{
if ($element->nodeName == "title")
$theme->name = $element->nodeValue;
}
}
// Insert thema into BDD
if (!$theme->update())
{
erreur("Unable to add a new theme.");
return;
}
$elements = $xpath->query("//theme/exercice");
if (!is_null($elements))
{
foreach ($elements as $element)
{
$ex = new Exercice();
$ex->id = $element->getAttribute("id");
$ex->level = $element->getAttribute("level");
if ($element->hasAttribute("depends"))
$ex->require = $element->getAttribute("depends");
foreach ($element->childNodes as $child)
{
if ($child->nodeName == "title")
$ex->title = $child->nodeValue;
else if ($child->nodeName == "points")
$ex->points = intval($child->nodeValue);
else if ($child->nodeName == "statement")
$ex->statement = $child->nodeValue;
else if ($child->nodeName == "key")
$ex->add_key(
$child->hasAttribute("format")?$child->getAttribute("format"):"sha512",
$child->nodeValue);
else if ($child->nodeName == "file")
$ex->add_file(
$child->getAttribute("path"),
$child->nodeValue,
$child->getAttribute("sha1"));
}
if (!$theme->add_exercice($ex))
erreur("Unable to add '".$ex->id."' exercice.");
}
}
erreur("XML file successfully imported.", "success");
}
return "admin/import_exercices";