diff --git a/app/devices/device_download.php b/app/devices/device_download.php index ae70f8464b..95892c64e8 100644 --- a/app/devices/device_download.php +++ b/app/devices/device_download.php @@ -17,7 +17,7 @@ The Initial Developer of the Original Code is Mark J Crane - Portions created by the Initial Developer are Copyright (C) 2008-2016 + Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): @@ -28,7 +28,6 @@ require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; - require_once "resources/paging.php"; //check permissions if (permission_exists('device_export')) { @@ -75,14 +74,40 @@ header("Content-Transfer-Encoding: binary"); } - //define possible columns in the array - $available_columns[] = 'device_uuid'; - $available_columns[] = 'domain_uuid'; - $available_columns[] = 'device_mac_address'; - $available_columns[] = 'device_label'; - $available_columns[] = 'device_template'; - $available_columns[] = 'device_description'; + $available_columns['devices'][] = 'device_uuid'; + $available_columns['devices'][] = 'device_profile_uuid'; + $available_columns['devices'][] = 'device_mac_address'; + $available_columns['devices'][] = 'device_label'; + $available_columns['devices'][] = 'device_vendor'; + $available_columns['devices'][] = 'device_template'; + $available_columns['devices'][] = 'device_enabled_date'; + $available_columns['devices'][] = 'device_username'; + $available_columns['devices'][] = 'device_password'; + $available_columns['devices'][] = 'device_uuid_alternate'; + $available_columns['devices'][] = 'device_provisioned_date'; + $available_columns['devices'][] = 'device_provisioned_method'; + $available_columns['devices'][] = 'device_provisioned_ip'; + $available_columns['devices'][] = 'device_enabled'; + $available_columns['devices'][] = 'device_description'; + + $available_columns['device_lines'][] = 'device_line_uuid'; + $available_columns['device_lines'][] = 'device_uuid'; + $available_columns['device_lines'][] = 'line_number'; + $available_columns['device_lines'][] = 'server_address'; + $available_columns['device_lines'][] = 'server_address_primary'; + $available_columns['device_lines'][] = 'server_address_secondary'; + $available_columns['device_lines'][] = 'outbound_proxy_primary'; + $available_columns['device_lines'][] = 'outbound_proxy_secondary'; + $available_columns['device_lines'][] = 'display_name'; + $available_columns['device_lines'][] = 'user_id'; + $available_columns['device_lines'][] = 'auth_id'; + $available_columns['device_lines'][] = 'password'; + $available_columns['device_lines'][] = 'sip_port'; + $available_columns['device_lines'][] = 'sip_transport'; + $available_columns['device_lines'][] = 'register_expires'; + $available_columns['device_lines'][] = 'shared_line'; + $available_columns['device_lines'][] = 'enabled'; //get the devices and send them as output $column_group = $_REQUEST["column_group"]; @@ -96,16 +121,26 @@ exit; } + //validate table names + foreach($column_group as $table_name => $columns) { + if (!isset($available_columns[$table_name])) { + unset($column_group[$table_name]); + } + } + //validate columns - foreach ($column_group as $index => $column_name) { - if (!in_array($column_name, $available_columns)) { - unset($column_group[$index]); + foreach($column_group as $table_name => $columns) { + foreach ($columns as $column_name) { + if (!in_array($column_name, $available_columns[$table_name])) { + unset($column_group[$table_name][$column_name]); + } } } //iterate columns if (is_array($column_group) && @sizeof($column_group) != 0) { - $column_names = implode(", ", $column_group); + + $column_names = implode(", ", $column_group['devices']); $sql = "select ".$column_names." from v_devices "; $sql .= " where domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; @@ -114,6 +149,30 @@ unset($sql, $parameters, $column_names); //print_r($extensions); + foreach($column_group as $table_name => $columns) { + if ($table_name !== 'devices') { + $column_names = implode(", ", $columns); + $sql = "select ".$column_names." from v_".$table_name." "; + $sql .= " where domain_uuid = :domain_uuid "; + $parameters['domain_uuid'] = $domain_uuid; + $database = new database; + $$table_name = $database->select($sql, $parameters, 'all'); + $x = 0; + foreach($devices as $device) { + foreach($$table_name as $row) { + if ($device['device_uuid'] == $row['device_uuid']) { + foreach($row as $key => $value) { + $devices[$x][$key] = $value; + } + break; + } + } + $x++; + } + unset($sql, $parameters, $column_names); + } + } + if (is_array($devices) && @sizeof($devices) != 0) { download_send_headers("device_export_".date("Y-m-d").".csv"); echo array2csv($devices); @@ -153,17 +212,24 @@ if (is_array($available_columns) && @sizeof($available_columns) != 0) { $x = 0; - foreach ($available_columns as $column_name) { - $list_row_onclick = "if (!this.checked) { document.getElementById('checkbox_all').checked = false; }"; - echo "\n"; - echo " \n"; - echo " \n"; - echo " \n"; - echo " ".$column_name.""; - echo ""; - $x++; + foreach ($available_columns as $table_name => $columns) { + foreach ($columns as $column_name) { + $list_row_onclick = "if (!this.checked) { document.getElementById('checkbox_all').checked = false; }"; + echo "\n"; + echo " \n"; + echo " \n"; + echo " \n"; + echo " ".$column_name.""; + echo ""; + $x++; + } } } + + //test the validation + //echo " \n"; + //echo " \n"; + //echo " \n"; echo "\n"; echo "
\n"; @@ -173,4 +239,4 @@ //include the footer require_once "resources/footer.php"; -?> \ No newline at end of file +?>