diff options
Diffstat (limited to 'core/namespace/User')
-rw-r--r-- | core/namespace/User/Attribute.php | 24 | ||||
-rw-r--r-- | core/namespace/User/Exception.php | 5 | ||||
-rw-r--r-- | core/namespace/User/Factory.php | 13 | ||||
-rw-r--r-- | core/namespace/User/Item.php | 36 |
4 files changed, 78 insertions, 0 deletions
diff --git a/core/namespace/User/Attribute.php b/core/namespace/User/Attribute.php new file mode 100644 index 0000000..b161fa9 --- /dev/null +++ b/core/namespace/User/Attribute.php @@ -0,0 +1,24 @@ +<?php +namespace User; + +class Attribute extends \Attribute { + + #=============================================================================== + # Pre-Define database table columns + #=============================================================================== + protected $id = FALSE; + protected $slug = FALSE; + protected $username = FALSE; + protected $password = FALSE; + protected $fullname = FALSE; + protected $mailaddr = FALSE; + protected $body = FALSE; + protected $time_insert = FALSE; + protected $time_update = FALSE; + + #=============================================================================== + # Define database table name + #=============================================================================== + const TABLE = 'user'; +} +?>
\ No newline at end of file diff --git a/core/namespace/User/Exception.php b/core/namespace/User/Exception.php new file mode 100644 index 0000000..b5bcad0 --- /dev/null +++ b/core/namespace/User/Exception.php @@ -0,0 +1,5 @@ +<?php +namespace User; + +class Exception extends \Exception {} +?>
\ No newline at end of file diff --git a/core/namespace/User/Factory.php b/core/namespace/User/Factory.php new file mode 100644 index 0000000..80e6b49 --- /dev/null +++ b/core/namespace/User/Factory.php @@ -0,0 +1,13 @@ +<?php +namespace User; + +class Factory extends \ItemFactory { + public static function buildBySlug($slug): \Item { + return self::build(Item::getIDByField('slug', $slug, \Application::getDatabase())); + } + + public static function buildByUsername($username): \Item { + return self::build(Item::getIDByField('username', $username, \Application::getDatabase())); + } +} +?>
\ No newline at end of file diff --git a/core/namespace/User/Item.php b/core/namespace/User/Item.php new file mode 100644 index 0000000..129d8f9 --- /dev/null +++ b/core/namespace/User/Item.php @@ -0,0 +1,36 @@ +<?php +namespace User; + +class Item extends \Item { + const CONFIGURATION = 'USER'; + + #=============================================================================== + # Return absolute user URL + #=============================================================================== + public function getURL(): string { + if(\Application::get('USER.SLUG_URLS')) { + return \Application::getUserURL("{$this->Attribute->get('slug')}/"); + } + + return \Application::getUserURL("{$this->Attribute->get('id')}/"); + } + + #=============================================================================== + # Return unique pseudo GUID + #=============================================================================== + public function getGUID(): string { + foreach(['id', 'time_insert'] as $attribute) { + $attributes[] = $this->Attribute->get($attribute); + } + + return sha1(implode(NULL, $attributes)); + } + + #=============================================================================== + # Compare plaintext password with hashed password from database + #=============================================================================== + public function comparePassword($password): bool { + return password_verify($password, $this->Attribute->get('password')); + } +} +?>
\ No newline at end of file |