diff --git a/includes/common.php b/includes/common.php index 936245a..78dc49d 100644 --- a/includes/common.php +++ b/includes/common.php @@ -53,7 +53,7 @@ function getCurrentUser(PDO $conn) : array | null { } $query = $conn->prepare('SELECT * FROM users WHERE username = ?'); - $query->execute($_SESSION['username']); + $query->execute([$_SESSION['username']]); return $query->fetch(); } diff --git a/includes/functions.php b/includes/functions.php index cc0f79e..7e35008 100644 --- a/includes/functions.php +++ b/includes/functions.php @@ -26,8 +26,11 @@ function timer() { } } -function getUserFavs($conn, $username) { - $query = $conn->prepare("SELECT pins.f_time, pins.m_fav, pins.f_paste, pastes.id, pastes.title, pastes.now_time, pastes.tagsys FROM pins, pastes WHERE pins.f_paste = pastes.id AND pins.m_fav=?"); +function getUserFavs(PDO $conn, string $username) : array { + $query = $conn->prepare( + "SELECT pins.f_time, pins.m_fav, pins.f_paste, pastes.id, pastes.title, pastes.created_at, pastes.tagsys + FROM pins, pastes + WHERE pins.f_paste = pastes.id AND pins.m_fav = ?"); $query->execute([$username]); return $query->fetchAll(); } @@ -40,9 +43,9 @@ $query = intval($conn->prepare("SELECT COUNT(f_paste) FROM pins WHERE f_paste=?" //Can't seem to get working. -function checkFavorite($conn,$paste_id, $user_id) { +function checkFavorite(PDO $conn, int $paste_id, string $username) : string { $query = $conn->prepare("SELECT 1 FROM pins WHERE m_fav = ? AND f_paste = ?"); - $query->execute([$user_id,$paste_id]); + $query->execute([$username, $paste_id]); if ($query->fetch()) { return ""; @@ -263,9 +266,13 @@ LIMIT 0 , ?"); } -function getUserPastes($conn, $username) { - $query = $conn->prepare("SELECT id, title, code, views, now_time, visible, date, tagsys, member FROM pastes where member=? ORDER by id DESC"); - $query->execute([$username]); +function getUserPastes(PDO $conn, $user_id) : array { + $query = $conn->prepare( + "SELECT id, title, code, views, created_at, visible, tagsys + FROM pastes + where user_id = ? + ORDER by id DESC"); + $query->execute([$user_id]); return $query->fetchAll(); } diff --git a/login.php b/login.php index da3f6db..e98d651 100644 --- a/login.php +++ b/login.php @@ -147,6 +147,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Login process if (isset($_POST['signin'])) { if (!empty($_POST['username']) && !empty($_POST['password'])) { + $username = trim($_POST['username']); $query = $conn->prepare("SELECT id, password, banned, verified FROM users WHERE username = ?"); $query->execute([$username]); $row = $query->fetch(); @@ -195,6 +196,7 @@ if (isset($_POST['signup'])) { } elseif (!isValidUsername($username)) { $error = $lang['usrinvalid']; // "Username not valid. Usernames can't contain special characters."; } else { + $email = trim($_POST['email']); $query = $conn->prepare('SELECT 1 FROM users WHERE username = ?'); $query->execute([$username]); if ($query->fetch()) { diff --git a/theme/bulma/user_profile.php b/theme/bulma/user_profile.php index 16bbd39..df43182 100644 --- a/theme/bulma/user_profile.php +++ b/theme/bulma/user_profile.php @@ -172,13 +172,12 @@ $protocol = paste_protocol(); $row) { + foreach ($profile_pastes as $row) { $title = Trim($row['title']); $p_id = Trim($row['id']); $p_code = Trim($row['code']); - $p_date = strtotime(Trim($row['date'])); - $p_dateui = date("d F Y", $p_date); + $p_date = new DateTime($row['created_at']); + $p_dateui = $p_date->format("d F Y"); $p_views = Trim($row['views']); $p_visible = Trim($row['visible']); $p_tags = Trim($row['tagsys']); @@ -209,7 +208,7 @@ $protocol = paste_protocol(); ' . ($title) . ' - + ' . $p_dateui . ' diff --git a/theme/bulma/view.php b/theme/bulma/view.php index 8449d47..347195d 100644 --- a/theme/bulma/view.php +++ b/theme/bulma/view.php @@ -180,7 +180,7 @@ $selectedloader = "$bg[$i]"; // set variable equal to which random filename was
diff --git a/user.php b/user.php index 42695c9..757faf8 100644 --- a/user.php +++ b/user.php @@ -6,7 +6,7 @@ * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 3 * of the License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @@ -25,16 +25,21 @@ $ip = $_SERVER['REMOTE_ADDR']; // If username defined in URL, then check if it's exists in database. If invalid, redirect to main site. $user_username = trim($_SESSION['username']); -if (isset($_GET['user'])) { - $profile_username = trim($_GET['user']); - if (!existingUser($conn, $profile_username)) { - // Invalid username - header("Location: ../error.php"); - die(); - } -} else { - // No access to user.php +if (empty($_GET['user'])) { + // No username provided + header("Location: ../error.php"); + die(); +} + +$profile_username = trim($_GET['user']); + +$query = $conn->prepare('SELECT id, date, badge FROM users WHERE username = ?'); +$query->execute([$profile_username]); +$profile_info = $query->fetch(); + +if (!$profile_info) { + // Invalid username header("Location: ../error.php"); die(); } @@ -43,9 +48,9 @@ $p_title = $profile_username . $lang['user_public_pastes']; // "Username's Publi // Favorite Counts $query = $conn->prepare( - 'SELECT COUNT(*) FROM pins INNER JOIN pastes ON pins.f_paste = pastes.id WHERE pastes.member = ?' + 'SELECT COUNT(*) FROM pins INNER JOIN pastes ON pins.f_paste = pastes.id WHERE pastes.user_id = ?' ); -$query->execute([$profile_username]); +$query->execute([$profile_info['id']]); $total_pfav = intval($query->fetch(PDO::FETCH_NUM)[0]); @@ -56,41 +61,37 @@ $query->execute([$profile_username]); $total_yfav = intval($query->fetch(PDO::FETCH_NUM)[0]); // Badges -$query = $conn->prepare('SELECT badge FROM users WHERE username = ?'); -$query->execute([$profile_username]); - -$profile_badge = match ($query->fetch()['badge']) { +$profile_badge = match ($profile_info['badge']) { 1 => '', 2 => '', 3 => '', default => '', }; -$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE member = ?'); -$query->execute([$profile_username]); +$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE user_id = ?'); +$query->execute([$profile_info['id']]); $profile_total_pastes = intval($query->fetch(PDO::FETCH_NUM)[0]); -$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE member = ? AND visible = 0'); -$query->execute([$profile_username]); +$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE user_id = ? AND visible = 0'); +$query->execute([$profile_info['id']]); $profile_total_public = intval($query->fetch(PDO::FETCH_NUM)[0]); -$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE member = ? AND visible = 1'); -$query->execute([$profile_username]); +$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE user_id = ? AND visible = 1'); +$query->execute([$profile_info['id']]); $profile_total_unlisted = intval($query->fetch(PDO::FETCH_NUM)[0]); -$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE member = ? AND visible = 2'); -$query->execute([$profile_username]); +$query = $conn->prepare('SELECT COUNT(*) FROM pastes WHERE user_id = ? AND visible = 2'); +$query->execute([$profile_info['id']]); $profile_total_private = intval($query->fetch(PDO::FETCH_NUM)[0]); -$query = $conn->prepare('SELECT SUM(views) FROM pastes WHERE member = ?'); -$query->execute([$profile_username]); +$query = $conn->prepare('SELECT SUM(views) FROM pastes WHERE user_id = ?'); +$query->execute([$profile_info['id']]); $profile_total_paste_views = intval($query->fetch(PDO::FETCH_NUM)[0]); +$profile_join_date = $profile_info['date']; -$query = $conn->prepare('SELECT date FROM users WHERE username = ?'); -$query->execute([$profile_username]); -$profile_join_date = $query->fetch()['date']; +$profile_pastes = getUserPastes($conn, $profile_info['id']); updatePageViews($conn); @@ -99,11 +100,11 @@ if (isset($_GET['del'])) { if ($_SESSION['token']) { // Prevent unauthorized deletes $paste_id = intval(trim($_GET['id'])); - $query = $conn->prepare('SELECT member FROM pastes WHERE id = ?'); + $query = $conn->prepare('SELECT user_id FROM pastes WHERE id = ?'); $query->execute([$paste_id]); $result = $query->fetch(); - if (empty($result) || $result['member'] !== $user_username) { + if (empty($result) || $result['user_id'] !== $profile_info['id']) { $error = $lang['delete_error_invalid']; // Does not exist or not paste owner } else { $query = $conn->prepare('DELETE FROM pastes WHERE id = ?');