2015-05-05 06:24:19 +00:00
|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* Sakura User Settings
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Declare Namespace
|
|
|
|
namespace Sakura;
|
|
|
|
|
2015-07-30 01:12:53 +00:00
|
|
|
// If this we're requesting notifications this page won't require templating
|
2015-09-14 20:51:23 +00:00
|
|
|
if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications']) {
|
2015-07-30 01:12:53 +00:00
|
|
|
define('SAKURA_NO_TPL', true);
|
|
|
|
}
|
|
|
|
|
2015-05-05 06:24:19 +00:00
|
|
|
// Include components
|
2015-12-03 19:40:01 +00:00
|
|
|
require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . 'sakura.php';
|
2015-05-05 06:24:19 +00:00
|
|
|
|
2015-11-06 22:30:37 +00:00
|
|
|
if (!defined('SAKURA_NO_TPL')) {
|
|
|
|
// Initialise templating engine
|
|
|
|
$template = new Template();
|
|
|
|
|
|
|
|
// Change templating engine
|
|
|
|
$template->setTemplate($templateName);
|
|
|
|
}
|
|
|
|
|
2015-05-09 00:56:55 +00:00
|
|
|
// Notifications
|
2015-09-14 20:51:23 +00:00
|
|
|
if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications']) {
|
2015-05-09 00:56:55 +00:00
|
|
|
// Create the notification container array
|
2015-10-18 19:06:30 +00:00
|
|
|
$notifications = [];
|
2015-05-09 00:56:55 +00:00
|
|
|
|
|
|
|
// Check if the user is logged in
|
2015-09-14 21:41:43 +00:00
|
|
|
if (Users::checkLogin()
|
|
|
|
&& isset($_REQUEST['time'])
|
|
|
|
&& $_REQUEST['time'] > (time() - 1000)
|
|
|
|
&& isset($_REQUEST['session']) && $_REQUEST['session'] == session_id()) {
|
2015-05-09 00:56:55 +00:00
|
|
|
// Get the user's notifications from the past forever but exclude read notifications
|
|
|
|
$userNotifs = Users::getNotifications(null, 0, true, true);
|
|
|
|
|
|
|
|
// Add the proper values to the array
|
2015-09-14 20:51:23 +00:00
|
|
|
foreach ($userNotifs as $notif) {
|
2015-05-11 22:20:19 +00:00
|
|
|
// Add the notification to the display array
|
2015-10-10 21:17:50 +00:00
|
|
|
$notifications[$notif['alert_timestamp']] = [
|
|
|
|
'read' => $notif['alert_read'],
|
|
|
|
'title' => $notif['alert_title'],
|
|
|
|
'text' => $notif['alert_text'],
|
|
|
|
'link' => $notif['alert_link'],
|
|
|
|
'img' => $notif['alert_img'],
|
|
|
|
'timeout' => $notif['alert_timeout'],
|
|
|
|
'sound' => $notif['alert_sound'],
|
2015-05-11 22:20:19 +00:00
|
|
|
];
|
2015-05-09 00:56:55 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-11-11 00:30:22 +00:00
|
|
|
// Check if friendOnline is set (so it doesn't tell you all your friends all online on first visit)
|
2015-11-11 21:54:56 +00:00
|
|
|
$onlineFriends = isset($_SESSION['friendsOnline']) ? $_SESSION['friendsOnline'] : [];
|
|
|
|
$onlineNotify = isset($_SESSION['friendsOnline']);
|
2015-11-11 00:30:22 +00:00
|
|
|
|
2015-11-12 17:29:14 +00:00
|
|
|
// Set friendsOnline
|
|
|
|
if (!$onlineNotify) {
|
|
|
|
$_SESSION['friendsOnline'] = [];
|
|
|
|
}
|
|
|
|
|
2015-11-11 00:30:22 +00:00
|
|
|
// Populate the array
|
|
|
|
foreach ($currentUser->friends(1) as $friend) {
|
|
|
|
// Online status
|
|
|
|
$online = $friend->isOnline();
|
|
|
|
|
|
|
|
// If true check if they're already in the array
|
2015-11-11 21:54:56 +00:00
|
|
|
if ($online && !in_array($friend->id(), $onlineFriends)) {
|
2015-11-11 00:30:22 +00:00
|
|
|
// Add user to the online array
|
|
|
|
$_SESSION['friendsOnline'][$friend->id()] = $friend->id();
|
|
|
|
|
|
|
|
// Add the notification to the display array
|
2015-11-11 21:56:03 +00:00
|
|
|
if ($onlineNotify) {
|
2015-11-11 21:54:56 +00:00
|
|
|
$notifications[] = [
|
|
|
|
'read' => 0,
|
|
|
|
'title' => $friend->username() . ' is online.',
|
|
|
|
'text' => '',
|
|
|
|
'link' => '',
|
|
|
|
'img' => '/a/' . $friend->id(),
|
|
|
|
'timeout' => 2000,
|
|
|
|
'sound' => false,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
} elseif (!$online && in_array($friend->id(), $onlineFriends)) {
|
2015-11-11 00:30:22 +00:00
|
|
|
// Remove the person from the array
|
|
|
|
unset($_SESSION['friendsOnline'][$friend->id()]);
|
|
|
|
|
|
|
|
// Add the notification to the display array
|
2015-11-11 21:56:03 +00:00
|
|
|
if ($onlineNotify) {
|
2015-11-11 21:54:56 +00:00
|
|
|
$notifications[] = [
|
|
|
|
'read' => 0,
|
|
|
|
'title' => $friend->username() . ' is offline.',
|
|
|
|
'text' => '',
|
|
|
|
'link' => '',
|
|
|
|
'img' => '/a/' . $friend->id(),
|
|
|
|
'timeout' => 2000,
|
|
|
|
'sound' => false,
|
|
|
|
];
|
|
|
|
}
|
2015-11-11 00:30:22 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-05-09 00:56:55 +00:00
|
|
|
// Set header, convert the array to json, print it and exit
|
|
|
|
print json_encode($notifications);
|
|
|
|
exit;
|
2015-11-04 21:26:58 +00:00
|
|
|
} elseif (isset($_REQUEST['comment-action']) && $_REQUEST['comment-action']) {
|
2015-09-18 21:56:54 +00:00
|
|
|
// Referrer
|
|
|
|
$redirect = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $urls->format('SITE_INDEX'));
|
|
|
|
|
|
|
|
// Continue
|
|
|
|
$continue = true;
|
|
|
|
|
2015-11-04 21:26:58 +00:00
|
|
|
// Match session ids for the same reason
|
|
|
|
if (!Users::checkLogin()) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You must be logged in to do that!',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
|
|
|
}
|
|
|
|
|
2015-09-18 21:56:54 +00:00
|
|
|
// Match session ids for the same reason
|
|
|
|
if (!isset($_REQUEST['session']) || $_REQUEST['session'] != session_id()) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Invalid session, please try again.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
|
|
|
}
|
|
|
|
|
2015-10-10 15:51:24 +00:00
|
|
|
// Match session ids for the same reason
|
|
|
|
if (!isset($_REQUEST['category'])) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'No category was set.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
|
|
|
}
|
|
|
|
|
2015-09-18 21:56:54 +00:00
|
|
|
// Select the right action
|
|
|
|
if ($continue) {
|
2015-10-10 15:51:24 +00:00
|
|
|
$comments = new Comments($_REQUEST['category']);
|
|
|
|
|
2015-09-18 21:56:54 +00:00
|
|
|
switch (isset($_REQUEST['mode']) ? $_REQUEST['mode'] : false) {
|
2015-10-10 21:17:50 +00:00
|
|
|
case 'vote':
|
|
|
|
$comment = $comments->getComment(isset($_REQUEST['id']) ? $_REQUEST['id'] : 0);
|
|
|
|
|
|
|
|
// Check if the comment was actually made by the current user
|
|
|
|
if (!$comment) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The requested comment does not exist.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the user can delete comments
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'VOTE_COMMENTS')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to vote on comments.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
$comments->makeVote(
|
2015-11-07 22:58:02 +00:00
|
|
|
$currentUser->id(),
|
2015-10-10 21:17:50 +00:00
|
|
|
isset($_REQUEST['id']) ? $_REQUEST['id'] : 0,
|
|
|
|
isset($_REQUEST['state']) && $_REQUEST['state'] ? '1' : '0'
|
|
|
|
);
|
|
|
|
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Your vote has been cast!',
|
|
|
|
'success' => 1,
|
|
|
|
];
|
2015-09-18 21:56:54 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 'delete':
|
2015-10-10 15:51:24 +00:00
|
|
|
$comment = $comments->getComment(isset($_REQUEST['id']) ? $_REQUEST['id'] : 0);
|
|
|
|
|
|
|
|
// Check if the comment was actually made by the current user
|
|
|
|
if (!$comment) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The requested comment does not exist.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the user can delete comments
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'DELETE_COMMENTS')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
2015-10-10 21:17:50 +00:00
|
|
|
'message' => 'You aren\'t allowed to delete comments.',
|
2015-10-10 15:51:24 +00:00
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the comment was actually made by the current user
|
2015-11-07 22:58:02 +00:00
|
|
|
if ($comment['comment_poster'] !== $currentUser->id()) {
|
2015-10-10 15:51:24 +00:00
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You can\'t delete the comments of others.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
$comments->removeComment(isset($_REQUEST['id']) ? $_REQUEST['id'] : 0);
|
|
|
|
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The comment has been deleted!',
|
|
|
|
'success' => 1,
|
|
|
|
];
|
2015-10-06 19:51:07 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 'comment':
|
2015-10-10 15:51:24 +00:00
|
|
|
// Check if the user can delete comments
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'CREATE_COMMENTS')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to comment.',
|
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2015-10-06 19:51:07 +00:00
|
|
|
// Attempt to make a new comment
|
2015-11-07 22:58:02 +00:00
|
|
|
$comment = $comments->makeComment($currentUser->id(), $_POST['replyto'], $_POST['comment']);
|
2015-10-06 19:51:07 +00:00
|
|
|
|
|
|
|
// Messages
|
|
|
|
$messages = [
|
|
|
|
'TOO_SHORT' => 'The comment you\'re trying to make is too short!',
|
|
|
|
'TOO_LONG' => 'The comment you\'re trying to make is too long!',
|
|
|
|
'SUCCESS' => 'Posted!',
|
|
|
|
];
|
2015-09-18 21:56:54 +00:00
|
|
|
|
2015-10-06 19:51:07 +00:00
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => $messages[$comment[1]],
|
|
|
|
'success' => $comment[0],
|
|
|
|
];
|
2015-09-18 21:56:54 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
$renderData['page'] = [
|
|
|
|
'redirect' => $redirect,
|
2015-10-06 19:51:07 +00:00
|
|
|
'message' => 'Unknown action.',
|
2015-09-18 21:56:54 +00:00
|
|
|
'success' => 0,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Print page contents or if the AJAX request is set only display the render data
|
2015-11-06 22:36:05 +00:00
|
|
|
if (isset($_REQUEST['ajax'])) {
|
|
|
|
echo $renderData['page']['message'] . '|' .
|
|
|
|
$renderData['page']['success'] . '|' .
|
|
|
|
$renderData['page']['redirect'];
|
|
|
|
} else {
|
|
|
|
// If not allowed print the restricted page
|
|
|
|
$template->setVariables($renderData);
|
|
|
|
|
|
|
|
// Print page contents
|
|
|
|
echo $template->render('global/information.tpl');
|
|
|
|
}
|
2015-09-18 21:56:54 +00:00
|
|
|
exit;
|
2015-09-14 20:51:23 +00:00
|
|
|
} elseif (isset($_REQUEST['friend-action']) && $_REQUEST['friend-action'] && Users::checkLogin()) {
|
2015-06-20 16:06:07 +00:00
|
|
|
// Continue
|
|
|
|
$continue = true;
|
|
|
|
|
|
|
|
// Referrer
|
2015-09-05 16:11:04 +00:00
|
|
|
$redirect = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $urls->format('SITE_INDEX'));
|
2015-06-20 16:06:07 +00:00
|
|
|
|
|
|
|
// Compare time and session so we know the link isn't forged
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!isset($_REQUEST['add']) && !isset($_REQUEST['remove'])) {
|
|
|
|
if (!isset($_REQUEST['ajax'])) {
|
|
|
|
header('Location: ' . $redirect);
|
2015-06-20 19:25:41 +00:00
|
|
|
exit;
|
|
|
|
}
|
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
$renderData['page'] = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'One of the required operators isn\'t set.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
2015-06-19 23:44:16 +00:00
|
|
|
}
|
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
// Compare time and session so we know the link isn't forged
|
2015-11-07 22:58:02 +00:00
|
|
|
if ($continue && $_REQUEST[(isset($_REQUEST['add']) ? 'add' : 'remove')] == $currentUser->id()) {
|
2015-06-20 16:06:07 +00:00
|
|
|
$renderData['page'] = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You can\'t be friends with yourself, stop trying to bend reality.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
2015-06-19 23:44:16 +00:00
|
|
|
}
|
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
// Compare time and session so we know the link isn't forged
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!isset($_REQUEST['time']) || $_REQUEST['time'] < time() - 1000) {
|
2015-06-20 16:06:07 +00:00
|
|
|
$renderData['page'] = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Timestamps differ too much, refresh the page and try again.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
2015-06-19 23:44:16 +00:00
|
|
|
}
|
2015-06-20 16:06:07 +00:00
|
|
|
|
|
|
|
// Match session ids for the same reason
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!isset($_REQUEST['session']) || $_REQUEST['session'] != session_id()) {
|
2015-06-20 16:06:07 +00:00
|
|
|
$renderData['page'] = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Invalid session, please try again.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Prevent
|
|
|
|
$continue = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Continue if nothing fucked up
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($continue) {
|
2015-06-20 16:06:07 +00:00
|
|
|
// Execute the action
|
2015-09-14 21:41:43 +00:00
|
|
|
$action = (isset($_REQUEST['add']) ?
|
2015-10-12 18:25:37 +00:00
|
|
|
$currentUser->addFriend($_REQUEST['add']) :
|
|
|
|
$currentUser->removeFriend($_REQUEST['remove'], true));
|
2015-06-20 16:06:07 +00:00
|
|
|
|
|
|
|
// Set the messages
|
|
|
|
$messages = [
|
2015-09-14 20:51:23 +00:00
|
|
|
'USER_NOT_EXIST' => 'The user you tried to add doesn\'t exist.',
|
|
|
|
'ALREADY_FRIENDS' => 'You are already friends with this person!',
|
|
|
|
'FRIENDS' => 'You are now mutual friends!',
|
|
|
|
'NOT_MUTUAL' => 'A friend request has been sent to this person.',
|
|
|
|
'ALREADY_REMOVED' => 'You aren\'t friends with this person.',
|
|
|
|
'REMOVED' => 'Removed this person from your friends list.',
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Notification strings
|
|
|
|
$notifStrings = [
|
2015-09-14 20:51:23 +00:00
|
|
|
'FRIENDS' => ['%s accepted your friend request!', 'You can now do mutual friend things!'],
|
|
|
|
'NOT_MUTUAL' => ['%s added you as a friend!', 'Click here to add them as well.'],
|
|
|
|
'REMOVED' => ['%s removed you from their friends.', 'You can no longer do friend things now ;_;'],
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Add page specific things
|
|
|
|
$renderData['page'] = [
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => $messages[$action[1]],
|
|
|
|
'success' => $action[0],
|
2015-06-20 16:06:07 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Create a notification
|
2015-09-14 20:51:23 +00:00
|
|
|
if (array_key_exists($action[1], $notifStrings)) {
|
2015-06-20 16:06:07 +00:00
|
|
|
// Get the current user's profile data
|
2015-11-07 22:58:02 +00:00
|
|
|
$user = new User($currentUser->id());
|
2015-06-20 16:06:07 +00:00
|
|
|
|
|
|
|
Users::createNotification(
|
|
|
|
$_REQUEST[(isset($_REQUEST['add']) ? 'add' : 'remove')],
|
2015-11-07 22:58:02 +00:00
|
|
|
sprintf($notifStrings[$action[1]][0], $user->username()),
|
2015-06-20 16:06:07 +00:00
|
|
|
$notifStrings[$action[1]][1],
|
|
|
|
60000,
|
2015-12-04 14:19:10 +00:00
|
|
|
'//' . Config::get('url_main') . '/a/' . $user->id(),
|
|
|
|
'//' . Config::get('url_main') . '/u/' . $user->id(),
|
2015-06-20 16:06:07 +00:00
|
|
|
'1'
|
|
|
|
);
|
|
|
|
}
|
2015-06-19 23:44:16 +00:00
|
|
|
}
|
2015-06-20 16:06:07 +00:00
|
|
|
|
|
|
|
// Print page contents or if the AJAX request is set only display the render data
|
2015-11-06 22:36:05 +00:00
|
|
|
if (isset($_REQUEST['ajax'])) {
|
|
|
|
echo $renderData['page']['message'] . '|' .
|
|
|
|
$renderData['page']['success'] . '|' .
|
|
|
|
$renderData['page']['redirect'];
|
|
|
|
} else {
|
|
|
|
// If not allowed print the restricted page
|
|
|
|
$template->setVariables($renderData);
|
|
|
|
|
|
|
|
// Print page contents
|
|
|
|
echo $template->render('global/information.tpl');
|
|
|
|
}
|
2015-06-19 23:44:16 +00:00
|
|
|
exit;
|
2015-09-14 20:51:23 +00:00
|
|
|
} elseif (isset($_POST['submit']) && isset($_POST['submit'])) {
|
2015-08-08 00:37:56 +00:00
|
|
|
$continue = true;
|
|
|
|
|
2015-09-05 16:11:04 +00:00
|
|
|
// Set redirector
|
|
|
|
$redirect = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $urls->format('SETTINGS_INDEX');
|
|
|
|
|
2015-08-08 00:37:56 +00:00
|
|
|
// Check if the user is logged in
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!Users::checkLogin() || !$continue) {
|
2015-08-08 00:37:56 +00:00
|
|
|
$renderData['page'] = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => '/authenticate',
|
|
|
|
'message' => 'You must be logged in to edit your settings.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-08-08 00:37:56 +00:00
|
|
|
];
|
|
|
|
|
2015-09-16 20:34:36 +00:00
|
|
|
$continue = false;
|
2015-08-08 00:37:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Check session variables
|
2015-09-14 21:41:43 +00:00
|
|
|
if (!isset($_REQUEST['timestamp'])
|
|
|
|
|| $_REQUEST['timestamp'] < time() - 1000
|
|
|
|
|| !isset($_REQUEST['sessid'])
|
|
|
|
|| $_REQUEST['sessid'] != session_id()
|
|
|
|
|| !$continue) {
|
2015-08-08 00:37:56 +00:00
|
|
|
$renderData['page'] = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Your session has expired, please refresh the page and try again.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-08-08 00:37:56 +00:00
|
|
|
];
|
|
|
|
|
2015-09-16 20:34:36 +00:00
|
|
|
$continue = false;
|
2015-08-08 00:37:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Change settings
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($continue) {
|
2015-08-08 00:37:56 +00:00
|
|
|
// Switch to the correct mode
|
2015-09-14 20:51:23 +00:00
|
|
|
switch ($_POST['mode']) {
|
2015-08-10 19:09:47 +00:00
|
|
|
// Avatar & Background
|
2015-08-09 18:26:01 +00:00
|
|
|
case 'avatar':
|
2015-08-10 19:09:47 +00:00
|
|
|
case 'background':
|
|
|
|
// Assign $_POST['mode'] to a $mode variable because I ain't typin that more than once
|
|
|
|
$mode = $_POST['mode'];
|
|
|
|
|
|
|
|
// Assign the correct userData key to a variable and correct title
|
2015-09-14 20:51:23 +00:00
|
|
|
switch ($mode) {
|
2015-08-10 19:09:47 +00:00
|
|
|
case 'background':
|
2015-09-14 20:51:23 +00:00
|
|
|
$userDataKey = 'profileBackground';
|
|
|
|
$msgTitle = 'Background';
|
2015-09-14 21:41:43 +00:00
|
|
|
$permission = (
|
2015-11-07 22:58:02 +00:00
|
|
|
!empty($currentUser->userData()[$userDataKey])
|
2015-09-14 21:41:43 +00:00
|
|
|
&& $currentUser->checkPermission('SITE', 'CHANGE_BACKGROUND')
|
|
|
|
) || $currentUser->checkPermission('SITE', 'CREATE_BACKGROUND');
|
2015-08-10 19:09:47 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case 'avatar':
|
|
|
|
default:
|
2015-09-14 20:51:23 +00:00
|
|
|
$userDataKey = 'userAvatar';
|
|
|
|
$msgTitle = 'Avatar';
|
|
|
|
$permission = $currentUser->checkPermission('SITE', 'CHANGE_AVATAR');
|
2015-08-21 22:07:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the user has the permissions to go ahead
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!$permission) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You are not allowed to alter your ' . strtolower($msgTitle) . '.',
|
|
|
|
'success' => 0,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
break;
|
2015-08-10 19:09:47 +00:00
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
|
|
|
|
// Set path variables
|
2015-12-04 14:19:10 +00:00
|
|
|
$filepath = ROOT . Config::get('user_uploads') . '/';
|
2015-11-07 22:58:02 +00:00
|
|
|
$filename = $filepath . $mode . '_' . $currentUser->id();
|
|
|
|
$currfile = isset($currentUser->userData()[$userDataKey])
|
2015-11-08 22:27:42 +00:00
|
|
|
&& !empty($currentUser->userData()[$userDataKey]) ? $currentUser->userData()[$userDataKey] : null;
|
2015-08-09 18:26:01 +00:00
|
|
|
|
|
|
|
// Check if $_FILES is set
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!isset($_FILES[$mode]) && empty($_FILES[$mode])) {
|
2015-08-09 18:26:01 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'No file was uploaded.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the upload went properly
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($_FILES[$mode]['error'] !== UPLOAD_ERR_OK && $_FILES[$mode]['error'] !== UPLOAD_ERR_NO_FILE) {
|
2015-08-09 18:26:01 +00:00
|
|
|
// Get the error in text
|
2015-09-14 20:51:23 +00:00
|
|
|
switch ($_FILES[$mode]['error']) {
|
2015-08-09 18:26:01 +00:00
|
|
|
case UPLOAD_ERR_INI_SIZE:
|
|
|
|
case UPLOAD_ERR_FORM_SIZE:
|
|
|
|
$msg = 'The uploaded file exceeds the maximum filesize!';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case UPLOAD_ERR_PARTIAL:
|
|
|
|
$msg = 'The upload was interrupted!';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case UPLOAD_ERR_NO_TMP_DIR:
|
|
|
|
case UPLOAD_ERR_CANT_WRITE:
|
|
|
|
$msg = 'Unable to save file to temporary location, contact the administrator!';
|
|
|
|
break;
|
|
|
|
|
|
|
|
case UPLOAD_ERR_EXTENSION:
|
|
|
|
default:
|
|
|
|
$msg = 'An unknown exception occurred!';
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => $msg,
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Check if we're not in removal mode
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($_FILES[$mode]['error'] != UPLOAD_ERR_NO_FILE) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Get the meta data
|
|
|
|
$metadata = getimagesize($_FILES[$mode]['tmp_name']);
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Check if the image is actually an image
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($metadata == false) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Uploaded file is not an image.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
break;
|
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Check if the image is an allowed filetype
|
2015-09-14 21:41:43 +00:00
|
|
|
if ((($metadata[2] !== IMAGETYPE_GIF)
|
|
|
|
&& ($metadata[2] !== IMAGETYPE_JPEG)
|
|
|
|
&& ($metadata[2] !== IMAGETYPE_PNG))) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'This filetype is not allowed.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
break;
|
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Check if the image is too large
|
2015-12-04 14:19:10 +00:00
|
|
|
if (($metadata[0] > Config::get($mode . '_max_width')
|
|
|
|
|| $metadata[1] > Config::get($mode . '_max_height'))) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The resolution of this picture is too big.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
break;
|
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Check if the image is too small
|
2015-12-04 14:19:10 +00:00
|
|
|
if (($metadata[0] < Config::get($mode . '_min_width')
|
|
|
|
|| $metadata[1] < Config::get($mode . '_min_height'))) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The resolution of this picture is too small.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
break;
|
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Check if the file is too large
|
2015-12-04 14:19:10 +00:00
|
|
|
if ((filesize($_FILES[$mode]['tmp_name']) > Config::get($mode . '_max_fsize'))) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The filesize of this file is too large.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
}
|
|
|
|
|
2015-08-09 19:19:11 +00:00
|
|
|
// Delete old avatar
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($currfile && file_exists($currfile)) {
|
2015-08-09 19:19:11 +00:00
|
|
|
unlink($filepath . $currfile);
|
|
|
|
}
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($_FILES[$mode]['error'] != UPLOAD_ERR_NO_FILE) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Append extension to filename
|
|
|
|
$filename .= image_type_to_extension($metadata[2]);
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
if (!move_uploaded_file($_FILES[$mode]['tmp_name'], $filename)) {
|
2015-08-21 22:07:45 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Something went wrong, please try again.',
|
|
|
|
'success' => 0,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
|
|
|
}
|
2015-08-09 18:26:01 +00:00
|
|
|
|
2015-08-21 22:07:45 +00:00
|
|
|
// Create new array
|
|
|
|
$updated = [$userDataKey => basename($filename)];
|
|
|
|
} else {
|
|
|
|
// Remove entry
|
|
|
|
$updated = [$userDataKey => null];
|
2015-08-19 19:44:01 +00:00
|
|
|
}
|
|
|
|
|
2015-08-09 18:26:01 +00:00
|
|
|
// Update database
|
2015-11-08 22:27:42 +00:00
|
|
|
$currentUser->setUserData($updated);
|
2015-08-09 18:26:01 +00:00
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Updated your ' . strtolower($msgTitle) . '!',
|
|
|
|
'success' => 1,
|
2015-08-09 18:26:01 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
2015-08-08 00:37:56 +00:00
|
|
|
// Profile
|
|
|
|
case 'profile':
|
|
|
|
// Get profile fields and create storage var
|
|
|
|
$fields = Users::getProfileFields();
|
2015-09-14 20:51:23 +00:00
|
|
|
$store = [];
|
2015-08-08 00:37:56 +00:00
|
|
|
|
|
|
|
// Go over each field
|
2015-09-14 20:51:23 +00:00
|
|
|
foreach ($fields as $field) {
|
2015-08-08 00:37:56 +00:00
|
|
|
// Add to the store array
|
2015-10-10 21:17:50 +00:00
|
|
|
if (isset($_POST['profile_' . $field['field_identity']]) && !empty($_POST['profile_' . $field['field_identity']])) {
|
|
|
|
$store[$field['field_identity']] = $_POST['profile_' . $field['field_identity']];
|
2015-08-08 00:37:56 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Check if there's additional values we should keep in mind
|
2015-10-10 21:17:50 +00:00
|
|
|
if (isset($field['field_additional']) && !empty($field['field_additional'])) {
|
2015-08-08 00:37:56 +00:00
|
|
|
// Go over each additional value
|
2015-10-10 21:17:50 +00:00
|
|
|
foreach ($field['field_additional'] as $addKey => $addVal) {
|
2015-08-08 00:37:56 +00:00
|
|
|
// Add to the array
|
2015-09-14 21:41:43 +00:00
|
|
|
$store[$addKey] = (isset($_POST['profile_additional_' . $addKey])
|
|
|
|
|| !empty($_POST['profile_additional_' . $addKey])) ?
|
|
|
|
$_POST['profile_additional_' . $addKey] :
|
|
|
|
false;
|
2015-08-08 00:37:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update database
|
2015-11-08 22:27:42 +00:00
|
|
|
$currentUser->setUserData(['profileFields' => $store]);
|
2015-08-08 00:37:56 +00:00
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Your profile has been updated!',
|
|
|
|
'success' => 1,
|
2015-08-08 00:37:56 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
|
2015-09-08 21:57:33 +00:00
|
|
|
// Birthdays
|
2015-09-14 21:41:43 +00:00
|
|
|
if (isset($_POST['birthday_day'])
|
|
|
|
&& isset($_POST['birthday_month'])
|
|
|
|
&& isset($_POST['birthday_year'])) {
|
2015-09-08 21:57:33 +00:00
|
|
|
// Check if the values aren't fucked with
|
2015-09-14 21:41:43 +00:00
|
|
|
if ($_POST['birthday_day'] < 0
|
|
|
|
|| $_POST['birthday_day'] > 31
|
|
|
|
|| $_POST['birthday_month'] < 0
|
|
|
|
|| $_POST['birthday_month'] > 12
|
|
|
|
|| (
|
|
|
|
$_POST['birthday_year'] != 0
|
|
|
|
&& $_POST['birthday_year'] < (date("Y") - 100)
|
|
|
|
)
|
|
|
|
|| $_POST['birthday_year'] > date("Y")) {
|
2015-09-08 21:57:33 +00:00
|
|
|
$renderData['page']['message'] = 'Your birthdate is invalid.';
|
|
|
|
$renderData['page']['success'] = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the values aren't fucked with
|
2015-09-14 21:41:43 +00:00
|
|
|
if ((
|
|
|
|
$_POST['birthday_day'] < 1
|
|
|
|
&& $_POST['birthday_month'] > 0
|
|
|
|
)
|
|
|
|
|| (
|
|
|
|
$_POST['birthday_day'] > 0
|
|
|
|
&& $_POST['birthday_month'] < 1)
|
|
|
|
) {
|
2015-09-08 21:57:33 +00:00
|
|
|
$renderData['page']['message'] = 'Only setting a day or month is disallowed.';
|
|
|
|
$renderData['page']['success'] = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check if the values aren't fucked with
|
2015-09-14 21:41:43 +00:00
|
|
|
if ($_POST['birthday_year'] > 0
|
|
|
|
&& (
|
|
|
|
$_POST['birthday_day'] < 1
|
|
|
|
|| $_POST['birthday_month'] < 1
|
|
|
|
)
|
|
|
|
) {
|
2015-09-08 21:57:33 +00:00
|
|
|
$renderData['page']['message'] = 'Only setting a year is disallowed.';
|
|
|
|
$renderData['page']['success'] = 0;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2015-09-14 21:41:43 +00:00
|
|
|
$birthdate = implode(
|
|
|
|
'-',
|
|
|
|
[$_POST['birthday_year'], $_POST['birthday_month'], $_POST['birthday_day']]
|
|
|
|
);
|
2015-09-08 21:57:33 +00:00
|
|
|
|
|
|
|
Database::update('users', [
|
|
|
|
[
|
2015-10-10 21:17:50 +00:00
|
|
|
'user_birthday' => $birthdate,
|
2015-09-08 21:57:33 +00:00
|
|
|
],
|
|
|
|
[
|
2015-11-07 22:58:02 +00:00
|
|
|
'user_id' => [$currentUser->id(), '='],
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-09-08 21:57:33 +00:00
|
|
|
]);
|
|
|
|
}
|
2015-08-08 00:37:56 +00:00
|
|
|
break;
|
|
|
|
|
2015-09-16 20:34:36 +00:00
|
|
|
// Site Options
|
2015-08-21 22:07:45 +00:00
|
|
|
case 'options':
|
|
|
|
// Get profile fields and create storage var
|
|
|
|
$fields = Users::getOptionFields();
|
2015-09-14 20:51:23 +00:00
|
|
|
$store = [];
|
2015-08-21 22:07:45 +00:00
|
|
|
|
|
|
|
// Go over each field
|
2015-09-14 20:51:23 +00:00
|
|
|
foreach ($fields as $field) {
|
2015-08-23 22:08:36 +00:00
|
|
|
// Make sure the user has sufficient permissions to complete this action
|
2015-10-10 21:17:50 +00:00
|
|
|
if (!$currentUser->checkPermission('SITE', $field['option_permission'])) {
|
|
|
|
$store[$field['option_id']] = false;
|
2015-08-23 22:08:36 +00:00
|
|
|
continue;
|
2015-08-21 22:07:45 +00:00
|
|
|
}
|
|
|
|
|
2015-10-10 21:17:50 +00:00
|
|
|
$store[$field['option_id']] = isset($_POST['option_' . $field['option_id']])
|
|
|
|
&& !empty($_POST['option_' . $field['option_id']]) ?
|
|
|
|
$_POST['option_' . $field['option_id']] :
|
2015-09-14 21:41:43 +00:00
|
|
|
null;
|
2015-08-21 22:07:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Update database
|
2015-11-08 22:27:42 +00:00
|
|
|
$currentUser->setUserData(['userOptions' => $store]);
|
2015-08-21 22:07:45 +00:00
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Changed your options!',
|
|
|
|
'success' => 1,
|
2015-08-21 22:07:45 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
2015-09-16 20:34:36 +00:00
|
|
|
// Usertitle
|
|
|
|
case 'usertitle':
|
|
|
|
// Check permissions
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'CHANGE_USERTITLE')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to change your usertitle.',
|
|
|
|
'success' => 0,
|
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Check length
|
|
|
|
if (isset($_POST['usertitle']) ? (strlen($_POST['usertitle']) > 64) : false) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Your usertitle is too long.',
|
|
|
|
'success' => 0,
|
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update database
|
|
|
|
Database::update(
|
|
|
|
'users',
|
|
|
|
[
|
|
|
|
[
|
2015-10-10 21:17:50 +00:00
|
|
|
'user_title' => (isset($_POST['usertitle']) ? $_POST['usertitle'] : null),
|
2015-09-16 20:34:36 +00:00
|
|
|
],
|
|
|
|
[
|
2015-11-07 22:58:02 +00:00
|
|
|
'user_id' => [$currentUser->id(), '='],
|
2015-09-16 20:34:36 +00:00
|
|
|
],
|
|
|
|
]
|
|
|
|
);
|
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Updated your usertitle!',
|
|
|
|
'success' => 1,
|
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
2015-09-23 20:45:42 +00:00
|
|
|
// Username changing
|
|
|
|
case 'username':
|
|
|
|
// Check permissions
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'CHANGE_USERNAME')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to change your username.',
|
|
|
|
'success' => 0,
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Attempt username change
|
|
|
|
$userNameChange = $currentUser->setUsername(isset($_POST['username']) ? $_POST['username'] : '');
|
|
|
|
|
|
|
|
// Messages
|
|
|
|
$messages = [
|
|
|
|
'TOO_SHORT' => 'Your new name is too short!',
|
|
|
|
'TOO_LONG' => 'Your new name is too long!',
|
|
|
|
'TOO_RECENT' => 'The username you tried to use is reserved, try again later.',
|
|
|
|
'IN_USE' => 'Someone already has this username!',
|
|
|
|
'SUCCESS' => 'Successfully changed your username!',
|
|
|
|
];
|
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => $messages[$userNameChange[1]],
|
|
|
|
'success' => $userNameChange[0],
|
|
|
|
|
|
|
|
];
|
2015-09-26 16:12:42 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
// E-mail changing
|
|
|
|
case 'email':
|
|
|
|
// Check permissions
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'CHANGE_EMAIL')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to change your e-mail address.',
|
|
|
|
'success' => 0,
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Attempt e-mail change
|
|
|
|
$emailChange = $currentUser->setEMailAddress(isset($_POST['email']) ? $_POST['email'] : '');
|
|
|
|
|
|
|
|
// Messages
|
|
|
|
$messages = [
|
|
|
|
'INVALID' => 'Your e-mail isn\'t considered valid!',
|
|
|
|
'IN_USE' => 'This e-mail address has already been used!',
|
|
|
|
'SUCCESS' => 'Successfully changed your e-mail address!',
|
|
|
|
];
|
2015-09-23 20:45:42 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => $messages[$emailChange[1]],
|
|
|
|
'success' => $emailChange[0],
|
|
|
|
|
|
|
|
];
|
2015-09-23 20:45:42 +00:00
|
|
|
break;
|
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
// Password changing
|
|
|
|
case 'password':
|
|
|
|
// Check permissions
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'CHANGE_PASSWORD')) {
|
|
|
|
$renderData['page'] = [
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to change your password.',
|
|
|
|
'success' => 0,
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
];
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
break;
|
|
|
|
}
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
// Attempt password change
|
|
|
|
$passChange = $currentUser->setPassword(isset($_POST['oldpassword']) ? $_POST['oldpassword'] : '', isset($_POST['newpassword']) ? $_POST['newpassword'] : '', isset($_POST['newpasswordconfirm']) ? $_POST['newpasswordconfirm'] : '');
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
// Messages
|
|
|
|
$messages = [
|
|
|
|
'NO_LOGIN' => 'How are you even logged in right now?',
|
|
|
|
'INCORRECT_PASSWORD' => 'The password you provided is incorrect!',
|
|
|
|
'PASS_TOO_SHIT' => 'Your password isn\'t strong enough!',
|
|
|
|
'PASS_NOT_MATCH' => 'Your new passwords don\'t match!',
|
|
|
|
'SUCCESS' => 'Successfully changed your password!',
|
|
|
|
];
|
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => $messages[$passChange[1]],
|
|
|
|
'success' => $passChange[0],
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-09-26 16:12:42 +00:00
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
|
|
|
// Deactivation
|
|
|
|
case 'deactivate':
|
|
|
|
// Check permissions
|
|
|
|
if (!$currentUser->checkPermission('SITE', 'DEACTIVATE_ACCOUNT')) {
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'You aren\'t allowed to deactivate your own account.',
|
|
|
|
'success' => 0,
|
|
|
|
|
|
|
|
];
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Nothing happened.',
|
|
|
|
'success' => 1,
|
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
|
|
|
// Userpage
|
|
|
|
case 'userpage':
|
|
|
|
// Base64 encode the userpage
|
|
|
|
$userPage = base64_encode($_POST['userpage']);
|
|
|
|
|
|
|
|
// Update database
|
2015-11-08 22:31:52 +00:00
|
|
|
$currentUser->setUserData(['userPage' => $userPage]);
|
2015-09-26 16:12:42 +00:00
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Your userpage has been updated!',
|
|
|
|
'success' => 1,
|
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
2015-08-10 19:09:47 +00:00
|
|
|
|
2015-10-24 08:55:45 +00:00
|
|
|
// Signature
|
|
|
|
case 'signature':
|
|
|
|
// Base64 encode the signature
|
|
|
|
$signature = base64_encode($_POST['signature']);
|
|
|
|
|
|
|
|
// Update database
|
2015-11-08 22:31:52 +00:00
|
|
|
$currentUser->setUserData(['signature' => $signature]);
|
2015-10-24 08:55:45 +00:00
|
|
|
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'Your signature has been updated!',
|
|
|
|
'success' => 1,
|
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
2015-08-08 00:37:56 +00:00
|
|
|
// Fallback
|
|
|
|
default:
|
|
|
|
// Set render data
|
|
|
|
$renderData['page'] = [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'redirect' => $redirect,
|
|
|
|
'message' => 'The requested method does not exist.',
|
|
|
|
'success' => 0,
|
2015-08-08 00:37:56 +00:00
|
|
|
|
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Print page contents or if the AJAX request is set only display the render data
|
2015-11-06 22:36:05 +00:00
|
|
|
if (isset($_REQUEST['ajax'])) {
|
|
|
|
echo $renderData['page']['message'] . '|' .
|
|
|
|
$renderData['page']['success'] . '|' .
|
|
|
|
$renderData['page']['redirect'];
|
|
|
|
} else {
|
|
|
|
// If not allowed print the restricted page
|
|
|
|
$template->setVariables($renderData);
|
|
|
|
|
|
|
|
// Print page contents
|
|
|
|
echo $template->render('global/information.tpl');
|
|
|
|
}
|
2015-08-08 00:37:56 +00:00
|
|
|
exit;
|
2015-05-09 00:56:55 +00:00
|
|
|
}
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
if (Users::checkLogin()) {
|
2015-06-20 19:25:41 +00:00
|
|
|
// Settings page list
|
|
|
|
$pages = [
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-08-23 22:08:36 +00:00
|
|
|
'general' => [
|
|
|
|
|
|
|
|
'title' => 'General',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'home' => [
|
|
|
|
|
|
|
|
'title' => 'Home',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 21:41:43 +00:00
|
|
|
'Welcome to the Settings Panel.
|
|
|
|
From here you can monitor, view and update your profile and preferences.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'profile' => [
|
|
|
|
|
|
|
|
'title' => 'Edit Profile',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 21:41:43 +00:00
|
|
|
'These are the external account links etc.
|
|
|
|
on your profile, shouldn\'t need any additional explanation for this one.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'ALTER_PROFILE'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'options' => [
|
|
|
|
|
|
|
|
'title' => 'Site Options',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'These are a few personalisation options for the site while you\'re logged in.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
], /*,
|
|
|
|
'groups' => [
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'title' => 'Groups',
|
|
|
|
'description' => [
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'{{ user.colour }}'
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
|
|
|
'access' => $currentUser->checkPermission('SITE', 'JOIN_GROUPS'),
|
|
|
|
'menu' => true
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
]*/
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'friends' => [
|
|
|
|
|
|
|
|
'title' => 'Friends',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'listing' => [
|
|
|
|
|
|
|
|
'title' => 'Listing',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'Manage your friends.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'MANAGE_FRIENDS'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'requests' => [
|
|
|
|
|
|
|
|
'title' => 'Requests',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'Handle friend requests.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'MANAGE_FRIENDS'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'messages' => [
|
|
|
|
|
|
|
|
'title' => 'Messages',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'inbox' => [
|
|
|
|
|
|
|
|
'title' => 'Inbox',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'The list of messages you\'ve received.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'USE_MESSAGES'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'sent' => [
|
|
|
|
|
|
|
|
'title' => 'Sent',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'The list of messages you\'ve sent to other users.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'USE_MESSAGES'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'compose' => [
|
|
|
|
|
|
|
|
'title' => 'Compose',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'Write a new message.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'SEND_MESSAGES'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-09-06 01:04:55 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'read' => [
|
|
|
|
|
|
|
|
'title' => 'Read',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'Read a message.',
|
2015-09-06 01:04:55 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'access' => $currentUser->checkPermission('SITE', 'USE_MESSAGES'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => false,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'notifications' => [
|
|
|
|
|
|
|
|
'title' => 'Notifications',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'history' => [
|
|
|
|
|
|
|
|
'title' => 'History',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'The history of notifications that have been sent to you in the last month.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => !$currentUser->checkPermission('SITE', 'DEACTIVATED'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'appearance' => [
|
|
|
|
|
|
|
|
'title' => 'Appearance',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'avatar' => [
|
|
|
|
|
|
|
|
'title' => 'Avatar',
|
|
|
|
'description' => [
|
|
|
|
|
|
|
|
'Your avatar which is displayed all over the site and on your profile.',
|
2015-09-14 21:41:43 +00:00
|
|
|
'Maximum image size is {{ avatar.max_width }}x{{ avatar.max_height }},
|
|
|
|
minimum image size is {{ avatar.min_width }}x{{ avatar.min_height }},
|
|
|
|
maximum file size is {{ avatar.max_size_view }}.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CHANGE_AVATAR'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'background' => [
|
|
|
|
|
|
|
|
'title' => 'Background',
|
|
|
|
'description' => [
|
|
|
|
|
|
|
|
'The background that is displayed on your profile.',
|
2015-09-14 21:41:43 +00:00
|
|
|
'Maximum image size is {{ background.max_width }}x{{ background.max_height }},
|
|
|
|
minimum image size is {{ background.min_width }}x{{ background.min_height }},
|
|
|
|
maximum file size is {{ background.max_size_view }}.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-14 21:41:43 +00:00
|
|
|
'access' => (
|
2015-11-07 22:58:02 +00:00
|
|
|
isset($currentUser->userData()['profileBackground'])
|
2015-09-14 21:41:43 +00:00
|
|
|
&& $currentUser->checkPermission('SITE', 'CHANGE_BACKGROUND')
|
|
|
|
) || $currentUser->checkPermission('SITE', 'CREATE_BACKGROUND'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'userpage' => [
|
|
|
|
|
|
|
|
'title' => 'Userpage',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'The custom text that is displayed on your profile.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-14 21:41:43 +00:00
|
|
|
'access' => (
|
2015-11-07 22:58:02 +00:00
|
|
|
isset($currentUser->userData()['userPage'])
|
2015-09-14 21:41:43 +00:00
|
|
|
&& $currentUser->checkPermission('SITE', 'CHANGE_USERPAGE')
|
|
|
|
) || $currentUser->checkPermission('SITE', 'CREATE_USERPAGE'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-10-10 21:17:50 +00:00
|
|
|
'signature' => [
|
|
|
|
|
|
|
|
'title' => 'Signature',
|
|
|
|
'description' => [
|
|
|
|
|
|
|
|
'This signature is displayed at the end of all your posts (unless you choose not to show it).',
|
|
|
|
|
|
|
|
],
|
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CHANGE_SIGNATURE'),
|
|
|
|
'menu' => true,
|
|
|
|
|
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'account' => [
|
|
|
|
|
|
|
|
'title' => 'Account',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'email' => [
|
|
|
|
|
|
|
|
'title' => 'E-mail Address',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'You e-mail address is used for password recovery and stuff like that, we won\'t spam you ;).',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CHANGE_EMAIL'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'username' => [
|
|
|
|
|
|
|
|
'title' => 'Username',
|
|
|
|
'description' => [
|
|
|
|
|
|
|
|
'Probably the biggest part of your identity on a site.',
|
2015-09-14 20:51:23 +00:00
|
|
|
'<b>You can only change this once every 30 days so choose wisely.</b>',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CHANGE_USERNAME'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'usertitle' => [
|
|
|
|
|
2015-09-16 20:34:36 +00:00
|
|
|
'title' => 'Usertitle',
|
2015-08-23 22:08:36 +00:00
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'That little piece of text displayed under your username on your profile.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CHANGE_USERTITLE'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'password' => [
|
|
|
|
|
|
|
|
'title' => 'Password',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'Used to authenticate with the site and certain related services.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CHANGE_PASSWORD'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'ranks' => [
|
|
|
|
|
|
|
|
'title' => 'Ranks',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 21:41:43 +00:00
|
|
|
'Manage what ranks you\'re in and what is set as your main rank.
|
|
|
|
Your main rank is highlighted.
|
|
|
|
You get the permissions of all of the ranks you\'re in combined.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'ALTER_RANKS'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'advanced' => [
|
|
|
|
|
|
|
|
'title' => 'Advanced',
|
|
|
|
|
|
|
|
'modes' => [
|
|
|
|
|
|
|
|
'sessions' => [
|
|
|
|
|
|
|
|
'title' => 'Sessions',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 21:41:43 +00:00
|
|
|
'Session keys are a way of identifying yourself with the system without keeping
|
|
|
|
your password in memory.',
|
|
|
|
'If someone finds one of your session keys they could possibly compromise your account,
|
|
|
|
if you see any sessions here that shouldn\'t be here hit the Kill button to kill the
|
|
|
|
selected session.',
|
|
|
|
'If you get logged out after clicking one you\'ve most likely killed your current session,
|
|
|
|
to make it easier to avoid this from happening your current session is highlighted.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'MANAGE_SESSIONS'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'registrationkeys' => [
|
|
|
|
|
|
|
|
'title' => 'Registration Keys',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 21:41:43 +00:00
|
|
|
'Sometimes we activate the registration key system which means that users can only
|
|
|
|
register using your "referer" keys,this means we can keep unwanted people from registering.',
|
2015-09-14 20:51:23 +00:00
|
|
|
'Each user can generate 5 of these keys, bans and deactivates render these keys useless.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'CREATE_REGKEYS'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
|
|
|
'deactivate' => [
|
|
|
|
|
|
|
|
'title' => 'Deactivate Account',
|
|
|
|
'description' => [
|
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
'You can deactivate your account here if you want to leave :(.',
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
],
|
2015-09-06 01:04:55 +00:00
|
|
|
'access' => $currentUser->checkPermission('SITE', 'DEACTIVATE_ACCOUNT'),
|
2015-09-14 20:51:23 +00:00
|
|
|
'menu' => true,
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-23 22:08:36 +00:00
|
|
|
|
2015-09-14 20:51:23 +00:00
|
|
|
],
|
2015-08-21 22:07:45 +00:00
|
|
|
|
2015-06-20 19:25:41 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Current settings page
|
2015-09-14 21:41:43 +00:00
|
|
|
$category = isset($_GET['cat']) ? (
|
|
|
|
array_key_exists($_GET['cat'], $pages) ? $_GET['cat'] : false
|
|
|
|
) : array_keys($pages)[0];
|
2015-09-14 20:51:23 +00:00
|
|
|
$mode = false;
|
2015-09-03 19:44:14 +00:00
|
|
|
|
|
|
|
// Only continue setting mode if $category is true
|
2015-09-14 20:51:23 +00:00
|
|
|
if ($category) {
|
2015-09-14 21:41:43 +00:00
|
|
|
$mode = isset($_GET['mode']) && $category ? (
|
|
|
|
array_key_exists($_GET['mode'], $pages[$category]['modes']) ? $_GET['mode'] : false
|
|
|
|
) : array_keys($pages[$category]['modes'])[0];
|
2015-09-03 19:44:14 +00:00
|
|
|
}
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
// Not found
|
2015-09-14 21:41:43 +00:00
|
|
|
if (!$category
|
|
|
|
|| empty($category)
|
|
|
|
|| !$mode
|
|
|
|
|| empty($mode)
|
|
|
|
|| !$pages[$category]['modes'][$mode]['access']) {
|
2015-08-23 22:08:36 +00:00
|
|
|
header('HTTP/1.0 404 Not Found');
|
2015-11-06 22:30:37 +00:00
|
|
|
|
|
|
|
// Set parse variables
|
|
|
|
$template->setVariables($renderData);
|
|
|
|
|
|
|
|
// Print page contents
|
|
|
|
echo $template->render('global/notfound.tpl');
|
2015-08-23 22:08:36 +00:00
|
|
|
exit;
|
|
|
|
}
|
2015-06-20 19:25:41 +00:00
|
|
|
|
|
|
|
// Render data
|
2015-09-14 20:51:23 +00:00
|
|
|
$renderData['current'] = $category . '.' . $mode;
|
2015-08-23 22:08:36 +00:00
|
|
|
|
|
|
|
// Settings pages
|
|
|
|
$renderData['pages'] = $pages;
|
|
|
|
|
|
|
|
// Page data
|
2015-06-20 19:25:41 +00:00
|
|
|
$renderData['page'] = [
|
2015-09-14 20:51:23 +00:00
|
|
|
'category' => $pages[$category]['title'],
|
|
|
|
'mode' => $pages[$category]['modes'][$mode]['title'],
|
|
|
|
'description' => $pages[$category]['modes'][$mode]['description'],
|
2015-06-20 19:25:41 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
// Section specific
|
2015-09-14 20:51:23 +00:00
|
|
|
switch ($category . '.' . $mode) {
|
2015-06-27 11:03:11 +00:00
|
|
|
// Profile
|
2015-08-23 22:08:36 +00:00
|
|
|
case 'general.profile':
|
2015-06-27 11:03:11 +00:00
|
|
|
$renderData['profile'] = [
|
2015-09-14 20:51:23 +00:00
|
|
|
'fields' => Users::getProfileFields(),
|
|
|
|
'months' => [
|
|
|
|
1 => 'January',
|
|
|
|
2 => 'February',
|
|
|
|
3 => 'March',
|
|
|
|
4 => 'April',
|
|
|
|
5 => 'May',
|
|
|
|
6 => 'June',
|
|
|
|
7 => 'July',
|
|
|
|
8 => 'August',
|
|
|
|
9 => 'September',
|
|
|
|
10 => 'October',
|
|
|
|
11 => 'November',
|
|
|
|
12 => 'December',
|
|
|
|
],
|
2015-08-21 22:07:45 +00:00
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
|
|
|
// Options
|
2015-08-23 22:08:36 +00:00
|
|
|
case 'general.options':
|
2015-08-21 22:07:45 +00:00
|
|
|
$renderData['options'] = [
|
2015-09-14 20:51:23 +00:00
|
|
|
'fields' => Users::getOptionFields(),
|
2015-06-27 11:03:11 +00:00
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
2015-08-23 22:08:36 +00:00
|
|
|
// PM inbox
|
|
|
|
case 'messages.inbox':
|
2015-11-10 20:03:29 +00:00
|
|
|
$renderData['messages'] = [];
|
2015-08-23 22:08:36 +00:00
|
|
|
break;
|
|
|
|
|
2015-06-20 19:25:41 +00:00
|
|
|
// Notification history
|
2015-08-23 22:08:36 +00:00
|
|
|
case 'notifications.history':
|
2015-11-15 21:43:39 +00:00
|
|
|
$renderData['alerts'] = array_reverse(Users::getNotifications(null, 0, false, true));
|
2015-06-20 19:25:41 +00:00
|
|
|
break;
|
2015-06-19 16:12:44 +00:00
|
|
|
|
2015-08-23 22:08:36 +00:00
|
|
|
// Avatar and background sizes
|
|
|
|
case 'appearance.avatar':
|
|
|
|
case 'appearance.background':
|
|
|
|
$renderData[$mode] = [
|
2015-12-04 14:19:10 +00:00
|
|
|
'max_width' => Config::get($mode . '_max_width'),
|
|
|
|
'max_height' => Config::get($mode . '_max_height'),
|
|
|
|
'min_width' => Config::get($mode . '_min_width'),
|
|
|
|
'min_height' => Config::get($mode . '_min_height'),
|
|
|
|
'max_size' => Config::get($mode . '_max_fsize'),
|
|
|
|
'max_size_view' => Main::getByteSymbol(Config::get($mode . '_max_fsize')),
|
2015-08-23 22:08:36 +00:00
|
|
|
];
|
|
|
|
break;
|
|
|
|
|
2015-10-24 08:55:45 +00:00
|
|
|
// User page
|
2015-08-23 22:08:36 +00:00
|
|
|
case 'appearance.userpage':
|
2015-11-07 22:58:02 +00:00
|
|
|
$renderData['userPage'] = isset($currentUser->userData()['userPage']) ? base64_decode($currentUser->userData()['userPage']) : '';
|
2015-08-23 22:08:36 +00:00
|
|
|
break;
|
2015-09-16 20:34:36 +00:00
|
|
|
|
2015-10-24 08:55:45 +00:00
|
|
|
// Signature
|
|
|
|
case 'appearance.signature':
|
2015-11-07 22:58:02 +00:00
|
|
|
$renderData['signature'] = isset($currentUser->userData()['signature']) ? base64_decode($currentUser->userData()['signature']) : '';
|
2015-10-24 08:55:45 +00:00
|
|
|
break;
|
|
|
|
|
2015-09-16 20:34:36 +00:00
|
|
|
// Username changing
|
|
|
|
case 'account.username':
|
2015-09-23 20:45:42 +00:00
|
|
|
$renderData['difference'] = $currentUser->getUsernameHistory() ? Main::timeElapsed($currentUser->getUsernameHistory()[0]['change_time']) : 0;
|
2015-09-16 20:34:36 +00:00
|
|
|
break;
|
2015-06-20 19:25:41 +00:00
|
|
|
}
|
|
|
|
|
2015-11-06 22:30:37 +00:00
|
|
|
// Set parse variables
|
|
|
|
$template->setVariables($renderData);
|
|
|
|
|
2015-06-20 19:25:41 +00:00
|
|
|
// Print page contents
|
2015-11-06 22:30:37 +00:00
|
|
|
echo $template->render('main/settings.tpl');
|
2015-06-20 19:25:41 +00:00
|
|
|
} else {
|
2015-09-07 20:53:47 +00:00
|
|
|
// If not allowed print the restricted page
|
2015-11-06 22:30:37 +00:00
|
|
|
$template->setVariables($renderData);
|
|
|
|
|
|
|
|
// Print page contents
|
|
|
|
echo $template->render('global/restricted.tpl');
|
2015-06-20 19:25:41 +00:00
|
|
|
}
|