Added archive.org upload
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
class ArchiveController {
|
||||
public static function routes() {
|
||||
Routes::add_web("GET", "/archive/upload/{id}", ["ArchiveController", "upload"], ["Auth", "can_moderate"]);
|
||||
}
|
||||
|
||||
public static function upload($id) {
|
||||
$doc = new Document($id);
|
||||
if ($doc) {
|
||||
$job = new ArchiveJob("document:" . $doc->id);
|
||||
$job->document = $doc->id;
|
||||
$job->queue();
|
||||
}
|
||||
return redirect("/document/" . $doc->id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
class ArchiveJob extends Job {
|
||||
|
||||
public $document;
|
||||
|
||||
public function run() {
|
||||
|
||||
$doc = new Document($this->document);
|
||||
|
||||
$meta = [];
|
||||
$meta['title'] = sprintf("uri(\"%s\")", rawurlencode(trim($doc->title . " " . $doc->subtitle . " " . $doc->subsubtitle)));
|
||||
$meta['creator'] = "Digital Equipment Corporation";
|
||||
$meta['description'] = sprintf("uri(\"%s\")", rawurlencode($doc->overview_md()));
|
||||
|
||||
$doc->load("revisions");
|
||||
|
||||
$doc->archive = "P";
|
||||
|
||||
$worked = 0;
|
||||
|
||||
$id = $doc->internal_id;
|
||||
if (Config::get("SANDBOX")) {
|
||||
$id = sprintf("decpdf_test_%s_%08d", $id, time());
|
||||
}
|
||||
|
||||
$this->status($id);
|
||||
$doc->load("revisions");
|
||||
|
||||
foreach ($doc->revisions as $r) {
|
||||
if ($r->archived == "N") {
|
||||
try {
|
||||
$this->status("Uploading " . $r->filename());
|
||||
$r->archived = "P";
|
||||
$r->save();
|
||||
Archive::upload($r->getPDF(), $id, $r->filename(), $meta);
|
||||
$r->refresh();
|
||||
$r->archived = "Y";
|
||||
$r->save();
|
||||
$worked++;
|
||||
} catch (Exception $e) {
|
||||
$r->refresh();
|
||||
$r->archived = "F";
|
||||
$r->save();
|
||||
$this->status($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($worked == 0) {
|
||||
$doc->refresh();
|
||||
$doc->archived = "F";
|
||||
$doc->save();
|
||||
$this->fail("No files uploaded");
|
||||
return;
|
||||
} else {
|
||||
$doc->refresh();
|
||||
$doc->archived = "Y";
|
||||
$doc->archive_url = $id;
|
||||
$doc->save();
|
||||
}
|
||||
|
||||
$this->finish();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user