Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/syn.corals.io/Corals/modules/Syndicate/Models/Scopes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/syn.corals.io/Corals/modules/Syndicate/Models/Scopes/RolesScope.php
<?php


namespace Corals\Modules\Syndicate\Models\Scopes;


use Corals\User\Models\Role;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Support\Arr;

class RolesScope implements Scope
{
    private $roles;

    public function __construct($roles)
    {
        $this->roles = Arr::wrap($roles);
    }

    /**
     * Apply the scope to a given Eloquent query builder.
     *
     * @param Builder $builder
     * @param Model $model
     * @return void
     */
    public function apply(Builder $builder, Model $model)
    {
        $modelQuery = sprintf("model_has_roles.model_type = '%s'", $model->getMorphClass());

        $tableName = $model->getTable();

        $roles = Role::whereIn('name', $this->roles)->pluck('id')->toArray();

        $builder
            ->join('model_has_roles', function ($join) use ($tableName, $model, $modelQuery) {
                $join->on('model_has_roles.model_id', '=', $tableName . '.id')
                    ->whereRaw($modelQuery);
            })
            ->whereIn('model_has_roles.role_id', $roles)
            ->select($tableName . '.*');
    }
}

Spamworldpro Mini