loadObj($guid); } /* * Get all users -- ordered by name, ascending */ function getAllUsers_orderByName() { $query = "SELECT guid FROM `object` WHERE `type` = 'user' ORDER BY name"; $result = $this->db->query($query); $users = array(); foreach ($result as $u) $users[] = new User($u['guid']); return $users; } /* * Check whether a given username is currently in use */ function usernameInUse($username) { $escd_username = $this->db->esc($username); $query = "SELECT name FROM object WHERE type = 'user' AND name = '" . $escd_username . "'"; $results = $this->db->query($query); if (count($results) > 0) return true; return false; } /* * Generate a key from a user's password and salt */ function getKey($password, $salt) { return hash("sha256", $salt . $password); } /* * Create a new User object with the given username and keyed with the given plain-text password * This function returns false if $username is already being used * On success, this object should be initialized as the new user (use only on new User() objects) */ function createNewUser($username, $password) { if ($this->usernameInUse($username)) return false; /* if there exist no users already, make this new one an admin */ if (count($this->getAllUsers_orderByName()) == 0) $this->admin = 1; $this->perms = 0; $this->name = $username; $this->type = "user"; $this->salt = $this->getBlob(); $this->key = $this->getKey($password, $this->salt); $this->emailConf = 0; $this->emailConfKey = $this->getBlob(); $this->saveObj(); $this->owner = $this->guid; $this->saveObj(); return true; } } ?>