mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-09 23:24:06 -08:00
Merge remote-tracking branch 'origin/develop'
This commit is contained in:
commit
c5603a0e10
|
@ -30,8 +30,11 @@ class SQLStreamer {
|
||||||
public function parse_sql(string $line): string {
|
public function parse_sql(string $line): string {
|
||||||
// take into account the 'start of line or not' setting as an instance variable?
|
// take into account the 'start of line or not' setting as an instance variable?
|
||||||
// 'continuation' lines for a permitted statement are PERMITTED.
|
// 'continuation' lines for a permitted statement are PERMITTED.
|
||||||
|
// remove *only* line-feeds & carriage-returns; helpful for regexes against lines from
|
||||||
|
// Windows dumps
|
||||||
|
$line = trim($line, "\r\n");
|
||||||
if($this->statement_is_permitted && $line[0] === ' ') {
|
if($this->statement_is_permitted && $line[0] === ' ') {
|
||||||
return $line;
|
return $line . "\n"; //re-add the newline
|
||||||
}
|
}
|
||||||
|
|
||||||
$table_regex = '`?([a-zA-Z0-9_]+)`?';
|
$table_regex = '`?([a-zA-Z0-9_]+)`?';
|
||||||
|
@ -42,8 +45,12 @@ class SQLStreamer {
|
||||||
"/^(INSERT INTO )$table_regex(.*)$/" => false,
|
"/^(INSERT INTO )$table_regex(.*)$/" => false,
|
||||||
"/^UNLOCK TABLES/" => false,
|
"/^UNLOCK TABLES/" => false,
|
||||||
// "/^\\) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;/" => false, // FIXME not sure what to do here?
|
// "/^\\) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;/" => false, // FIXME not sure what to do here?
|
||||||
"/^\\)[a-zA-Z0-9_= ]*;$/" => false
|
"/^\\)[a-zA-Z0-9_= ]*;$/" => false,
|
||||||
// ^^^^^^ that bit should *exit* the 'perimitted' black
|
// ^^^^^^ that bit should *exit* the 'permitted' block
|
||||||
|
"/^\\(.*\\)[,;]$/" => false, //older MySQL dump style with one set of values per line
|
||||||
|
/* we *could* have made the ^INSERT INTO blah VALUES$ turn on the capturing state, and closed it with
|
||||||
|
a ^(blahblah);$ but it's cleaner to not have to manage the state machine. We're just going to
|
||||||
|
assume that (blahblah), or (blahblah); are values for INSERT and are always acceptable. */
|
||||||
];
|
];
|
||||||
|
|
||||||
foreach($allowed_statements as $statement => $statechange) {
|
foreach($allowed_statements as $statement => $statechange) {
|
||||||
|
@ -67,7 +74,7 @@ class SQLStreamer {
|
||||||
}
|
}
|
||||||
//how do we *replace* the tablename?
|
//how do we *replace* the tablename?
|
||||||
// print "RETURNING LINE: $line";
|
// print "RETURNING LINE: $line";
|
||||||
return $line;
|
return $line . "\n"; //re-add newline
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// all that is not allowed is denied.
|
// all that is not allowed is denied.
|
||||||
|
@ -164,7 +171,8 @@ class RestoreFromBackup extends Command
|
||||||
{filename : The zip file to be migrated}
|
{filename : The zip file to be migrated}
|
||||||
{--no-progress : Don\'t show a progress bar}
|
{--no-progress : Don\'t show a progress bar}
|
||||||
{--sanitize-guess-prefix : Guess and output the table-prefix needed to "sanitize" the SQL}
|
{--sanitize-guess-prefix : Guess and output the table-prefix needed to "sanitize" the SQL}
|
||||||
{--sanitize-with-prefix= : "Sanitize" the SQL, using the passed-in table prefix (can be learned from --sanitize-guess-prefix). Pass as just \'--sanitize-with-prefix=\' to use no prefix}';
|
{--sanitize-with-prefix= : "Sanitize" the SQL, using the passed-in table prefix (can be learned from --sanitize-guess-prefix). Pass as just \'--sanitize-with-prefix=\' to use no prefix}
|
||||||
|
{--sql-stdout-only : ONLY "Sanitize" the SQL and print it to stdout - useful for debugging - probably requires --sanitize-with-prefix= }';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The console command description.
|
* The console command description.
|
||||||
|
@ -365,6 +373,15 @@ class RestoreFromBackup extends Command
|
||||||
return $this->info("Re-run this command with '--sanitize-with-prefix=".$prefix."' to see an attempt to sanitze your SQL.");
|
return $this->info("Re-run this command with '--sanitize-with-prefix=".$prefix."' to see an attempt to sanitze your SQL.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we're doing --sql-stdout-only, handle that now so we don't have to open pipes to mysql and all of that silliness
|
||||||
|
if ($this->option('sql-stdout-only')) {
|
||||||
|
$sql_importer = new SQLStreamer($sql_contents, STDOUT, $this->option('sanitize-with-prefix'));
|
||||||
|
$bytes_read = $sql_importer->line_aware_piping();
|
||||||
|
return $this->warn("$bytes_read total bytes read");
|
||||||
|
//TODO - it'd be nice to dump this message to STDERR so that STDOUT is just pure SQL,
|
||||||
|
// which would be good for redirecting to a file, and not having to trim the last line off of it
|
||||||
|
}
|
||||||
|
|
||||||
//how to invoke the restore?
|
//how to invoke the restore?
|
||||||
$pipes = [];
|
$pipes = [];
|
||||||
|
|
||||||
|
@ -466,6 +483,9 @@ class RestoreFromBackup extends Command
|
||||||
$ugly_file_name = $za->statIndex($file_details['index'])['name'];
|
$ugly_file_name = $za->statIndex($file_details['index'])['name'];
|
||||||
$fp = $za->getStream($ugly_file_name);
|
$fp = $za->getStream($ugly_file_name);
|
||||||
//$this->info("Weird problem, here are file details? ".print_r($file_details,true));
|
//$this->info("Weird problem, here are file details? ".print_r($file_details,true));
|
||||||
|
if (!is_dir($file_details['dest'])) {
|
||||||
|
mkdir($file_details['dest'], 0755, true); //0755 is what Laravel uses, so we do that
|
||||||
|
}
|
||||||
$migrated_file = fopen($file_details['dest'].'/'.basename($pretty_file_name), 'w');
|
$migrated_file = fopen($file_details['dest'].'/'.basename($pretty_file_name), 'w');
|
||||||
while (($buffer = fgets($fp, SQLStreamer::$buffer_size)) !== false) {
|
while (($buffer = fgets($fp, SQLStreamer::$buffer_size)) !== false) {
|
||||||
fwrite($migrated_file, $buffer);
|
fwrite($migrated_file, $buffer);
|
||||||
|
|
|
@ -24,7 +24,7 @@ class LicensesController extends Controller
|
||||||
{
|
{
|
||||||
$this->authorize('view', License::class);
|
$this->authorize('view', License::class);
|
||||||
|
|
||||||
$licenses = License::with('company', 'manufacturer', 'supplier','category')->withCount('freeSeats as free_seats_count');
|
$licenses = License::with('company', 'manufacturer', 'supplier','category', 'adminuser')->withCount('freeSeats as free_seats_count');
|
||||||
|
|
||||||
if ($request->filled('company_id')) {
|
if ($request->filled('company_id')) {
|
||||||
$licenses->where('company_id', '=', $request->input('company_id'));
|
$licenses->where('company_id', '=', $request->input('company_id'));
|
||||||
|
@ -70,6 +70,9 @@ class LicensesController extends Controller
|
||||||
$licenses->where('depreciation_id', '=', $request->input('depreciation_id'));
|
$licenses->where('depreciation_id', '=', $request->input('depreciation_id'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($request->filled('user_id')) {
|
||||||
|
$licenses->where('user_id', '=', $request->input('user_id'));
|
||||||
|
}
|
||||||
|
|
||||||
if (($request->filled('maintained')) && ($request->input('maintained')=='true')) {
|
if (($request->filled('maintained')) && ($request->input('maintained')=='true')) {
|
||||||
$licenses->where('maintained','=',1);
|
$licenses->where('maintained','=',1);
|
||||||
|
@ -113,6 +116,9 @@ class LicensesController extends Controller
|
||||||
case 'company':
|
case 'company':
|
||||||
$licenses = $licenses->leftJoin('companies', 'licenses.company_id', '=', 'companies.id')->orderBy('companies.name', $order);
|
$licenses = $licenses->leftJoin('companies', 'licenses.company_id', '=', 'companies.id')->orderBy('companies.name', $order);
|
||||||
break;
|
break;
|
||||||
|
case 'created_by':
|
||||||
|
$licenses = $licenses->OrderCreatedBy($order);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
$allowed_columns =
|
$allowed_columns =
|
||||||
[
|
[
|
||||||
|
|
|
@ -45,6 +45,10 @@ class LicensesTransformer
|
||||||
'maintained' => ($license->maintained == 1) ? true : false,
|
'maintained' => ($license->maintained == 1) ? true : false,
|
||||||
'supplier' => ($license->supplier) ? ['id' => (int) $license->supplier->id, 'name'=> e($license->supplier->name)] : null,
|
'supplier' => ($license->supplier) ? ['id' => (int) $license->supplier->id, 'name'=> e($license->supplier->name)] : null,
|
||||||
'category' => ($license->category) ? ['id' => (int) $license->category->id, 'name'=> e($license->category->name)] : null,
|
'category' => ($license->category) ? ['id' => (int) $license->category->id, 'name'=> e($license->category->name)] : null,
|
||||||
|
'created_by' => ($license->adminuser) ? [
|
||||||
|
'id' => (int) $license->adminuser->id,
|
||||||
|
'name'=> e($license->adminuser->present()->fullName()),
|
||||||
|
] : null,
|
||||||
'created_at' => Helper::getFormattedDateObject($license->created_at, 'datetime'),
|
'created_at' => Helper::getFormattedDateObject($license->created_at, 'datetime'),
|
||||||
'updated_at' => Helper::getFormattedDateObject($license->updated_at, 'datetime'),
|
'updated_at' => Helper::getFormattedDateObject($license->updated_at, 'datetime'),
|
||||||
'deleted_at' => Helper::getFormattedDateObject($license->deleted_at, 'datetime'),
|
'deleted_at' => Helper::getFormattedDateObject($license->deleted_at, 'datetime'),
|
||||||
|
|
|
@ -7,7 +7,7 @@ use EasySlugger\Utf8Slugger;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
use Schema;
|
use Illuminate\Support\Facades\Schema;
|
||||||
use Watson\Validating\ValidatingTrait;
|
use Watson\Validating\ValidatingTrait;
|
||||||
class CustomField extends Model
|
class CustomField extends Model
|
||||||
{
|
{
|
||||||
|
|
|
@ -736,4 +736,17 @@ class License extends Depreciable
|
||||||
return $query->leftJoin('companies as companies', 'licenses.company_id', '=', 'companies.id')->select('licenses.*')
|
return $query->leftJoin('companies as companies', 'licenses.company_id', '=', 'companies.id')->select('licenses.*')
|
||||||
->orderBy('companies.name', $order);
|
->orderBy('companies.name', $order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query builder scope to order on the user that created it
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Database\Query\Builder $query Query builder instance
|
||||||
|
* @param text $order Order
|
||||||
|
*
|
||||||
|
* @return \Illuminate\Database\Query\Builder Modified query builder
|
||||||
|
*/
|
||||||
|
public function scopeOrderCreatedBy($query, $order)
|
||||||
|
{
|
||||||
|
return $query->leftJoin('users as users_sort', 'licenses.user_id', '=', 'users_sort.id')->select('licenses.*')->orderBy('users_sort.first_name', $order)->orderBy('users_sort.last_name', $order);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -158,6 +158,13 @@ class LicensePresenter extends Presenter
|
||||||
'sortable' => true,
|
'sortable' => true,
|
||||||
'visible' => false,
|
'visible' => false,
|
||||||
'title' => trans('general.order_number'),
|
'title' => trans('general.order_number'),
|
||||||
|
], [
|
||||||
|
'field' => 'created_by',
|
||||||
|
'searchable' => false,
|
||||||
|
'sortable' => true,
|
||||||
|
'title' => trans('general.admin'),
|
||||||
|
'visible' => false,
|
||||||
|
'formatter' => 'usersLinkObjFormatter',
|
||||||
], [
|
], [
|
||||||
'field' => 'created_at',
|
'field' => 'created_at',
|
||||||
'searchable' => false,
|
'searchable' => false,
|
||||||
|
|
25
app/Providers/BladeServiceProvider.php
Normal file
25
app/Providers/BladeServiceProvider.php
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Providers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Blade;
|
||||||
|
use Illuminate\Support\ServiceProvider;
|
||||||
|
|
||||||
|
class BladeServiceProvider extends ServiceProvider
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Register services.
|
||||||
|
*/
|
||||||
|
public function register(): void
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bootstrap services.
|
||||||
|
*/
|
||||||
|
public function boot(): void
|
||||||
|
{
|
||||||
|
Blade::anonymousComponentPath(__DIR__ . '/../../resources/views/blade');
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,7 +10,7 @@ use Illuminate\Support\Facades\Crypt;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
use Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This service provider handles a few custom validation rules.
|
* This service provider handles a few custom validation rules.
|
||||||
|
|
|
@ -313,6 +313,7 @@ return [
|
||||||
/*
|
/*
|
||||||
* Custom Service Providers...
|
* Custom Service Providers...
|
||||||
*/
|
*/
|
||||||
|
App\Providers\BladeServiceProvider::class,
|
||||||
App\Providers\LivewireServiceProvider::class,
|
App\Providers\LivewireServiceProvider::class,
|
||||||
App\Providers\MacroServiceProvider::class,
|
App\Providers\MacroServiceProvider::class,
|
||||||
App\Providers\SamlServiceProvider::class,
|
App\Providers\SamlServiceProvider::class,
|
||||||
|
|
3
resources/views/blade/example.blade.php
Normal file
3
resources/views/blade/example.blade.php
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<p>
|
||||||
|
Hi.
|
||||||
|
</p>
|
|
@ -135,7 +135,7 @@
|
||||||
<!-- byod checkbox -->
|
<!-- byod checkbox -->
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-md-7 col-md-offset-3">
|
<div class="col-md-7 col-md-offset-3">
|
||||||
<label for="byod" class="form-control">
|
<label class="form-control">
|
||||||
<input type="checkbox" value="1" name="byod" {{ (old('remote', $item->byod)) == '1' ? ' checked="checked"' : '' }} aria-label="byod">
|
<input type="checkbox" value="1" name="byod" {{ (old('remote', $item->byod)) == '1' ? ' checked="checked"' : '' }} aria-label="byod">
|
||||||
{{ trans('general.byod') }}
|
{{ trans('general.byod') }}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue