zaghadon / laravel-social by zaghadon
forked from miladimos/laravel-social

A full and simple Toolkit Package for instantly adding Social Features to Laravel Project [Adapted From Miladimos]
74
1
0
Package Data
Maintainer Username: zaghadon
Maintainer Contact: nzaghad@topazdom.com (Nzagha David Eze)
Package Create Date: 2022-08-08
Package Last Update: 2022-08-27
Home Page:
Language: PHP
License: MIT
Last Refreshed: 2024-04-22 03:01:30
Package Statistics
Total Downloads: 74
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 1
Total Watchers: 0
Total Forks: 0
Total Open Issues: 0

Laravel social package

A full and simple Toolkit Package for instantly adding Social Features to Laravel Project Adapted From Miladimos

  • Starts
  • Forks

Installation

  1. Run the command below to add this package:

    composer require zaghadon/laravel-social
    
  2. Open your config/socials.php and add the following to the providers array:

    Zaghadon\Social\Providers\SocialServiceProvider::class,
    
  3. Run the command below to install package:

    php artisan social:install
    
  4. Run the command below to migrate database:

    php artisan migrate
    

Uses

Depending on the Capabilities You want implemented, as the required traits to the right Models.

Likeable Trait


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Zaghadon\Social\Traits\Like\Likeable;

class Post extends Model
{
    use HasFactory,
        Likeable;
}

In the User Model:


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Like\CanLike;

class User extends Authenticatable
{
    use HasFactory,
        CanLike;
}

Commentable Trait


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Zaghadon\Social\Traits\Comment\Commentable;

class Post extends Model
{
    use HasFactory,
        Commentable;
}

In the User Model:


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Comment\Commentor;

class User extends Authenticatable
{
    use HasFactory,
        Commentor;
}

Bookmarkable Trait


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Zaghadon\Social\Traits\Bookmark\Bookmarkable;

class Post extends Model
{
    use HasFactory,
        Bookmarkable;
}

In the User Model:


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Bookmark\CanBookmark;

class User extends Authenticatable
{
    use HasFactory,
        CanBookmark;
}

Followable Trait

In the User Model:


namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Zaghadon\Social\Traits\Follow\Followable;

class User extends Authenticatable
{
    use HasFactory,
        Followable;
}

Methods

In controllers you have these methods:


namespace App\Http\Controllers;

use App\Models\Post;

class PostController extends Controller
{
    public function index()
    {
        $post = Post::find(1);

        $post->likes // return all likes

        
    }
}

TODO

  • Document Every Available Methods and their Usage.
  • Create a test framework to test each unit feature.

Capabilities [* Proposed, ** In Active Developement]

Like

Favorite *

Tag **

Category **

Bookmark

Follow \ Unfollow

Subscribe **

Comment

Vote / Rate System *