private function listCharacters() { $user = $this->getUser(); $out = $this->getOutput(); $dbr = wfGetDB(DB_SLAVE); // TODO: integrate TablePager into this. See SpecialBlockList as framework $fractal_list = $dbr->select(array('f' => 'fate_fractal', 'g' => 'fate_game', 'r' => 'muxregister_register'), array('r.user_name', 'r.canon_name', 'r.user_id', 'f.fractal_id', 'f.game_id', 'g.game_name', 'f.fractal_name', 'f.fractal_type', 'f.is_private', 'f.create_date', 'f.submit_date', 'f.approve_date', 'f.frozen_date'), array('user_id' => $user->getID(), 'fractal_type' => 'Character'), __METHOD__, array('ORDER BY' => array('fractal_type', 'fractal_name', 'canon_name')), array('r' => array('LEFT JOIN', 'f.register_id = r.register_id'), 'g' => array('JOIN', 'f.game_id = g.game_id'))); $table = "<table class='wikitable'>" . "<tr><th>Character Name</th><th>Game</th><th>Status</th></tr>"; if ($fractal_list->numRows() == 0) { $table .= "<tr><td colspan=100%>No Characters Found</td></tr>"; } else { foreach ($fractal_list as $fractal) { $subpage = "ViewSheet"; $status = "Created"; $status_date = $fractal->create_date; $name = $fractal->canon_name; if ($fractal->frozen_date) { $status = "Frozen"; $status_date = $fractal->frozen_date; } elseif ($fractal->approve_date) { $status = "Approved"; $status_date = $fractal->approve_date; } elseif ($fractal->submit_date) { $status = "Submitted"; $status_date = $fractal->submit_date; } $table .= "<tr><td>" . Linker::link($this->getPageTitle()->getSubpage($subpage), $name, array(), array('fractal_id' => $fractal->fractal_id), array('forcearticalpath')) . "</td><td>"; if ($user->isAllowed('fatestaff')) { $table .= Linker::link(Title::newFromText('Special:FateGameConfig')->getSubpage('View'), $fractal->game_name, array(), array('game_id' => $fractal->game_id), array('forcearticlepath')); } else { $table .= $fractal->game_name; } $table .= "</td><td>" . $status . " on " . FateGameGlobals::getDisplayDate($status_date) . "</td></tr>"; } $table .= "</table>"; } $out->addHTML($table); }
private function listAllGames() { $user = $this->getUser(); $out = $this->getOutput(); $dbr = wfGetDB(DB_SLAVE); $games = $dbr->select(array('g' => 'fate_game', 'r' => 'muxregister_register', 's' => 'fate_game_staff', 'r2' => 'muxregister_register'), array('r.register_id', 'r.user_name', 'r.canon_name', 'r.user_id', 'g.game_id', 'g.game_name', 'g.game_description', 'g.game_status', 'g.create_date', 'g.modified_date', 'group_concat(r2.user_id separator " ") as staff'), array('r.register_id = g.register_id', 'g.game_id = s.game_id', 's.register_id = r2.register_id'), __METHOD__, array('ORDER BY' => 'g.game_name')); $table = ''; if ($games->numRows() == 0) { $table .= "<div>No games are currently set up.</div>"; } else { $table .= "<table class='wikitable' >" . "<tr><th>Game Name</th><th>Game Master</th><th>Description</th><th>Status</th><th>Created</th><th>Last Modified</th></tr>"; foreach ($games as $game) { $staff = explode(' ', $game->{staff}); $table .= "<tr><td valign='top'>"; if ($user->getID() == $game->{user_id} || in_array($user->getID(), $staff) || $user->isAllowed('fategm')) { $table .= Linker::link($this->getPageTitle()->getSubpage("View"), $game->{game_name}, array(), array('game_id' => $game->{game_id}), array('forcearticlepath')); } else { $table .= $game->{game_name}; } $table .= "</td><td valign='top'>" . Linker::link(Title::newFromText('User:'******'forcearticlepath')) . "</td>" . "<td>" . $game->{game_description} . "</td><td valign='top'>" . $game->{game_status} . "</td>" . "<td>" . FateGameGlobals::getDisplayDate($game->{create_date}) . "</td>" . "<td>" . FateGameGlobals::getDisplayDate($game->{modified_date}) . "</td>" . "</tr>"; } $table .= "</table>"; } $out->addHTML($table); }