104 lines
4.1 KiB
PHP
104 lines
4.1 KiB
PHP
<?php
|
|
|
|
class PdfOrd {
|
|
private $arr_whereCond = array();
|
|
|
|
public function whereDate($k, $v) {
|
|
$v = \Utility\Date::isValidUnixtime($v) ? strftime(\Format::strftimeYMD, $v) : $v;
|
|
return $this->where($k, $v);
|
|
}
|
|
|
|
public function where($k, $v = false) {
|
|
if ($v !== false) {
|
|
if (in_array($k, array("gestione", "data_ord", "num_ord"))) {
|
|
$k = "dtb_ord_pdf." . $k;
|
|
}
|
|
$this->arr_whereCond[] = array("k" => $k, "v" => $v);
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
public function getList() {
|
|
$Ret = new Ret;
|
|
if (count($this->arr_whereCond) > 0) {
|
|
$sql = "SELECT t.*,
|
|
dtb_ord_pdf.filename,
|
|
dtb_ord_pdf.filesize,
|
|
dtb_ord_pdf.utente AS user_creator,
|
|
dtb_ord_pdf.data_stampa
|
|
FROM dtb_ord_pdf INNER JOIN
|
|
( SELECT dtb_ordt.num_ord,
|
|
dtb_ordt.data_ord,
|
|
dtb_ordt.gestione,
|
|
MAX(versione) AS versione
|
|
FROM dtb_ord_pdf INNER JOIN dtb_ordt ON dtb_ordt.data_ord = dtb_ord_pdf.data_ord AND
|
|
dtb_ordt.num_ord = dtb_ord_pdf.num_ord AND
|
|
dtb_ordt.gestione = dtb_ord_pdf.gestione
|
|
WHERE filecontent IS NOT NULL
|
|
GROUP BY dtb_ordt.num_ord, dtb_ordt.data_ord, dtb_ordt.gestione
|
|
) t ON dtb_ord_pdf.num_ord = t.num_ord AND
|
|
dtb_ord_pdf.data_ord = t.data_ord AND
|
|
dtb_ord_pdf.gestione = t.gestione AND
|
|
dtb_ord_pdf.versione = t.versione
|
|
WHERE 1 = 1";
|
|
|
|
$Query = new Query($sql);
|
|
foreach ($this->arr_whereCond as $whereCond) {
|
|
$Query->where($whereCond["k"], $whereCond["v"]);
|
|
}
|
|
$Ret = $Query->toRet()->date2ts()->execute();
|
|
|
|
} else {
|
|
$Ret->set_error("Condizione non pervenuta");
|
|
}
|
|
|
|
return $Ret;
|
|
}
|
|
|
|
public static function get($key) {
|
|
$Query = new \Query;
|
|
$Query->select("data_ord", "num_ord", "gestione", "versione", "filename AS name")
|
|
->from("dtb_ord_pdf")
|
|
->where("filecontent IS NOT NULL")
|
|
->whereDate("data_ord", $key["data_ord"])
|
|
->where("num_ord", $key["num_ord"])
|
|
->where("gestione", $key["gestione"])
|
|
->orderBy("versione DESC");
|
|
|
|
if (array_key_exists("versione", $key)) {
|
|
$Query->where("versione", $key["versione"]);
|
|
}
|
|
|
|
$Ret = $Query->firstRow()->toRet()->execute();
|
|
if ($Ret->is_OK()) {
|
|
$item = $Ret->get_data();
|
|
if (!is_null($item)) {
|
|
$IMSApi = new IMSApi;
|
|
$IMSApi->download("downloadDtbOrdPdf")
|
|
->queryDateParam("dataOrd", $item["data_ord"])
|
|
->queryParam("numOrd", $item["num_ord"])
|
|
->queryParam("gestione", $item["gestione"])
|
|
->queryParam("versione", $item["versione"]);
|
|
$Ret = $IMSApi->send();
|
|
if ($Ret->is_OK()) {
|
|
$Ret->set_byte(Utility\Compression\GZ::uncompress($Ret->get_data()))
|
|
->set_string($item["name"])
|
|
->set_data($item);
|
|
}
|
|
} else {
|
|
$Ret->set_error("File non trovato");
|
|
}
|
|
}
|
|
|
|
return $Ret;
|
|
}
|
|
|
|
public static function cache($key) {
|
|
$Ret = self::get($key);
|
|
if ($Ret->is_OK()) {
|
|
$Ret = Cache::writeR($Ret->get_string(), $Ret->get_byte(), true, true);
|
|
}
|
|
return $Ret;
|
|
}
|
|
|
|
} |