/** * Save settings. * * @return \Avalon\Http\RedirectResponse */ public function saveAction() { foreach (Request::$post->get('settings', [], false) as $setting => $value) { $setting = Setting::find("setting", $setting); if ($setting) { $setting->value = $value; $setting->save(); } } return $this->redirectTo("admin_settings"); }
/** * Dashboard index page. */ public function indexAction() { // Check for update $lastUpdateCheck = Setting::find('setting', 'last_update_check'); if ($lastUpdateCheck->value <= time() - 86400) { $this->checkForUpdate(); $lastUpdateCheck->value = time(); $lastUpdateCheck->save(); } // Get information $info = ['users' => User::select('id')->rowCount(), 'newestUser' => User::select('id', 'name')->orderBy('id', 'DESC')->execute()->fetch(), 'projects' => User::select('id')->rowCount()]; // Issues $info['tickets'] = ['open' => Ticket::select('id')->where('is_closed = ?')->setParameter(0, 0)->rowCount(), 'closed' => Ticket::select('id')->where('is_closed = ?')->setParameter(0, 1)->rowCount()]; return $this->render('admin/dashboard/index.phtml', $info); }
<?php use Traq\Models\Setting; $testSuite->createGroup('Requests / Admin / Settings', function ($g) { $admin = createAdmin(); $g->test('Traq Settings', function ($t) use($admin) { $resp = $t->visit('admin_settings', ['cookie' => ['traq' => $admin['session_hash']]]); $t->assertEquals(200, $resp->status); $t->assertContains('<h1 class="page-header">Settings</h1>', $resp->body); }); $g->test('Save settings', function ($t) use($admin) { $resp = $t->visit('admin_settings_save', ['method' => 'POST', 'post' => ['settings' => ['title' => 'New Title']], 'cookie' => ['traq' => $admin['session_hash']]]); $t->assertRedirectTo($t->generateUrl('admin_settings'), $resp); $t->assertEquals('New Title', Setting::find('setting', 'title')['value']); }); });