Linux altar53.supremepanel53.com 4.18.0-553.8.1.lve.el8.x86_64 #1 SMP Thu Jul 4 16:24:39 UTC 2024 x86_64
/ home/ bdapparelinfo/ dhakazone.com/ system/ library/ openbay/ |
|
<?php namespace openbay; final class fba { private $api_key; private $api_account_id; private $encryption_key; private $encryption_iv; private $url = 'https://api.openbaypro.io/'; private $registry; private $logging = 1; private $logging_verbose = 1; private $max_log_size = 50; /** * Status IDs = * 0 = new * 1 = error * 2 = held * 3 = shipped * 4 = cancelled */ /** * Type IDs = * 0 = new * 1 = shipping * 2 = cancel */ public function __construct($registry) { $this->registry = $registry; $this->api_key = $this->config->get('openbay_fba_api_key'); $this->api_account_id = $this->config->get('openbay_fba_api_account_id'); $this->logging = $this->config->get('openbay_fba_debug_log'); $this->setEncryptionKey($this->config->get('openbay_fba_encryption_key')); $this->setEncryptionIv($this->config->get('openbay_fba_encryption_iv')); if ($this->logging == 1) { $this->setLogger(); } } public function __get($name) { return $this->registry->get($name); } public function getEncryptionKey() { return $this->encryption_key; } public function setEncryptionKey($key) { $this->encryption_key = $key; } public function getEncryptionIv() { return $this->encryption_iv; } public function setEncryptionIv($encryption_iv) { $this->encryption_iv = $encryption_iv; } public function setApiKey($api_key) { $this->api_key = $api_key; } public function setAccountId($api_account_id) { $this->api_account_id = $api_account_id; } public function call($uri, $data = array(), $request_type = 'GET') { $this->log("Request: " . $request_type . " : " . $this->url . $uri); $headers = array(); $headers[] = 'X-Auth-Token: ' . $this->api_key; $headers[] = 'X-Account-ID: ' . $this->api_account_id; $headers[] = 'X-Endpoint-Version: 2'; $headers[] = 'Content-Type: application/json'; $defaults = array( CURLOPT_HEADER => 0, CURLOPT_HTTPHEADER => $headers, CURLOPT_URL => $this->url . $uri, CURLOPT_USERAGENT => "OpenBay Pro for Fulfillment by Amazon/OpenCart", CURLOPT_FRESH_CONNECT => 1, CURLOPT_RETURNTRANSFER => 1, CURLOPT_FORBID_REUSE => 1, CURLOPT_TIMEOUT => 30, CURLOPT_SSL_VERIFYPEER => 0, CURLOPT_SSL_VERIFYHOST => 0, ); if ($this->logging_verbose == 1) { $defaults[CURLOPT_VERBOSE] = 1; $defaults[CURLOPT_STDERR] = fopen(DIR_LOGS . 'fba_verbose.log', "a+"); } if ($request_type == "POST") { $this->log('Request body:'); $this->log(print_r($data, true)); $defaults[CURLOPT_POST] = json_encode($data); $defaults[CURLOPT_POSTFIELDS] = json_encode($data); } else { $defaults[CURLOPT_CUSTOMREQUEST] = "GET"; } $curl = curl_init(); curl_setopt_array($curl, $defaults); $result = curl_exec($curl); if (!$result) { $this->log('call() - Curl Failed ' . curl_error($curl) . ' ' . curl_errno($curl)); $response = array('error' => true, 'error_messages' => array(curl_error($curl) . ' ' . curl_errno($curl)), 'body' => null, 'response_http' => 0); } else { $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE); $this->log("Response: " . $http_code . " : " . strlen($result) . " bytes"); $encoding = mb_detect_encoding($result); if ($encoding == 'UTF-8') { $result = preg_replace('/[^(\x20-\x7F)]*/', '', $result); } $result_parsed = json_decode($result, 1); $this->log('Raw json response:'); $this->log($result); $this->log('Parsed response:'); $this->log(print_r($result_parsed, true)); $response = array( 'error' => false, 'error_messages' => array(), 'body' => (isset($result_parsed['result']) ? $result_parsed['result'] : ''), 'response_http' => $http_code ); if (isset($result_parsed['errors']) && !empty($result_parsed['errors'])) { $response['error'] = true; $response['error_messages'] = $result_parsed['errors']; } } curl_close($curl); return $response; } public function getServerUrl() { return $this->url; } public function validate() { if ($this->config->get('openbay_fba_api_account_id') && $this->config->get('openbay_fba_api_key') && $this->config->get('openbay_fba_encryption_key') && $this->config->get('openbay_fba_encryption_iv')) { return true; } else { return false; } } private function setLogger() { if(file_exists(DIR_LOGS . 'fulfillment_by_amazon.log')) { if(filesize(DIR_LOGS . 'fulfillment_by_amazon.log') > ($this->max_log_size * 1000000)) { rename(DIR_LOGS . 'fulfillment_by_amazon.log', DIR_LOGS . '_fulfillment_by_amazon_' . date('Y-m-d_H-i-s') . '.log'); } } $this->logger = new \Log('fulfillment_by_amazon.log'); } public function log($data) { if ($this->logging == 1) { if (function_exists('getmypid')) { $process_id = getmypid(); $data = $process_id . ' - ' . $data; } $this->logger->write($data); } } public function createFBAOrderID($order_id) { $this->db->query("INSERT INTO `" . DB_PREFIX . "fba_order` SET `order_id` = '" . (int)$order_id . "', `status` = 0, `created` = now()"); return $this->db->getLastId(); } public function updateFBAOrderStatus($order_id, $status_id) { $this->db->query("UPDATE `" . DB_PREFIX . "fba_order` SET `status` = '" . (int)$status_id . "' WHERE `order_id` = '" . (int)$order_id . "' LIMIT 1"); } public function updateFBAOrderRef($order_id, $ref) { $this->db->query("UPDATE `" . DB_PREFIX . "fba_order` SET `fba_order_fulfillment_ref` = '" . $this->db->escape($ref) . "' WHERE `order_id` = '" . (int)$order_id . "' LIMIT 1"); } public function updateFBAOrderFulfillmentID($order_id, $fba_order_fulfillment_id) { $this->db->query("UPDATE `" . DB_PREFIX . "fba_order` SET `fba_order_fulfillment_id` = '" . (int)$fba_order_fulfillment_id . "' WHERE `order_id` = '" . (int)$order_id . "'"); } public function createFBAFulfillmentID($order_id, $type) { $this->db->query("INSERT INTO `" . DB_PREFIX . "fba_order_fulfillment` SET `created` = now(), `order_id` = '" . (int)$order_id . "', `type` = '" . (int)$type . "'"); $id = $this->db->getLastId(); $this->db->query("UPDATE `" . DB_PREFIX . "fba_order` SET `fba_order_fulfillment_id` = '" . (int)$id . "' WHERE `order_id` = '" . (int)$order_id . "' LIMIT 1"); return $id; } public function populateFBAFulfillment($request_body, $response_body, $header_code, $fba_order_fulfillment_id) { $this->db->query(" UPDATE `" . DB_PREFIX . "fba_order_fulfillment` SET `request_body` = '" . $this->db->escape($request_body) . "', `response_body` = '" . $this->db->escape($response_body) . "', `response_header_code` = '" . (int)$header_code . "' WHERE `fba_order_fulfillment_id` = '" . (int)$fba_order_fulfillment_id . "' "); $insert_id = $this->db->getLastId(); return $insert_id; } public function getFBAOrders($filter) { $sql = ""; // start date filter if (isset($filter['filter_start'])) { $sql .= " AND `created` >= '".$filter['filter_start']."'"; } // end date filter if (isset($filter['filter_end'])) { $sql .= " AND `created` <= '".$filter['filter_end']."'"; } // status filter if (isset($filter['filter_status'])) { $sql .= " AND `status` = '".$filter['filter_status']."'"; } $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "fba_order` WHERE 1 ".$sql." ORDER BY `created` DESC"); if ($query->num_rows == 0) { return false; } else { return $query->rows; } } public function getFBAOrder($order_id) { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "fba_order` WHERE `order_id` = '" . (int)$order_id . "' LIMIT 1"); if ($query->num_rows == 0) { return false; } else { $fba_order = $query->row; $fba_order['fulfillments'] = $this->getFBAOrderFulfillments($order_id); return $fba_order; } } public function getFBAOrderByRef($ref) { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "fba_order` WHERE `fba_order_fulfillment_ref` = '" . $this->db->escape($ref) . "' LIMIT 1"); if ($query->num_rows == 0) { return false; } else { $fba_order = $query->row; $fba_order['fulfillments'] = $fba_order['order_id']; return $fba_order; } } public function getFBAOrderFulfillments($order_id) { $query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "fba_order_fulfillment` WHERE `order_id` = '" . (int)$order_id . "' ORDER BY `created` DESC"); if ($query->num_rows == 0) { return false; } else { return $query->rows; } } public function hasOrderFBAItems($order_id) { $query = $this->db->query("SELECT COUNT(*) AS `total` FROM `" . DB_PREFIX . "order_product` `op` LEFT JOIN `" . DB_PREFIX . "product` `p` ON `op`.`product_id` = `p`.`product_id` WHERE `p`.`location` = 'FBA' AND `op`.`order_id` = '".(int)$order_id."'"); if ($query->num_rows == 0) { return false; } else { return $query->row['total']; } } }