public function bootstrap($app) { $app->on(Application::EVENT_AFTER_REQUEST, function () use($app) { $preferences = UserPreferences::preferences(); $defaultPreferences = new UserPreferences(); $defaultPreferences->load([]); $defaultPreferences->validate(); // compare current preferences with default // if user hasn't changed anything - don't flood session variable with default preferences if (count(array_diff($preferences->getAttributes(), $defaultPreferences->getAttributes())) !== 0) { $app->session->set('UserPreferencesModel', $preferences->getAttributes()); } else { $app->session->set('UserPreferencesModel', null); } }); $app->on(Application::EVENT_BEFORE_ACTION, function () use($app) { UserPreferences::preferences(); }); }