/** * Insert settings. */ public function insertSettings() { $settings = ['title' => "Traq", 'theme' => "default", 'site_name' => "", 'site_url' => "", 'db_revision' => \Traq\DB_REVISION, 'locale' => "en_AU", 'check_for_update' => 1, 'last_update_check' => time(), 'anonymous_user_id' => $this->createAnonymousUser(), 'allow_registration' => 1, 'email_validation' => 0, 'date_format' => "d/m/Y", 'date_time_format' => "g:iA d/m/Y", 'notification_from_email' => "noreply@" . $_SERVER['HTTP_HOST'], 'ticket_creation_delay' => 30, 'ticket_history_sorting' => "oldest_first", 'tickets_per_page' => 25, 'timeline_day_format' => "l, jS F Y", 'timeline_days_per_page' => 10, 'timeline_time_format' => "h:iA"]; foreach ($settings as $setting => $value) { $model = new Setting(['setting' => $setting, 'value' => $value]); $model->save(); } }
/** * Get setting. * * @param string $settingName * * @return mixed */ function setting($settingName) { static $settings = []; if (!count($settings)) { foreach (Setting::all() as $setting) { $settings[$setting['setting']] = $setting['value']; } } return $settings[$settingName]; }
/** * 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']); }); });