Files
decpdf.site/app/controllers/RevisionController.php
T
2026-06-04 11:13:34 +01:00

108 lines
2.5 KiB
PHP

<?php
class RevisionController {
public static function show($id) {
$rev = new Revision($id);
$rev->load("document");
if (!@$rev->info->Pages) {
$rev->info = $rev->getPDF()->info();
$rev->save();
}
return blade("revision", ["rev" => $rev]);
}
public static function api_set($id) {
$r = new Revision($id);
if ($r !== false) {
foreach ($_POST as $k=>$v) {
$r->$k = trim($v);
}
$r->save();
}
return $r;
}
public static function delete($id) {
$r = new Revision($id);
$r->load("document");
$doc = $r->document;
$r->delete();
return redirect("/document/" . $doc->id);
}
public static function redownload($id) {
$r = new Revision($id);
$j = new RedownloadJob($r->id, $r->origtitle, $r->path() . "/doc.pdf");
$jobid = $j->queue();
flash("success", "Job queued as ID " . $jobid);
return redirect("/revision/" . $id);
}
public static function purge($id) {
$r = new Revision($id);
$r->purge();
return redirect("/revision/" . $id);
}
public static function recompress($id) {
$r = new Revision($id);
$j = new RecompressJob($r->id);
$j->queue();
flash("info", "Recompression job queued");
return redirect("/revision/" . $id);
}
public static function ocr($id) {
$j = new OCRJob($id);
$j->queue();
return redirect("/revision/" . $id);
}
public static function rate_revision($id, $rating) {
$user = get_user();
if (!$user) {
return new Revision($id);
}
$db = DB::getInstance();
$db->query("INSERT INTO revision_rating (owner,revision,rating) values (:owner,:revision,:rating) ON DUPLICATE KEY UPDATE rating=:rating", [
"owner" => $user->id,
"revision" => $id,
"rating" => $rating
]);
$db->query("UPDATE revision SET rating=(SELECT AVG(rating) FROM revision_rating WHERE revision=:revision) WHERE id=:revision", ["revision" => $id]);
return new Revision($id);
}
public static function split_revision($id) {
$r = new Revision($id);
$r->load("document");
$doc = new Document();
$doc->title = $r->document->title;
$doc->subtitle = $r->document->subtitle;
$doc->subsubtitle = $r->document->subsubtitle;
$doc->overview = $r->document->overview;
$doc->oneliner = $r->document->oneliner;
$doc->internal_id = $r->document->internal_id;
$doc->save();
foreach ($r->document->products as $prod) {
$dp = new DocProduct();
$dp->document = $doc->id;
$dp->product = $prod->id;
$dp->save();
}
$r->document = $doc->id;
$r->save();
return redirect("/document/" . $doc->id);
}
}