amazonus_product.php (4995B)
1 <?php 2 class ModelExtensionOpenBayAmazonusProduct extends Model { 3 public function setStatus($insertion_id, $status_string) { 4 $this->db->query("UPDATE `" . DB_PREFIX . "amazonus_product` SET `status` = '" . $status_string . "' WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'"); 5 } 6 7 public function getProductRows($insertion_id) { 8 return $this->db->query("SELECT * FROM `" . DB_PREFIX . "amazonus_product` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'")->rows; 9 } 10 11 public function getProduct($insertion_id) { 12 return $this->db->query("SELECT * FROM `" . DB_PREFIX . "amazonus_product` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'")->row; 13 } 14 15 public function linkItems(array $data) { 16 foreach ($data as $amazonus_sku => $product_id) { 17 $var_row = $this->db->query("SELECT `var` FROM `" . DB_PREFIX . "amazonus_product` WHERE `sku` = '" . $amazonus_sku . "' AND `product_id` = '" . (int)$product_id . "'")->row; 18 $var = isset($var_row['var']) ? $var_row['var'] : ''; 19 $this->linkProduct($amazonus_sku, $product_id, $var); 20 } 21 } 22 23 public function insertError($data) { 24 $this->db->query("INSERT INTO `" . DB_PREFIX . "amazonus_product_error` SET `sku` = '" . $this->db->escape($data['sku']) . "', `error_code` = '" . (int)$data['error_code'] . "', `message` = '" . $this->db->escape($data['message']) . "', `insertion_id` = '" . $this->db->escape($data['insertion_id']) . "'"); 25 26 $this->db->query("UPDATE `" . DB_PREFIX . "amazonus_product` SET `status` = 'error' WHERE `sku` = '" . $this->db->escape($data['sku']) . "' AND `insertion_id` = '" . $this->db->escape($data['insertion_id']) . "'"); 27 } 28 29 public function deleteErrors($insertion_id) { 30 $this->db->query("DELETE FROM `" . DB_PREFIX . "amazonus_product_error` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'"); 31 } 32 33 public function setSubmitError($insertion_id, $message) { 34 $sku_rows = $this->db->query("SELECT `sku` FROM `" . DB_PREFIX . "amazonus_product` WHERE `insertion_id` = '" . $this->db->escape($insertion_id) . "'")->rows; 35 36 foreach ($sku_rows as $sku_row) { 37 $data = array( 38 'sku' => $sku_row['sku'], 39 'error_code' => '0', 40 'message' => $message, 41 'insertion_id' => $insertion_id 42 ); 43 $this->insertError($data); 44 } 45 } 46 47 public function linkProduct($amazonus_sku, $product_id, $var = '') { 48 $count = $this->db->query("SELECT COUNT(*) as 'count' FROM `" . DB_PREFIX . "amazonus_product_link` WHERE `product_id` = '" . (int)$product_id . "' AND `amazonus_sku` = '" . $this->db->escape($amazonus_sku) . "' AND `var` = '" . $this->db->escape($var) . "' LIMIT 1")->row; 49 if ($count['count'] == 0) { 50 $this->db->query("INSERT INTO `" . DB_PREFIX . "amazonus_product_link` SET `product_id` = '" . (int)$product_id . "', `amazonus_sku` = '" . $this->db->escape($amazonus_sku) . "', `var` = '" . $this->db->escape($var) . "'"); 51 } 52 } 53 54 public function getProductQuantity($product_id, $var = '') { 55 $result = null; 56 57 if ($var !== '' && $this->openbay->addonLoad('openstock')) { 58 $this->load->model('tool/image'); 59 $this->load->model('extension/module/openstock'); 60 $option_stocks = $this->model_extension_module_openstock->getVariants($product_id); 61 62 $option = null; 63 foreach ($option_stocks as $option_iterator) { 64 if ($option_iterator['var'] === $var) { 65 $option = $option_iterator; 66 break; 67 } 68 } 69 70 if ($option != null) { 71 $result = $option['stock']; 72 } 73 } else { 74 $this->load->model('catalog/product'); 75 $product_info = $this->model_catalog_product->getProduct($product_id); 76 77 if (isset($product_info['quantity'])) { 78 $result = $product_info['quantity']; 79 } 80 } 81 return $result; 82 } 83 84 public function updateSearch($results) { 85 foreach ($results as $result) { 86 $results_found = count($result['results']); 87 88 $data = json_encode($result['results']); 89 90 $this->db->query("UPDATE " . DB_PREFIX . "amazonus_product_search SET matches = " . (int)$results_found . ", `data` = '" . $this->db->escape($data) . "', `status` = 'finished' WHERE product_id = " . (int)$result['product_id'] . " LIMIT 1"); 91 } 92 } 93 94 public function addListingReport($data) { 95 $sql = "INSERT INTO " . DB_PREFIX . "amazonus_listing_report (sku, quantity, asin, price) VALUES "; 96 97 $sql_values = array(); 98 99 foreach ($data as $product) { 100 $sql_values[] = " ('" . $this->db->escape($product['sku']) . "', " . (int)$product['quantity'] . ", '" . $this->db->escape($product['asin']) . "', " . (double)$product['price'] . ") "; 101 } 102 103 $sql .= implode(',', $sql_values); 104 105 $this->db->query($sql); 106 } 107 108 public function removeListingReportLock($marketplace) { 109 $this->config->set('openbay_amazonus_processing_listing_reports', false); 110 111 $this->db->query("UPDATE " . DB_PREFIX . "setting SET `value` = '0', serialized = 0 WHERE `key` = 'openbay_amazonus_processing_listing_reports'"); 112 } 113 }