inani / messager
A simple package to handle messages
Installs: 2 479
Dependents: 0
Suggesters: 0
Security: 0
Stars: 153
Watchers: 11
Forks: 18
Open Issues: 6
Requires
Requires (Dev)
- fzaninotto/faker: ~1.4
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-12-08 21:58:29 UTC
README
(NOT MAINTAINED)
Laravel Messager
A convenient way to handle messages between users in a simple way
Table of Contents
Installation:
First, install the package through Composer.
composer require inani/messager
Then include the service provider inside config/app.php
.
'providers' => [ ... Inani\Messager\MessagerServiceProvider::class, ... ];
Publish config and migrations
php artisan vendor:publish
Setup a Model
To setup a model all you have to do is add (and import) the MessageAccessible
trait.
use Inani\Messager\Helpers\MessageAccessible; use Inani\Messager\Helpers\TagsCreator; class User extends Model { use MessageAccessible, TagsCreator; ... }
Creating & sending Messages
Creating a message
$receiver = User::find(1); // Message Data $messageData = [ 'content' => 'Hello all this is just a test', // the content of the message 'to_id' => $receiver->getKey(), // Who should receive the message ]; list($message, $user) = App\User::createFromRequest($messageData);
Sending the message
$sender = User::find(2); $sent = $sender->writes($message) ->to($user) ->send(); // send to multiple users the same message // can execpt a user|array of users| array of ids| or array of users and ids $sent = $sender->writes($message) ->to($user) ->cc([$user1, $user2]) ->cc([$user3->id, $user4->id]) ->send();
Responding the message
$sender = User::find(2); $sent = $user->writes($newMessage) ->to($sender) ->responds($message) ->send();
Drafting a message
$sender = User::find(2); $draft = $sender->writes($message) ->to($user) ->draft() ->keep();
Working with Messages
Once you've got messages you need to do something with them.
Getting messages between users
// Users $userA = App\User::find(1); $userB = App\User::find(2); // Get seen messages sent from UserB to UserA $messages = $userA->received()->from($userB)->seen()->get(); // OR you can pass an array of IDs $messages = $userA->received()->from([2, 3, 4, 5])->seen()->get();
Read messages
// Set the selected message(or id of messages as read) $count = $userB->received()->select($message)->readThem();
Unread messages
// Get unread messages from UserB to User A $messages = $userA->received()->from($userB)->unSeen()->get(); // Marking them as read $messages = $userA->received()->from($userB)->unSeen()->readThem(); // check out if a conversation has new messages $bool = $userA->received()->conversation($message)->hasNewMessages(); // Get the number of conversations that have new messages in it $number = $userA->received()->unSeenConversations();
Sent messages
// Get unread messages from UserA to UserB $messages = $userA->sent()->to($userB)->get(); // OR you can pass an array of IDs $messages = $userA->received()->to([2, 3, 4, 5)->get();
Draft messages
// Get the draft messages for UserA $messages = $userA->sent()->inDraft()->get().
Tags
You can tag (or structure your messages in different categories).
Create and Edit tags
each user can make any number of tags.
// create a new tag, $data can be (Tag instance, array, Request) $tag = $userA->addNewTag($data); // Modify the attributes of a tag $user->tag($tag)->name("social")->color("#ffff")->apply();
Assign tag to message
Once you have the message and the tag
// you'll need the instance of user(to check if sender or receiver) // $user and $tag can be ids or instance of User, Tag classes $bool = $message->concerns($user)->putTag($tag);
Change and get tag of a message
// to change the tag just use the same method $bool = $message->concerns($user)->putTag($tag); // to get the tag of the message, null if not tagged $tagOrNull = $message->concerns($user)->getTag(); //
Remove a tag from a message
// To remove the tag from the message $bool = $message->concerns($user)->removeTag();