where('enabled', true); }); static::addGlobalScope('permission', function (Builder $builder) { $builder->with('groups'); }); } /** * Restituisce i permessi relativi all'account in utilizzo. * * @return string */ public function getPermissionAttribute() { if (Auth::user()->is_admin) { return 'rw'; } $group = Auth::user()->group->id; $pivot = $this->pivot ?? $this->groups->first(function ($item) use ($group) { return $item->id == $group; })->pivot; return $pivot->permessi ?? '-'; } /** * Restituisce i permessi relativi all'account in utilizzo. * * @return string */ public function getViewsAttribute() { $user = Auth::user(); $views = database()->fetchArray('SELECT * FROM `zz_views` WHERE `id_module` = :module_id AND `id` IN ( SELECT `id_vista` FROM `zz_group_view` WHERE `id_gruppo` = ( SELECT `idgruppo` FROM `zz_users` WHERE `id` = :user_id )) ORDER BY `order` ASC', [ 'module_id' => $this->id, 'user_id' => $user->id, ]); return $views; } public function getOptionAttribute() { return !empty($this->options) ? $this->options : $this->options2; } public function getOptionsAttribute($value) { return App::replacePlaceholder($value); } public function getOptions2Attribute($value) { return App::replacePlaceholder($value); } /* Relazioni Eloquent */ public function plugins() { return $this->hasMany(Plugin::class, 'idmodule_to'); } public function prints() { return $this->hasMany(PrintTemplate::class, 'id_module'); } public function views() { return $this->hasMany(View::class, 'id_module'); } public function groups() { return $this->belongsToMany(Group::class, 'zz_permissions', 'idmodule', 'idgruppo')->withPivot('permessi'); } public function clauses() { return $this->hasMany(Clause::class, 'idmodule'); } public function children() { return $this->hasMany(self::class, 'parent')->withoutGlobalScope('enabled') ->orderBy('order'); } public function parent() { return $this->belongsTo(self::class, 'parent')->withoutGlobalScope('enabled'); } public function allParents() { return $this->parent()->with('allParents'); } public function allChildren() { return $this->children()->with('allChildren'); } /* Metodi statici */ public static function getHierarchy() { return self::with('allChildren') ->whereNull('parent') ->orderBy('order') ->get(); } }