From 34b1ee1600ef385bdbbb8e7d08c7c6c18857a2ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Wed, 9 Oct 2024 15:08:57 +0200 Subject: [PATCH] CMXX - Firmware improvement --- api/v2/get/products.php | 128 +++++++++++++++++++++++++++++++ api/v2/get/products_software.php | 66 ++++++++++++++++ products_versions.php | 43 ++++++++++- settings/settingsviews.php | 1 + style/admin.css | 4 + 5 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 api/v2/get/products.php create mode 100644 api/v2/get/products_software.php diff --git a/api/v2/get/products.php b/api/v2/get/products.php new file mode 100644 index 0000000..86b20cc --- /dev/null +++ b/api/v2/get/products.php @@ -0,0 +1,128 @@ +soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';} + +//default whereclause +$whereclause = ''; + +switch ($permission) { + case '4': + $whereclause = ''; + break; + case '3': + $whereclause = ''; + break; + default: + $condition = '__salesid___'.$partner->salesid.'___soldto___'.substr($partner->soldto, 0, strpos($partner->soldto, "-")).$soldto_search; + $whereclause = 'WHERE accounthierarchy like "'.$condition.'"'; + break; +} + +//NEW ARRAY +$criterias = []; +$clause = ''; + +//Check for $_GET variables and build up clause +if(isset($get_content) && $get_content!=''){ + //GET VARIABLES FROM URL + $requests = explode("&", $get_content); + //Check for keys and values + foreach ($requests as $y){ + $v = explode("=", $y); + //INCLUDE VARIABLES IN ARRAY + $criterias[$v[0]] = $v[1]; + + if ($v[0] == 'page' || $v[0] =='p' || $v[0] =='totals' || $v[0] =='list' || $v[0] =='history'|| $v[0] =='success_msg'){ + //do nothing + } + elseif ($v[0] == 'search') { + //build up search + $clause .= ' AND productcode like :'.$v[0]; + } + else {//create clause + $clause .= ' AND '.$v[0].' = :'.$v[0]; + } + } + if ($whereclause == '' && $clause !=''){ + $whereclause = 'WHERE '.substr($clause, 4); + } else { + $whereclause .= $clause; + } +} +//Define Query +if(isset($criterias['totals']) && $criterias['totals'] ==''){ +//Request for total rows + $sql = 'SELECT count(*) as count FROM products '.$whereclause.''; +} +elseif (isset($criterias['list']) && $criterias['list'] =='') { + //SQL for Paging + $sql = 'SELECT * FROM products '.$whereclause.''; +} +else { + //SQL for Paging + $sql = 'SELECT * FROM products '.$whereclause.' LIMIT :page,:num_products'; +} + +$stmt = $pdo->prepare($sql); + +//Bind to query +if (str_contains($whereclause, ':condition')){ + $stmt->bindValue('condition', $condition, PDO::PARAM_STR); +} + +if (!empty($criterias)){ + foreach ($criterias as $key => $value){ + $key_condition = ':'.$key; + if (str_contains($whereclause, $key_condition)){ + if ($key == 'search'){ + $search_value = '%'.$value.'%'; + $stmt->bindValue($key, $search_value, PDO::PARAM_STR); + } + else { + $stmt->bindValue($key, $value, PDO::PARAM_STR); + } + } + } +} + +//Add paging details +if(isset($criterias['totals']) && $criterias['totals']==''){ + $stmt->execute(); + $messages = $stmt->fetch(); + $messages = $messages[0]; +} +elseif(isset($criterias['list']) && $criterias['list']==''){ + //Excute Query + $stmt->execute(); + //Get results + $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); +} +else { + $current_page = isset($criterias['p']) && is_numeric($criterias['p']) ? (int)$criterias['p'] : 1; + $stmt->bindValue('page', ($current_page - 1) * $page_rows_products, PDO::PARAM_INT); + $stmt->bindValue('num_products', $page_rows_products, PDO::PARAM_INT); + + //Excute Query + $stmt->execute(); + //Get results + $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); +} + +//------------------------------------------ +//JSON_ENCODE +//------------------------------------------ +$messages = json_encode($messages, JSON_UNESCAPED_UNICODE); + +//Send results +echo $messages; + +?> \ No newline at end of file diff --git a/api/v2/get/products_software.php b/api/v2/get/products_software.php new file mode 100644 index 0000000..c105c6e --- /dev/null +++ b/api/v2/get/products_software.php @@ -0,0 +1,66 @@ +prepare($sql); +//Excute Query +$stmt->execute([$criterias['productcode'],$criterias['version']]); +//Get results +$messages = $stmt->fetchAll(PDO::FETCH_ASSOC); + +foreach ($messages as $message){ + + //CHECK IF FIRMWARE FILE IS AVAILABLE + $software_file = dirname(__FILE__,4)."/firmware/".$message['software'].'.HEX'; + if (file_exists($software_file)){ + //GET SOURCE CODE + $file_contents = file_get_contents($software_file); + } else { + $file_contents = ''; + } + + $output = array("hw_version"=> $message['version'], "HEX_FW"=> $message['software'], "Firmware" => $file_contents); + + //------------------------------------------ + //JSON_ENCODE + //------------------------------------------ + $output = json_encode($output, JSON_UNESCAPED_UNICODE); + + //Send results + echo $output; +} + +} +else { + http_response_code(404); +} + +?> \ No newline at end of file diff --git a/products_versions.php b/products_versions.php index 503c53e..123468c 100644 --- a/products_versions.php +++ b/products_versions.php @@ -41,6 +41,23 @@ if (isset($_GET['rowID'])) { if ($update_allowed === 1){ if (isset($_POST['submit'])) { + + //CHECK FOR FIRMWARE FILE + $firmware_file = $_FILES["fileToUpload"]["name"] ?? ''; + if($firmware_file !='' || !empty($firmware_file)){ + //READ FILE + $contents = file_get_contents($_FILES["fileToUpload"]["tmp_name"]); + //firmwarename + $firmware_name = pathinfo($_FILES["fileToUpload"]["name"], PATHINFO_FILENAME); + //Filename + $target_dir = dirname(__FILE__)."/firmware/"; + $input_file = $target_dir . $firmware_name.'.HEX'; + //store firmware file + file_put_contents($input_file, $contents); + //Use firmwarefile name as software version + $_POST['software'] = $firmware_name; + } + //GET ALL POST DATA $data = json_encode($_POST, JSON_UNESCAPED_UNICODE); //Secure data @@ -78,6 +95,25 @@ if (isset($_GET['rowID'])) { } else { // Create a new product if (isset($_POST['submit']) && $create_allowed === 1) { + + //CHECK FOR FIRMWARE FILE + $firmware_file = $_FILES["fileToUpload"]["name"] ?? ''; + + //FIRMWARE FILE UPLOADED + if($firmware_file !='' || !empty($firmware_file)){ + //READ FILE + $contents = file_get_contents($_FILES["fileToUpload"]["tmp_name"]); + //firmwarename + $firmware_name = pathinfo($_FILES["fileToUpload"]["name"], PATHINFO_FILENAME); + //Filename + $target_dir = dirname(__FILE__)."/firmware/"; + $input_file = $target_dir . $firmware_name.'.HEX'; + //store firmware file + file_put_contents($input_file, $contents); + //Use firmwarefile name as software version + $_POST['software'] = $firmware_name.'.HEX'; + } + //GET ALL POST DATA $data = json_encode($_POST , JSON_UNESCAPED_UNICODE); //Secure data @@ -97,7 +133,7 @@ if (isset($_GET['rowID'])) { template_header('Products versions', 'products_versions', 'manage'); $view =' -