multicaret / laravel-inbox
There is no license information available for the latest version (8.0.0) of this package.
Laravel messages and inbox system
8.0.0
2021-10-13 08:40 UTC
Requires
- php: >=7.2.5
- illuminate/support: 8.*
- nesbot/carbon: 2.*
README
Internal messages between users in Laravel. Create an inbox system, in app messages, between users easily.
Installation
This package can be installed through Composer.
composer require multicaret/laravel-inbox
If you don't use Laravel 5.5+ you have to add the service provider manually
// config/app.php 'providers' => [ ... Multicaret\Inbox\InboxServiceProvider::class, ... ];
You can publish the config-file with:
php artisan vendor:publish --provider="Multicaret\Inbox\InboxServiceProvider" --tag="config"
This is the contents of the published config file:
<?php return [ 'paginate' => 10, /* |-------------------------------------------------------------------------- | Inbox Route Group Config |-------------------------------------------------------------------------- | | .. | */ 'route' => [ 'prefix' => 'inbox', 'middleware' => ['web', 'auth'], 'name' => null ], /* |-------------------------------------------------------------------------- | Inbox Tables Name |-------------------------------------------------------------------------- | | .. | */ 'tables' => [ 'threads' => 'threads', 'messages' => 'messages', 'participants' => 'participants', ], /* |-------------------------------------------------------------------------- | Models |-------------------------------------------------------------------------- | | If you want to overwrite any model you should change it here as well. | */ 'models' => [ 'thread' => Multicaret\Inbox\Models\Thread::class, 'message' => Multicaret\Inbox\Models\Message::class, 'participant' => Multicaret\Inbox\Models\Participant::class, ], /* |-------------------------------------------------------------------------- | Inbox Notification |-------------------------------------------------------------------------- | | Via Supported: "mail", "database", "array" | */ 'notifications' => [ 'via' => [ 'mail', ], ], ];
Usage
First, we need to use HasInbox
trait so users can have their inbox:
<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Foundation\Auth\User as Authenticatable; use Multicaret\Inbox\Traits\HasInbox; class User extends Authenticatable { use Notifiable, HasInbox; }
Get user threads:
$user->threads()
Get unread messages:
$thread = $user->unread()
Get the threads that have been sent by a user:
$thread = $user->sent()
Get the threads that have been sent to the user:
$thread = $user->received()
Send new thread:
subject()
: your message subjectwrites()
: your message bodyto()
: array of users ID that you want them to receive your messagesend()
: to send your message
$thread = $user->subject($request->subject) ->writes($request->body) ->to($request->recipients) ->send();
Reply for thread:
reply()
an object for your thread
$message = $user->writes($request->body) ->reply($thread);
Check if the thread has any unread messages:
if ($thread->isUnread())
License
The MIT License (MIT). Please see License File for more information.