Archived
1
0
This repository has been archived on 2020-12-10. You can view files and clone it, but cannot push or open issues or pull requests.
old/application/controllers/User.php

705 lines
35 KiB
PHP
Raw Normal View History

2018-10-16 16:28:42 +00:00
<?php
2018-12-30 17:52:30 +00:00
defined('BASEPATH') OR exit('No direct script access allowed');
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
use Coduo\PHPHumanizer\DateTimeHumanizer;
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
class User extends MY_Controller
2018-10-27 10:08:54 +00:00
{
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function __construct()
{
parent::__construct('profile', 'language_names', 'country_names');
$this->load->model('UserModel', '', TRUE);
$this->load->model('PostsModel', '', TRUE);
$this->load->model('FileModel', '', TRUE);
}
public function index($user = "")
{
if ($user == "") {
$title = "Error - Profile";
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
} else {
$userData = $this->UserModel->getUser($user);
$userExists = !empty($userData);
if ($userExists) {
$userData = $userData[0];
$userStats = $this->UserModel->getUserStats($userData['ID']);
$userPosts = $this->PostsModel->getUserPosts($userData['ID'], 3, 0, 192);
$userComments = $this->UserModel->getUserComments($userData['ID'], 3, 0);
$userBlogPosts = $this->UserModel->getUserBlogPosts($userData['ID'], 3, 0);
$dateCreated = strtotime($userData['dateCreated']);
$userData['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
$title = $userData['displayname'] . " - Profile";
2018-12-30 17:52:30 +00:00
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $userData['ID']);
2018-12-30 17:52:30 +00:00
$_SESSION['currentProfilePage'] = $userData['ID'];
2018-12-30 17:52:30 +00:00
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
}
}
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
if (isset($message)) {
$this->load->view('network/message', $message);
}
if (isset($userData) && isset($userStats) && isset($userPosts) && isset($userComments) && isset($userBlogPosts)) {
$this->load->view('network/user/profile_page', ['data' => $userData, 'stats' => $userStats, 'posts' => $userPosts, 'comments' => $userComments, 'blog_posts' => $userBlogPosts, 'isCurrentUserFollowing' => $isCurrentUserFollowing]);
2018-12-30 17:52:30 +00:00
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js', 'comment-item.js']]);
2018-12-30 17:52:30 +00:00
}
public function comments($user = "")
{
if ($user == "") {
$title = "Error - Profile";
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
}
2018-10-16 16:28:42 +00:00
$user_data = $this->UserModel->getUser($user);
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['dateCreated']);
2018-12-30 17:52:30 +00:00
$user_data['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
2018-10-16 16:28:42 +00:00
$user_stats = $this->UserModel->getUserStats($user_data['ID']);
2018-12-30 17:52:30 +00:00
$title = $user_data['displayname'] . " - Blog-Kommentare";
2018-10-16 16:28:42 +00:00
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $user_data['ID']);
$_SESSION['currentProfilePage'] = $user_data['ID'];
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
}
2018-12-30 17:52:30 +00:00
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
if (isset($message)) {
$this->load->view('network/message', $message);
}
if ($user_exists) {
$this->load->view('network/blog/user_comments', ['data' => $user_data, 'stats' => $user_stats, 'isCurrentUserFollowing' => $isCurrentUserFollowing]);
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js', 'comment-item.js']]);
2018-12-30 17:52:30 +00:00
$this->load->view('network/blog/user_comments_end', ['data' => $user_data]);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function getComments()
{
$user = (int)$this->input->get('user');
$amount = (int)$this->input->get('amount');
$offset = (int)$this->input->get('offset') * $amount;
$user_comments = $this->UserModel->getUserComments($user, $amount, $offset);
$comment_user = $this->UserModel->getUserByID($user)[0];
foreach ($user_comments as $comment) {
$this->load->view('network/blog/comment_item', ['data' => $comment_user, 'c' => $comment]);
}
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
public function posts($user = "")
{
if ($user == "") {
redirect(base_url('user'));
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$user_data = $this->UserModel->getUser($user);
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['dateCreated']);
2018-12-30 17:52:30 +00:00
$user_data['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
$user_stats = $this->UserModel->getUserStats($user_data['ID']);
$title = $user_data['displayname'] . " - Posts";
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $user_data['ID']);
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$_SESSION['currentProfilePage'] = $user_data['ID'];
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
if (isset($message)) {
$this->load->view('network/message', $message);
}
if ($user_exists) {
$this->load->view('network/user/user_posts', ['data' => $user_data, 'stats' => $user_stats, 'isCurrentUserFollowing' => $isCurrentUserFollowing]);
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
$this->load->view('network/user/user_posts_end', ['data' => $user_data]);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function getPosts()
{
$user = (int)$this->input->get('user');
$amount = (int)$this->input->get('amount');
$offset = (int)$this->input->get('offset') * $amount;
$user_posts = $this->PostsModel->getUserPosts($user, $amount, $offset);
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
foreach ($user_posts as $post) {
$this->load->view('network/posts/post_item', $post);
}
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
public function blogposts($user = "")
{
if ($user == "") {
redirect(base_url('user'));
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$user_data = $this->UserModel->getUser($user);
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['dateCreated']);
2018-12-30 17:52:30 +00:00
$user_data['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
$user_stats = $this->UserModel->getUserStats($user_data['ID']);
$title = $user_data['displayname'] . " - Posts";
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $user_data['ID']);
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$_SESSION['currentProfilePage'] = $user_data['ID'];
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
if (isset($message)) {
$this->load->view('network/message', $message);
}
if ($user_exists) {
$this->load->view('network/blog/user_blog_posts', ['data' => $user_data, 'stats' => $user_stats, 'isCurrentUserFollowing' => $isCurrentUserFollowing]);
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
$this->load->view('network/blog/user_blog_posts_end', ['data' => $user_data]);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function getBlogPosts()
{
$user = (int)$this->input->get('user');
$amount = (int)$this->input->get('amount');
$offset = (int)$this->input->get('offset') * $amount;
$user_posts = $this->UserModel->getUserBlogPosts($user, $amount, $offset);
$post_user = $this->UserModel->getUserByID($user)[0];
foreach ($user_posts as $post) {
$this->load->view('network/blog/blog_post_item', ['data' => $post_user, 'post' => $post]);
}
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function uploadPostMedia()
{
if (!isset($_SESSION['user']) || empty($_SESSION['user']))
redirect(base_url());
if (empty($_FILES) || !isset($_FILES['postMedia']))
2018-12-30 17:52:30 +00:00
redirect(base_url());
header('Content-Type: application/json');
$file = $_FILES['postMedia'];
list('name' => $name, 'type' => $type) = $file;
switch (explode('/', $type)[0]) {
case 'video':
$path = $this->FileModel->uploadVideo('postMedia', 0, $name, 1920, $_SESSION['user']['username']);
$mediaType = 'video';
break;
case 'image':
$path = $this->FileModel->uploadImage('postMedia', 0, $name, 1920, $_SESSION['user']['username']);
$mediaType = 'image';
break;
default:
exit;
break;
}
echo json_encode(['success' => true, 'type' => $mediaType, 'path' => $path]);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
public function deletePostMedia()
{
2018-12-30 17:52:30 +00:00
if (!isset($_SESSION['user']) || empty($_SESSION['user']))
redirect(base_url());
if (empty($_POST) || !isset($_POST['path']))
2018-12-30 17:52:30 +00:00
redirect(base_url());
$url = $_POST['path'];
$filePath = $this->FileModel->getFilePath(substr($url, 3), $_SESSION['user']['ID']);
if ($filePath != null)
2018-12-30 17:52:30 +00:00
unlink($filePath);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function publishPost()
{
header('Content-Type: application/json');
2018-12-30 17:52:30 +00:00
if (!isset($_SESSION['user']) || empty($_SESSION['user'])) {
echo json_encode(['success' => false,
'title' => lang('post_error_login_title'),
2018-12-30 17:52:30 +00:00
'message' => lang('post_error_login_lines')
]);
exit;
}
$content = $this->input->post('content');
$content = trim($content);
if (strlen($content) >= 10000) {
echo json_encode(['success' => false,
'title' => lang('post_error_too_long_title'),
'message' => lang('post_error_too_long_lines')
]);
exit;
}
2018-10-16 16:28:42 +00:00
if (strlen($content) == 0 && empty($media)) {
echo json_encode(['success' => false,
'title' => lang('post_error_no_content_title'),
'message' => lang('post_error_no_content_lines')
]);
exit;
}
2018-10-16 16:28:42 +00:00
$replyTo = $this->input->post('replyTo');
if ($replyTo !== "-1" && !$this->PostsModel->isHashIDValid($replyTo)) {
echo json_encode(['success' => false,
'title' => lang('post_error_reply_title'),
'message' => lang('post_error_reply_lines')
]);
exit;
}
if ($replyTo !== "-1") {
$postID = $this->PostsModel->addReply($_SESSION['user']['ID'], $content, $replyTo);
} else {
$postID = $this->PostsModel->addPost($_SESSION['user']['ID'], $content);
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$media = $this->input->post('postMedia');
if (!empty($media)) {
$allowedMedia = [];
foreach ($media as $entry) {
$name = substr($entry['path'], 3);
$file = $this->FileModel->getFileID($name, $_SESSION['user']['ID']);
if (empty($file)) {
continue;
}
$fileID = $file[0]['ID'];
if ($entry['type'] === 'video' || $entry['type'] === 'audio') {
$allowedMedia = [
[
'type' => $entry['type'],
'fileID' => $fileID
]
];
break;
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
if (sizeof($allowedMedia) < 4) {
$allowedMedia[] = [
'type' => $entry['type'],
'fileID' => $fileID
];
} else {
break;
}
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
foreach ($allowedMedia as $entry) {
$this->PostsModel->addMediaToPost($postID, $entry['type'], $entry['fileID']);
}
2018-10-16 16:28:42 +00:00
}
echo json_encode(['success' => true,
'title' => lang('post_success_title'),
'message' => lang('post_success_lines'),
'buttons' => [
[
'type' => 'default',
'text' => lang('post_success_no')
],
[
'type' => 'primary',
'action' => base_url('user/' . $_SESSION['user']['username'] . '/posts'),
'text' => lang('post_success_yes')
]
]
]);
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
public function followers($user = "")
{
if ($user == "") {
$title = "Error - Profile";
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$user_data = $this->UserModel->getUser($user);
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['dateCreated']);
2018-12-30 17:52:30 +00:00
$user_data['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
$user_stats = $this->UserModel->getUserStats($user_data['ID']);
$followers = $this->UserModel->getFollowers($user_data['ID']);
$title = $user_data['displayname'] . " - Follower";
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $user_data['ID']);
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$_SESSION['currentProfilePage'] = $user_data['ID'];
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
if (isset($message)) {
$this->load->view('network/message', $message);
}
if ($user_exists) {
$this->load->view('network/user/user_followers', ['data' => $user_data, 'active' => 'followers', 'stats' => $user_stats, 'isCurrentUserFollowing' => $isCurrentUserFollowing, 'followers' => $followers]);
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
public function following($user = "")
{
if ($user == "") {
$title = "Error - Profile";
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$user_data = $this->UserModel->getUser($user);
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['dateCreated']);
2018-12-30 17:52:30 +00:00
$user_data['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
$user_stats = $this->UserModel->getUserStats($user_data['ID']);
$following = $this->UserModel->getFollowing($user_data['ID']);
$title = $user_data['displayname'] . " - Follower";
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $user_data['ID']);
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$_SESSION['currentProfilePage'] = $user_data['ID'];
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
}
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
if (isset($message)) {
$this->load->view('network/message', $message);
}
if ($user_exists) {
$this->load->view('network/user/user_followers', ['data' => $user_data, 'active' => 'following', 'stats' => $user_stats, 'isCurrentUserFollowing' => $isCurrentUserFollowing, 'followers' => $following]);
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function switchFollowing()
{
header('Content-Type: application/json');
if (!isset($_SESSION['currentProfilePage'])) {
$response = ['type' => 'error', 'code' => -1];
echo json_encode($response);
exit;
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$followedUser = $_SESSION['currentProfilePage'];
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
// code 0: not logged in
// code 1: same user
// code 10: unfollowed
// code 11: now following
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
if (!isset($_SESSION['user']['username'])) {
$response = ['type' => 'error', 'code' => 0];
echo json_encode($response);
exit;
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$follower = $_SESSION['user']['ID'];
if ($follower == $followedUser) {
$response = ['type' => 'error', 'code' => 1];
echo json_encode($response);
exit;
}
if ($this->UserModel->isFollowing($follower, $followedUser)) {
$this->UserModel->unfollow($follower, $followedUser);
$response = ['type' => 'success', 'code' => 10];
echo json_encode($response);
exit;
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$this->UserModel->follow($follower, $followedUser);
$response = ['type' => 'success', 'code' => 11];
2018-10-27 10:08:54 +00:00
echo json_encode($response);
exit;
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
public function edit($user = "")
{
if ($user == "") {
redirect(base_url('user'));
}
2018-10-27 10:08:54 +00:00
2018-12-30 17:52:30 +00:00
$user_data = $this->UserModel->getUser($user);
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
// Update Settings
$newData = [];
// TODO: Error messages
foreach ($_POST as $key => $item) {
if (isset($user_data[$key]) && $user_data[$key] == $item) {
unset($_POST[$key]);
}
}
2018-12-30 17:52:30 +00:00
// Username
if (isset($_POST['username'])) {
if (!preg_match('/[^A-Za-z0-9._]/', $_POST['username'])) {
if ($this->LoginModel->isAvailable($_POST['username'])) {
if (strlen($_POST['username']) >= 4) {
$newData['username'] = strtolower($_POST['username']);
$newData['displayname'] = $_POST['username'];
} else {
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Zu kurzer Nutzername!</b> Dein Name muss 4 Zeichen oder mehr enthalten.</div>";
}
2018-10-16 16:28:42 +00:00
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Nutzername bereits vergeben!</b> Ein anderer Nutzer hat anscheinend diesen Namen bereits gewählt.</div>";
2018-10-16 16:28:42 +00:00
}
} else {
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Ungültiger Nutzername!</b> Dein Name darf nur Groß- (A-Z) und Kleinbuchstaben (a-z), Zahlen (0-9) und Punkte (.) sowie Unterstriche (_) enthalten.</div>";
2018-10-16 16:28:42 +00:00
}
}
2018-12-30 17:52:30 +00:00
// Gender
if (isset($_POST['gender'])) {
if ($_POST['gender'] == "male" || $_POST['gender'] == "female" || $_POST['gender'] == 'other') {
$newData['gender'] = $_POST['gender'];
}
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
// Birth date
if (isset($_POST['birthdate-day']) && isset($_POST['birthdate-month'])) {
$day = intval($_POST['birthdate-day']);
$month = intval($_POST['birthdate-month']);
if ($month > 0 && $month <= 12) {
$monthDayCount = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if ($day <= $monthDayCount[$month - 1]) {
$newData['birthdate'] = $day . '.' . $month . '.';
}
2018-10-16 16:28:42 +00:00
}
}
2018-12-30 17:52:30 +00:00
if (isset($_POST['birthdate-year'])) {
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
}
// Language
if (isset($_POST['language'])) {
$newData['language'] = $_POST['language'];
}
// Country
if (isset($_POST['country'])) {
$newData['country'] = $_POST['country'];
}
// Biography/About
if (isset($_POST['about'])) {
$newData['about'] = trim($_POST['about']);
2018-12-30 17:52:30 +00:00
}
// Avatar
if (isset($_FILES['avatar'])) {
$image = $this->FileModel->uploadCroppedImage('avatar', 4096, $_FILES['avatar']['name'], 500, 500);
if ($image != null)
$newData['profilePicture'] = $image;
2018-12-30 17:52:30 +00:00
unset($_FILES['avatar']);
}
// Header
if (isset($_FILES['header'])) {
$image = $this->FileModel->uploadImage('header', 4096, $_FILES['header']['name'], 1920);
if ($image != null)
$newData['headerImage'] = $image;
2018-12-30 17:52:30 +00:00
unset($_FILES['header']);
}
// Social Networks
if (isset($_POST['sociaNetworks'])) {
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
}
// Profile color
if (isset($_POST['color'])) {
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
}
// E-Mail-Address
if (isset($_POST['email'])) {
if (isset($_POST['email-password']) && !empty($_POST['email-password'])) {
$loginData = $this->LoginModel->getLoginData($_SESSION['user']['username']);
if (empty($loginData)) {
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Ungültiger Account</b> Anscheinend versuchst du die E-Mail-Adresse eines nicht existierenden Accounts zu ändern. Sollte es sich um einen Fehler handeln, kontaktiere bitte das Website-Team!</div>";
} else {
$loginData = $loginData[0];
$encryptedPassword = $this->LoginModel->getPasswordHash($_POST['email-password'], $loginData['original_name']);
if ($loginData['password'] == $encryptedPassword) {
$isRegistered = $this->LoginModel->isRegistered($_POST['email']);
if ($isRegistered == "") {
$trashMail = $this->LoginModel->isTrashMail($_POST['email']);
if ($trashMail == '') {
$this->LoginModel->changeMailAddress($_POST['email'], $loginData['username']);
$_SESSION['profileEditNotification'] .= "<div class='alert alert-warning' role='alert'><b>Deine E-Mail-Adresse wurde geändert!</b> Nun musst du nur noch in deinem Postfach vorbeischauen und die neue Adresse aktivieren.</div>";
} else {
$_SESSION['profileEditNotification'] .= $trashMail;
}
2018-10-16 16:28:42 +00:00
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= $isRegistered;
2018-10-16 16:28:42 +00:00
}
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Ungültiges Passwort!</b> Es scheint als wäre das eingegebene Passwort nicht mit dem richtigen übereinstimmend.</div>";
2018-10-16 16:28:42 +00:00
}
}
2018-12-30 17:52:30 +00:00
} else {
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Bitte gib dein Passwort ein!</b> Das Ändern der E-Mail-Adresse ist ein tiefgreifender Eingriff in den Account. Daher benötigen wir zur Sicherheit nochmal dein Passwort.</div>";
2018-10-16 16:28:42 +00:00
}
}
2018-12-30 17:52:30 +00:00
// Notifications
if (isset($_POST['email-notifications'])) {
$newData['receiveEmails'] = filter_var($_POST['email-notifications'], FILTER_VALIDATE_BOOLEAN);
}
2018-12-30 17:52:30 +00:00
// Newsletter
if (isset($_POST['newsletter'])) {
$newData['receiveNewsletter'] = filter_var($_POST['newsletter'], FILTER_VALIDATE_BOOLEAN);
}
2018-12-30 17:52:30 +00:00
// Password
if (isset($_POST['passwordNew'])) {
if (isset($_POST['passwordOld'])) {
$loginData = $this->LoginModel->getLoginData($_SESSION['user']['username']);
if (!empty($loginData)) {
$loginData = $loginData[0];
$encryptedPassword = $this->LoginModel->getPasswordHash($_POST['passwordOld'], $loginData['original_name']);
if ($encryptedPassword == $loginData['password']) {
if ($this->LoginModel->checkPassword($_POST['passwordNew'])) {
if (isset($_POST['passwordNewRepeat']) && $_POST['passwordNew'] == $_POST['passwordNewRepeat']) {
$this->LoginModel->changePassword($_POST['passwordNew'], $loginData['original_name']);
$_SESSION['profileEditNotification'] .= "<div class='alert alert-success' role='alert'><b>Dein Passwort wurde geändert!</b> Du kannst dich nun damit einloggen</div>";
} else {
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Wiederholtes Passwort falsch!</b> Das Passwort, das du wiederholt hast, stimmt nicht mit dem eigentlichen überein.</div>";
}
2018-10-16 16:28:42 +00:00
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Zu unsicheres Passwort!</b> Dein Passwort sollte mindest 8 Zeichen lang sein und jeweils einen Groß-, einen Kleinbuchstaben, eine Zahl und ein Sonderzeichen enthalten.</div>";
2018-10-16 16:28:42 +00:00
}
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Altes Passwort falsch!</b> Dein altes eingegebenes Passwort ist falsch!</div>";
2018-10-16 16:28:42 +00:00
}
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Ungültiger Account</b> Anscheinend versuchst du die E-Mail-Adresse eines nicht existierenden Accounts zu ändern. Sollte es sich um einen Fehler handeln, kontaktiere bitte das Website-Team!</div>";
2018-10-16 16:28:42 +00:00
}
} else {
2018-12-30 17:52:30 +00:00
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Altes Passwort fehlend!</b> Bitte gib dein altes Passwort ebenfalls ein!</div>";
2018-10-16 16:28:42 +00:00
}
}
2018-12-30 17:52:30 +00:00
if (isset($_POST['showAds'])) {
if ($this->hasPermission('user.disableAds')) {
$newData['showAds'] = filter_var($_POST['email-notifications'], FILTER_VALIDATE_BOOLEAN);
} else {
$_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Du bist dazu nicht berechtigt!</b> Um diese Einstellung zu verändern, musst du mindestens ein Premium-Nutzer oder höher sein!</div>";
}
}
if (!empty($newData)) {
// Add entry to history
unset($user_data['rankName']);
unset($_SESSION['user']);
$this->UserModel->insertIntoHistory($newData);
2018-12-30 17:52:30 +00:00
// Update profile
$this->UserModel->updateProfile($newData, $user_data['ID']);
$this->db->cache_delete('user', $user_data['username']);
$this->LoginModel->reloadLoginSession($user_data);
redirect(base_url(uri_string()));
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
$user_stats = $this->UserModel->getUserStats($user_data['ID']);
$title = $user_data['displayname'] . ' - Profil bearbeiten';
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
$this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['lib/selectize.css', 'lib/selectize.bootstrap3.css', 'lib/bootstrap-colorpicker.min.css', 'profile_page.css']]);
$editMessage = isset($_SESSION['profileEditNotification']) ? $_SESSION['profileEditNotification'] : "";
$_SESSION['profileEditNotification'] = "";
if (isset($message)) {
$this->load->view('network/message', $message);
}
if ($user_exists) {
$this->load->view('network/user/profile_edit', ['message' => $editMessage, 'data' => $user_data, 'stats' => $user_stats]);
}
$this->load->view('footer', ['additionalScripts' => ['lib/selectize.js', 'lib/bootstrap-colorpicker.min.js', 'profile_page.js', 'profile_edit.js']]);
2018-10-16 16:28:42 +00:00
}
2018-12-30 17:52:30 +00:00
public function single_post($username = null, $uuid = null, $origin = null)
{
$origin = isset($_GET['o']) ? $_GET['o'] : null;
if ($origin == null) {
$origin = base_url('user/' . $username);
} else {
$origin = base64_decode(urldecode($origin));
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$this->load->view('header', ['active' => 'profile', 'title' => 'Test']);
$this->load->view('network/posts/user_post_page', ['origin' => $origin, 'username' => $username, 'uuid' => $uuid]);
$this->load->view('footer', ['additionalScripts' => ['single-post-page.js']]);
2018-10-27 10:08:54 +00:00
}
2018-10-16 16:28:42 +00:00
public function single_post_data($username = null, $hashID = null)
2018-12-30 17:52:30 +00:00
{
if ($username == null) {
echo '<div class="alert alert-danger" role="alert"><b>Es wurde kein Nutzer angegeben!</b> Es können keine Posts von einem undefinierten Nutzer gefunden werden.</div>';
exit;
2018-12-30 17:52:30 +00:00
}
if ($hashID == null) {
echo '<div class="alert alert-danger" role="alert"><b>Es wurde keine Post-ID angegeben!</b> Es können keine undefinierten Posts gefunden werden.</div>';
exit;
2018-12-30 17:52:30 +00:00
}
2018-10-16 16:28:42 +00:00
2018-12-30 17:52:30 +00:00
$user = $this->UserModel->getUser($username);
if (empty($user)) {
echo '<div class="alert alert-warning" role="alert"><b>Es wurde kein Nutzer mit dem angegebenen Namen gefunden!</b> Vielleicht kannst du ja diese Lücke füllen?</div>';
exit;
2018-12-30 17:52:30 +00:00
}
$user = $user[0];
2018-10-16 16:28:42 +00:00
$post = $this->PostsModel->getPostDetails($user['ID'], $hashID);
2018-12-30 17:52:30 +00:00
if (empty($post)) {
echo '<div class="alert alert-warning" role="alert"><b>Es wurde kein Post mit der angegebenen ID gefunden!</b> Vielleicht kannst du ja diesen neuen Content erschaffen?</div>';
exit;
2018-12-30 17:52:30 +00:00
}
$post = $post[0];
2018-10-27 10:08:54 +00:00
2018-12-30 17:52:30 +00:00
$replies = $this->PostsModel->getPostReplies($post['ID']);
2018-10-27 10:08:54 +00:00
2018-12-30 17:52:30 +00:00
display:
$this->load->view('network/posts/user_post_content', ['post' => $post, 'replies' => $replies]);
2018-10-27 10:08:54 +00:00
2018-12-30 17:52:30 +00:00
}
2018-10-16 16:28:42 +00:00
}