Archived
1
0

Database refactoring and improving blog comments, blog post history and more

This commit is contained in:
Marcel
2019-01-08 22:42:54 +01:00
parent 56aed78b00
commit 7f887a99b0
67 changed files with 3076 additions and 1755 deletions

View File

@@ -20,24 +20,24 @@
$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']);
$userData = $this->UserModel->getUser($user);
$userExists = !empty($userData);
if ($userExists) {
$userData = $userData[0];
$userStats = $this->UserModel->getUserStats($userData['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);
$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);
$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";
$dateCreated = strtotime($userData['dateCreated']);
$userData['time_existing'] = DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$dateCreated"), $_SESSION['site_lang']);
$title = $userData['displayname'] . " - Profile";
$isCurrentUserFollowing = false;
if (isset($_SESSION['user']['ID']))
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $user_data['ID']);
$isCurrentUserFollowing = $this->UserModel->isFollowing($_SESSION['user']['ID'], $userData['ID']);
$_SESSION['currentProfilePage'] = $user_data['ID'];
$_SESSION['currentProfilePage'] = $userData['ID'];
} else {
$message = ["type" => "danger", "message1" => "Dieser Nutzer existiert nicht!", "message2" => "Der angegebene Nutzername konnte nicht gefunden werden."];
$title = "Error - Profile";
@@ -48,10 +48,10 @@
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]);
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]);
}
$this->load->view('footer', ['additionalScripts' => ['profile_page.js']]);
$this->load->view('footer', ['additionalScripts' => ['profile_page.js', 'comment-item.js']]);
}
public function comments($user = "")
@@ -65,7 +65,7 @@
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['date_created']);
$dateCreated = strtotime($user_data['dateCreated']);
$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";
@@ -87,7 +87,7 @@
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('footer', ['additionalScripts' => ['profile_page.js', 'comment-item.js']]);
$this->load->view('network/blog/user_comments_end', ['data' => $user_data]);
}
@@ -114,7 +114,7 @@
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['date_created']);
$dateCreated = strtotime($user_data['dateCreated']);
$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";
@@ -161,7 +161,7 @@
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['date_created']);
$dateCreated = strtotime($user_data['dateCreated']);
$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";
@@ -204,7 +204,7 @@
if (!isset($_SESSION['user']) || empty($_SESSION['user']))
redirect(base_url());
if(empty($_FILES) || !isset($_FILES['postMedia']))
if (empty($_FILES) || !isset($_FILES['postMedia']))
redirect(base_url());
header('Content-Type: application/json');
@@ -229,60 +229,65 @@
echo json_encode(['success' => true, 'type' => $mediaType, 'path' => $path]);
}
public function deletePostMedia() {
public function deletePostMedia()
{
if (!isset($_SESSION['user']) || empty($_SESSION['user']))
redirect(base_url());
if(empty($_POST) || !isset($_POST['path']))
if (empty($_POST) || !isset($_POST['path']))
redirect(base_url());
$url = $_POST['path'];
$filePath = $this->FileModel->getFilePath(substr($url, 3), $_SESSION['user']['ID']);
if($filePath != null)
if ($filePath != null)
unlink($filePath);
}
public function publishPost()
{
header('Content-Type: application/json');
if (!isset($_SESSION['user']) || empty($_SESSION['user'])) {
echo json_encode(['success' => false,
'title' => lang('post_error_login_title'),
'title' => lang('post_error_login_title'),
'message' => lang('post_error_login_lines')
]);
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;
}
$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;
}
$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;
}
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;
}
$postID = -1;
if ($replyTo !== "-1") {
$postID = $this->PostsModel->addReply($_SESSION['user']['ID'], $content, $replyTo);
} else {
$postID = $this->PostsModel->addPost($_SESSION['user']['ID'], $content);
}
$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);
}
$media = $this->input->post('postMedia');
if (!empty($media)) {
@@ -321,15 +326,21 @@
}
}
?>
<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
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')
]
]
]);
}
public function followers($user = "")
@@ -343,7 +354,7 @@
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['date_created']);
$dateCreated = strtotime($user_data['dateCreated']);
$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']);
@@ -379,7 +390,7 @@
$user_exists = !empty($user_data);
if ($user_exists) {
$user_data = $user_data[0];
$dateCreated = strtotime($user_data['date_created']);
$dateCreated = strtotime($user_data['dateCreated']);
$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']);
@@ -460,6 +471,13 @@
// Update Settings
$newData = [];
// TODO: Error messages
foreach ($_POST as $key => $item) {
if (isset($user_data[$key]) && $user_data[$key] == $item) {
unset($_POST[$key]);
}
}
// Username
if (isset($_POST['username'])) {
if (!preg_match('/[^A-Za-z0-9._]/', $_POST['username'])) {
@@ -474,7 +492,7 @@
$_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>";
$_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>";
}
}
// Gender
@@ -506,25 +524,25 @@
$newData['country'] = $_POST['country'];
}
// Biography/About
if (isset($_POST['biography'])) {
$newData['about'] = $_POST['biography'];
if (isset($_POST['about'])) {
$newData['about'] = trim($_POST['about']);
}
// Avatar
if (isset($_FILES['avatar'])) {
$image = $this->FileModel->uploadCroppedImage('avatar', 4096, $_FILES['avatar']['name'], 500, 500);
if ($image != null)
$newData['profile_picture'] = $image;
$newData['profilePicture'] = $image;
unset($_FILES['avatar']);
}
// Header
if (isset($_FILES['header'])) {
$image = $this->FileModel->uploadImage('header', 4096, $_FILES['header']['name'], 1920);
if ($image != null)
$newData['header_image'] = $image;
$newData['headerImage'] = $image;
unset($_FILES['header']);
}
// Social Networks
if (isset($_POST['social-networks'])) {
if (isset($_POST['sociaNetworks'])) {
}
// Profile color
@@ -611,7 +629,7 @@
// Add entry to history
unset($user_data['rankName']);
unset($_SESSION['user']);
$this->UserModel->insertIntoHistory($user_data);
$this->UserModel->insertIntoHistory($newData);
// Update profile
$this->UserModel->updateProfile($newData, $user_data['ID']);
$this->db->cache_delete('user', $user_data['username']);
@@ -651,38 +669,36 @@
$this->load->view('footer', ['additionalScripts' => ['single-post-page.js']]);
}
public function single_post_data($username = null, $uuid = null)
public function single_post_data($username = null, $hashID = 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;
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;
}
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;
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;
}
$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;
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;
}
$user = $user[0];
$post = $this->PostsModel->getPostDetails($user['ID'], $uuid);
$post = $this->PostsModel->getPostDetails($user['ID'], $hashID);
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;
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;
}
$post = $post[0];
$replies = $this->PostsModel->getPostReplies($post['ID']);
display:
$this->load->view('network/posts/user_post_content', ['message' => $message, 'post' => $post, 'replies' => $replies]);
$this->load->view('network/posts/user_post_content', ['post' => $post, 'replies' => $replies]);
}
}