diff --git a/app/devices/device_copy.php b/app/devices/device_copy.php index 511b07609d..588d612896 100644 --- a/app/devices/device_copy.php +++ b/app/devices/device_copy.php @@ -45,21 +45,21 @@ //set the http get/post variable(s) to a php variable if (is_uuid($_REQUEST["id"]) && isset($_REQUEST["mac"])) { $device_uuid = $_REQUEST["id"]; - $mac_address_new = $_REQUEST["mac"]; - $mac_address_new = preg_replace('#[^a-fA-F0-9./]#', '', $mac_address_new); + $device_mac_address = $_REQUEST["mac"]; + $device_mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address); } //set the default $save = true; //check to see if the mac address exists - if ($mac_address_new == "" || $mac_address_new == "000000000000") { + if ($device_mac_address == "" || $device_mac_address == "000000000000") { //allow duplicates to be used as templaes } else { $sql = "select count(*) from v_devices "; $sql .= "where device_mac_address = :device_mac_address "; - $parameters['device_mac_address'] = $mac_address_new; + $parameters['device_mac_address'] = $device_mac_address; $database = new database; $num_rows = $database->select($sql, $parameters, 'column'); if ($num_rows == 0) { @@ -122,32 +122,45 @@ $devices[0]["device_description"] = $text['button-copy']." ".$devices[0]["device_description"]; //prepare the device_lines array + $x = 0; - foreach ($device_lines as $row) { - $device_lines[$x]["device_uuid"] = $device_uuid; - $device_lines[$x]["device_line_uuid"] = uuid(); - $x++; + if (is_array($device_lines)) { + foreach ($device_lines as $row) { + $device_lines[$x]["device_uuid"] = $device_uuid; + $device_lines[$x]["device_line_uuid"] = uuid(); + $x++; + } } //prepare the device_keys array $x = 0; - foreach ($device_keys as $row) { - $device_keys[$x]["device_uuid"] = $device_uuid; - $device_keys[$x]["device_key_uuid"] = uuid(); - $x++; + if (is_array($device_keys)) { + foreach ($device_keys as $row) { + $device_keys[$x]["device_uuid"] = $device_uuid; + $device_keys[$x]["device_key_uuid"] = uuid(); + $x++; + } } //prepare the device_settings array $x = 0; - foreach ($device_settings as $row) { - $device_settings[$x]["device_uuid"] = $device_uuid; - $device_settings[$x]["device_setting_uuid"] = uuid(); - $x++; + if (is_array($device_settings)) { + foreach ($device_settings as $row) { + $device_settings[$x]["device_uuid"] = $device_uuid; + $device_settings[$x]["device_setting_uuid"] = uuid(); + $x++; + } + } + +//normalize the mac address + if (isset($device_mac_address) && strlen($device_mac_address) > 0) { + $device_mac_address = strtolower($device_mac_address); + $device_mac_address = preg_replace('#[^a-fA-F0-9./]#', '', $device_mac_address); } //create the device array $device = $devices[0]; - $device["device_mac_address"] = $mac_address_new; + $device["device_mac_address"] = $device_mac_address; $device["device_lines"] = $device_lines; $device["device_keys"] = $device_keys; $device["device_settings"] = $device_settings; @@ -166,7 +179,8 @@ } //redirect - header("Location: device_edit.php?id=".$device_uuid); - return; + if (is_uuid($device_uuid)) { + header("Location: device_edit.php?id=".urlencode($device_uuid)); + } ?>