Skip to content
forked from musonza/groups

A Laravel 5 user groups package

License

Notifications You must be signed in to change notification settings

rudolphp/groups

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Downloads StyleCI

Description

This package allows you to add user groups (groups, comment, like ...) system to your Laravel 5 application.

Installation

  1. Via Composer, from the command line, run :
composer require musonza/groups
  1. Add the service provider to ./config/app.php in providers array, like :
    /*
     * Package Service Providers...
     */
    Musonza\Groups\GroupsServiceProvider::class,
  1. You can use the facade for shorter code. Add this to ./config/app.php at the end of aliases array :

Note : is facultative.

    'Groups' => Musonza\Groups\Facades\GroupsFacade::class,

Note : The class is bound to the ioC as Groups.

$groups = App::make('Groups');
  1. From the command line, publish the assets:
php artisan vendor:publish

Note : This will publish database migrations in ./database/migrations/.

create_groups_table // main groups table
    id
    name
    description
    short_description
    image
    url
    user_id
    private
    conversation_id
    extra_info
    settings

create_group_user_table // main relation User is in Group table
    id
    user_id
    group_id

create_posts_table // users Posts table
    id
    title
    body
    type
    user_id
    extra_info

create_comments_table // users post Comments table
    id
    body
    user_id
    post_id
    type

create_group_post_table // relation Group own Post table
    group_id
    post_id

create_likes_table // users Likes on comment or post
    user_id
    likeable_id
    likeable_type

create_reports_table // Reporting post or comment
    user_id
    reportable_id
    reportable_type

create_group_request_table // Request group attachement
    user_id
    group_id
  1. Adapt, Add, Remove, migrations for your usage.

  2. Create migration, from the command line.

one-by-one :

php artisan make:migration create_migration_name

or all :

php artisan migrate

Usage

Groups

  1. Create a group
$group = Groups::create($userId, $data);

Note : Accepted fields in $data array :

$data = [
  'name'              => '',
  'description'       => '', // optional
  'short_description' => '', // optional
  'image'             => '', // optional
  'private'           => 0,  // 0 (public) or 1 (private)
  'extra_info'        => '', // optional
  'settings'          => '', // optional
  'conversation_id'   => 0,  // optional if you want to add messaging to your groups this can be useful
];
  1. Delete a group
$group->delete();
  1. Update a group
$group->update($updateArray);
  1. Get user instance with group relations
$user = Groups::getUser($userId); 
  1. Add members to group
$group->addMembers([$userId, $userId2, ...]);
  1. Request to join a group
$group->request($userId);
  1. Accept a group request
$group->acceptRequest($userId);
  1. Decline a group request
$group->declineRequest($userId);
  1. Group requests
$requests = $group->requests;
  1. How many groups a user is member of
$user = Groups::getUser($userId); 
$count = $user->groups->count();
  1. Remove member(s) from group
$group->leave([$userId, $userId2, ...]);

Posts

  1. Create a post
$post = Groups::createPost($data);

Note : Acceptable values for Post $data array

$data = [
  'title'      => '', 
  'user_id'    => 0, 
  'body'       => '', 
  'type'       => '', 
  'extra_info' => '',
];
  1. Get post
$post = Groups::post($postId);
  1. Update a post
$post->update($data);
  1. Delete a post
$post->delete();
  1. Add a post to a group
$group->attachPost($postId);
  1. Add multiple posts to a group
$group->attachPost([$postId, $postId2, ...]);
  1. Remove post from a group
$group->detachPost($postId);
  1. Group posts
$posts = $group->posts;

$posts = $group->posts()->paginate(5);

$posts = $group->posts()->orderBy('id', 'DESC')->paginate(5);
  1. User posts
$user = Groups::getUser($userId);

$posts = $user->posts;

Comments

Note : Acceptable values for Comment $data array

$data = [
  'post_id' => 0,  
  'user_id' => 0, 
  'body'    => '',
];
  1. Add comment
$comment = Groups::addComment($data);
  1. Get comment
$comment = Groups::comment($commentId);
  1. Update a comment
$comment->update($data);
  1. Delete a comment
$comment->delete();

Reporting

  1. Report a comment or post
$comment->report($userIdOfReporter);
$post->report($userIdOfReporter);
  1. Remove a post or comment report
$post->removeReport($userId);
$comment->removeReport($userId);
  1. Toggle report/unreport a post or comment
$post->toggleReport($userId);
$comment->toggleReport($userId);
  1. Post or Comment Report count
$commentReports = $comment->reportsCount;
$postReports = $post->reportsCount;

Likes

  1. Like a post or comment
$post->like($userId);
$comment->like($userId);
  1. Unlike a post or comment
$post->unlike($userId);
$comment->unlike($userId);
  1. Toggle like/unlike a post or comment
$post->toggleLike($userId);
$comment->toggleLike($userId);
  1. Post or Comment likes count
$postLikes = $post->likesCount;
$commentLikes = $comment->likesCount;

About

A Laravel 5 user groups package

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%