From fbb59277b9b26dd24b3bd89126f69a431354d3eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Kv=C3=A1=C4=8Dek?= Date: Fri, 23 Sep 2016 00:41:38 +0200 Subject: [PATCH] FEATURE: add events to comments --- .../Blog/Article/Events/ApprovedComment.php | 20 ++++++++++ .../Blog/Article/Events/CreatedComment.php | 20 ++++++++++ .../Blog/Article/Events/DeletedComment.php | 20 ++++++++++ modules/Blog/Article/Handlers/Article.php | 3 ++ .../Http/Controllers/Admin/EditComment.php | 10 +++-- .../Controllers/Visitor/CreateNewComment.php | 7 +++- .../Article/Listeners/CommentEditLogger.php | 0 .../Article/Listeners/LogCommentApproval.php | 35 +++++++++++++++++ .../Article/Listeners/LogDeletedComment.php | 36 +++++++++++++++++ .../Blog/Article/Listeners/LogNewComment.php | 39 +++++++++++++++++++ .../Providers/ArticleEventServiceProvider.php | 30 ++++++++++++++ .../Providers/ArticleServiceProvider.php | 2 + 12 files changed, 218 insertions(+), 4 deletions(-) create mode 100644 modules/Blog/Article/Events/CreatedComment.php delete mode 100644 modules/Blog/Article/Listeners/CommentEditLogger.php create mode 100644 modules/Blog/Article/Listeners/LogCommentApproval.php create mode 100644 modules/Blog/Article/Listeners/LogDeletedComment.php create mode 100644 modules/Blog/Article/Listeners/LogNewComment.php diff --git a/modules/Blog/Article/Events/ApprovedComment.php b/modules/Blog/Article/Events/ApprovedComment.php index e69de29b..3fab72bc 100644 --- a/modules/Blog/Article/Events/ApprovedComment.php +++ b/modules/Blog/Article/Events/ApprovedComment.php @@ -0,0 +1,20 @@ +comment = $comment; + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Events/CreatedComment.php b/modules/Blog/Article/Events/CreatedComment.php new file mode 100644 index 00000000..d21f685b --- /dev/null +++ b/modules/Blog/Article/Events/CreatedComment.php @@ -0,0 +1,20 @@ +comment = $comment; + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Events/DeletedComment.php b/modules/Blog/Article/Events/DeletedComment.php index e69de29b..048341ab 100644 --- a/modules/Blog/Article/Events/DeletedComment.php +++ b/modules/Blog/Article/Events/DeletedComment.php @@ -0,0 +1,20 @@ +comment = $comment; + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Handlers/Article.php b/modules/Blog/Article/Handlers/Article.php index 2b58be8d..20ede6d3 100644 --- a/modules/Blog/Article/Handlers/Article.php +++ b/modules/Blog/Article/Handlers/Article.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Request; use App\Models\Content; use App\Models\User; +use Illuminate\Support\Facades\Artisan; use Modules\Blog\Article\Entities\Comment; class Article extends Handler @@ -135,5 +136,7 @@ class Article extends Handler */ public static function install() { + // seed action log types +// Artisan::call('') } } \ No newline at end of file diff --git a/modules/Blog/Article/Http/Controllers/Admin/EditComment.php b/modules/Blog/Article/Http/Controllers/Admin/EditComment.php index ed4de413..969f845d 100644 --- a/modules/Blog/Article/Http/Controllers/Admin/EditComment.php +++ b/modules/Blog/Article/Http/Controllers/Admin/EditComment.php @@ -1,7 +1,10 @@ approved = 1; $comment->save(); - // Event::fire(ApprovedComment); + Event::fire(new ApprovedComment($comment)); return redirect() ->back() @@ -22,9 +25,10 @@ class EditComment extends Controller public function delete($id) { $comment = Comment::findOrFail($id); - $comment->delete(); - // Event::fire(DeletedComment); + Event::fire(new DeletedComment($comment)); + + $comment->delete(); return redirect() ->back() diff --git a/modules/Blog/Article/Http/Controllers/Visitor/CreateNewComment.php b/modules/Blog/Article/Http/Controllers/Visitor/CreateNewComment.php index 3a5b17ac..7c68891a 100644 --- a/modules/Blog/Article/Http/Controllers/Visitor/CreateNewComment.php +++ b/modules/Blog/Article/Http/Controllers/Visitor/CreateNewComment.php @@ -3,7 +3,9 @@ namespace Modules\Blog\Article\Http\Controllers\Visitor; use App\Models\Content; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Event; use Modules\Blog\Article\Entities\Comment; +use Modules\Blog\Article\Events\CreatedComment; use Modules\Blog\Article\Handlers\Article; use Pingpong\Modules\Routing\Controller; @@ -33,7 +35,7 @@ class CreateNewComment extends Controller $email = $request->email; } - Comment::create([ + $comment = Comment::create([ 'user_id' => $user ? $user->id : null, 'content_id' => $article->id, 'name' => $name, @@ -41,6 +43,9 @@ class CreateNewComment extends Controller 'content' => $content ]); + // fire event about new comment + Event::fire(new CreatedComment($comment)); + return redirect() ->route('page.content', ['url' => $article->url]) ->with('success', trans('article::comments.saved')); diff --git a/modules/Blog/Article/Listeners/CommentEditLogger.php b/modules/Blog/Article/Listeners/CommentEditLogger.php deleted file mode 100644 index e69de29b..00000000 diff --git a/modules/Blog/Article/Listeners/LogCommentApproval.php b/modules/Blog/Article/Listeners/LogCommentApproval.php new file mode 100644 index 00000000..24a9e049 --- /dev/null +++ b/modules/Blog/Article/Listeners/LogCommentApproval.php @@ -0,0 +1,35 @@ + $event->comment->name, + 'email' => $event->comment->email, + 'content' => $event->comment->content + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'commentApproved'; + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Listeners/LogDeletedComment.php b/modules/Blog/Article/Listeners/LogDeletedComment.php new file mode 100644 index 00000000..d4cb97ea --- /dev/null +++ b/modules/Blog/Article/Listeners/LogDeletedComment.php @@ -0,0 +1,36 @@ + $event->comment->name, + 'email' => $event->comment->email, + 'content' => $event->comment->content + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'commentDeleted'; + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Listeners/LogNewComment.php b/modules/Blog/Article/Listeners/LogNewComment.php new file mode 100644 index 00000000..672a5748 --- /dev/null +++ b/modules/Blog/Article/Listeners/LogNewComment.php @@ -0,0 +1,39 @@ +comment->user_id) + return; + + $parameters = [ + 'author' => $event->comment->name, + 'email' => $event->comment->email, + 'content' => $event->comment->content + ]; + + $this->saveLog($parameters); + } + + /** + * Getter for action name. Used only internally + * + * @return mixed + */ + protected function getName() + { + return 'commentCreated'; + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Providers/ArticleEventServiceProvider.php b/modules/Blog/Article/Providers/ArticleEventServiceProvider.php index e69de29b..a1eaa128 100644 --- a/modules/Blog/Article/Providers/ArticleEventServiceProvider.php +++ b/modules/Blog/Article/Providers/ArticleEventServiceProvider.php @@ -0,0 +1,30 @@ + [LogCommentApproval::class], + DeletedComment::class => [LogDeletedComment::class], + CreatedComment::class => [LogNewComment::class], + ]; + + public function boot(DispatcherContract $events) + { + parent::boot($events); // TODO: Change the autogenerated stub + } +} \ No newline at end of file diff --git a/modules/Blog/Article/Providers/ArticleServiceProvider.php b/modules/Blog/Article/Providers/ArticleServiceProvider.php index ac82f742..c05cc17a 100644 --- a/modules/Blog/Article/Providers/ArticleServiceProvider.php +++ b/modules/Blog/Article/Providers/ArticleServiceProvider.php @@ -25,6 +25,8 @@ class ArticleServiceProvider extends ServiceProvider { $this->registerTranslations(); $this->registerConfig(); $this->registerViews(); + + $this->app->register(ArticleEventServiceProvider::class); } /**