Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 2.24 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?php
  2. require_once "lib/compra.php";
  3. require_once "lib/sheen.php";
  4. require_once "lib/beggar.php";
  5.  
  6. use compra\Compra;
  7. use sheen\View;
  8. use beggar\Request;
  9.  
  10. function templatize($req, $res) {
  11.     $title = isset($res->title) ? $res->title : "PBBG";
  12.     $player = isset($req->player) ? $req->player : NULL;
  13.     $layout = new View("layout", compact("title", "player"));
  14.     $layout->render(array(), $res->view->render(compact("player"), NULL, TRUE));
  15. }
  16.  
  17. Compra::except("beggar\Exception", function($req, $res, $e) {
  18.     $error = "Our web service seems to be malfunctioning. Please bear with us.";
  19.     $res->view = new View("error", compact("error"));
  20.     $res->title = "Error";
  21.     templatize($req, $res);
  22. });
  23.  
  24. get("/", function($req, $res) {
  25.     if (isset($req->player)) {
  26.         $res->title = "Headquarters";
  27.         $res->view = new View("home");
  28.     }
  29.     else {
  30.         $res->title = "Welcome";
  31.         $res->view = new View("index");
  32.     }
  33. });
  34.  
  35. get("/login", function($req, $res) {
  36.     if (isset($req->player)) {
  37.         $res->redirect("/");
  38.     }
  39.     $res->title = "Login";
  40.     $res->view = new View("login");
  41. });
  42.  
  43. get("/logout", function($req, $res) {
  44.     session_destroy();
  45.     $res->redirect("/");
  46. });
  47.  
  48. post("/login", function($req, $res) {
  49.     $username = trim($_POST['username']);
  50.     $password = trim($_POST['password']);
  51.     $api = new Request($username, $password);
  52.     try {
  53.         $api->players->self->_get();
  54.         $_SESSION['credentials'] = "{$username}:{$password}";
  55.         $res->redirect("/");
  56.     }
  57.     catch (beggar\ForbiddenException $e) {
  58.         $error = $e->getMessage();
  59.     }
  60.     $res->title = "Login";
  61.     $res->view = new View("login", compact("error"));
  62. });
  63.  
  64. get("/battle", function($req, $res) {
  65.     $players = $req->ws->players->_get();
  66.     $res->title = "Battle";
  67.     $res->view = new View("battle", compact("players"));
  68. });
  69.  
  70. Compra::before(function($req, $res) {
  71.     session_start();
  72.     if (isset($_SESSION['credentials'])) {
  73.         // TODO: Store session data in Redis or memcached
  74.         list($username, $password) = explode(":", $_SESSION['credentials']);
  75.         $req->ws = new Request($username, $password);
  76.         $req->player = (object)$req->ws->players->self->_get();
  77.     }
  78. });
  79.  
  80. Compra::after(function($req, $res) {
  81.     templatize($req, $res);
  82. });