Initial import
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
class Revision extends Model {
|
||||
|
||||
protected $_classes = [
|
||||
"document" => "Document"
|
||||
];
|
||||
|
||||
protected $_computed = [
|
||||
"body" => "get_body",
|
||||
];
|
||||
|
||||
protected $transform = [
|
||||
"info" => "json"
|
||||
];
|
||||
|
||||
function path() {
|
||||
$rs = sprintf("%011d", $this->id);
|
||||
$d1 = substr($rs, 0, 2);
|
||||
$d2 = substr($rs, 2, 3);
|
||||
$d3 = substr($rs, 5, 3);
|
||||
$d4 = substr($rs, 8, 3);
|
||||
$p = sprintf("%s/pdf/%s/%s/%s/%s", ROOT, $d1, $d2, $d3, $d4);
|
||||
return $p;
|
||||
}
|
||||
|
||||
function filename() {
|
||||
if ($this->document) {
|
||||
if (is_numeric($this->document)) {
|
||||
$this->load("document");
|
||||
}
|
||||
$out = $this->document->internal_id;
|
||||
if (($this->revno != "") && ($this->revno != "0")) {
|
||||
$out .= "-";
|
||||
$out .= $this->revno;
|
||||
}
|
||||
$out .= " ";
|
||||
$out .= $this->document->title . " " . $this->document->subtitle . " " . $this->document->subsubtitle;
|
||||
} else {
|
||||
$out = "doc";
|
||||
}
|
||||
$out = trim($out);
|
||||
$out.= ".pdf";
|
||||
$out = str_replace(" ", "_", $out);
|
||||
$out = str_replace("/", "_", $out);
|
||||
return $out;
|
||||
}
|
||||
|
||||
function create_cover() {
|
||||
$p = $this->path();
|
||||
$pdf = new PDF($p . "/doc.pdf");
|
||||
$cover = $p . "/cover.jpg";
|
||||
$pdf->extract_page(0, $cover);
|
||||
}
|
||||
|
||||
function cover($size = null) {
|
||||
$f = new File($this->path() . "/cover.jpg");
|
||||
if (!$f->exists()) {
|
||||
$this->create_cover();
|
||||
}
|
||||
if ($size == null) {
|
||||
return "/cover/" . $this->id . "/cover.jpg";
|
||||
}
|
||||
return "/cover/" . $this->id . "/" . $size . "/cover.jpg";
|
||||
}
|
||||
|
||||
private $_body = null;
|
||||
|
||||
public function get_body() {
|
||||
if ($this->_body == null) {
|
||||
$ocr = OCR::find([["revision", "=", $this->id]])->first();
|
||||
if (!$ocr) {
|
||||
return false;
|
||||
}
|
||||
$this->_body = $ocr;
|
||||
}
|
||||
return $this->_body;
|
||||
}
|
||||
|
||||
public function get_page($page, $dpi = 300) {
|
||||
$file = new File(sprintf("%s/pages/%04d-%d.jpg", $this->path(), $page, $dpi));
|
||||
if ($file->exists()) {
|
||||
return new Image($file);
|
||||
}
|
||||
|
||||
$dir = sprintf("%s/pages", $this->path());
|
||||
if (!file_exists($dir)) {
|
||||
mkdir($dir, 0777);
|
||||
}
|
||||
|
||||
$pdf = new PDF(sprintf("%s/doc.pdf", $this->path()));
|
||||
$img = $pdf->extract_page($page, $file->path(), $dpi);
|
||||
|
||||
if ($img) {
|
||||
return $img;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function purge() {
|
||||
$dir = opendir($this->path());
|
||||
while ($file = readdir($dir)) {
|
||||
if (str_ends_with($file, ".jpg")) {
|
||||
unlink($this->path() . "/" . $file);
|
||||
}
|
||||
}
|
||||
closedir($dir);
|
||||
|
||||
$dir = opendir($this->path() . "/pages");
|
||||
while ($file = readdir($dir)) {
|
||||
if (str_ends_with($file, ".jpg")) {
|
||||
unlink($this->path() . "/pages/" . $file);
|
||||
}
|
||||
}
|
||||
closedir($dir);
|
||||
}
|
||||
|
||||
public function getPDF() {
|
||||
$p = $this->path();
|
||||
$pdf = new PDF($p . "/doc.pdf");
|
||||
return $pdf;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user