diff --git a/user/post/asset.php b/user/post/asset.php index a33a57cd..1dd57c29 100644 --- a/user/post/asset.php +++ b/user/post/asset.php @@ -1582,13 +1582,14 @@ if (isset($_POST['export_client_asset_interfaces_csv'])) { $sql = mysqli_query($mysqli,"SELECT * FROM asset_interfaces LEFT JOIN assets ON asset_id = interface_asset_id LEFT JOIN networks ON interface_network_id = network_id LEFT JOIN clients ON asset_client_id = client_id WHERE asset_id = $asset_id AND interface_archived_at IS NULL ORDER BY interface_name ASC"); $row = mysqli_fetch_array($sql); - $asset_name = $row['asset_name']; - $client_id = $row['asset_client_id']; - $num_rows = mysqli_num_rows($sql); if ($num_rows > 0) { + mysqli_data_seek($sql, 0); // <— rewind to the start + $delimiter = ","; + $enclosure = '"'; + $escape = '\\'; // backslash $filename = strtoAZaz09($asset_name) . "-Interfaces-" . date('Y-m-d') . ".csv"; //create a file pointer @@ -1596,12 +1597,12 @@ if (isset($_POST['export_client_asset_interfaces_csv'])) { //set column headers $fields = array('Name', 'Description', 'Type', 'MAC', 'IP', 'NAT IP', 'IPv6', 'Network'); - fputcsv($f, $fields, $delimiter); + fputcsv($f, $fields, $delimiter, $enclosure, $escape); //output each row of the data, format line as csv and write to file pointer while($row = mysqli_fetch_array($sql)) { $lineData = array($row['interface_name'], $row['interface_description'], $row['interface_type'], $row['interface_mac'], $row['interface_ip'], $row['interface_nat_ip'], $row['interface_ipv6'], $row['network_name']); - fputcsv($f, $lineData, $delimiter); + fputcsv($f, $lineData, $delimiter, $enclosure, $escape); } //move back to beginning of file diff --git a/user/post/client.php b/user/post/client.php index 5cc2b4aa..45bbcb3c 100644 --- a/user/post/client.php +++ b/user/post/client.php @@ -322,6 +322,8 @@ if (isset($_POST['export_clients_csv'])) { if ($num_rows > 0) { $delimiter = ","; + $enclosure = '"'; + $escape = '\\'; // backslash $filename = $session_company_name . "-Clients-" . date('Y-m-d') . ".csv"; //create a file pointer @@ -329,12 +331,12 @@ if (isset($_POST['export_clients_csv'])) { //set column headers $fields = array('Client Name', 'Industry', 'Referral', 'Website', 'Primary Location Name', 'Location Phone', 'Location Address', 'City', 'State', 'Postal Code', 'Country', 'Primary Contact Name', 'Title', 'Contact Phone', 'Extension', 'Contact Mobile', 'Contact Email', 'Hourly Rate', 'Currency', 'Payment Terms', 'Tax ID', 'Abbreviation'); - fputcsv($f, $fields, $delimiter); + fputcsv($f, $fields, $delimiter, $enclosure, $escape); //output each row of the data, format line as csv and write to file pointer while($row = $sql->fetch_assoc()) { $lineData = array($row['client_name'], $row['client_type'], $row['client_referral'], $row['client_website'], $row['location_name'], formatPhoneNumber($row['location_phone']), $row['location_address'], $row['location_city'], $row['location_state'], $row['location_zip'], $row['location_country'], $row['contact_name'], $row['contact_title'], formatPhoneNumber($row['contact_phone']), $row['contact_extension'], formatPhoneNumber($row['contact_mobile']), $row['contact_email'], $row['client_rate'], $row['client_currency_code'], $row['client_net_terms'], $row['client_tax_id_number'], $row['client_abbreviation']); - fputcsv($f, $lineData, $delimiter); + fputcsv($f, $lineData, $delimiter, $enclosure, $escape); } //move back to beginning of file diff --git a/user/post/invoice.php b/user/post/invoice.php index 504b7f25..8c630c27 100644 --- a/user/post/invoice.php +++ b/user/post/invoice.php @@ -1929,6 +1929,8 @@ if (isset($_POST['set_recurring_payment'])) { } if (isset($_POST['export_invoices_csv'])) { + + enforceUserPermission('module_sales'); if (isset($_POST['client_id'])) { $client_id = intval($_POST['client_id']); diff --git a/user/post/quote.php b/user/post/quote.php index fcfd70fe..b38fc8d4 100644 --- a/user/post/quote.php +++ b/user/post/quote.php @@ -536,33 +536,39 @@ if(isset($_POST['export_quotes_csv'])){ enforceUserPermission('module_sales'); - $client_id = intval($_POST['client_id']); + if (isset($_POST['client_id'])) { + $client_id = intval($_POST['client_id']); + $client_query = "WHERE quote_client_id = $client_id"; + // Get Client Name for logging + $client_name = getFieldByID('clients', $client_id, 'client_name'); + $file_name_prepend = "$client_name-"; + } else { + $client_query = ''; + $client_name = ''; + $file_name_prepend = ''; + } - //get records from database - $sql = mysqli_query($mysqli,"SELECT client_name FROM clients WHERE client_id = $client_id"); - $row = mysqli_fetch_array($sql); - - $client_name = $row['client_name']; - - $sql = mysqli_query($mysqli,"SELECT * FROM quotes WHERE quote_client_id = $client_id ORDER BY quote_number ASC"); + $sql = mysqli_query($mysqli,"SELECT * FROM quotes $client_query ORDER BY quote_number ASC"); $num_rows = mysqli_num_rows($sql); if($num_rows > 0){ $delimiter = ","; - $filename = $client_name . "-Quotes-" . date('Y-m-d') . ".csv"; + $enclosure = '"'; + $escape = '\\'; // backslash + $filename = $file_name_prepend . "Quotes-" . date('Y-m-d') . ".csv"; //create a file pointer $f = fopen('php://memory', 'w'); //set column headers $fields = array('Quote Number', 'Scope', 'Amount', 'Date', 'Status'); - fputcsv($f, $fields, $delimiter); + fputcsv($f, $fields, $delimiter, $enclosure, $escape); //output each row of the data, format line as csv and write to file pointer while($row = $sql->fetch_assoc()){ $lineData = array($row['quote_prefix'] . $row['quote_number'], $row['quote_scope'], $row['quote_amount'], $row['quote_date'], $row['quote_status']); - fputcsv($f, $lineData, $delimiter); + fputcsv($f, $lineData, $delimiter, $enclosure, $escape); } //move back to beginning of file @@ -580,7 +586,7 @@ if(isset($_POST['export_quotes_csv'])){ flash_alert("Exported $num_rows quote(s)"); - redirect(); + exit; } diff --git a/user/post/ticket.php b/user/post/ticket.php index 591ba3a3..d27bd175 100644 --- a/user/post/ticket.php +++ b/user/post/ticket.php @@ -2183,6 +2183,8 @@ if (isset($_POST['export_tickets_csv'])) { if ($sql->num_rows > 0) { $delimiter = ","; + $enclosure = '"'; + $escape = '\\'; // backslash $filename = "Tickets-" . date('Y-m-d') . ".csv"; //create a file pointer @@ -2190,12 +2192,12 @@ if (isset($_POST['export_tickets_csv'])) { //set column headers $fields = array('Ticket Number', 'Priority', 'Status', 'Subject', 'Date Opened', 'Date Resolved', 'Date Closed'); - fputcsv($f, $fields, $delimiter); + fputcsv($f, $fields, $delimiter, $enclosure, $escape); //output each row of the data, format line as csv and write to file pointer while ($row = $sql->fetch_assoc()) { $lineData = array($config_ticket_prefix . $row['ticket_number'], $row['ticket_priority'], $row['ticket_status_name'], $row['ticket_subject'], $row['ticket_created_at'], $row['ticket_resolved_at'], $row['ticket_closed_at']); - fputcsv($f, $lineData, $delimiter); + fputcsv($f, $lineData, $delimiter, $enclosure, $escape); } //move back to beginning of file