Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes include "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permissions if (permission_exists('device_add')) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //set the http get/post variable(s) to a php variable if (isset($_REQUEST["id"]) && isset($_REQUEST["mac"])) { $device_uuid = check_str($_REQUEST["id"]); $mac_address_new = check_str($_REQUEST["mac"]); $mac_address_new = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address_new); } //set the default $save = true; //check to see if the mac address exists if ($mac_address_new == "" || $mac_address_new == "000000000000") { //allow duplicates to be used as templaes } else { $sql = "SELECT count(*) AS num_rows FROM v_devices "; $sql .= "WHERE device_mac_address = '".$mac_address_new."' "; $prep_statement = $db->prepare($sql); if ($prep_statement) { $prep_statement->execute(); $row = $prep_statement->fetch(PDO::FETCH_ASSOC); if ($row['num_rows'] == "0") { $save = true; } else { $save = false; messages::add($text['message-duplicate']); } } unset($prep_statement); } //get the device $sql = "SELECT * FROM v_devices "; $sql .= "where device_uuid = '".$device_uuid."' "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $devices = $prep_statement->fetchAll(PDO::FETCH_NAMED); //get device lines $sql = "SELECT * FROM v_device_lines "; $sql .= "where device_uuid = '".$device_uuid."' "; $sql .= "order by line_number asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $device_lines = $prep_statement->fetchAll(PDO::FETCH_NAMED); //get device keys $sql = "SELECT * FROM v_device_keys "; $sql .= "WHERE device_uuid = '".$device_uuid."' "; $sql .= "ORDER by "; $sql .= "CASE device_key_category "; $sql .= "WHEN 'line' THEN 1 "; $sql .= "WHEN 'memort' THEN 2 "; $sql .= "WHEN 'programmable' THEN 3 "; $sql .= "WHEN 'expansion' THEN 4 "; $sql .= "ELSE 100 END, "; $sql .= "cast(device_key_id as numeric) asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $device_keys = $prep_statement->fetchAll(PDO::FETCH_NAMED); //get device settings $sql = "SELECT * FROM v_device_settings "; $sql .= "WHERE device_uuid = '".$device_uuid."' "; $sql .= "ORDER by device_setting_subcategory asc "; $prep_statement = $db->prepare(check_sql($sql)); $prep_statement->execute(); $device_settings = $prep_statement->fetchAll(PDO::FETCH_NAMED); //prepare the devices array unset($devices[0]["device_uuid"]); //add copy to the device description $devices[0]["device_description"] = $text['button-copy']." ".$devices[0]["device_description"]; //prepare the device_lines array $x = 0; foreach ($device_lines as $row) { unset($device_lines[$x]["device_uuid"]); unset($device_lines[$x]["device_line_uuid"]); $x++; } //prepare the device_keys array $x = 0; foreach ($device_keys as $row) { unset($device_keys[$x]["device_uuid"]); unset($device_keys[$x]["device_key_uuid"]); $x++; } //prepare the device_settings array $x = 0; foreach ($device_settings as $row) { unset($device_settings[$x]["device_uuid"]); unset($device_settings[$x]["device_setting_uuid"]); $x++; } //create the device array $device = $devices[0]; $device["device_mac_address"] = $mac_address_new; $device["device_lines"] = $device_lines; $device["device_keys"] = $device_keys; $device["device_settings"] = $device_settings; //prepare the array $array['devices'][] = $device; //copy the device if ($save) { $database = new database; $database->app_name = 'devices'; $database->app_uuid = '4efa1a1a-32e7-bf83-534b-6c8299958a8e'; $database->save($array); $response = $database->message; messages::add($text['message-copy']); } //redirect header("Location: devices.php"); return; ?>