181 lines
3.8 KiB
PHP
181 lines
3.8 KiB
PHP
|
<?php
|
||
|
|
||
|
class User
|
||
|
{
|
||
|
private $id;
|
||
|
private $username;
|
||
|
private $password;
|
||
|
private $email;
|
||
|
private $registerdate;
|
||
|
private $validated = false;
|
||
|
|
||
|
public function __construct($node = null)
|
||
|
{
|
||
|
if (isset($node))
|
||
|
{
|
||
|
$this->id = $node->getAttribute("xml:id");
|
||
|
$this->registerdate = $node->getAttribute("registerdate");
|
||
|
if (intval($node->getAttribute("validated")))
|
||
|
$this->validated = true;
|
||
|
$this->username = $node->getAttribute("username");
|
||
|
$this->password = $node->getAttribute("password");
|
||
|
$this->email = $node->getAttribute("email");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static function new_User($email, $username = "", $password = null)
|
||
|
{
|
||
|
$u = new User();
|
||
|
$u->id = sha1($email);
|
||
|
$u->registerdate = time();
|
||
|
$u->email = $email;
|
||
|
$u->username = $username;
|
||
|
if (isset($password))
|
||
|
$this->password = getPassword($username, $password);
|
||
|
|
||
|
return $u;
|
||
|
}
|
||
|
|
||
|
public static function getUsers($filename = "users.xml")
|
||
|
{
|
||
|
$users = array();
|
||
|
$treeXML = new DOMDocument('1.0', 'UTF-8');
|
||
|
|
||
|
if (@$treeXML->load($filename))
|
||
|
{
|
||
|
$nodes = $treeXML->getElementsByTagName("user");
|
||
|
foreach($nodes as $node)
|
||
|
{
|
||
|
$u = new User($node);
|
||
|
$users[$u->id] = $u;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $users;
|
||
|
}
|
||
|
|
||
|
public static function getValidatedUsers($filename = "users.xml")
|
||
|
{
|
||
|
$users = array();
|
||
|
$treeXML = new DOMDocument('1.0', 'UTF-8');
|
||
|
|
||
|
if (@$treeXML->load($filename))
|
||
|
{
|
||
|
$nodes = $treeXML->getElementsByTagName("user");
|
||
|
foreach($nodes as $node)
|
||
|
{
|
||
|
$u = new User($node);
|
||
|
if ($u->isValidated())
|
||
|
$users[] = $u;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $users;
|
||
|
}
|
||
|
|
||
|
public static function getUser($id, $filename = "users.xml")
|
||
|
{
|
||
|
$treeXML = new DOMDocument('1.0', 'UTF-8');
|
||
|
|
||
|
if (@$treeXML->load($filename))
|
||
|
return new User($treeXML->getElementById($id));
|
||
|
else
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
public static function setUsers($users, $filename = "users.xml")
|
||
|
{
|
||
|
$treeXML = new DOMDocument('1.0', 'UTF-8');
|
||
|
$root_node = $treeXML->createElement("users");
|
||
|
$treeXML->appendChild($root_node);
|
||
|
|
||
|
foreach ($users as $user)
|
||
|
$root_node->appendChild($user->to_xml($treeXML));
|
||
|
|
||
|
$treeXML->formatOutput = true;
|
||
|
$treeXML->save($filename);
|
||
|
}
|
||
|
|
||
|
public function to_xml($root)
|
||
|
{
|
||
|
$qnode = $root->createElement("user");
|
||
|
|
||
|
$qnode->setAttribute("xml:id", $this->id);
|
||
|
$qnode->setAttribute("username", $this->username);
|
||
|
$qnode->setAttribute("password", intval($this->password));
|
||
|
$qnode->setAttribute("email", $this->email);
|
||
|
$qnode->setAttribute("registerdate", $this->registerdate);
|
||
|
$qnode->setAttribute("validated", $this->validated);
|
||
|
|
||
|
return $qnode;
|
||
|
}
|
||
|
|
||
|
public function canConnect($password)
|
||
|
{
|
||
|
$hash = getPassword($this->username, $password);
|
||
|
|
||
|
return ($hash == $this->password);
|
||
|
}
|
||
|
|
||
|
private function getPassword($username, $password)
|
||
|
{
|
||
|
return hash("whirlpool", $username.':'.$password);
|
||
|
}
|
||
|
|
||
|
public function set_validated($validated)
|
||
|
{
|
||
|
$this->validated = $validated;
|
||
|
}
|
||
|
|
||
|
public function getId()
|
||
|
{
|
||
|
return $this->id;
|
||
|
}
|
||
|
|
||
|
public function getUsername()
|
||
|
{
|
||
|
return $this->username;
|
||
|
}
|
||
|
|
||
|
public function getEmail()
|
||
|
{
|
||
|
return $this->email;
|
||
|
}
|
||
|
|
||
|
public function isValidated()
|
||
|
{
|
||
|
return $this->validated;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
$us = User::getUsers();
|
||
|
|
||
|
foreach($us as $u)
|
||
|
$u->set_validated(true);
|
||
|
User::setUsers($us);
|
||
|
//*/
|
||
|
/*
|
||
|
$us = User::getUsers();
|
||
|
|
||
|
$u = User::new_User("bertrand@cournaud.fr", "Cccompany");
|
||
|
$us[] = $u;
|
||
|
|
||
|
$u = User::new_User("colona@ycc.fr", "colona");
|
||
|
$us[] = $u;
|
||
|
|
||
|
$u = User::new_User("ircquizz@23.tf", "maxence23");
|
||
|
$us[] = $u;
|
||
|
|
||
|
$u = User::new_User("ircquizz@p0m.fr", "nemunaire");
|
||
|
$us[] = $u;
|
||
|
|
||
|
$u = User::new_User("quentin.courtel@epita.fr", "Bob");
|
||
|
$us[] = $u;
|
||
|
|
||
|
$u = User::new_User("ghost_anarky@hotmail.com", "Anarky");
|
||
|
$us[] = $u;
|
||
|
|
||
|
User::setUsers($us);
|
||
|
//*/
|
||
|
?>
|