server/onyx/include/admin/import_users.php
Li Chen 745d8a8bd5 Fixed multiple team->update in import_users
Show the pass at the end of import
2013-12-01 01:08:40 +01:00

105 lines
2.6 KiB
PHP

<?php
if(!defined('ONYX')) exit;
include 'certificate.php';
if (!empty($_FILES["inputFile"]['tmp_name']))
{
if (isset($VAR['misc_dir']))
$misc_dir = $VAR['misc_dir'];
else
{
erreur("Please add the misc_dir variable into root.xml");
return "admin/import_users";
}
if (!file_exists("$misc_dir/pki/cacert.crt"))
{
erreur("The root certificate file not found, please create this first");
return "admin/import_users";
}
$doc = new DOMDocument();
if (@!$doc->load($_FILES["inputFile"]['tmp_name']))
{
erreur("Unable to parse given file. A XML file was expected.");
return "admin/import_users";
}
$xpath = new DOMXpath($doc);
$elements = $xpath->query("//teams/team");
if (!is_null($elements))
{
$output = "";
$error = "";
foreach ($elements as $element)
{
$team = new Team();
foreach ($element->childNodes as $child)
{
if ($child->nodeName == "name")
$team->team_name = $child->nodeValue;
else if ($child->nodeName == "slogan")
$team->slogan = $child->nodeValue;
else if ($child->nodeName == "member")
{
// Slogan rly needed ?
if (empty($team->id) && !$team->update())
{
$error .= "Unable to add team $team->team_name</br>";
continue;
}
$user = new Member();
$user->team = $team;
foreach ($child->childNodes as $child_member)
{
if ($child_member->nodeName == "firstname")
$user->firstname = $child_member->nodeValue;
else if ($child_member->nodeName == "lastname")
$user->lastname = $child_member->nodeValue;
else if ($child_member->nodeName == "company")
$user->company = $child_member->nodeValue;
else if ($child_member->nodeName == "nickname")
$user->nickname = $child_member->nodeValue;
}
if (!$user->update())
{
$error .= "Unable to add user $user->firstname $user->lastname $user->nickname </br>";
$team->drop();
continue;
}
$team->members[] = $user;
}
}
if (!empty($team->id) && !empty($team->team_name))
{
//TODO save the certificate subject
$output .= new_client($team->team_name, $misc_dir);
}
}
if (file_exists("$misc_dir/teams.pass"))
{
$output .= file_get_contents("$misc_dir/teams.pass");
unlink("$misc_dir/teams.pass");
}
$template->assign("output", $output);
}
if ($error != "")
erreur($error);
else
erreur("Fichier XML importé avec succès.", "success");
}
return "admin/import_users";