FEATURE #1400: add logging for custom fields

This commit is contained in:
Michal Kváček
2016-01-29 00:36:20 +01:00
parent 7054ce53b6
commit 4a8facc046
9 changed files with 213 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Events;
use App\Events\Event;
use App\Models\CustomField;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class CreateNewCustomField extends Event
{
use SerializesModels;
/**
* @var CustomField
*/
public $customField;
/**
* Create a new event instance.
*
* @param CustomField $customField
*/
public function __construct(CustomField $customField)
{
$this->customField = $customField;
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Events;
use App\Events\Event;
use App\Models\CustomField;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class DeleteCustomField extends Event
{
use SerializesModels;
/**
* @var CustomField
*/
public $customField;
/**
* Create a new event instance.
*
* @param CustomField $customField
*/
public function __construct(CustomField $customField)
{
$this->customField = $customField;
}
}
+27
View File
@@ -0,0 +1,27 @@
<?php
namespace App\Events;
use App\Events\Event;
use App\Models\CustomField;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class EditCustomField extends Event
{
use SerializesModels;
/**
* @var CustomField
*/
public $customField;
/**
* Create a new event instance.
*
* @param CustomField $customField
*/
public function __construct(CustomField $customField)
{
$this->customField = $customField;
}
}
@@ -4,8 +4,10 @@ namespace App\Http\Controllers\Admin;
use App\Enumerations\CustomFieldResources; use App\Enumerations\CustomFieldResources;
use App\Enumerations\CustomFieldTypes; use App\Enumerations\CustomFieldTypes;
use App\Events\CreateNewCustomField as CreateNewCustomFieldEvent;
use App\Http\Requests\NewCustomFieldRequest; use App\Http\Requests\NewCustomFieldRequest;
use App\Models\CustomField; use App\Models\CustomField;
use Illuminate\Support\Facades\Event;
class CreateNewCustomField extends Controller class CreateNewCustomField extends Controller
{ {
@@ -59,6 +61,9 @@ class CreateNewCustomField extends Controller
$customField->save(); $customField->save();
// fire event about creating new custom field
Event::fire(new CreateNewCustomFieldEvent($customField));
return redirect() return redirect()
->route('customfields.new') ->route('customfields.new')
->with('success', trans('admin/customFields.successfullyCreated')); ->with('success', trans('admin/customFields.successfullyCreated'));
@@ -4,10 +4,13 @@ namespace App\Http\Controllers\Admin;
use App\Enumerations\CustomFieldResources; use App\Enumerations\CustomFieldResources;
use App\Enumerations\CustomFieldTypes; use App\Enumerations\CustomFieldTypes;
use App\Events\DeleteCustomField;
use App\Events\EditCustomField as EditCustomFieldEvent;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests; use App\Http\Requests;
use App\Http\Requests\EditCustomFieldRequest; use App\Http\Requests\EditCustomFieldRequest;
use App\Models\CustomField; use App\Models\CustomField;
use Illuminate\Support\Facades\Event;
class EditCustomField extends Controller class EditCustomField extends Controller
{ {
@@ -60,6 +63,9 @@ class EditCustomField extends Controller
// save changes into database // save changes into database
$customField->save(); $customField->save();
// fire event about editing custom field
Event::fire(new EditCustomFieldEvent($customField));
return redirect() return redirect()
->route('customfields.edit', ['id' => $id]) ->route('customfields.edit', ['id' => $id])
->with('success', trans('admin/customFields.successfullyEdited')); ->with('success', trans('admin/customFields.successfullyEdited'));
@@ -89,6 +95,9 @@ class EditCustomField extends Controller
// delete item // delete item
$field->delete(); $field->delete();
// fire event about editing custom field
Event::fire(new DeleteCustomField($field));
// redirect back to overview // redirect back to overview
return redirect() return redirect()
->route('customfields.overview') ->route('customfields.overview')
+37
View File
@@ -0,0 +1,37 @@
<?php
namespace App\Listeners;
use App\Events\CreateNewCustomField;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogCreateCustomField extends Logger
{
/**
* Handle the event.
*
* @param CreateNewCustomField $event
* @return void
*/
public function handle(CreateNewCustomField $event)
{
$parameters = [
'id' => $event->customField->id,
'name' => $event->customField->name
];
$this->saveLog($parameters);
}
/**
* Getter for action name. Used only internally
*
* @return mixed
*/
protected function getName()
{
return 'newCustomField';
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Listeners;
use App\Events\DeleteCustomField;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogDeleteField extends Logger
{
/**
* Handle the event.
*
* @param DeleteCustomField $event
* @return void
*/
public function handle(DeleteCustomField $event)
{
$parameters = [
'id' => $event->customField->id,
'name' => $event->customField->name
];
$this->saveLog($parameters);
}
/**
* Getter for action name. Used only internally
*
* @return mixed
*/
protected function getName()
{
return 'deleteCustomField';
}
}
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Listeners;
use App\Events\EditCustomField;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogEditCustomField extends Logger
{
/**
* Handle the event.
*
* @param EditCustomField $event
* @return void
*/
public function handle(EditCustomField $event)
{
$parameters = [
'id' => $event->customField->id,
'name' => $event->customField->name
];
$this->saveLog($parameters);
}
/**
* Getter for action name. Used only internally
*
* @return mixed
*/
protected function getName()
{
return 'editCustomField';
}
}
+9
View File
@@ -19,6 +19,15 @@ class EventServiceProvider extends ServiceProvider
'App\Events\EditUser' => [ 'App\Events\EditUser' => [
'App\Listeners\LogEditUser', 'App\Listeners\LogEditUser',
], ],
'App\Events\CreateNewCustomField' => [
'App\Listeners\LogCreateCustomField',
],
'App\Events\EditCustomField' => [
'App\Listeners\LogEditCustomField',
],
'App\Events\DeleteCustomField' => [
'App\Listeners\LogDeleteField',
],
// internal Laravel events - should work as auth.login and auth.logout, however it doesn't... // internal Laravel events - should work as auth.login and auth.logout, however it doesn't...
'Illuminate\Auth\Events\Login' => [ 'Illuminate\Auth\Events\Login' => [
'App\Listeners\LogLogin' 'App\Listeners\LogLogin'