EternalWinter/common.php
2025-10-13 13:49:07 -04:00

133 lines
4.4 KiB
PHP
Executable file

<?php
$db = new SQLite3(constant("dbfile"), SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
$db->enableExceptions(true);
$db->query('CREATE TABLE IF NOT EXISTS "sites" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"name" VARCHAR NOT NULL,
"url" VARCHAR NOT NULL,
"summary" VARCHAR NOT NULL,
"category" VARCHAR NOT NULL,
"time" DATETIME NOT NULL,
"nsfw" INTEGER NOT NULL
)');
function submitSite($name, $url, $summary, $category) {
global $db;
$stm = $db->prepare('INSERT INTO "sites" ("name", "url", "summary", "category", "time", "nsfw") VALUES (?,?,?,?,?,?)');
$date = date('Y-m-d H:i:s');
$nsfw = 0;
$stm->bindParam(1, $name);
$stm->bindParam(2, $url);
$stm->bindParam(3, $summary);
$stm->bindParam(4, $category);
$stm->bindParam(5, $date);
$stm->bindParam(6, $nsfw);
return $stm->execute();
}
function getRowCount($cat=null) {
global $db;
if ($cat) {
$stm = $db->prepare('SELECT COUNT(*) as count FROM "sites" WHERE "category" = ? ;');
$stm->bindParam(1, $cat);
$results = $stm->execute();
} else {
$stm = $db->prepare('SELECT COUNT(*) as count FROM "sites";');
$results = $stm->execute();
}
$row = $results->fetchArray();
return intval($row['count']);
}
function getRandom() {
global $db;
$results = $db->query('SELECT * FROM "sites" ORDER BY RANDOM() LIMIT 1;');
$row = $results->fetchArray();
return $row['url'];
}
function renderPage($page=1, $cat) {
global $db;
global $manage;
$no = ($page-1) * 15;
if ($cat) {
$stm = $db->prepare('SELECT * FROM "sites" WHERE "category" = ? ORDER BY "time" DESC LIMIT 15 OFFSET ? ;');
$stm->bindParam(1, $cat);
$stm->bindParam(2, $no);
$results = $stm->execute();
} else {
$stm = $db->prepare('SELECT * FROM "sites" ORDER BY "time" DESC LIMIT 15 OFFSET ? ;');
$stm->bindParam(1, $no);
$results = $stm->execute();
}
while ($row = $results->fetchArray()) {
if ($row["nsfw"]) {
echo("<tr class='nsfw'>");
} else {
echo("<tr>");
}
for ($i=1; $i < 5; $i++) {
echo("<td>");
if ($i == 1) {
if ($manage) {
echo ("<p>[<a href='manage.php?delete=" . $row["id"] . "&manage=" . $_GET["manage"] . "'>Delete</a>]");
echo (" [<a href='manage.php?nsfw=" . $row["id"] . "&manage=" . $_GET["manage"] . "'>+ NSFW</a>]");
echo (" [<a href='manage.php?unnsfw=" . $row["id"] . "&manage=" . $_GET["manage"] . "'>- NSFW</a>]");
echo (" [<a href='manage.php?blacklist=" . $row["id"] . "&manage=" . $_GET["manage"] . "'>Blacklist</a>]</p>");
}
$url = parse_url($row[$i + 1]);
if ($url['scheme'] == 'https' || $url['scheme'] == 'http') {
echo('<img src="https://icons.duckduckgo.com/ip3/' . $url['host'] . '.ico" class="siteicon"> ');
} else {
echo("(" . $url['scheme'] . ")");
}
echo(' <a href="' . $row[$i+1] . '">' . $row[$i] . '</a> ');
if ($row["nsfw"]) {
echo("<small>(NSFW)</small>");
}
} elseif ($i ==2) {
echo($row[$i+1]);
} elseif ($i ==3) {
$name = constant("categories")[$row[$i + 1]];
echo("<a href='?cat=" . $row[$i+1] . "' rel='noreferrer'>" . $name . "</a>");
} else {
echo($row[$i+1]);
}
echo("</td>");
}
echo("</tr>");
}
}
# manage stuff
function deleteSite($id) {
global $db;
$stm = $db->prepare('DELETE FROM "sites" WHERE id = ?;');
$stm->bindParam(1, $id);
return $stm->execute();
}
function markSiteNSFW($id, $nsfw) {
global $db;
$stm = $db->prepare('UPDATE "sites" SET nsfw = ? WHERE id = ?;');
$stm->bindParam(1, $nsfw);
$stm->bindParam(2, $id);
return $stm->execute();
}
if (isset($_GET["manage"])) {
$fh = fopen('secrets/password.secret','r');
if (!$fh) {
$manage = false;
} else {
while ($hash = fgets($fh)) {
if (password_verify($_GET["manage"], $hash)) {
$manage = true;
} else {
$manage = false;
}
}
fclose($fh);
}
} else {
$manage = false;
}
?>