From 437e3c10398a7baef14223c542c25c0bdff9f494 Mon Sep 17 00:00:00 2001 From: flashwave Date: Wed, 19 Aug 2015 14:13:38 +0200 Subject: [PATCH] new user api --- _sakura/changelog.json | 2 +- _sakura/components/User.php | 79 ++++++++++++++++++++++++ _sakura/templates/yuuno/main/profile.tpl | 20 +++--- main/profile.php | 31 +++++----- 4 files changed, 106 insertions(+), 26 deletions(-) diff --git a/_sakura/changelog.json b/_sakura/changelog.json index 032d7de..f8bfaa6 100644 --- a/_sakura/changelog.json +++ b/_sakura/changelog.json @@ -2059,7 +2059,7 @@ }, { "type": "UPD", - "change": "Converted most of profile.php to the new user API.", + "change": "Converted profile.php to the new user API.", "user": "Flashwave" } diff --git a/_sakura/components/User.php b/_sakura/components/User.php index f9e27c2..f727b62 100644 --- a/_sakura/components/User.php +++ b/_sakura/components/User.php @@ -79,6 +79,34 @@ class User { } + // Check if a user is online + public function checkOnline() { + + return $this->data['lastdate'] > (time() - Configuration::getConfig('max_online_time')); + + } + + // Get user's forum statistics + public function forumStats() { + + return Forum::getUserStats($this->data['id']); + + } + + // Check if the user is friends with the currently authenticated + public function checkFriends($with) { + + return Users::checkFriend($this->data['id'], $with); + + } + + // Check if the user is banned + public function checkBan() { + + return Bans::checkBan($this->data['id']); + + } + // Get the user's profile fields public function profileFields() { @@ -158,4 +186,55 @@ class User { } + // Check if user has Premium + public function checkPremium() { + + // Check if the user has static premium + if(Permissions::check('SITE', 'STATIC_PREMIUM', $this->data['id'], 1)) { + + return [2, 0, time() + 1]; + + } + + // Attempt to retrieve the premium record from the database + $getRecord = Database::fetch('premium', false, [ + + 'uid' => [$this->data['id'], '='] + + ]); + + // If nothing was returned just return false + if(empty($getRecord)) { + + return [0]; + + } + + // Check if the Tenshi hasn't expired + if($getRecord['expiredate'] < time()) { + + Users::removeUserPremium($this->data['id']); + Users::updatePremiumMeta($this->data['id']); + return [0, $getRecord['startdate'], $getRecord['expiredate']]; + + } + + // Else return the start and expiration date + return [1, $getRecord['startdate'], $getRecord['expiredate']]; + + } + + // Get all warnings issued to the user + public function getWarnings() { + + // Do the database query + $warnings = Database::fetch('warnings', true, [ + 'uid' => [$this->data['id'], '='] + ]); + + // Return all the warnings + return $warnings; + + } + } diff --git a/_sakura/templates/yuuno/main/profile.tpl b/_sakura/templates/yuuno/main/profile.tpl index cb6010b..7789f6b 100644 --- a/_sakura/templates/yuuno/main/profile.tpl +++ b/_sakura/templates/yuuno/main/profile.tpl @@ -1,5 +1,5 @@ {% include 'global/header.tpl' %} - {% if legacyprofile.notset or profile.data.id < 1 or profile.data.password_algo == 'nologin' %} + {% if page.notfound or profile.data.id < 1 or profile.data.password_algo == 'nologin' %}

The requested user does not exist!

There are a few possible reasons for this: @@ -15,18 +15,18 @@
- {{ profile.data.username }}'s Avatar
- {% if profile.data.rank_main > 1 and legacyprofile.ban_check|length < 1 %}{# !!! #} + {{ profile.data.username }}'s Avatar
+ {% if profile.data.rank_main > 1 and profile.checkBan|length < 1 %} {{ profile.userTitle }}

{{ profile.data.username }}

- {% if profile.is_premium %}Tenshi {% endif %}{{ profile.country.short }} {{ profile.country.long }} + {% if profile.checkPremium[0] %}Tenshi {% endif %}{{ profile.country.short }} {{ profile.country.long }} {% if user.checklogin %} @@ -40,7 +40,7 @@ Last Seen on {{ profile.data.lastdate|date(sakura.date_format) }} {% endif %}
- {{ profile.data.username }} has {% if not legacyprofile.forum_stats.posts %}no{% else %}{{ legacyprofile.forum_stats.posts }}{% endif %} forum post{% if legacyprofile.forum_stats.posts != 1 %}s{% endif %}. + {{ profile.data.username }} has {% if not profile.forumStats.posts %}no{% else %}{{ profile.forumStats.posts }}{% endif %} forum post{% if profile.forumStats.posts != 1 %}s{% endif %}. {% if profile.profileFields %}
{% if user.checklogin %} @@ -77,12 +77,12 @@ Account Standing {% if profile.data.rank_main < 2 %}

Deactivated

- {% elseif legacyprofile.ban_check %} + {% elseif profile.checkBan %}

Banned

{% else %} - {% if legacyprofile.warnings %} + {% if profile.getWarnings %}

Bad

- This user has {{ legacyprofile.warnings|length }} warning{% if legacyprofile.warnings|length != 1 %}s{% endif %}.
After 5 to 10 warnings (depending on what they are for) this user may be permanently banned.
+ This user has {{ profile.getWarnings|length }} warning{% if profile.getWarnings|length != 1 %}s{% endif %}.
After 5 to 10 warnings (depending on what they are for) this user may be permanently banned.
{% else %}

Good

{% endif %} diff --git a/main/profile.php b/main/profile.php index 69abc87..89c2132 100644 --- a/main/profile.php +++ b/main/profile.php @@ -15,23 +15,17 @@ if(isset($_GET['u'])) { // Get the user's context $profile = new User($_GET['u']); - $renderData['legacyprofile'] = [ - 'notset' => false, - 'is_premium' => Users::checkUserPremium($profile->data['id'])[0], - 'is_online' => Users::checkUserOnline($profile->data['id']), - 'warnings' => Users::getWarnings($profile->data['id']), - 'friend' => Users::checkFriend($profile->data['id']), - 'forum_stats' => Forum::getUserStats($profile->data['id']), - 'ban_check' => Bans::checkBan($profile->data['id']) - ]; - - + // Assign the object to a renderData variable $renderData['profile'] = $profile; $renderData['page'] = [ - 'title' => ($profile->data['id'] < 1 || $profile->data['password_algo'] == 'nologin' ? 'User not found!' : 'Profile of '. $profile->data['username']), - 'style' => (!empty($profile->data['userData']['profileBackground']) ? [ + + 'notfound' => false, + 'title' => ($profile->data['id'] < 1 || $profile->data['password_algo'] == 'nologin' ? 'User not found!' : 'Profile of '. $profile->data['username']), + 'style' => (!empty($profile->data['userData']['profileBackground']) ? [ + '#userBackground' => [ + 'background' => 'url("/bg/'. $profile->data['id'] .'") no-repeat center center / cover transparent !important', 'position' => 'fixed', 'top' => '0', @@ -39,14 +33,21 @@ if(isset($_GET['u'])) { 'right' => '0', 'left' => '0', 'z-index' => '-1' + ] + ] : null) + ]; } else { - $renderData['legacyprofile']['notset'] = true; - $renderData['page']['title'] = 'User not found!'; + $renderData['page'] = [ + + 'notfound' => true, + 'title' => 'User not found!' + + ]; }