r20151110

Signed-off-by: Flashwave <me@flash.moe>
This commit is contained in:
flash 2015-11-11 00:34:48 +01:00
parent b5809d5fe8
commit 4093327895
3 changed files with 87 additions and 23 deletions

View file

@ -168,11 +168,17 @@ class User
} }
// Check if a user is online // Check if a user is online
public function checkOnline() public function isOnline()
{ {
return $this->data['user_last_online'] > (time() - Config::getConfig('max_online_time')); return $this->data['user_last_online'] > (time() - Config::getConfig('max_online_time'));
} }
// Compatibility
public function checkOnline()
{
return $this->isOnline();
}
// Get user's forum statistics // Get user's forum statistics
public function forumStats() public function forumStats()
{ {
@ -304,32 +310,94 @@ class User
} }
// Check if the user is friends with the currently authenticated // Check if the user is friends with the currently authenticated
public function checkFriends($with) public function isFriends($with)
{ {
// Get the friend's friends // Accepted from this user
$friend = in_array($this->data['user_id'], (new User($with))->getFriends()); $user = Database::count('friends', [
'user_id' => [$this->id(), '='],
'friend_id' => [$with, '='],
])[0];
// Get the user's friends // And the other user
$self = in_array($with, $this->getFriends()); $friend = Database::count('friends', [
'user_id' => [$with, '='],
'friend_id' => [$this->id(), '='],
])[0];
// Check if the friend is actually in the user's array if ($user && $friend) {
if ($friend && $self) { return 2; // Mutual friends
return 2; } elseif ($user) {
return 1; // Pending request
} }
// Check if the friend is actually in the user's array // Else return 0
if ($self) {
return 1;
}
// Return true if all went through
return 0; return 0;
} }
// Get all the friend of this user // Compat.
public function getFriends($timestamps = false, $getData = false, $checkOnline = false) public function checkFriends($with)
{ {
return Users::getFriends($this->data['user_id'], $timestamps, $getData, $checkOnline); return $this->isFriends($with);
}
// Get all the friend of this user
public function friends($level = 0)
{
// User ID container
$users = [];
// Select the correct level
switch ($level) {
case 2:
// Get all the current user's friends
$self = array_column(Database::fetch('friends', true, ['user_id' => [$this->id(), '=']]), 'friend_id');
// Get all the people that added this user as a friend
$others = array_column(Database::fetch('friends', true, ['friend_id' => [$this->id(), '=']]), 'user_id');
// Create a difference map
$users = array_intersect($self, $others);
break;
case 1:
$users = array_column(Database::fetch('friends', true, ['user_id' => [$this->id(), '=']]), 'friend_id');
break;
case 0:
default:
// Get all the current user's friends
$self = array_column(Database::fetch('friends', true, ['user_id' => [$this->id(), '=']]), 'friend_id');
// Get all the people that added this user as a friend
$others = array_column(Database::fetch('friends', true, ['friend_id' => [$this->id(), '=']]), 'user_id');
// Create a difference map
$users = array_merge($others, $self);
break;
case -1:
// Get all the current user's friends
$self = array_column(Database::fetch('friends', true, ['user_id' => [$this->id(), '=']]), 'friend_id');
// Get all the people that added this user as a friend
$others = array_column(Database::fetch('friends', true, ['friend_id' => [$this->id(), '=']]), 'user_id');
// Create a difference map
$users = array_diff($others, $self);
break;
}
// Create the storage array
$objects = [];
// Get all users
foreach ($users as $user) {
// Create new object
$objects[$user] = new User($user);
}
// Return the objects
return $objects;
}
// Compatibility
public function getFriends()
{
return $this->friends();
} }
// Check if the user is banned // Check if the user is banned

View file

@ -8,7 +8,7 @@
namespace Sakura; namespace Sakura;
// Define Sakura version // Define Sakura version
define('SAKURA_VERSION', '20151108'); define('SAKURA_VERSION', '20151110');
define('SAKURA_VLABEL', 'Eminence'); define('SAKURA_VLABEL', 'Eminence');
define('SAKURA_COLOUR', '#6C3082'); define('SAKURA_COLOUR', '#6C3082');
define('SAKURA_STABLE', false); define('SAKURA_STABLE', false);

View file

@ -19,9 +19,7 @@ $template->setTemplate($templateName);
if (isset($_GET['p'])) { if (isset($_GET['p'])) {
// Set default variables // Set default variables
$renderData['page'] = [ $renderData['page'] = [
'content' => Main::mdParse("# Unable to load the requested info page.\r\n\r\nCheck the URL and try again."), 'content' => Main::mdParse("# Unable to load the requested info page.\r\n\r\nCheck the URL and try again."),
]; ];
// Set page id // Set page id
@ -31,11 +29,9 @@ if (isset($_GET['p'])) {
if ($ipData = Main::loadInfoPage($pageId)) { if ($ipData = Main::loadInfoPage($pageId)) {
// Assign new proper variable // Assign new proper variable
$renderData['page'] = [ $renderData['page'] = [
'id' => $pageId, 'id' => $pageId,
'title' => $ipData['page_title'], 'title' => $ipData['page_title'],
'content' => Main::mdParse($ipData['page_content']), 'content' => Main::mdParse($ipData['page_content']),
]; ];
} }