IS_VALID_USER = true;
$this->id = $uid;
}
}
static function getUser($username, $password) {
$uid = file_get_contents('database/name/'.strtolower($username));
if ($uid == false)
return null;
$user = new User($uid);
$hashedPassword = md5(md5($password).$username);
if ($user->getPassword() === $hashedPassword)
return $user;
return null;
}
function isUser() {
return $this->IS_VALID_USER;
}
function getID() {
if ($this->isUser())
return $this->id;
return null;
}
function getName() {
if ($this->isUser())
return file_get_contents('database/'.User::PATH.'/'.$this->id.'/name');
return null;
}
function getPassword() {
if ($this->isUser())
return file_get_contents('database/'.User::PATH.'/'.$this->id.'/password');
return null;
}
function getJoinDate() {
if ($this->isUser())
return file_get_contents('database/'.User::PATH.'/'.$this->id.'/joindate');
return null;
}
function getLastActive() {
if ($this->isUser())
return file_get_contents('database/'.User::PATH.'/'.$this->id.'/lastactive');
return null;
}
private static function isValid($username, $password) {
if (preg_match('/^[\w\d\s~!@#\^\*\(\)\-\+\{\}\[\]\.]{4,16}$/', $username) == 0)
return User::USERNAME_INVALID;
if (strlen($username) < User::NAME_MIN_LENGTH)
return User::USERNAME_TOO_SHORT;
if (strlen($username) > User::NAME_MAX_LENGTH)
return User::USERNAME_TOO_LONG;
if (strlen($password) < User::PWD_MIN_LENGTH)
return User::PASSWORD_TOO_SHORT;
if (strlen($password) > User::PWD_MAX_LENGTH)
return User::PASSWORD_TOO_LONG;
if (User::isExists($username))
return User::USER_EXISTS;
return true;
}
function postComment(Topic $topic, $comment) {
$com = new String($comment);
Comment::createComment($topic, $com, $this);
}
function createTopic(Category $cat, $title, $content) {
$tit = new String($title);
$cont = new String($content);
return Topic::createTopic($cat, $tit, $cont, $this);
}
private static function isExists($username) {
return file_exists('database/name/'.strtolower($username));
}
static function register($username, $password) {
$valid = User::isValid($username, $password);
if ($valid !== true)
return $valid;
$joindate = time();
$lastactive = time();
$lowerUname = strtolower($username);
$hashedPass = md5(md5($password).$username);
$uid = count(scandir('database/'.User::PATH.'/')) + 1;
mkdir('database/'.User::PATH.'/'.$uid);
//Ghi thông tin user vào database
Functional::writeFile('database/'.User::PATH.'/'.$uid.'/username', $username, 'w'); //Ghi user name
Functional::writeFile('database/'.User::PATH.'/'.$uid.'/password', $hashedPass, 'w'); //Ghi password
Functional::writeFile('database/'.User::PATH.'/'.$uid.'/joindate', $joindate, 'w'); //Ghi join date
Functional::writeFile('database/'.User::PATH.'/'.$uid.'/lastactive', $lastactive, 'w'); //Ghi last active
//Ánh xạ tên người dùng đến id người dùng
Functional::writeFile('database/name/'.$lowerUname, $uid, 'w');
return User::REGISTER_SUCCESS;
}
function login() {
//Tạo cookie hoặc session
}
function logout() {
//Xóa cookie hoặc session
}
function setLastActive($time) {
if ($this->IS_VALID_USER)
Functional::writeFile('database/'.User::PATH.'/'.$this->id.'lastactive', $time, 'w');
}
}
?>