From 8232cefbbac144c1d6b43913602a96a71766ec1b Mon Sep 17 00:00:00 2001 From: timwsuqld Date: Wed, 17 Aug 2016 06:03:55 +1000 Subject: [PATCH 1/6] Fix path to snipeit-ssl.crt (#2428) --- docker/001-default-ssl.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/001-default-ssl.conf b/docker/001-default-ssl.conf index dc55d30d5d..ab8a6931ef 100644 --- a/docker/001-default-ssl.conf +++ b/docker/001-default-ssl.conf @@ -50,7 +50,7 @@ # when the CA certificates are directly appended to the server # certificate for convinience. #SSLCertificateChainFile /etc/apache2/ssl.crt/server-ca.crt - SSLCertificateChainFile /etc/ssl/private/snipeit-ssl.crt + SSLCertificateChainFile /var/lib/snipeit/ssl/snipeit-ssl.crt # Certificate Authority (CA): # Set the CA certificate verification path where to find CA From 9bf3403f31214925b438dcd3464f1a49ee0a72bc Mon Sep 17 00:00:00 2001 From: Daniel Meltzer Date: Fri, 26 Aug 2016 08:01:58 -0500 Subject: [PATCH 2/6] Fix #2499 (#2500) Missed this instance when renaming the method. Sorry! --- app/Http/Controllers/ReportsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index f7dc09168f..6b8e05c34e 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -167,7 +167,7 @@ class ReportsController extends Controller $row[] = ''; } $row[] = $asset->purchase_date; - $row[] = '"' . Helper::parsePurchasedCost($asset->purchase_cost) . '"'; + $row[] = '"' . Helper::formatCurrencyOutput($asset->purchase_cost) . '"'; if ($asset->order_number) { $row[] = e($asset->order_number); } else { From efe95d9ad0ab79cfd2e3f99c83c8ff603ccc2e36 Mon Sep 17 00:00:00 2001 From: Ryan Stafford Date: Tue, 30 Aug 2016 15:11:42 -0400 Subject: [PATCH 3/6] Syntax error on VOLUME instruction (#2526) Added quotes to volume path. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c78ba03a1f..1b87ca7243 100644 --- a/Dockerfile +++ b/Dockerfile @@ -80,7 +80,7 @@ RUN cd /var/www/html;composer install ############### DATA VOLUME ################# -VOLUME [/var/lib/snipeit] +VOLUME ["/var/lib/snipeit"] ##### START SERVER From 0a506120b772649b98f92389cc36c9eb33f885b8 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 6 Sep 2016 20:01:10 -0700 Subject: [PATCH 4/6] Hotfix for dumb enum issue --- .../2016_08_30_084634_make_purchase_cost_nullable.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/database/migrations/2016_08_30_084634_make_purchase_cost_nullable.php b/database/migrations/2016_08_30_084634_make_purchase_cost_nullable.php index c4eef30aa8..241fa07269 100644 --- a/database/migrations/2016_08_30_084634_make_purchase_cost_nullable.php +++ b/database/migrations/2016_08_30_084634_make_purchase_cost_nullable.php @@ -12,6 +12,10 @@ class MakePurchaseCostNullable extends Migration */ public function up() { + + $platform = Schema::getConnection()->getDoctrineSchemaManager()->getDatabasePlatform(); + $platform->registerDoctrineTypeMapping('enum', 'string'); + Schema::table('assets', function ($table) { $table->decimal('purchase_cost',8,2)->nullable()->default(null)->change(); }); From 5e2dbaffc4862f4c1b4cb4225039bcd7251e1bbb Mon Sep 17 00:00:00 2001 From: snipe Date: Mon, 12 Sep 2016 14:06:55 -0700 Subject: [PATCH 5/6] Use streaming to handle large exports --- app/Http/Controllers/ReportsController.php | 144 ++++++++------------- 1 file changed, 52 insertions(+), 92 deletions(-) diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 6b8e05c34e..327c02413f 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -21,6 +21,7 @@ use Illuminate\Support\Facades\View; use Input; use League\Csv\Reader; use Redirect; +use Symfony\Component\HttpFoundation\StreamedResponse; /** * This controller handles all actions related to Reports for @@ -108,8 +109,8 @@ class ReportsController extends Controller 'model.manufacturer', 'company' ) - ->orderBy('created_at', 'DESC') - ->get(); + ->orderBy('created_at', 'DESC') + ->get(); return View::make('reports/asset', compact('assets'))->with('settings', $settings); } @@ -123,103 +124,62 @@ class ReportsController extends Controller */ public function exportAssetReport() { - // Grab all the assets - $assets = Asset::orderBy('created_at', 'DESC')->get(); - $rows = [ ]; + \Debugbar::disable(); - // Create the header row - $header = [ - trans('admin/hardware/table.asset_tag'), - trans('admin/hardware/form.manufacturer'), - trans('admin/hardware/form.model'), - trans('general.model_no'), - trans('general.name'), - trans('admin/hardware/table.serial'), - trans('general.status'), - trans('admin/hardware/table.purchase_date'), - trans('admin/hardware/table.purchase_cost'), - trans('admin/hardware/form.order'), - trans('admin/hardware/form.supplier'), - trans('admin/hardware/table.checkoutto'), - trans('admin/hardware/table.location'), - trans('general.notes'), - ]; - $header = array_map('trim', $header); - $rows[] = implode($header, ','); + $response = new StreamedResponse(function(){ + // Open output stream + $handle = fopen('php://output', 'w'); - // Create a row per asset - foreach ($assets as $asset) { - $row = [ ]; - $row[] = e($asset->asset_tag); - if ($asset->model->manufacturer) { - $row[] = e($asset->model->manufacturer->name); - } else { - $row[] = ''; - } - $row[] = '"' . e($asset->model->name) . '"'; - $row[] = '"' . e($asset->model->modelno) . '"'; - $row[] = e($asset->name); - $row[] = e($asset->serial); - if ($asset->assetstatus) { - $row[] = e($asset->assetstatus->name); - } else { - $row[] = ''; - } - $row[] = $asset->purchase_date; - $row[] = '"' . Helper::formatCurrencyOutput($asset->purchase_cost) . '"'; - if ($asset->order_number) { - $row[] = e($asset->order_number); - } else { - $row[] = ''; - } - if ($asset->supplier_id) { - $row[] = e($asset->supplier->name); - } else { - $row[] = ''; + Asset::with('assigneduser', 'assetloc','defaultLoc','assigneduser.userloc','model','supplier','assetstatus','model.manufacturer')->orderBy('created_at', 'DESC')->chunk(500, function($assets) use($handle) { + fputcsv($handle, [ + trans('admin/hardware/table.asset_tag'), + trans('admin/hardware/form.manufacturer'), + trans('admin/hardware/form.model'), + trans('general.model_no'), + trans('general.name'), + trans('admin/hardware/table.serial'), + trans('general.status'), + trans('admin/hardware/table.purchase_date'), + trans('admin/hardware/table.purchase_cost'), + trans('admin/hardware/form.order'), + trans('admin/hardware/form.supplier'), + trans('admin/hardware/table.checkoutto'), + trans('admin/hardware/table.location'), + trans('general.notes'), + ]); + + foreach ($assets as $asset) { + // Add a new row with data + fputcsv($handle, [ + $asset->asset_tag, + ($asset->model->manufacturer) ? $asset->model->manufacturer->name : '', + ($asset->model) ? $asset->model->name : '', + ($asset->model->modelno) ? $asset->model->modelno : '', + ($asset->name) ? $asset->name : '', + ($asset->serial) ? $asset->serial : '', + ($asset->assetstatus) ? e($asset->assetstatus->name) : '', + ($asset->purchase_date) ? e($asset->purchase_date) : '', + ($asset->purchase_cost > 0) ? Helper::formatCurrencyOutput($asset->purchase_cost) : '', + ($asset->order_number) ? e($asset->order_number) : '', + ($asset->supplier) ? e($asset->supplier->name) : '', + ($asset->assigneduser) ? e($asset->assigneduser->fullName()) : '', + ($asset->assigneduser && $asset->assigneduser->userloc!='') ? + e($asset->assigneduser->userloc->name) : ( ($asset->defaultLoc!='') ? e($asset->defaultLoc->name) : ''), + ($asset->notes) ? e($asset->notes) : '', + ]); } + }); - if ($asset->assigned_to > 0) { - $user = User::find($asset->assigned_to); - $row[] = e($user->fullName()); - } else { - $row[] = ''; // Empty string if unassigned - } - - if (( $asset->assigned_to > 0 ) && ( $asset->assigneduser->location_id > 0 )) { - $location = Location::find($asset->assigneduser->location_id); - if ($location) { - $row[] = e($location->name); - } else { - $row[] = ''; - } - } elseif ($asset->rtd_location_id) { - $location = Location::find($asset->rtd_location_id); - if ($location->name) { - $row[] = e($location->name); - } else { - $row[] = ''; - } - } else { - $row[] = ''; // Empty string if location is not set - } - - if ($asset->notes) { - $row[] = '"' . e($asset->notes) . '"'; - } else { - $row[] = ''; - } - - $rows[] = implode($row, ','); - } - - // spit out a csv - $csv = implode($rows, "\n"); - $response = Response::make($csv, 200); - $response->header('Content-Type', 'text/csv'); - $response->header('Content-disposition', 'attachment;filename=report.csv'); + // Close the output stream + fclose($handle); + }, 200, [ + 'Content-Type' => 'text/csv', + 'Content-Disposition' => 'attachment; filename="assets-'.date('Y-m-d-his').'.csv"', + ]); return $response; + } /** From f384593e19c701b2481cecc8f21ffbc29f47c024 Mon Sep 17 00:00:00 2001 From: snipe Date: Wed, 14 Sep 2016 19:04:52 -0700 Subject: [PATCH 6/6] Fix license cloning --- app/Http/Controllers/LicensesController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/LicensesController.php b/app/Http/Controllers/LicensesController.php index e03d17bce1..d6d35a56fd 100755 --- a/app/Http/Controllers/LicensesController.php +++ b/app/Http/Controllers/LicensesController.php @@ -809,7 +809,8 @@ class LicensesController extends Controller ->with('supplier_list', $supplier_list) ->with('license', $license) ->with('maintained_list', $maintained_list) - ->with('company_list', $company_list); + ->with('company_list', $company_list) + ->with('manufacturer_list', Helper::manufacturerList()); }