Files
drmaterac.pl/modules/import_api/classes/queue.php
2025-01-06 20:47:25 +01:00

183 lines
4.6 KiB
PHP

<?php
/**
* NOTICE OF LICENSE
* With the purchase or the installation of the software in your application
* you accept the license agreement.
*
* You can not resell and redistribute this file.
*
* @author Dalibor Stojcevski <dal_sto@yahoo.com>
* @copyright 2019 Dalibor Stojcevski
* @license Dalibor Stojcevski
*/
class Queue
{
public $shop_name = 'default';
public function getQueued($file_id = 0, $limit = 0)
{
$sql = "SELECT * FROM " . _DB_PREFIX_ . "ia_temp t LEFT JOIN " . _DB_PREFIX_ . "ia_queues q ON (t.queue_id = q.queue_id) WHERE q.status < 3 AND t.shop = '" . pSQL($this->shop_name) . "'";
if ($file_id) {
$sql .= " AND t.file_id = " . (int)$file_id;
}
if ($limit) {
$sql .= " LIMIT " . (int)$limit;
}
$query = Db::getInstance()->executeS($sql);
return $query;
}
public function getLastQueue($file_id = 0, $status = 0)
{
$sql = "SELECT * FROM " . _DB_PREFIX_ . "ia_queues WHERE shop = '" . pSQL($this->shop_name) . "'";
if ($file_id) {
$sql .= " AND file_id = " . (int)$file_id;
}
if ($status) {
$sql .= " AND status = " . (int)$status;
}
$sql .= " ORDER BY date_added DESC";
$query = Db::getInstance()->executeS($sql);
if ($query) {
return $query[0];
} else {
return array();
}
}
public function getProducts($file_id = 0, $limit = 0)
{
$sql = "SELECT * FROM " . _DB_PREFIX_ . "ia_products p WHERE p.shop = '" . pSQL($this->shop_name) . "'";
if ($file_id) {
$sql .= " AND p.file_id = " . (int)$file_id;
}
if ($limit) {
$sql .= " LIMIT " . (int)$limit;
}
$query = Db::getInstance()->executeS($sql);
return $query;
}
public function deleteProduct($product_id = 0, $file_id = 0)
{
$sql = "DELETE FROM " . _DB_PREFIX_ . "ia_products WHERE product_id = '" . (int)$product_id . "'";
if ($file_id) {
$sql .= " AND file_id = " . (int)$file_id;
}
//print_r($sql); exit;
$query = Db::getInstance()->execute($sql);
return $query;
}
public function saveTempToDb($products, $file_id = 0) {
$this->deleteUnnecessary($file_id);
Db::getInstance()->execute("INSERT INTO " . _DB_PREFIX_ . "ia_queues SET shop = '" . pSQL($this->shop_name) . "', total = '" . count($products) . "', date_added = '" . time() . "', file_id = '" . (int)$file_id . "'");
$queue_id = Db::getInstance()->Insert_ID();
foreach($products as $indx => $product) {
Db::getInstance()->execute("INSERT INTO " . _DB_PREFIX_ . "ia_temp SET shop = '" . pSQL($this->shop_name) . "', date_added = '" . time() . "', indx = '" . pSQL($indx) . "', product = '" . pSQL(json_encode($product)) . "', queue_id = '" . (int)$queue_id . "', file_id = '" . (int)$file_id . "'");
}
return $queue_id;
}
public function deleteUnnecessary($file_id = 0, $shop = 'default') {
Db::getInstance()->execute("DELETE FROM " . _DB_PREFIX_ . "ia_queues WHERE shop = '" . pSQL($this->shop_name) . "' AND status < 3 AND file_id = " . (int)$file_id);
Db::getInstance()->execute("DELETE FROM " . _DB_PREFIX_ . "ia_temp WHERE shop = '" . pSQL($this->shop_name) . "' AND file_id = " . (int)$file_id);
}
public function getQueuedForTable($file_id = 0, $limit = 0) {
$products = array();
$queued = $this->getQueued($file_id, $limit);
foreach ($queued as $q) {
$p = json_decode($q['product'], true);
//var_dump($p); exit;
$products[] = array(
'id' => $q['product_id'],
'indx' => $q['indx'],
'reference' => $p['reference'],
'name' => $p['name'],
'price' => $p['price'],
'quantity' => $p['quantity'],
'manufacturer' =>isset($p['brand']) ? $p['brand'] : '',
);
}
return $products;
}
public function getQueuedProduct($indx = 0, $file_id = 0) {
$sql = "SELECT * FROM " . _DB_PREFIX_ . "ia_temp WHERE shop = '" . pSQL($this->shop_name) . "'";
if ($indx) {
$sql .= " AND indx = '" . pSQL($indx) . "'";
}
if ($file_id) {
$sql .= " AND file_id = '" .(int)$file_id . "'";
}
$sql .= " LIMIT 1";
$query = Db::getInstance()->executeS($sql);
if ($query) {
return $query[0];
} else {
array();
}
}
public function deleteQueuedProduct($product_id = 0, $indx = 0, $file_id = 0) {
$sql = "DELETE FROM " . _DB_PREFIX_ . "ia_temp WHERE shop = '" . pSQL($this->shop_name) . "'";
if ($product_id) {
$sql .= " AND product_id = '" . (int)$product_id . "'";
}
if ($indx) {
$sql .= " AND indx = '" . pSQL($indx) . "'";
}
if ($file_id) {
$sql .= " AND file_id = '" .(int)$file_id . "'";
}
$sql .= " LIMIT 1";
$query = Db::getInstance()->execute($sql);
return $query;
}
}