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\Http\Requests\Request;
|
||||||
use App\Models\Content;
|
use App\Models\Content;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
use Modules\Blog\Article\Entities\Comment;
|
use Modules\Blog\Article\Entities\Comment;
|
||||||
|
|
||||||
class Article extends Handler
|
class Article extends Handler
|
||||||
@@ -135,5 +136,7 @@ class Article extends Handler
|
|||||||
*/
|
*/
|
||||||
public static function install()
|
public static function install()
|
||||||
{
|
{
|
||||||
|
// seed action log types
|
||||||
|
// Artisan::call('')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Modules\Blog\Article\Http\Controllers\Admin;
|
namespace Modules\Blog\Article\Http\Controllers\Admin;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Event;
|
||||||
use Modules\Blog\Article\Entities\Comment;
|
use Modules\Blog\Article\Entities\Comment;
|
||||||
|
use Modules\Blog\Article\Events\ApprovedComment;
|
||||||
|
use Modules\Blog\Article\Events\DeletedComment;
|
||||||
use Pingpong\Modules\Routing\Controller;
|
use Pingpong\Modules\Routing\Controller;
|
||||||
|
|
||||||
class EditComment extends Controller
|
class EditComment extends Controller
|
||||||
@@ -12,7 +15,7 @@ class EditComment extends Controller
|
|||||||
$comment->approved = 1;
|
$comment->approved = 1;
|
||||||
$comment->save();
|
$comment->save();
|
||||||
|
|
||||||
// Event::fire(ApprovedComment);
|
Event::fire(new ApprovedComment($comment));
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->back()
|
->back()
|
||||||
@@ -22,9 +25,10 @@ class EditComment extends Controller
|
|||||||
public function delete($id)
|
public function delete($id)
|
||||||
{
|
{
|
||||||
$comment = Comment::findOrFail($id);
|
$comment = Comment::findOrFail($id);
|
||||||
$comment->delete();
|
|
||||||
|
|
||||||
// Event::fire(DeletedComment);
|
Event::fire(new DeletedComment($comment));
|
||||||
|
|
||||||
|
$comment->delete();
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->back()
|
->back()
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ namespace Modules\Blog\Article\Http\Controllers\Visitor;
|
|||||||
|
|
||||||
use App\Models\Content;
|
use App\Models\Content;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Event;
|
||||||
use Modules\Blog\Article\Entities\Comment;
|
use Modules\Blog\Article\Entities\Comment;
|
||||||
|
use Modules\Blog\Article\Events\CreatedComment;
|
||||||
use Modules\Blog\Article\Handlers\Article;
|
use Modules\Blog\Article\Handlers\Article;
|
||||||
use Pingpong\Modules\Routing\Controller;
|
use Pingpong\Modules\Routing\Controller;
|
||||||
|
|
||||||
@@ -33,7 +35,7 @@ class CreateNewComment extends Controller
|
|||||||
$email = $request->email;
|
$email = $request->email;
|
||||||
}
|
}
|
||||||
|
|
||||||
Comment::create([
|
$comment = Comment::create([
|
||||||
'user_id' => $user ? $user->id : null,
|
'user_id' => $user ? $user->id : null,
|
||||||
'content_id' => $article->id,
|
'content_id' => $article->id,
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
@@ -41,6 +43,9 @@ class CreateNewComment extends Controller
|
|||||||
'content' => $content
|
'content' => $content
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
// fire event about new comment
|
||||||
|
Event::fire(new CreatedComment($comment));
|
||||||
|
|
||||||
return redirect()
|
return redirect()
|
||||||
->route('page.content', ['url' => $article->url])
|
->route('page.content', ['url' => $article->url])
|
||||||
->with('success', trans('article::comments.saved'));
|
->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->registerTranslations();
|
||||||
$this->registerConfig();
|
$this->registerConfig();
|
||||||
$this->registerViews();
|
$this->registerViews();
|
||||||
|
|
||||||
|
$this->app->register(ArticleEventServiceProvider::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user