zaghadon/laravel-social
Laravel social package
A full and simple Toolkit Package for instantly adding Social Features to Laravel Project Adapted From Miladimos
Installation
-
Run the command below to add this package:
composer require zaghadon/laravel-social -
Open your config/socials.php and add the following to the providers array:
Zaghadon\Social\Providers\SocialServiceProvider::class, -
Run the command below to install package:
php artisan social:install -
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 *