* @link https://getkirby.com * @copyright Bastian Allgeier GmbH * @license https://getkirby.com/license */ class UserPicker extends Picker { /** * Extends the basic defaults * * @return array */ public function defaults(): array { $defaults = parent::defaults(); $defaults['text'] = '{{ user.username }}'; return $defaults; } /** * Search all users for the picker * * @return \Kirby\Cms\Users|null * @throws \Kirby\Exception\InvalidArgumentException */ public function items() { $model = $this->options['model']; // find the right default query if (empty($this->options['query']) === false) { $query = $this->options['query']; } elseif (is_a($model, 'Kirby\Cms\User') === true) { $query = 'user.siblings'; } else { $query = 'kirby.users'; } // fetch all users for the picker $users = $model->query($query); // catch invalid data if (is_a($users, 'Kirby\Cms\Users') === false) { throw new InvalidArgumentException('Your query must return a set of users'); } // search $users = $this->search($users); // sort $users = $users->sort('username', 'asc'); // paginate return $this->paginate($users); } }