Giter Site home page Giter Site logo

laravel-messageable's Introduction

Laravel Messageable

Build Status PHP from Packagist Latest Version License

Installation

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

$ composer require artisanry/messageable

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

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

Usage

Setup a Model

<?php

namespace App;

use Artisanry\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 [email protected]. All security vulnerabilities will be promptly addressed.

Credits

This project exists thanks to all the people who contribute.

License

Mozilla Public License Version 2.0 (MPL-2.0).

laravel-messageable's People

Contributors

dependabot-preview[bot] avatar faustbrian avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

laravel-messageable's Issues

Class 'BrianFaust\ServiceProvider\ServiceProvider' not found

  • Version: master
  • PHP Version: 7.1.2
  • Laravel 5.4.13

When running the command:
php artisan vendor:publish --provider="BrianFaust\Messagable\MessageableServiceProvider"

Artisan errors out saying that the ServiceProvider is not found.

PHP Fatal error: Class 'BrianFaust\ServiceProvider\ServiceProvider' not found in /..../vendor/faustbrian/laravel-messageable/src/MessageableServiceProvider.php on line 27

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.