* @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; } }