FEATURE: add events to comments
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Modules\Blog\Article\Events;
|
||||
|
||||
use App\Events\Event;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Modules\Blog\Article\Entities\Comment;
|
||||
|
||||
class ApprovedComment extends Event
|
||||
{
|
||||
use SerializesModels;
|
||||
/**
|
||||
* @var Comment
|
||||
*/
|
||||
public $comment;
|
||||
|
||||
public function __construct(Comment $comment)
|
||||
{
|
||||
$this->comment = $comment;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Modules\Blog\Article\Events;
|
||||
|
||||
use App\Events\Event;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Modules\Blog\Article\Entities\Comment;
|
||||
|
||||
class CreatedComment extends Event
|
||||
{
|
||||
use SerializesModels;
|
||||
/**
|
||||
* @var Comment
|
||||
*/
|
||||
public $comment;
|
||||
|
||||
public function __construct(Comment $comment)
|
||||
{
|
||||
$this->comment = $comment;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Modules\Blog\Article\Events;
|
||||
|
||||
use App\Events\Event;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Modules\Blog\Article\Entities\Comment;
|
||||
|
||||
class DeletedComment extends Event
|
||||
{
|
||||
use SerializesModels;
|
||||
/**
|
||||
* @var Comment
|
||||
*/
|
||||
public $comment;
|
||||
|
||||
public function __construct(Comment $comment)
|
||||
{
|
||||
$this->comment = $comment;
|
||||
}
|
||||
}
|
||||
@@ -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('')
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,10 @@
|
||||
<?php
|
||||
namespace Modules\Blog\Article\Http\Controllers\Admin;
|
||||
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Modules\Blog\Article\Entities\Comment;
|
||||
use Modules\Blog\Article\Events\ApprovedComment;
|
||||
use Modules\Blog\Article\Events\DeletedComment;
|
||||
use Pingpong\Modules\Routing\Controller;
|
||||
|
||||
class EditComment extends Controller
|
||||
@@ -12,7 +15,7 @@ class EditComment extends Controller
|
||||
$comment->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()
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Blog\Article\Listeners;
|
||||
|
||||
use App\Listeners\Logger;
|
||||
use Modules\Blog\Article\Events\ApprovedComment;
|
||||
|
||||
class LogCommentApproval extends Logger
|
||||
{
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param ApprovedComment $event
|
||||
*/
|
||||
public function handle(ApprovedComment $event)
|
||||
{
|
||||
$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 'commentApproved';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Blog\Article\Listeners;
|
||||
|
||||
use App\Listeners\Logger;
|
||||
use Modules\Blog\Article\Events\ApprovedComment;
|
||||
use Modules\Blog\Article\Events\DeletedComment;
|
||||
|
||||
class LogDeletedComment extends Logger
|
||||
{
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param DeletedComment $event
|
||||
*/
|
||||
public function handle(DeletedComment $event)
|
||||
{
|
||||
$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 'commentDeleted';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Blog\Article\Listeners;
|
||||
|
||||
use App\Listeners\Logger;
|
||||
use Modules\Blog\Article\Events\CreatedComment;
|
||||
|
||||
class LogNewComment extends Logger
|
||||
{
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param CreatedComment $event
|
||||
*/
|
||||
public function handle(CreatedComment $event)
|
||||
{
|
||||
// log only logged-in users
|
||||
if (!$event->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';
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Blog\Article\Providers;
|
||||
|
||||
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
||||
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
|
||||
use Modules\Blog\Article\Events\ApprovedComment;
|
||||
use Modules\Blog\Article\Events\CreatedComment;
|
||||
use Modules\Blog\Article\Events\DeletedComment;
|
||||
use Modules\Blog\Article\Listeners\LogCommentApproval;
|
||||
use Modules\Blog\Article\Listeners\LogDeletedComment;
|
||||
|
||||
class ArticleEventServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* The event listener mappings for the application.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $listen = [
|
||||
ApprovedComment::class => [LogCommentApproval::class],
|
||||
DeletedComment::class => [LogDeletedComment::class],
|
||||
CreatedComment::class => [LogNewComment::class],
|
||||
];
|
||||
|
||||
public function boot(DispatcherContract $events)
|
||||
{
|
||||
parent::boot($events); // TODO: Change the autogenerated stub
|
||||
}
|
||||
}
|
||||
@@ -25,6 +25,8 @@ class ArticleServiceProvider extends ServiceProvider {
|
||||
$this->registerTranslations();
|
||||
$this->registerConfig();
|
||||
$this->registerViews();
|
||||
|
||||
$this->app->register(ArticleEventServiceProvider::class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user