diff --git a/app/Events/AttemptToEditInvalidContent.php b/app/Events/AttemptToEditInvalidContent.php new file mode 100644 index 00000000..55f2b46b --- /dev/null +++ b/app/Events/AttemptToEditInvalidContent.php @@ -0,0 +1,24 @@ +contentId = $contentId; + } +} diff --git a/app/Events/CreateNewContent.php b/app/Events/CreateNewContent.php new file mode 100644 index 00000000..4bb478f2 --- /dev/null +++ b/app/Events/CreateNewContent.php @@ -0,0 +1,27 @@ +page = $page; + } +} diff --git a/app/Events/DeleteContent.php b/app/Events/DeleteContent.php new file mode 100644 index 00000000..fe1f555a --- /dev/null +++ b/app/Events/DeleteContent.php @@ -0,0 +1,28 @@ +page = $page; + $this->revision = $revision; + } +} diff --git a/app/Events/EditContent.php b/app/Events/EditContent.php new file mode 100644 index 00000000..2b6056f2 --- /dev/null +++ b/app/Events/EditContent.php @@ -0,0 +1,29 @@ +page = $page; + $this->revision = $revision; + } +} diff --git a/app/Events/MakeDraftFromContent.php b/app/Events/MakeDraftFromContent.php new file mode 100644 index 00000000..addcf269 --- /dev/null +++ b/app/Events/MakeDraftFromContent.php @@ -0,0 +1,30 @@ +page = $page; + $this->revision = $revision; + } +} diff --git a/app/Events/PublishContent.php b/app/Events/PublishContent.php new file mode 100644 index 00000000..cc32194f --- /dev/null +++ b/app/Events/PublishContent.php @@ -0,0 +1,22 @@ +page = $page; + $this->revision = $revision; + } +} diff --git a/app/Events/SetHomepage.php b/app/Events/SetHomepage.php new file mode 100644 index 00000000..a4678679 --- /dev/null +++ b/app/Events/SetHomepage.php @@ -0,0 +1,30 @@ +page = $page; + $this->revision = $revision; + } +} diff --git a/app/Http/Controllers/Admin/CreateNewContent.php b/app/Http/Controllers/Admin/CreateNewContent.php index 972f6507..c231440e 100644 --- a/app/Http/Controllers/Admin/CreateNewContent.php +++ b/app/Http/Controllers/Admin/CreateNewContent.php @@ -2,11 +2,13 @@ namespace App\Http\Controllers\Admin; use App\Enumerations\ActiveContentStatuses; +use App\Events\CreateNewContent as CreateNewContentEvent; use App\Http\Requests\CreateNewContentRequest; use App\Models\Content; use App\Models\File; use App\Models\Module; use App\Models\Template; +use Illuminate\Support\Facades\Event; use Illuminate\Support\Str; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -110,6 +112,9 @@ class CreateNewContent extends Controller call_user_func_array([$module->handler, 'createNew'], [&$page, $request]); $page->save(); + + // fire event about creating new content page + Event::fire(new CreateNewContentEvent($page)); return redirect() ->route('content.overview') diff --git a/app/Http/Controllers/Admin/EditContent.php b/app/Http/Controllers/Admin/EditContent.php index d5f30bff..703e2b57 100644 --- a/app/Http/Controllers/Admin/EditContent.php +++ b/app/Http/Controllers/Admin/EditContent.php @@ -3,12 +3,19 @@ namespace App\Http\Controllers\Admin; use App\Enumerations\ContentStatuses; use App\Enumerations\ModulesHandlerToId; +use App\Events\AttemptToEditInvalidContent; +use App\Events\DeleteContent; +use App\Events\EditContent as EditContentEvent; +use App\Events\MakeDraftFromContent; +use App\Events\PublishContent; +use App\Events\SetHomepage; use App\Http\Requests\EditContentRequest; use App\Http\Requests\Request; use App\Models\Content; use App\Models\ContentHistory; use App\Models\File; use App\Models\Template; +use Illuminate\Support\Facades\Event; use Illuminate\Support\Str; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -38,6 +45,8 @@ class EditContent extends Controller */ public function getEdit($id) { + dd(request()->header('User-agent')); + // select all content statuses $statuses = ContentStatuses::getWithTranslations(); @@ -80,6 +89,9 @@ class EditContent extends Controller $page = Content::findOrFail($id); } catch (NotFoundHttpException $e) { + // log attempt of invalid edit + Event::fire(new AttemptToEditInvalidContent($id)); + // page for editing not found return redirect() ->route('content.overview') @@ -126,7 +138,7 @@ class EditContent extends Controller } // fire event with - // Event::fire(new EditStaticPageEvent($page, $revision)); + Event::fire(new EditContentEvent($page, $revision)); // something was changed, inform user return redirect() @@ -178,11 +190,11 @@ class EditContent extends Controller } // fire events - // if ($status != Content::STATUS_DRAFT) { - // Event::fire(new PublishStaticPage($page, $revision)); - // } else { - // Event::fire(new MakeDraftFromStaticPage($page, $revision)); - // } + if ($status != Content::STATUS_DRAFT) { + Event::fire(new PublishContent($page, $revision)); + } else { + Event::fire(new MakeDraftFromContent($page, $revision)); + } // redirect back to overview with info for user return redirect() @@ -219,7 +231,7 @@ class EditContent extends Controller } // trigger delete event - // Event::fire(new DeleteStaticPage($page, $revision)); + Event::fire(new DeleteContent($page, $revision)); // redirect back to overview with info for user return redirect() @@ -257,7 +269,7 @@ class EditContent extends Controller ->update(['is_homepage' => 0]); // set new homepage - list (, $changedColumns) = $page->updateWithHistory(['is_homepage' => 'is_homepage'], ['is_homepage' => 1]); + list ($revision, $changedColumns) = $page->updateWithHistory(['is_homepage' => 'is_homepage'], ['is_homepage' => 1]); // was something changed? if ($changedColumns == 0) { @@ -267,7 +279,7 @@ class EditContent extends Controller } // trigger delete event - // Event::fire(new DeleteStaticPage($page, $revision)); + Event::fire(new SetHomepage($page, $revision)); // redirect back to overview with info for user return redirect() diff --git a/app/Listeners/.gitkeep b/app/Listeners/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/Listeners/LogAttemptToInvalidContentEdit.php b/app/Listeners/LogAttemptToInvalidContentEdit.php new file mode 100644 index 00000000..ff96c390 --- /dev/null +++ b/app/Listeners/LogAttemptToInvalidContentEdit.php @@ -0,0 +1,34 @@ + $event->contentId + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'invalidEditContentAttempt'; + } +} diff --git a/app/Listeners/LogCreateNewContent.php b/app/Listeners/LogCreateNewContent.php new file mode 100644 index 00000000..97f53d75 --- /dev/null +++ b/app/Listeners/LogCreateNewContent.php @@ -0,0 +1,37 @@ + $event->page->id, + 'url' => $event->page->url, + 'title' => $event->page->title + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'createNewContent'; + } +} diff --git a/app/Listeners/LogDeleteContent.php b/app/Listeners/LogDeleteContent.php new file mode 100644 index 00000000..1c443dd4 --- /dev/null +++ b/app/Listeners/LogDeleteContent.php @@ -0,0 +1,40 @@ + $event->page->id, + 'url' => $event->page->url, + 'title' => $event->page->title, + 'revision' => $event->revision + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'deleteContent'; + } +} diff --git a/app/Listeners/LogDraftFromContent.php b/app/Listeners/LogDraftFromContent.php new file mode 100644 index 00000000..be4a3974 --- /dev/null +++ b/app/Listeners/LogDraftFromContent.php @@ -0,0 +1,38 @@ + $event->page->id, + 'url' => $event->page->url, + 'title' => $event->page->title, + 'revision' => $event->revision + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'draftFromContent'; + } +} diff --git a/app/Listeners/LogEditContent.php b/app/Listeners/LogEditContent.php new file mode 100644 index 00000000..99935787 --- /dev/null +++ b/app/Listeners/LogEditContent.php @@ -0,0 +1,39 @@ + $event->page->id, + 'url' => $event->page->url, + 'title' => $event->page->title, + 'revision' => $event->revision + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'editContent'; + } +} diff --git a/app/Listeners/LogPublishContent.php b/app/Listeners/LogPublishContent.php new file mode 100644 index 00000000..bf56e77e --- /dev/null +++ b/app/Listeners/LogPublishContent.php @@ -0,0 +1,37 @@ + $event->page->id, + 'url' => $event->page->url, + 'title' => $event->page->title, + 'revision' => $event->revision + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'publishContent'; + } +} diff --git a/app/Listeners/LogSetHomepage.php b/app/Listeners/LogSetHomepage.php new file mode 100644 index 00000000..a8246b6c --- /dev/null +++ b/app/Listeners/LogSetHomepage.php @@ -0,0 +1,39 @@ + $event->page->id, + 'url' => $event->page->url, + 'title' => $event->page->title, + 'revision' => $event->revision + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'setHomepage'; + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 9b70abf2..145fe675 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -19,6 +19,27 @@ class EventServiceProvider extends ServiceProvider 'App\Events\EditUser' => [ 'App\Listeners\LogEditUser', ], + 'App\Events\CreateNewContent' => [ + 'App\Listeners\LogCreateNewContent' + ], + 'App\Events\EditContent' => [ + 'App\Listeners\LogEditContent' + ], + 'App\Events\PublishContent' => [ + 'App\Listeners\LogPublishContent' + ], + 'App\Events\MakeDraftFromContent' => [ + 'App\Listeners\LogDraftFromContent' + ], + 'App\Events\SetHomepage' => [ + 'App\Listeners\LogSetHomepage' + ], + 'App\Events\AttemptToEditInvalidContent' => [ + 'App\Listeners\LogAttemptToInvalidContentEdit' + ], + 'App\Events\DeleteContent' => [ + 'App\Listeners\LogDeleteContent' + ], 'App\Events\CreateNewCustomField' => [ 'App\Listeners\LogCreateCustomField', ],