back to files backend

This commit is contained in:
bogale 2026-10-01 03:13:29 +09:00
commit 36e534be13
8 changed files with 63 additions and 62 deletions

1
.gitignore vendored
View file

@ -1,4 +1,5 @@
/local/net /local/net
/favicon.ico /favicon.ico
/local/media/urls /local/media/urls
/local/notes/files
/local/media/videos /local/media/videos

View file

@ -1,5 +1,6 @@
<?php <?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates"; $_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
$_title = "Password generator"; $_title = "Password generator";
require "$_shared/header.php"; require "$_shared/header.php";
$str = strtr(base64_encode(random_bytes(15)), '+/', '-_'); $str = strtr(base64_encode(random_bytes(15)), '+/', '-_');

View file

@ -1,5 +1,6 @@
<?php <?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates"; $_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
$_title = "Apps"; $_title = "Apps";
require "$_shared/header.php"; require "$_shared/header.php";
?> ?>
@ -12,7 +13,7 @@ require "$_shared/header.php";
<a href="grafana">Grafana</a><br> <a href="grafana">Grafana</a><br>
<a href="local/notes">Notes</a><br> <a href="local/notes">Notes</a><br>
<a href="local/media/get.php">Media viewer</a><br> <a href="local/media/get.php">Media viewer</a><br>
<a href="local/media/load.php">Media downloader</a><br> <!--<a href="local/media/load.php">Media downloader</a><br>-->
<?php <?php
require "$_shared/footer.php"; require "$_shared/footer.php";
?> ?>

View file

@ -1,5 +1,6 @@
<?php <?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates"; $_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
$_title = "Media viewer"; $_title = "Media viewer";
require "$_shared/header.php"; require "$_shared/header.php";
$urls_base = __DIR__ . "/urls"; $urls_base = __DIR__ . "/urls";

View file

@ -1,8 +0,0 @@
drop schema if exists notes cascade;
create schema notes;
create table notes.entries(
id int generated always as identity primary key,
title text not null,
note text not null,
date date default current_date not null
);

View file

@ -1,18 +1,40 @@
<?php <?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates"; $_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require "$_shared/lib.php";
$_title = "Notes"; $_title = "Notes";
require "$_shared/header.php"; require "$_shared/header.php";
?> $name = $_GET["name"];
<a href="write.php">Write a note</a><br> $baseDir = __DIR__."/files/$name";
<h4>Notes</h4> echo "<a href='write.php?name=$name'>New note</a><br>\n";
<?php foreach (scandir($baseDir) as $entry) {
require_once "$_shared/lib.php"; if ($entry === ".") continue;
$pdo = pdo_init(); $path = "$baseDir/$entry";
$entries = $pdo->query("select * from notes.entries order by date desc"); $newName = trim("$name/$entry", "/");
foreach ($entries as $entry) { if (is_dir($path)) {
$id = $entry["id"]; $elem["type"] = "dirs";
$text = $entry["title"]; $elem["href"] = ".?name=$newName";
echo "<a href='write.php?id=$id'>$text</a><br>\n"; } else if (substr($entry, -5) === ".note") {
$elem["type"] = "notes";
$entry = substr($entry, 0, -5);
$elem["href"] = "write.php?name=$newName";
} else {
$elem["type"] = "files";
$elem["href"] = "files/$newName";
}
$elem["entry"] = $entry;
$elem["date"] = filemtime($path);
$elems[] = $elem;
}
usort($elems, function($a, $b) {
return $a["type"] <=> $b["type"] ?: $b["date"] <=> $a["date"];
});
foreach ($elems as $elem) {
if ($elem["type"] !== $type) {
$type = $elem["type"];
echo "<h4>$type</h4>\n";
}
$text = date("Y-m-d\TH:i", $elem["date"])." ".$elem["entry"];
echo "<a href='".$elem["href"]."'>$text</a><br>\n";
} }
require "$_shared/footer.php"; require "$_shared/footer.php";
?> ?>

View file

@ -1,49 +1,36 @@
<?php <?php
$_shared = $_SERVER["DOCUMENT_ROOT"]."/templates"; $_shared = $_SERVER["DOCUMENT_ROOT"]."/templates";
require_once "$_shared/lib.php"; require "$_shared/lib.php";
switch ($_SERVER["REQUEST_METHOD"]) { switch ($_SERVER["REQUEST_METHOD"]) {
case "GET": case "GET":
if (isset($_GET["id"])) { $name = $_GET["name"];
$note_id = $_GET["id"]; $file = __DIR__."/files/$name";
$pdo = pdo_init(); if (!is_dir($file)) {
if (isset($_GET["delete"])) { $name = dirname($name);
$stmt = $pdo->prepare("delete from notes.entries where id = ?"); $title = substr(basename($file), 0, -5);
$stmt->execute([$note_id]); $note = file_get_contents($file);
header("Location: ."); $date = date("Y-m-d\TH:i", filemtime($file));
exit;
} }
$stmt = $pdo->prepare("select * from notes.entries where id = ?");
$stmt->execute([$note_id]);
$entry = $stmt->fetch();
$title = $entry["title"];
$note = $entry["note"];
$date = $entry["date"];
$del_href = "<a href='?id=$note_id&delete'>Delele</a>";
};
break; break;
case "POST": case "POST":
$pdo = pdo_init(); $name = $_POST["name"];
if ($_POST["id"] == "") { $file = __DIR__."/files/$name/".$_POST["title"].".note";
$stmt = $pdo->prepare("insert into notes.entries file_put_contents($file, $_POST["note"]);
(title, note, date) values (?, ?, ?)"); $date = $_POST["date"];
$stmt->execute([$_POST["title"], $_POST["note"], $_POST["date"]]); if ($date == "") $date = null;
} else { else $date = strtotime($date);
$stmt = $pdo->prepare("update notes.entries touch($file, $date);
set title = ?, note = ?, date = ? where id = ?"); header("Location: .?name=$name");
$stmt->execute([$_POST["title"], $_POST["note"], $_POST["date"], $_POST["id"]]);
}
header("Location: .");
exit; exit;
} }
$_title = "Notes"; $_title = "Notes";
require "$_shared/header.php"; require "$_shared/header.php";
?> ?>
<form method="post"> <form method="post">
<input name="id" type="hidden" value="<?=$note_id?>"> <input name="name" type="hidden" value="<?=$name?>">
<input name="date" type="date" class="content" value="<?=$date?>" required> <input name="date" type="datetime-local" class="content" value="<?=$date?>">
<input name="title" class="content" placeholder="Title" value="<?=$title?>" required> <input name="title" class="content" placeholder="Title" value="<?=$title?>" required>
<button type="submit" class="content">Save</button> <button type="submit" class="content">Save</button>
<?=$del_href?>
<textarea name="note" class="note content" placeholder="Note"><?=$note?></textarea> <textarea name="note" class="note content" placeholder="Note"><?=$note?></textarea>
</form> </form>
<?php <?php

View file

@ -1,7 +1,3 @@
<?php <?php
function pdo_init() { date_default_timezone_set("Asia/Chita");
return new PDO("pgsql:dbname=php", null, null, [
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);
}
?> ?>