From bb584d403c8994906b2bab4fdc7a93b39976e83a Mon Sep 17 00:00:00 2001 From: Mark Crane Date: Sun, 23 Feb 2014 09:33:27 +0000 Subject: [PATCH] Add device copy to make it faster to add devices for endpoint provisioning. --- app/devices/app_languages.php | 20 +++++ app/devices/device_copy.php | 137 ++++++++++++++++++++++++++++++++++ app/devices/device_edit.php | 3 + 3 files changed, 160 insertions(+) create mode 100644 app/devices/device_copy.php diff --git a/app/devices/app_languages.php b/app/devices/app_languages.php index bb16e6b136..a596019822 100644 --- a/app/devices/app_languages.php +++ b/app/devices/app_languages.php @@ -644,6 +644,26 @@ $text['button-view']['pt-pt'] = "Vista"; $text['button-view']['fr-fr'] = "Voir"; + $text['button-copy']['en-us'] = "Copy"; + $text['button-copy']['es-cl'] = "Copiar"; + $text['button-copy']['pt-pt'] = "Copiar"; + $text['button-copy']['fr-fr'] = "Copier"; + + $text['confirm-copy']['en-us'] = "Do you really want to copy this?"; + $text['confirm-copy']['es-cl'] = "¿Realmente desea copiar esto?"; + $text['confirm-copy']['pt-pt'] = "Deseja realmente copiar isto?"; + $text['confirm-copy']['fr-fr'] = "Voulez-vous vraiment copier cela?"; + + $text['message-copy']['en-us'] = "Copy Completed"; + $text['message-copy']['es-cl'] = "Copia Completada"; + $text['message-copy']['pt-pt'] = "Cópia Efectuada"; + $text['message-copy']['fr-fr'] = "Copié"; + + $text['message_device']['en-us'] = "Enter the new MAC Address."; + $text['message_device']['es-cl'] = "Introduzca la nueva dirección MAC."; + $text['message_device']['pt-pt'] = "Digite o novo endereço MAC."; + $text['message_device']['fr-fr'] = "Insérer la nouvelle adresse MAC."; + $text['button-back']['en-us'] = "Back"; $text['button-back']['es-cl'] = "Volver"; $text['button-back']['pt-pt'] = "Voltar"; diff --git a/app/devices/device_copy.php b/app/devices/device_copy.php new file mode 100644 index 0000000000..f2339b1f4f --- /dev/null +++ b/app/devices/device_copy.php @@ -0,0 +1,137 @@ + + Portions created by the Initial Developer are Copyright (C) 2008-2012 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Mark J Crane +*/ +include "root.php"; +require_once "resources/require.php"; +require_once "resources/check_auth.php"; +if (permission_exists('device_add')) { + //access granted +} +else { + echo "access denied"; + exit; +} + +//add multi-lingual support + require_once "app_languages.php"; + foreach($text as $key => $value) { + $text[$key] = $value[$_SESSION['domain']['language']['code']]; + } + +//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); + } + +//get the device + $sql = "SELECT * FROM v_devices "; + $sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and 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 domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "and 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 domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "AND 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 domain_uuid = '".$_SESSION['domain_uuid']."' "; + $sql .= "AND 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"]); + +//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; + +//copy the device + $orm = new orm; + $orm->name('devices'); + $orm->save($device); + $response = $orm->message; + +//redirect + $_SESSION["message"] = $text['message-copy']; + header("Location: devices.php"); + return; + +?> \ No newline at end of file diff --git a/app/devices/device_edit.php b/app/devices/device_edit.php index 9d052c8e13..e36b7a893f 100644 --- a/app/devices/device_edit.php +++ b/app/devices/device_edit.php @@ -385,6 +385,9 @@ require_once "resources/require.php"; echo "".$text['header-device']."\n"; echo "\n"; echo " \n"; + if ($action != "add") { + echo " \n"; + } echo " \n"; echo "\n"; echo "\n";