/** * Action to request the Dim Mak form AND execute the purchase * * @todo split form request (GET) and purchase (POST) into separate funcs * @return ViewSpec */ public function buyDimMak() { if (is_logged_in()) { $player = new Player(self_char_id()); $showMonks = false; $parts = []; RequestWrapper::init(); if (RequestWrapper::$request && RequestWrapper::$request->isMethod('POST')) { $error = $this->dimMakReqs($player, self::DIM_MAK_COST); if (!$error) { $player->changeTurns(-1 * self::DIM_MAK_COST); add_item($player->id(), 'dimmak', 1); $parts['pageParts'] = ['success-dim-mak']; $showMonks = true; } else { $parts['error'] = $error; } } else { $parts['pageParts'] = ['form-dim-mak']; $parts['dim_mak_cost'] = self::DIM_MAK_COST; } return $this->render($parts, $player, $showMonks); } else { return $this->accessDenied(); } }
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use NinjaWars\core\RouteNotFoundException; use NinjaWars\core\Router; use NinjaWars\core\environment\RequestWrapper; use NinjaWars\core\data\GameLog; use NinjaWars\core\data\Player; use NinjaWars\core\extensions\SessionFactory; // setup our runtime environment require_once LIB_ROOT . 'environment/bootstrap.php'; try { $container = new Container(); $container['current_player'] = function ($c) { return Player::find(SessionFactory::getSession()->get('player_id')); }; $container['session'] = function ($c) { return SessionFactory::getSession(); }; // Update the activity of the page viewer in the database. RequestWrapper::init(); GameLog::updateActivityInfo(RequestWrapper::$request, SessionFactory::getSession()); // get the request information to parse the route $response = Router::route(Request::createFromGlobals(), $container); if ($response instanceof Response) { $response->send(); } else { throw new \RuntimeException('Route returned something other than a Response'); } } catch (RouteNotFoundException $e) { Router::respond404(); }