Code cleanup

This commit is contained in:
Floorb 2021-07-19 18:38:13 -04:00
parent 3b9d09ef7b
commit db2809d241
4 changed files with 25 additions and 82 deletions

View file

@ -9,6 +9,13 @@ class User {
$this->username = $row['username']; $this->username = $row['username'];
} }
public static function findByUsername(DatabaseHandle $conn, string $username) : User | null {
$query = $conn->query('SELECT id, username FROM users WHERE username = ?', [$username]);
$row = $query->fetch();
return empty($row) ? null : new User($row);
}
public static function current(DatabaseHandle $conn) : User | null { public static function current(DatabaseHandle $conn) : User | null {
$session_user = User::createFromPhpSession($conn); $session_user = User::createFromPhpSession($conn);
@ -27,7 +34,7 @@ class User {
public static function createFromRememberToken(DatabaseHandle $conn, string $remember_token) : User | null { public static function createFromRememberToken(DatabaseHandle $conn, string $remember_token) : User | null {
$result = $conn->query( $result = $conn->query(
'SELECT users.id AS id, users.username AS username 'SELECT users.id AS id, users.username AS username, users.banned AS banned
FROM user_sessions FROM user_sessions
INNER JOIN users ON users.id = user_sessions.user_id INNER JOIN users ON users.id = user_sessions.user_id
WHERE user_sessions.token = ?', [$remember_token] WHERE user_sessions.token = ?', [$remember_token]
@ -47,7 +54,7 @@ class User {
$user_id = intval($_SESSION['user_id']); $user_id = intval($_SESSION['user_id']);
$row = $conn->query('SELECT id, username FROM users WHERE id = ?', [$user_id])->fetch(); $row = $conn->query('SELECT id, username, banned FROM users WHERE id = ?', [$user_id])->fetch();
return $row ? new User($row) : null; return $row ? new User($row) : null;
} }

View file

@ -138,8 +138,6 @@ if ($site_permissions) {
$privatesite = $siteprivate; $privatesite = $siteprivate;
$noguests = $disableguest; $noguests = $disableguest;
// Prevent a potential LFI (you never know :p) // Prevent a potential LFI (you never know :p)
$lang_file = "${default_lang}.php"; $lang_file = "${default_lang}.php";
if (in_array($lang_file, scandir('langs/'))) { if (in_array($lang_file, scandir('langs/'))) {

View file

@ -176,12 +176,6 @@ function decrypt(string $value) : string {
return openssl_decrypt($value, "AES-256-CBC", $sec_key); return openssl_decrypt($value, "AES-256-CBC", $sec_key);
} }
function deleteMyPaste($conn, $paste_id) {
$query = "DELETE FROM pastes where id='$paste_id'";
$result = mysqli_query($conn, $query);
}
function getRecent($conn, $count) { function getRecent($conn, $count) {
$query = $conn->prepare(" $query = $conn->prepare("
SELECT pastes.id, visible, title, created_at, users.username AS member, tagsys SELECT pastes.id, visible, title, created_at, users.username AS member, tagsys
@ -195,13 +189,17 @@ function getRecent($conn, $count) {
} }
function getRecentadmin($conn, $count = 5) { function getRecentadmin($conn, $count = 5) {
$query = $conn->prepare('SELECT id, ip, title, date, now_time, views, member FROM pastes ORDER BY id DESC LIMIT 0, ?'); $query = $conn->prepare(
'SELECT pastes.id AS id, pastes.ip AS ip, title, created_at, views, users.username AS member
FROM pastes
INNER JOIN users ON users.id = pastes.user_id
ORDER BY id DESC LIMIT 0, ?');
$query->execute([$count]); $query->execute([$count]);
return $query->fetchAll(); return $query->fetchAll();
} }
function getpopular($conn, $count) { function getpopular(PDO $conn, int $count) : array {
$query = $conn->prepare(" $query = $conn->prepare("
SELECT pastes.id AS id, visible, title, pastes.created_at AS created_at, views, users.username AS member, tagsys SELECT pastes.id AS id, visible, title, pastes.created_at AS created_at, views, users.username AS member, tagsys
FROM pastes INNER JOIN users ON users.id = pastes.user_id FROM pastes INNER JOIN users ON users.id = pastes.user_id
@ -213,7 +211,7 @@ function getpopular($conn, $count) {
return $query->fetchAll(); return $query->fetchAll();
} }
function getrandom($conn, $count) { function getrandom(PDO $conn, int $count) : array {
$query = $conn->prepare(" $query = $conn->prepare("
SELECT pastes.id, visible, title, created_at, views, users.username AS member, tagsys SELECT pastes.id, visible, title, created_at, views, users.username AS member, tagsys
FROM pastes FROM pastes
@ -225,17 +223,7 @@ function getrandom($conn, $count) {
return $query->fetchAll(); return $query->fetchAll();
} }
function getUserRecent($conn, $count, $username) { function getUserPastes(PDO $conn, int $user_id) : array {
$query = $conn->prepare("SELECT id, member, title, date, now_time
FROM pastes where member=?
ORDER BY id DESC
LIMIT 0 , ?");
$query->execute([$username, $count]);
return $query->fetchAll();
}
function getUserPastes(PDO $conn, $user_id) : array {
$query = $conn->prepare( $query = $conn->prepare(
"SELECT id, title, visible, code, created_at, tagsys, user_id, views from pastes WHERE user_id = ? "SELECT id, title, visible, code, created_at, tagsys, user_id, views from pastes WHERE user_id = ?
ORDER by pastes.id DESC"); ORDER by pastes.id DESC");
@ -243,21 +231,6 @@ function getUserPastes(PDO $conn, $user_id) : array {
return $query->fetchAll(); return $query->fetchAll();
} }
function jsonView($paste_id, $p_title, $p_conntent, $p_code) {
$stats = false;
if ($p_code) {
// Raw
header('conntent-type: text/plain');
echo $p_conntent;
$stats = true;
} else {
// 404
header('HTTP/1.1 404 Not Found');
}
return $stats;
}
function getTotalPastes(PDO $conn, string $username) : int { function getTotalPastes(PDO $conn, string $username) : int {
$query = $conn->prepare("SELECT COUNT(*) AS total_pastes $query = $conn->prepare("SELECT COUNT(*) AS total_pastes
FROM pastes INNER JOIN users ON users.id = pastes.user_id FROM pastes INNER JOIN users ON users.id = pastes.user_id
@ -271,18 +244,6 @@ function isValidUsername(string $str) : bool {
return !preg_match('/[^A-Za-z0-9._\\-$]/', $str); return !preg_match('/[^A-Za-z0-9._\\-$]/', $str);
} }
function existingUser(PDO $conn, string $username) : bool {
$query = $conn->prepare('SELECT 1 FROM users WHERE username = ?');
$query->execute([$username]);
return (bool) $query->fetch();
}
function updateMyView(PDO $conn, $paste_id) {
$query = $conn->prepare("UPDATE pastes SET views = (views + 1) where id = ?");
$query->execute([$paste_id]);
}
function friendlyDateDifference(DateTime $lesser, DateTime $greater) : string { function friendlyDateDifference(DateTime $lesser, DateTime $greater) : string {
$delta = $greater->diff($lesser, true); $delta = $greater->diff($lesser, true);
@ -341,7 +302,7 @@ function conTime($secs) {
return $val; return $val;
} }
function truncate($input, $maxWords, $maxChars) { function truncate(string $input, int $maxWords, int $maxChars) : string {
$words = preg_split('/\s+/', $input); $words = preg_split('/\s+/', $input);
$words = array_slice($words, 0, $maxWords); $words = array_slice($words, 0, $maxWords);
$words = array_reverse($words); $words = array_reverse($words);
@ -364,32 +325,6 @@ function truncate($input, $maxWords, $maxChars) {
return $result . ($input == $result ? '' : '[...]'); return $result . ($input == $result ? '' : '[...]');
} }
function truncatetag($input, $maxWords, $maxChars) {
$str = $input;
$pattern = '/,/i';
$words = preg_replace($pattern, ' ', $str);
$words = preg_split('/\s+/', $input);
$words = array_slice($words, 0, $maxWords);
$words = array_reverse($words);
$chars = 0;
$truncated1 = array();
while (count($words) > 0) {
$fragment = trim(array_pop($words));
$chars += strlen($fragment);
if ($chars > $maxChars)
break;
$truncated1[] = $fragment;
}
$result = implode(' ', $truncated1);
return $result . ($input == $result ? '' : '...');
}
function doDownload($paste_id, $p_title, $p_member, $p_conntent, $p_code) { function doDownload($paste_id, $p_title, $p_member, $p_conntent, $p_code) {
$stats = false; $stats = false;
if ($p_code) { if ($p_code) {

View file

@ -219,16 +219,18 @@ if ($p_password == "NONE") {
$p_embed = "paste.php?embed&id=$paste_id"; $p_embed = "paste.php?embed&id=$paste_id";
} }
//pasteviews // View counter
if ($_SESSION['not_unique'] !== $paste_id) { if ($_SESSION['not_unique'] !== $paste_id) {
$_SESSION['not_unique'] = $paste_id; $_SESSION['not_unique'] = $paste_id;
updateMyView($conn, $paste_id); $conn->prepare("UPDATE pastes SET views = (views + 1) where id = ?")
->execute($paste_id);
} }
// Theme // Theme
require_once('theme/' . $default_theme . '/view.php'); require_once('theme/' . $default_theme . '/view.php');
if ($p_expiry == "SELF") { if ($p_expiry == "SELF") {
deleteMyPaste($con, $paste_id); $conn->prepare('DELETE FROM pastes WHERE id = ?')
->execute([$paste_id]);
} }
} else { } else {
$p_download = "paste.php?download&id=$paste_id&password=" . pp_password_hash(isset($_POST['mypass'])); $p_download = "paste.php?download&id=$paste_id&password=" . pp_password_hash(isset($_POST['mypass']));
@ -239,7 +241,8 @@ if ($p_password == "NONE") {
// Theme // Theme
require_once('theme/' . $default_theme . '/view.php'); require_once('theme/' . $default_theme . '/view.php');
if ($p_expiry == "SELF") { if ($p_expiry == "SELF") {
deleteMyPaste($con, $paste_id); $conn->prepare('DELETE FROM pastes WHERE id = ?')
->execute([$paste_id]);
} }
} else { } else {
$error = $lang['wrongpwd']; //"Password is wrong"; $error = $lang['wrongpwd']; //"Password is wrong";