/** * {@inheritdoc} */ public function match(array $parameters = []) { if (isset($parameters['id'])) { return $parameters; } if (!isset($parameters['slug'])) { App::abort(404, 'Userprofile not found.'); } $slug_key = App::module('bixie/userprofile')->config('slug_key', 'username'); $slug = $parameters['slug']; $id = false; foreach ($this->cacheEntries as $entry) { if ($entry[$slug_key] === $slug) { $id = $entry['id']; } } if (!$id) { switch ($slug_key) { case 'id': $user = User::find($slug); break; case 'name': $user = User::where(['name' => $slug])->first(); break; case 'username': $user = User::findByUsername($slug); break; default: $user = false; break; } if (!$user) { App::abort(404, 'Userprofile not found.'); } $this->addCache($user); $id = $user->id; } $parameters['id'] = $id; return $parameters; }
/** * {@inheritdoc} */ public function findByUsername($username) { return User::findByUsername($username); }