2017 © Pedro PelĂĄez
 

library messenger

Messenger functionality for Laravel 5.2.

image

gerardojbaez/messenger

Messenger functionality for Laravel 5.2.

  • Sunday, March 4, 2018
  • by gerardojbaez
  • Repository
  • 3 Watchers
  • 33 Stars
  • 499 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 9 Forks
  • 2 Open issues
  • 9 Versions
  • 7 % Grown

The README.md

Build Status Latest Version Software License, (*1)

Messenger

Chat/Message system for Laravel 5.x., (*2)

With Messenger:, (*3)

  • Users can send and receive messages.
  • Users can participate in multiple conversations.
  • Users can send messages to one or multiple users.

TL;DR

use Messenger;

// Sending a message to one user:
Messenger::from($user)->to($user)->message('Hey!');

// Sending a message to multiple users: (an array of user ids)
Messenger::from($user)->to([1,2,3,4])->message('Who want to chat?!');

// Sending a message to one thread: (perfect for replying to a specific thread!)
Messenger::from($user)->to($thread)->message('I\'ll be there');

Content

Installation

Requirements

  • Laravel 5.x
  • PHP >=5.5

Composer

$ composer require gerardojbaez/messenger

Service Provider and Facade

If you are using laravel 5.5 and later, you can skip the following two steps since this package supports package auto-discovery feature., (*4)

Add the package to your application service providers in config/app.php file., (*5)

'providers' => [
    /**
     * Third Party Service Providers...
     */
    Gerardojbaez\Messenger\MessengerServiceProvider::class,
]

Add the Facade to your aliases array:, (*6)

'aliases' => [

    [...]

    'Messenger' => Gerardojbaez\Messenger\Facades\Messenger::class,
]

Config file and Migrations

Publish package config file and migrations with the command:, (*7)

$ php artisan vendor:publish --provider="Gerardojbaez\Messenger\MessengerServiceProvider"

Then run migrations:, (*8)

$ php artisan migrate

Traits and Contracts

Add Gerardojbaez/Messenger/Traits/Messageable trait and Gerardojbaez/Messenger/Contracts/MessageableInterface contract to your Users model., (*9)

See the following example:, (*10)

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Gerardojbaez\Messenger\Contracts\MessageableInterface;
use Gerardojbaez\Messenger\Traits\Messageable;

class User extends Authenticatable implements MessageableInterface
{
    use Messageable;

Usage

Sending to One User

<?php

// Import the facade
use Messenger;

Messenger::from($user)->to($user2)->message('Hey!')->send();

Sending to Multiple Users

<?php

// Import the facade
use Messenger;

Messenger::from($user)->to([1,2,3,4,5])->message('Hey!')->send();

Sending to Thread

<?php

// Import the facade
use Messenger;

Messenger::from($user)->to($thread)->message('That\'s awesome!')->send();

Get count of new messages

Get global count - new messages in all user threads:, (*11)

<?php

echo $user->unreadMessagesCount;

Get count for a particular user thread:, (*12)

<?php

echo $user->threads->first()->unreadMessagesCount;

Mark thread as read

To mark a thread as read:, (*13)

<?php

$user->markThreadAsRead($thread_id);

Thread Dynamic Attributes

Threads dynamic attributes are attributes that doesn't come from the database, instead we generate them based on the data., (*14)

For example, threads doesn't have a title by itself, Messenger will create it based on the participants list., (*15)

Attributes:, (*16)

  • $thread->title
  • $thread->creator to get the thread creator.
  • $thread->lastMessage to get the latest message in the thread.

Displaying user threads

The controller:, (*17)

public function index()
{
    // Eager Loading - this helps prevent hitting the
    // database more than the necessary.
    $this->user->load('threads.messages.sender');

    return view('messages.index', [
        'threads' => $this->user->threads
    ]);
}

The view:, (*18)

<div class="panel panel-default">
    <div class="list-group">
        @if($threads->count() > 0)
            @foreach($threads as $thread)
                @if($thread->lastMessage)
                    <a href="#" class="list-group-item">
                        <div class="clearfix">
                            <div class="pull-left">
                                <span class="h5">{{ $thread->title }}</span>
                                @if($thread->unreadMessagesCount > 0)
                                    <span class="label label-success">{!! $thread->unreadMessagesCount !!}</span>
                                @endif
                            </div>
                            <span class="text-muted pull-right">{{ $thread->lastMessage->created_at->diffForHumans() }}</span>
                        </div>
                        <p class="text-muted no-margin">{{ str_limit($thread->lastMessage->body, 35) }}</p>
                    </a>
                @endif
            @endforeach
        @endif
    </div>
</div>

Preview:, (*19)

Preview of all user threads, (*20)

Using Models

Messenger has 3 models:, (*21)

Gerardojbaez\Messenger\Models\Message;
Gerardojbaez\Messenger\Models\MessageThread;
Gerardojbaez\Messenger\Models\MessageThreadParticipant;

You can use these as normal. For more details take a look to each model and the Gerardojbaez\Messenger\Traits\Messageable trait., (*22)

Config File

For now you can configure what models to use., (*23)

License

This package is free software distributed under the terms of the MIT license., (*24)

The Versions

04/03 2018

dev-master

9999999-dev

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gerardo BĂĄez

laravel messages messenger

04/03 2018

v1.1.0

1.1.0.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gerardo BĂĄez

laravel messages messenger

03/03 2018

v1.0.3

1.0.3.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gerardo BĂĄez

laravel messages messenger

17/10 2016

v1.0.2

1.0.2.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gerardo BĂĄez

laravel messages messenger

17/10 2016

v1.0.1

1.0.1.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gerardo BĂĄez

laravel messages messenger

17/10 2016

v1.0.0

1.0.0.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

The Development Requires

by Gerardo BĂĄez

laravel messages messenger

06/08 2016

v0.1.2

0.1.2.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

by Gerardo BĂĄez

laravel messages messenger

06/08 2016

v0.1.1

0.1.1.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

by Gerardo BĂĄez

laravel messages messenger

05/08 2016

v0.1.0

0.1.0.0

Messenger functionality for Laravel 5.2.

  Sources   Download

MIT

The Requires

 

by Gerardo BĂĄez

laravel messages messenger