zaghadon/laravel-social

A full and simple Toolkit Package for instantly adding Social Features to Laravel Project [Adapted From Miladimos]
76 1
Install
composer require zaghadon/laravel-social
Latest Version:v1.0.1
PHP:>=7.4|^8.0
License:MIT
Last Updated:Aug 27, 2022
Links: GitHub  ·  Packagist
Maintainer: zaghadon

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 *