faustbrian/laravel-messageable

Messageable Polymorphic Eloquent Models for Laravel 5

2.2.0 2018-11-10 06:51 UTC

README

Build Status PHP from Packagist Latest Version License

Installation

Require this package, with Composer, in the root directory of your project.

$ composer require faustbrian/laravel-messageable

To get started, you'll need to publish the vendor assets and migrate:

php artisan vendor:publish --provider="BrianFaust\Messagable\MessageableServiceProvider" && php artisan migrate

Usage

Setup a Model

<?php

namespace App;

use BrianFaust\Messageable\HasMessages;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasMessages;
}

Examples

Create a new thread

Thread::create([
    'subject' => str_random(10),
]);

Add one message to a thread

$thread->addMessage([
    'body' => str_random(10),
], $user);

Add multiple messages to a thread

$thread->addMessage([
    [
        'data' => ['body' => str_random(10)],
        'creator' => User::find(1),
    ],
    [
        'data' => ['body' => str_random(10)],
        'creator' => User::find(2),
    ],
], $user);

Add one participant to a thread

$thread->addParticipant($user);

Add multiple participants to a thread

$thread->addParticipants([
    User::find(3), Organization::find(2), Player::find(4)
]);

Mark a thread as ready by the user

$thread->markAsRead($user);

Get all threads

Thread::getAllLatest()->get();

Get all threads that a user has participated in

Thread::forModel($user)->latest('updated_at')->get();

Get all threads that a user has participated in with new messages

Thread::forModelWithNewMessages($user)->latest('updated_at')->get();

Get the creator of a thread

$thread->creator();

Get the latest message of a thread

$thread->getLatestMessage();

Get an array of participant IDs and Types

$thread->participantsIdsAndTypes();

Check if the User Model hasn't read the latest message in the thread yet

$thread->isUnread($user);

Check if the User Model participated to the Thread

$thread->hasParticipant($user);

Testing

$ phpunit

Security

If you discover a security vulnerability within this package, please send an e-mail to hello@brianfaust.me. All security vulnerabilities will be promptly addressed.

Credits

License

MIT © Brian Faust