summaryrefslogtreecommitdiff
path: root/forum/utils/users.php
diff options
context:
space:
mode:
Diffstat (limited to 'forum/utils/users.php')
-rw-r--r--forum/utils/users.php136
1 files changed, 136 insertions, 0 deletions
diff --git a/forum/utils/users.php b/forum/utils/users.php
new file mode 100644
index 0000000..99aaffc
--- /dev/null
+++ b/forum/utils/users.php
@@ -0,0 +1,136 @@
+<?php
+
+include_once($UTIL_DIR . "/convert.php");
+
+class User {
+ public $uid;
+ public $gid;
+ public $enabled;
+ public $username;
+ public $password;
+ public $name;
+ public $avatar;
+ public $email;
+ public $notified;
+
+ public function checkPassword($password)
+ {
+ return $this->password == sha1(md5($password));
+ }
+
+ public function write($fp)
+ {
+ fwrite($fp, " <user enabled=\"" . $this->enabled . "\"\n");
+ fwrite($fp, " uid=\"" . $this->uid . "\"\n");
+ fwrite($fp, " gid=\"" . $this->gid . "\"\n");
+ fwrite($fp, " notified=\"" . $this->notified . "\"\n");
+ fwrite($fp, " username=\"" . htmlspecialchars($this->username, ENT_QUOTES, "UTF-8") . "\"\n");
+ fwrite($fp, " password=\"" . $this->password . "\"\n");
+ fwrite($fp, " name=\"" . htmlspecialchars($this->name, ENT_QUOTES, "UTF-8") . "\"\n");
+ fwrite($fp, " avatar=\"" . htmlspecialchars($this->avatar, ENT_QUOTES, "UTF-8") . "\"\n");
+ fwrite($fp, " email=\"" . htmlspecialchars($this->email, ENT_QUOTES, "UTF-8") . "\">\n");
+ fwrite($fp, " </user>\n");
+ }
+
+ public function User($enabled, $uid, $gid, $username, $password, $name, $email, $avatar, $notified)
+ {
+ $this->enabled = $enabled;
+ $this->gid = $gid;
+ $this->uid = $uid;
+ $this->username = $username;
+ $this->password = $password;
+ $this->email = $email;
+ $this->name = $name;
+ $this->avatar = $avatar;
+ if($notified == "") $notified = 0;
+ $this->notified = $notified;
+ }
+}
+
+class Users {
+
+ private $file;
+ public $users = array();
+
+ public function add($user) {
+ $key = $user->uid;
+ $this->users[$key] = $user;
+ }
+
+ public function write()
+ {
+ $fp = fopen($this->file, "w");
+
+ $block = TRUE;
+ flock($fp, LOCK_EX, $block); // do an exclusive lock
+
+ fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+
+ fwrite($fp, "<users>\n");
+ foreach($this->users as $user) {
+ $user->write($fp);
+ }
+ fwrite($fp, "</users>\n");
+
+ fclose($fp);
+ }
+
+ /*
+ public function deleteForumUser($id)
+ {
+ if($this->members[$id]) {
+ unset($this->members[$id]);
+ // $this->write();
+ } else {
+ echo "<p>ERROR: User! <em>".$id."</em> does not exist!</p>\n";
+ return false;
+ }
+ return true;
+ }
+ */
+
+ public function getUserID($username)
+ {
+ foreach($this->users as $user) {
+ if($user->username == $username) return $user->uid;
+ }
+ return false;
+ }
+
+ public function getUser($uid)
+ {
+ $user = $this->users[$uid];
+ return $user;
+ }
+
+ private function read()
+ {
+ $dom = new DomDocument;
+ $dom->preserveWhiteSpace = FALSE;
+ $dom->load($this->file);
+ $users = $dom->getElementsByTagName('user');
+
+ foreach ($users as $u) {
+ $user = new User($u->getAttribute('enabled'),
+ $u->getAttribute('uid'),
+ $u->getAttribute('gid'),
+ $u->getAttribute('username'),
+ $u->getAttribute('password'),
+ $u->getAttribute('name'),
+ $u->getAttribute('email'),
+ $u->getAttribute('avatar'),
+ $u->getAttribute('notified'));
+
+ $this->add($user);
+ }
+
+ }
+
+ public function Users($file)
+ {
+ $this->file = $file;
+ $this->read();
+ }
+
+}
+?> \ No newline at end of file