617 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			617 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
|     defined('BASEPATH') OR exit('No direct script access allowed');
 | |
| 
 | |
|     use Coduo\PHPHumanizer\DateTimeHumanizer;
 | |
| 
 | |
|     class User extends MY_Controller
 | |
|     {
 | |
| 
 | |
|         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 {
 | |
|                 $user_data = $this->UserModel->getUser($user);
 | |
|                 $user_exists = !empty($user_data);
 | |
|                 if ($user_exists) {
 | |
|                     $user_data = $user_data[0];
 | |
|                     $user_stats = $this->UserModel->getUserStats($user_data['ID']);
 | |
| 
 | |
|                     $user_posts = $this->PostsModel->getUserPosts($user_data['ID'], 3, 0, 192);
 | |
|                     $user_comments = $this->UserModel->getUserComments($user_data['ID'], 3, 0);
 | |
|                     $user_blog_posts = $this->UserModel->getUserBlogPosts($user_data['ID'], 3, 0);
 | |
| 
 | |
|                     $date_created = strtotime($user_data['date_created']);
 | |
|                     $user_data['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$date_created"), $_SESSION['site_lang']);
 | |
|                     $title = $user_data['displayname'] . " - Profile";
 | |
|                     $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";
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             $this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['profile_page.css']]);
 | |
|             if (isset($message)) {
 | |
|                 $this->load->view('network/message', $message);
 | |
|             }
 | |
|             if (isset($user_data) && isset($user_stats) && isset($user_posts) && isset($user_comments) && isset($user_blog_posts)) {
 | |
|                 $this->load->view('network/user/profile_page', ['data' => $user_data, 'stats' => $user_stats, 'posts' => $user_posts, 'comments' => $user_comments, 'blog_posts' => $user_blog_posts, 'isCurrentUserFollowing' => $isCurrentUserFollowing]);
 | |
|             }
 | |
|             $this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
 | |
|         }
 | |
| 
 | |
|         public function comments($user = "")
 | |
|         {
 | |
|             if ($user == "") {
 | |
|                 $title = "Error - Profile";
 | |
|                 $message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
 | |
|             }
 | |
| 
 | |
|             $user_data = $this->UserModel->getUser($user);
 | |
|             $user_exists = !empty($user_data);
 | |
|             if ($user_exists) {
 | |
|                 $user_data = $user_data[0];
 | |
|                 $dateCreated = strtotime($user_data['date_created']);
 | |
|                 $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'] . " - Blog-Kommentare";
 | |
|                 $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";
 | |
|             }
 | |
| 
 | |
| 
 | |
|             $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']]);
 | |
|             $this->load->view('network/blog/user_comments_end', ['data' => $user_data]);
 | |
|         }
 | |
| 
 | |
|         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]);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public function posts($user = "")
 | |
|         {
 | |
|             if ($user == "") {
 | |
|                 redirect(base_url('user'));
 | |
|             }
 | |
| 
 | |
|             $user_data = $this->UserModel->getUser($user);
 | |
|             $user_exists = !empty($user_data);
 | |
|             if ($user_exists) {
 | |
|                 $user_data = $user_data[0];
 | |
|                 $dateCreated = strtotime($user_data['date_created']);
 | |
|                 $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']);
 | |
| 
 | |
|                 $_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_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]);
 | |
|         }
 | |
| 
 | |
|         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);
 | |
| 
 | |
|             foreach ($user_posts as $post) {
 | |
|                 $this->load->view('network/posts/post_item', $post);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public function blogposts($user = "")
 | |
|         {
 | |
|             if ($user == "") {
 | |
|                 redirect(base_url('user'));
 | |
|             }
 | |
| 
 | |
|             $user_data = $this->UserModel->getUser($user);
 | |
|             $user_exists = !empty($user_data);
 | |
|             if ($user_exists) {
 | |
|                 $user_data = $user_data[0];
 | |
|                 $dateCreated = strtotime($user_data['date_created']);
 | |
|                 $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']);
 | |
| 
 | |
|                 $_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/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]);
 | |
|         }
 | |
| 
 | |
|         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]);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public function publishPost()
 | |
|         {
 | |
|             if (!isset($_SESSION['user']) || empty($_SESSION['user'])) {
 | |
|                 ?>
 | |
|                 <div class="alert alert-danger" role="alert">
 | |
|                     <b>Veröffentlichen des Posts fehlgeschlagen!</b>
 | |
|                     Du musst in deinen Account eingeloggt sein, um Posts erstellen zu können.<br>
 | |
| 
 | |
|                     Bitte erstelle dir entweder
 | |
|                     <a href="<?= base_url('login') ?>">kostenlos einen neuen Account</a>
 | |
|                     oder
 | |
|                     <a href="<?= base_url('login') ?>">melde dich an</a>
 | |
|                     .
 | |
|                 </div>
 | |
|                 <?php
 | |
|                 exit;
 | |
|             }
 | |
| 
 | |
|             $content = $this->input->post('content');
 | |
|             if (strlen($content) >= 10000) {
 | |
|                 ?>
 | |
|                 <div class="alert alert-warning" role="alert">
 | |
|                     <b>Veröffentlichung des Posts fehlgeschlagen!</b> Dein Post ist leider zu lang. Er darf maximal 10.000 Zeichen umfassen.
 | |
|                 </div>
 | |
|                 <?php
 | |
|                 exit;
 | |
|             }
 | |
| 
 | |
|             $replyTo = $this->input->post('replyTo');
 | |
|             if ($replyTo !== "-1" && !$this->PostsModel->isUUIDValid($replyTo)) {
 | |
|                 ?>
 | |
|                 <div class="alert alert-warning" role="alert">
 | |
|                     <b>Veröffentlichung des Posts fehlgeschlagen!</b> Der Post, an den du deine Antwort richten willst, existiert nicht (mehr).<br>
 | |
|                                                                       Solltest du dies für einen Fehler halten, versuche es später erneut oder kontaktiere uns.
 | |
|                 </div>
 | |
|                 <?php
 | |
|                 exit;
 | |
|             }
 | |
| 
 | |
|             $postID = -1;
 | |
|             if ($replyTo !== "-1") {
 | |
|                 $postID = $this->PostsModel->addReply($_SESSION['user']['ID'], $content, $replyTo);
 | |
|             } else {
 | |
|                 $postID = $this->PostsModel->addPost($_SESSION['user']['ID'], $content);
 | |
|             }
 | |
| 
 | |
|             $media = $this->input->post('postMedia');
 | |
|             if (!empty($media)) {
 | |
|                 foreach ($media as $entry) {
 | |
|                     $image = str_replace(' ', '+', $entry['image']);
 | |
|                     $image = substr($image, strpos($image, ',') + 1);
 | |
|                     $image = base64_decode($image);
 | |
| 
 | |
|                     $fileUrl = $this->FileModel->uploadFileByContent($image, $entry['name'], $entry['type'], $entry['size']);
 | |
| 
 | |
|                     $this->PostsModel->addImageToPost($postID, $fileUrl);
 | |
|                 }
 | |
| 
 | |
|                 ?>
 | |
|                 <div class="alert alert-success" role="alert">
 | |
|                     <b>Dein Post wurde erfolgreich veröffentlicht!</b> Möchtest du nun deine Posts ansehen? <br>
 | |
|                     <button type="button" class="btn btn-sm btn-default" data-dismiss="modal">Nein</button>
 | |
|                     <a href='<?= base_url('user/' . $_SESSION['user']['username'] . '/posts') ?>' class='btn btn-sm btn-primary'>Ja</a>
 | |
|                 </div>
 | |
|                 <?php
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public function followers($user = "")
 | |
|         {
 | |
|             if ($user == "") {
 | |
|                 $title = "Error - Profile";
 | |
|                 $message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
 | |
|             }
 | |
| 
 | |
|             $user_data = $this->UserModel->getUser($user);
 | |
|             $user_exists = !empty($user_data);
 | |
|             if ($user_exists) {
 | |
|                 $user_data = $user_data[0];
 | |
|                 $dateCreated = strtotime($user_data['date_created']);
 | |
|                 $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']);
 | |
| 
 | |
|                 $_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' => 'followers', 'stats' => $user_stats, 'isCurrentUserFollowing' => $isCurrentUserFollowing, 'followers' => $followers]);
 | |
|             }
 | |
|             $this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
 | |
|         }
 | |
| 
 | |
|         public function following($user = "")
 | |
|         {
 | |
|             if ($user == "") {
 | |
|                 $title = "Error - Profile";
 | |
|                 $message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Es wurde kein Nutzername angegeben."];
 | |
|             }
 | |
| 
 | |
|             $user_data = $this->UserModel->getUser($user);
 | |
|             $user_exists = !empty($user_data);
 | |
|             if ($user_exists) {
 | |
|                 $user_data = $user_data[0];
 | |
|                 $dateCreated = strtotime($user_data['date_created']);
 | |
|                 $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']);
 | |
| 
 | |
|                 $_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']]);
 | |
|         }
 | |
| 
 | |
|         public function switchFollowing()
 | |
|         {
 | |
|             header('Content-Type: application/json');
 | |
|             if(!isset($_SESSION['currentProfilePage'])) {
 | |
|                 $response = ['type' => 'error', 'code' => -1];
 | |
|                 echo json_encode($response);
 | |
|                 exit;
 | |
|             }
 | |
| 
 | |
|             $followedUser = $_SESSION['currentProfilePage'];
 | |
| 
 | |
|             // code 0: not logged in
 | |
|             // code 1: same user
 | |
|             // code 10: unfollowed
 | |
|             // code 11: now following
 | |
| 
 | |
|             if (!isset($_SESSION['user']['username'])) {
 | |
|                 $response = ['type' => 'error', 'code' => 0];
 | |
|                 echo json_encode($response);
 | |
|                 exit;
 | |
|             }
 | |
| 
 | |
|             $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;
 | |
|             }
 | |
| 
 | |
|             $this->UserModel->follow($follower, $followedUser);
 | |
|             $response = ['type' => 'success', 'code' => 11];
 | |
|             echo json_encode($response);
 | |
|             exit;
 | |
|         }
 | |
| 
 | |
|         public function edit($user = "")
 | |
|         {
 | |
|             if ($user == "") {
 | |
|                 redirect(base_url('user'));
 | |
|             }
 | |
| 
 | |
|             $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
 | |
|                 // 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>";
 | |
|                             }
 | |
|                         } else {
 | |
|                             $_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>";
 | |
|                         }
 | |
|                     } 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 (_).</div>";
 | |
|                     }
 | |
|                 }
 | |
|                 // Gender
 | |
|                 if (isset($_POST['gender'])) {
 | |
|                     if ($_POST['gender'] == "male" || $_POST['gender'] == "female" || $_POST['gender'] == 'other') {
 | |
|                         $newData['gender'] = $_POST['gender'];
 | |
|                     }
 | |
|                 }
 | |
|                 // 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 . '.';
 | |
|                         }
 | |
|                     }
 | |
|                 }
 | |
|                 if (isset($_POST['birthdate-year'])) {
 | |
| 
 | |
|                 }
 | |
|                 // Language
 | |
|                 if (isset($_POST['language'])) {
 | |
|                     $newData['language'] = $_POST['language'];
 | |
|                 }
 | |
|                 // Country
 | |
|                 if (isset($_POST['country'])) {
 | |
|                     $newData['country'] = $_POST['country'];
 | |
|                 }
 | |
|                 // Biography/About
 | |
|                 if (isset($_POST['biography'])) {
 | |
|                     $newData['about'] = $_POST['biography'];
 | |
|                 }
 | |
|                 // Avatar
 | |
|                 if (isset($_FILES['avatar'])) {
 | |
|                     $image = $this->FileModel->uploadImage('avatar', 4096, $_FILES['avatar']['name'], 200);
 | |
|                     if ($image != null)
 | |
|                         $newData['profile_picture'] = $image;
 | |
|                     unset($_FILES['avatar']);
 | |
|                 }
 | |
|                 // Header
 | |
|                 if (isset($_FILES['header'])) {
 | |
| //                var_dump($_FILES['header']);
 | |
|                     $image = $this->FileModel->uploadImage('header', 4096, $_FILES['header']['name'], 1920);
 | |
| //                var_dump($image);
 | |
|                     if ($image != null)
 | |
|                         $newData['header_image'] = $image;
 | |
|                     unset($_FILES['header']);
 | |
|                 }
 | |
|                 // Social Networks
 | |
|                 if (isset($_POST['social-networks'])) {
 | |
| 
 | |
|                 }
 | |
|                 // Profile color
 | |
|                 if (isset($_POST['color'])) {
 | |
| 
 | |
|                 }
 | |
|                 // 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;
 | |
|                                     }
 | |
|                                 } else {
 | |
|                                     $_SESSION['profileEditNotification'] .= $isRegistered;
 | |
|                                 }
 | |
|                             } else {
 | |
|                                 $_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>";
 | |
|                             }
 | |
|                         }
 | |
|                     } 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>";
 | |
|                     }
 | |
|                 }
 | |
|                 // Notifications
 | |
|                 if (isset($_POST['email-notifications'])) {
 | |
|                     $newData['receiveEmails'] = filter_var($_POST['email-notifications'], FILTER_VALIDATE_BOOLEAN);
 | |
|                 }
 | |
|                 // Newsletter
 | |
|                 if (isset($_POST['newsletter'])) {
 | |
|                     $newData['receiveNewsletter'] = filter_var($_POST['newsletter'], FILTER_VALIDATE_BOOLEAN);
 | |
|                 }
 | |
|                 // 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>";
 | |
|                                     }
 | |
|                                 } else {
 | |
|                                     $_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>";
 | |
|                                 }
 | |
|                             } else {
 | |
|                                 $_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Altes Passwort falsch!</b> Dein altes eingegebenes Passwort ist falsch!</div>";
 | |
|                             }
 | |
|                         } else {
 | |
|                             $_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 {
 | |
|                         $_SESSION['profileEditNotification'] .= "<div class='alert alert-danger' role='alert'><b>Altes Passwort fehlend!</b> Bitte gib dein altes Passwort ebenfalls ein!</div>";
 | |
|                     }
 | |
|                 }
 | |
|                 if (isset($_POST['showAds'])) {
 | |
|                     if (isset($_SESSION['user']) && $_SESSION['user']['rank'] >= 2) {
 | |
|                         $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
 | |
|                     $this->UserModel->insertIntoHistory($user_data);
 | |
|                     // Update profile
 | |
|                     $this->UserModel->updateProfile($newData, $user_data['ID']);
 | |
| //                redirect(base_url(uri_string()));
 | |
|                 }
 | |
| 
 | |
|                 $user_stats = $this->UserModel->getUserStats($user_data['ID']);
 | |
|                 $title = $user_data['displayname'] . ' - Profil bearbeiten';
 | |
|             }
 | |
| 
 | |
|             $this->load->view('header', ['active' => 'profile', 'title' => $title, 'additionalStyles' => ['lib/selectize.css', 'lib/selectize.bootstrap3.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', 'profile_page.js', 'profile_edit.js']]);
 | |
|         }
 | |
| 
 | |
|         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));
 | |
|             }
 | |
| 
 | |
|             $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']]);
 | |
|         }
 | |
| 
 | |
|         public function single_post_data($username = null, $uuid = null)
 | |
|         {
 | |
|             $message = "";
 | |
|             $post = [];
 | |
|             $replies = [];
 | |
|             if ($username == null) {
 | |
|                 $message .= '<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>';
 | |
|                 goto display;
 | |
|             }
 | |
|             if ($uuid == null) {
 | |
|                 $message .= '<div class="alert alert-danger" role="alert"><b>Es wurde keine Post-ID angegeben!</b> Es können keine undefinierten Posts gefunden werden.</div>';
 | |
|                 goto display;
 | |
|             }
 | |
| 
 | |
|             $user = $this->UserModel->getUser($username);
 | |
|             if (empty($user)) {
 | |
|                 $message .= '<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>';
 | |
|                 goto display;
 | |
|             }
 | |
|             $user = $user[0];
 | |
| 
 | |
|             $post = $this->PostsModel->getPostDetails($user['ID'], $uuid);
 | |
|             if (empty($post)) {
 | |
|                 $message .= '<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>';
 | |
|                 goto display;
 | |
|             }
 | |
|             $post = $post[0];
 | |
| 
 | |
|             $replies = $this->PostsModel->getPostReplies($post['ID']);
 | |
| 
 | |
|             display:
 | |
|             $this->load->view('network/posts/user_post_content', ['message' => $message, 'post' => $post, 'replies' => $replies]);
 | |
| 
 | |
|         }
 | |
|     }
 |