/** * Handle the options. * * @param UserFieldType $fieldType */ public function handle(UserFieldType $fieldType) { $model = $fieldType->getRelatedModel(); $query = $model->newQuery(); $this->dispatch(new QueryWithRole($fieldType, $query)); $this->dispatch(new QueryWithPermission($fieldType, $query)); $fieldType->setOptions($query->get()->lists($model->getTitleName(), $model->getKeyName())->all()); }
/** * Restore the value. * * @param $value * @return null|EloquentModel */ public function restore($value) { if (is_numeric($value)) { $relation = $this->fieldType->getRelatedModel(); return $relation->find($value); } return $value; }
/** * Handle the command. * * @param RoleRepositoryInterface $roles */ public function handle(RoleRepositoryInterface $roles) { if (!$this->query->getQuery()->joins && ($permission = array_get($this->fieldType->getConfig(), 'permission'))) { $accessible = $roles->findByPermission($permission); if (!$accessible->isEmpty()) { $this->query->join('users_users_roles', 'users_users_roles.entry_id', '=', 'users_users.id')->whereIn('users_users_roles.related_id', $accessible->lists('id')); } } }
/** * Handle the command. * * @param RoleRepositoryInterface $roles */ public function handle(RoleRepositoryInterface $roles) { if ($role = array_get($this->fieldType->getConfig(), 'role')) { if (is_numeric($role)) { $role = $roles->find($role); } if (is_string($role)) { $role = $roles->findBySlug($role); } if ($role) { // The role exists so join and limit results to that role's ID. $this->query->join('users_users_roles', 'users_users_roles.entry_id', '=', 'users_users.id')->where('users_users_roles.related_id', $role->getId()); } else { // The role doesn't exist so don't return anything. $this->query->join('users_users_roles', 'users_users_roles.entry_id', '=', 'users_users.id')->where('users_users_roles.related_id', false); } } }
/** * Handle the command. * * @param Container $container */ public function handle(Container $container) { $container->call(array_get($this->fieldType->getConfig(), 'handler'), ['fieldType' => $this->fieldType]); }