mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-26 22:19:41 -08:00
44683c784f
* Major code simplification of the importers. Move towards using Model::fill and Model::update rather than reinventing the wheel. This makes the updating/creating logic a lot clearer, and allows for the deletion of a lot of code. Also allows for supporting of more fields in the future really easily. * Cleanup constructors and use setters instead. * Set the LC_MONETARY locale, and use it to strip currency symbols in Helper::parseFloat() * Move licenseseat creation/deletion logic into an event handler on the model rather than the controller. * Move the logging of parsed values to array_smart_fetch rather than writing it out everywhere * Move to storing dates as carbon rather than strings. Allows for the parsing of more arbitrary strings from the importer * Add a license importer with support for checking out to users or assets. * Make a directory for sample/mock import csvs and populate it * Adjust how we store/retrieve dates to fix some issues the tests found.
91 lines
2.5 KiB
PHP
91 lines
2.5 KiB
PHP
<?php
|
|
namespace App\Providers;
|
|
|
|
use Validator;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use DB;
|
|
use Log;
|
|
|
|
/**
|
|
* This service provider handles a few custom validation rules.
|
|
*
|
|
* PHP version 5.5.9
|
|
* @version v3.0
|
|
*/
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
/**
|
|
* Custom email array validation
|
|
*
|
|
* @author [A. Gianotto] [<snipe@snipe.net>]
|
|
* @since [v3.0]
|
|
* @return void
|
|
*/
|
|
public function boot()
|
|
{
|
|
|
|
// Email array validator
|
|
Validator::extend('email_array', function ($attribute, $value, $parameters, $validator) {
|
|
$value = str_replace(' ', '', $value);
|
|
$array = explode(',', $value);
|
|
|
|
foreach ($array as $email) { //loop over values
|
|
$email_to_validate['alert_email'][]=$email;
|
|
}
|
|
|
|
$rules = array('alert_email.*'=>'email');
|
|
$messages = array(
|
|
'alert_email.*'=>trans('validation.email_array')
|
|
);
|
|
|
|
$validator = Validator::make($email_to_validate, $rules, $messages);
|
|
|
|
return $validator->passes();
|
|
|
|
});
|
|
|
|
// Unique only if undeleted
|
|
// This works around the use case where multiple deleted items have the same unique attribute.
|
|
// (I think this is a bug in Laravel's validator?)
|
|
Validator::extend('unique_undeleted', function ($attribute, $value, $parameters, $validator) {
|
|
$count = DB::table($parameters[0])->select('id')->where($attribute, '=', $value)->whereNull('deleted_at')->where('id', '!=', $parameters[1])->count();
|
|
return $count < 1;
|
|
});
|
|
|
|
// Share common variables with all views.
|
|
view()->composer('*', function ($view) {
|
|
$view->with('snipeSettings', \App\Models\Setting::getSettings());
|
|
});
|
|
|
|
// Set the monetary locale to the configured locale to make helper::parseFloat work.
|
|
setlocale(LC_MONETARY, config('app.locale'));
|
|
setlocale(LC_NUMERIC, config('app.locale'));
|
|
|
|
}
|
|
|
|
/**
|
|
* Register any application services.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function register()
|
|
{
|
|
$monolog = Log::getMonolog();
|
|
|
|
if (config('app.debug')) {
|
|
$log_level = 'debug';
|
|
} else {
|
|
if (config('log-level')) {
|
|
$log_level = config('log-level');
|
|
} else {
|
|
$log_level = 'error';
|
|
}
|
|
}
|
|
|
|
foreach ($monolog->getHandlers() as $handler) {
|
|
$handler->setLevel($log_level);
|
|
}
|
|
}
|
|
}
|