/** * Checks for ranking type and calls the page. * * @param integer $mode Ranking mode (Alliance or Player) * @param integer $type Points type and order * @param boolean $avg Average mode * @param integer $position Start position * * @return Bengine_Game_Controller_Ranking */ protected function getRanking($mode, $type, $avg, $position) { Core::getLanguage()->load(array("Statistics", "Galaxy", "Alliance")); $this->assignRelationTypes(); $validTypes = array("points", "fpoints", "rpoints", "dpoints", "level"); if (!in_array($type, $validTypes)) { $type = "points"; } if ($avg) { $this->average = true; } Core::getTPL()->assign("type1Sel", $type == "points" ? " selected=\"selected\"" : ""); Core::getTPL()->assign("type2Sel", $type == "fpoints" ? " selected=\"selected\"" : ""); Core::getTPL()->assign("type3Sel", $type == "rpoints" ? " selected=\"selected\"" : ""); Core::getTPL()->assign("type4Sel", $type == "level" ? " selected=\"selected\"" : ""); Core::getTPL()->assign("type5Sel", $type == "dpoints" ? " selected=\"selected\"" : ""); Core::getTPL()->assign("avg_on", $this->average); if ($mode == 2) { Core::getTPL()->assign("mod1Sel", ""); Core::getTPL()->assign("mod2Sel", " selected=\"selected\""); $this->allianceRanking($type, $position); } else { Core::getTPL()->assign("mod2Sel", ""); Core::getTPL()->assign("mod1Sel", " selected=\"selected\""); $this->playerRanking($type, $position); } return $this; }
/** * Index action. * * @return Bengine_Comm_Controller_Signup */ public function indexAction() { $this->assign("page", Core::getLang()->getItem("REGISTRATION")); $this->assign("userCheck", sprintf(Core::getLanguage()->getItem("USER_CHECK"), Core::getOptions()->get("MIN_USER_CHARS"), Core::getOptions()->get("MAX_USER_CHARS"))); $this->assign("passwordCheck", sprintf(Core::getLanguage()->getItem("PASSWORD_CHECK"), Core::getOptions()->get("MIN_PASSWORD_LENGTH"), Core::getOptions()->get("MAX_PASSWORD_LENGTH"))); return $this; }
/** * Combat report action. * * @return Bengine_Comm_Controller_Combat */ public function reportAction() { if (!defined("SID")) { define("SID", ""); } Core::getLanguage()->load(array("info", "AssaultReport")); Core::getTPL()->clearHTMLHeaderFiles(); Core::getTPL()->addHTMLHeaderFile("game.css", "css"); Core::getTPL()->addHTMLHeaderFile("lib/jquery.js", "js"); $select = new Recipe_Database_Select(); $select->from(array("a" => "assault"))->join(array("p" => "planet"), "p.planetid = a.planetid")->attributes(array("a" => array("report"), "p" => array("planetname")))->where(array("a" => "assaultid"), $this->getParam("1"))->where(array("a" => "key"), $this->getParam("2")); $result = $select->getStatement(); $row = $result->fetchRow(); if ($row) { $report = $row["report"]; $report = preg_replace_callback("/\\{lang}([^\"]+)\\{\\/lang}/siU", function ($matches) { return Core::getLanguage()->getItem($matches[1]); }, $report); $report = preg_replace_callback("/\\{embedded\\[([^\"]+)]}(.*)\\{\\/embedded}/siU", function ($matches) { return sprintf(Core::getLanguage()->getItem($matches[1]), $matches[2]); }, $report); Hook::event("ShowCombatReport", array(&$report, &$row)); $this->assign("report", $report); $this->assign("planetName", $row["planetname"]); $this->setIsAjax(); } else { $this->setNoDisplay(true); } return $this; }
/** * Runs the community application. * * @return Comm */ public function run() { parent::run(); Hook::event("CommStart"); define("LANG", Core::getLang()->getOpt("langcode") . "/"); Core::getLang()->load("Registration"); self::setCMS(); self::initUniverses(); self::initLanguage(); Core::getTPL()->addHTMLHeaderFile("lib/jquery.js", "js"); Core::getTPL()->addHTMLHeaderFile("lib/bootstrap.js", "js"); Core::getTPL()->addHTMLHeaderFile("main.js", "js"); Core::getTPL()->addHTMLHeaderFile("sign.js", "js"); Core::getTPL()->addHTMLHeaderFile("style.css", "css"); Core::getTPL()->assign("containerClass", "content"); Core::getTPL()->addLoop("headerMenu", self::getCMS()->getMenu("h")); $userCheck = sprintf(Core::getLanguage()->getItem("USER_CHECK"), Core::getOptions()->get("MIN_USER_CHARS"), Core::getOptions()->get("MAX_USER_CHARS")); $passwordCheck = sprintf(Core::getLanguage()->getItem("PASSWORD_CHECK"), Core::getOptions()->get("MIN_PASSWORD_LENGTH"), Core::getOptions()->get("MAX_PASSWORD_LENGTH")); Core::getTPL()->assign("userCheck", $userCheck); Core::getTPL()->assign("passwordCheck", $passwordCheck); Core::getTPL()->assign("uniSelection", self::getUnisAsOptionList()); Hook::event("CommTemplateAssign"); $this->dispatch(); Hook::event("CommEnd"); return $this; }
/** * Alliance page action. * * @return Bengine_Comm_Controller_Alliance */ public function pageAction() { Core::getLanguage()->load("Alliance"); Core::getTPL()->clearHTMLHeaderFiles(); Core::getTPL()->addHTMLHeaderFile("game.css", "css"); Core::getTPL()->addHTMLHeaderFile("lib/jquery.js", "js"); $tag = $this->getParam("1"); $fNumber = array("member", "points", "rpoints", "fpoints", "dpoints"); $attr = array("a.aid", "a.name", "a.tag", "a.logo", "a.textextern", "a.homepage", "a.showhomepage", "COUNT(u2a.userid) AS member", "SUM(u.points) AS points", "SUM(u.rpoints) AS rpoints", "SUM(u.fpoints) AS fpoints", "SUM(u.dpoints) AS dpoints"); $joins = "LEFT JOIN " . PREFIX . "user2ally u2a ON (u2a.aid = a.aid) "; $joins .= "LEFT JOIN " . PREFIX . "user u ON (u2a.userid = u.userid) "; $result = Core::getQuery()->select("alliance a", $attr, $joins, Core::getDB()->quoteInto("tag = ?", $tag), "", 1, "a.aid"); $row = $result->fetchRow(); if ($row) { foreach ($fNumber as $field) { $row[$field] = fNumber($row[$field]); } $parser = new Bengine_Game_Alliance_Page_Parser($row["aid"]); if (Str::length(strip_tags($row["textextern"])) > 0) { $row["textextern"] = $parser->startParser($row["textextern"]); } else { $row["textextern"] = Core::getLang()->get("WELCOME"); } $row["homepage"] = $row["homepage"] != "" ? Link::get($row["homepage"], $row["homepage"], $row["homepage"]) : ""; $row["logo"] = $row["logo"] != "" ? Image::getImage($row["logo"], "") : ""; Hook::event("ShowPublicAlliancePage", array(&$row)); $this->assign($row); $this->setIsAjax(); } else { $this->setNoDisplay(true); } return $this; }
public static function timeToString($type = 1, $timestamp = -1, $format = "", $replaceShortDate = 1) { $time = self::getTimestamp(); $timestamp = (int) $timestamp; if ($timestamp < 0) { $timestamp = $time; } if ($format != "") { $type = 3; } $date = ""; $isShortDate = false; Hook::event("ConvertTimestampStart", array($type, $timestamp, &$format)); // Replace date designation, if timestamp is today or yesterday. // Note: Does not work with specific date format. if ($replaceShortDate && $format == "") { $dateRepresentive = date("Y-m-d", $timestamp); if (date("Y-m-d", strtotime("-1 day", $time)) == $dateRepresentive) { $date = Core::getLanguage()->getItem("YESTERDAY"); $isShortDate = true; } else { if (date("Y-m-d", $time) == $dateRepresentive) { $date = Core::getLanguage()->getItem("TODAY"); $isShortDate = true; } else { if (date("Y-m-d", strtotime("+1 day", $time)) == $dateRepresentive) { $date = Core::getLanguage()->getItem("TOMORROW"); $isShortDate = true; } } } if ($type == 1 && $isShortDate) { return "<span class=\"cur-day\">" . $date . "</span> " . date(self::getTimeFormat(), $timestamp); } else { if ($type == 2 && $isShortDate) { return "<span class=\"cur-day\">" . $date . "</span>"; } } } switch ($type) { // Date + Time Format default: case 1: $date = date(self::getDateFormat() . " " . self::getTimeFormat(), $timestamp); break; // Only Date Format // Only Date Format case 2: $date = date(self::getDateFormat(), $timestamp); break; // Specific Format // Specific Format case 3: $date = date($format, $timestamp); break; } Hook::event("ConvertTimestampClose", array($type, $timestamp, &$format, &$date)); return $date; }
/** * Prints either an error or success message. * * @param string $output * @param boolean $error * * @return Bengine_Game_Account_Password_Changer */ protected function printIt($output, $error = true) { if ($error === true) { $this->display("<div class=\"error\">" . Core::getLanguage()->getItem($output) . "</div>"); } $this->display("<div class=\"success\">" . Core::getLanguage()->getItem($output) . "</div><br />"); return $this; }
/** * Creates a new user list object. * * @param resource $list Query result for a list * @param int $start * @return \Bengine_Game_User_List */ public function __construct($list = null, $start = 0) { $this->pmPic = Image::getImage("pm.gif", Core::getLanguage()->getItem("WRITE_MESSAGE")); $this->buddyPic = Image::getImage("b.gif", Core::getLanguage()->getItem("ADD_TO_BUDDYLIST")); $this->modPic = Image::getImage("moderator.gif", Core::getLanguage()->getItem("MODERATE")); $this->points = Core::getUser()->get("points"); parent::__construct($list, $start); }
/** * Formats a message. * * @param string $message Raw log message * @param string $mode Log mode * * @return string Formatted message */ public static function getMessageField($message, $mode = "error") { Core::getLanguage()->load("error"); $message = Core::getLanguage()->getItem($message); $message = "<span class=\"field_" . $mode . "\">" . $message . "</span>"; Hook::event("MessageField", array(&$message)); return $message; }
/** * Formats the message. * * @param Bengine_Game_Model_Message $message * * @return Bengine_Game_MessageFolder_System */ protected function _format(Bengine_Game_Model_Message $message) { if (!$message->get("sender")) { $message->set("sender", Core::getLanguage()->getItem("FLEET_COMMAND")); } $message->set("subject", str_replace("%SID%", SID, $message->get("subject"))); $message->set("message", str_replace("%SID%", SID, $message->get("message"))); return $this; }
/** * Formats the message for news feeds. * * @param Bengine_Game_Model_Message $message * * @return Bengine_Game_MessageFolder_Combat */ protected function _formatFeed(Bengine_Game_Model_Message $message) { $assaultId = (int) $message->get("message"); $assault = Application::getModel("game/assault")->load($assaultId); $link = BASE_URL . Core::getLang()->getOpt("langcode") . "/combat/report/" . $assaultId . "/" . $assault->get("key"); $gentime = $assault->get("gentime") / 1000; $text = Core::getLanguage()->getItem("ASSAULT_REPORT") . " (A: " . fNumber($assault->get("lostunits_attacker")) . ", D: " . fNumber($assault->get("lostunits_defender")) . ") " . $gentime . "s"; $subject = Core::getLang()->get($message->get("subject")) . ": " . $assault->get("planetname") . " [" . $assault->getCoords(false) . "]"; $message->set(array("message" => $text, "subject" => $subject, "link" => $link)); return $this; }
/** * Creates a new controller object. * * @param array $args * * @return Recipe_Controller_Abstract */ public function __construct(array $args = array()) { if (!empty($args["action"])) { $this->_action = strtolower($args["action"]); } $this->_requestMethod = strtolower($_SERVER["REQUEST_METHOD"]); $this->setPackage(Core::getRequest()->getGET("package")); $this->setMainTemplate($this->getPackage()); $this->view = Core::getTemplate(); $this->language = Core::getLanguage(); $this->init(); return $this; }
/** * @return bool */ protected function _match() { Core::getLanguage()->load(array("Profile")); $userId = $this->getUser()->get("userid"); /* @var Bengine_Game_Model_Profile $avatar */ $avatar = Game::getModel("game/profile")->loadByCode("AVATAR", $userId); /* @var Bengine_Game_Model_Profile $about */ $about = Game::getModel("game/profile")->loadByCode("ABOUT_ME", $userId); if ($avatar->get("data") != "" && strip_tags($about->get("data")) != "" && $about->get("data") != Core::getLang()->get("DEFAULT_ABOUT_ME")) { return true; } return false; }
/** * @return Bengine_Admin_Controller_Cronjob */ protected function indexAction() { if ($this->getParam("add_cronjob")) { $this->add($this->getParam("month"), $this->getParam("day"), $this->getParam("weekday"), $this->getParam("hour"), $this->getParam("minute"), $this->getParam("class")); } $minute = ""; $hour = ""; $weekday = ""; $day = ""; $month = ""; $i = 0; while ($i < 60) { $minute .= createOption($i, $i, 0); $i += 5; } for ($i = 0; $i < 24; $i++) { $hour .= createOption($i, $i, 0); } $wds = array(1 => "Mon", 2 => "Tue", 3 => "Wed", 4 => "Thu", 5 => "Fri", 6 => "Sat", 7 => "Sun"); for ($i = 1; $i <= 7; $i++) { $weekday .= createOption($i, $wds[$i], 0); } for ($i = 1; $i <= 31; $i++) { $day .= createOption($i, $i, 0); } for ($i = 1; $i <= 12; $i++) { $month .= createOption($i, $i, 0); } Core::getTPL()->assign("minute", $minute); Core::getTPL()->assign("hour", $hour); Core::getTPL()->assign("weekday", $weekday); Core::getTPL()->assign("day", $day); Core::getTPL()->assign("month", $month); $tabs = array(); $result = Core::getQuery()->select("cronjob", array("cronid", "class", "xtime", "last", "active"), "ORDER BY xtime ASC"); foreach ($result->fetchAll() as $row) { $id = $row["cronid"]; $tabs[$id]["cronid"] = $row["cronid"]; $tabs[$id]["class"] = $row["class"]; $tabs[$id]["xtime"] = empty($row["xtime"]) ? Core::getLang()->get("NEVER") : date("Y-m-d H:i:s", $row["xtime"]); $tabs[$id]["last"] = empty($row["last"]) ? Core::getLang()->get("NEVER") : date("Y-m-d H:i:s", $row["last"]); $tabs[$id]["delete"] = Link::get("admin/cronjob/delete/" . $id, Core::getLanguage()->getItem("Delete")); $tabs[$id]["exec"] = Link::get("admin/cronjob/execute/" . $id, Core::getLanguage()->getItem("Execute")); $tabs[$id]["edit"] = Link::get("admin/cronjob/edit/" . $id, Core::getLanguage()->getItem("Edit")); $tabs[$id]["active"] = $row["active"] ? Link::get("admin/cronjob/disable/" . $id, "<span class=\"green\">On</span>", Core::getLanguage()->getItem("Disable")) : Link::get("admin/cronjob/enable/" . $id, "<span class=\"red\">Off</span>", Core::getLanguage()->getItem("Enable")); } Core::getTPL()->addLoop("crontabs", $tabs); return $this; }
/** * @var int $user * @return Bengine_Game_Controller_Achievements */ public function userAction($user) { Core::getLanguage()->load(array("Achievements")); $user = Application::getModel("game/user")->load((int) $user); /* @var Bengine_Game_Model_Collection_Achievement $achievements */ $achievements = Application::getCollection("game/achievement"); $achievements->addUserJoin($user->get("userid"), true)->addDefaultSorting(); $this->view->addLoop("achievements", $achievements); $this->view->assign("user", $user); $this->language->assign("leftXP", $user->getLeftXPForNextLevel()); $this->language->assign("nextLevel", $user->get("level") + 1); $this->language->assign("xp", $user->get("xp")); $this->language->assign("level", $user->get("level")); $this->language->assign("achievementUser", Link::get("game/" . SID . "/Profile/Page/" . $user->get("userid"), $user->get("username"))); }
/** * Formats the message. * * @param Bengine_Game_Model_Message $message * * @return Bengine_Game_MessageFolder_User */ protected function _format(Bengine_Game_Model_Message $message) { $sender = $message->get("sender"); if (!empty($sender)) { $url = "game/" . SID . "/MSG/Write/" . rawurlencode($message->get("username")) . "/" . Link::urlEncode("RE: " . $message->get("subject")); $reply = Link::get($url, Image::getImage("pm.gif", Core::getLanguage()->getItem("REPLY"))); $message->set("reply_link", $reply); $sender = $message->get("username") . " " . getCoordLink($message->get("galaxy"), $message->get("system"), $message->get("position")); } else { $sender = "System"; } $message->set("sender", $sender); $this->replaceForeignSessionId($message); return $this; }
/** * @return Bengine_Admin_Controller_Index */ protected function indexAction() { Core::getLanguage()->load("AI_Overview"); $this->assign("DBType", Core::getDB()->getDatabaseType()); $this->assign("DBVersion", Core::getDB()->getClientVersion()); $this->assign("DBServer", Core::getDB()->getServerVersion()); $this->assign("PHPVersion", phpversion()); $this->assign("IPAddress", IPADDRESS); $this->assign("Host", HTTP_HOST); $this->assign("ServerIP", $_SERVER["SERVER_ADDR"]); $this->assign("RecipeVersion", Core::versionToString()); $meta = Admin::getMeta(); $this->assign("RecipeAIVersion", $meta["packages"]["bengine"]["admin"]["version"]); $this->assign("ServerSoftware", $_SERVER["SERVER_SOFTWARE"]); return $this; }
/** * Adds an user to buddylist. * * @param integer $userid * * @return Bengine_Game_Controller_Friends */ protected function addAction($userid) { Core::getLanguage()->load(array("Buddylist")); if ($userid == Core::getUser()->get("userid")) { Logger::dieMessage("SELF_REQUEST"); } $where = Core::getDB()->quoteInto("friend1 = ? AND friend2 = ? OR friend1 = ? AND friend2 = ?", array($userid, Core::getUser()->get("userid"), Core::getUser()->get("userid"), $userid)); $result = Core::getQuery()->select("buddylist", array("friend1", "friend2"), "", $where); if ($result->rowCount() == 0) { Hook::event("AddToBuddyList", array($userid)); Core::getQuery()->insert("buddylist", array("friend1" => Core::getUser()->get("userid"), "friend2" => $userid)); /* @var Bengine_Game_Model_Message $pm */ $pm = Game::getModel("game/message"); $pm->set("receiver", $userid)->set("mode", Bengine_Game_Model_Message::USER_FOLDER_ID)->set("subject", Core::getLang()->get("FRIEND_REQUEST_RECEIVED"))->set("message", Core::getLang()->get("FRIEND_REQUEST_RECEIVED_MESSAGE")); $pm->send(); } return $this->redirect("game/" . SID . "/Friends"); }
/** * Index page * * @return Bengine_Admin_Controller_Cms */ protected function indexAction() { if ($this->getParam("update_pages")) { $this->updatePagesAction($this->getParam("delete"), $this->getParam("pages")); } $pages = array(); $result = Core::getQuery()->select("page", array("pageid", "position", "displayorder", "title"), "", "", "position DESC, displayorder ASC"); foreach ($result->fetchAll() as $row) { $id = $row["pageid"]; $pages[$id]["pageid"] = $id; $pages[$id]["position"] = $row["position"]; $pages[$id]["displayorder"] = $row["displayorder"]; $pages[$id]["title"] = $row["title"]; $pages[$id]["edit_link"] = Link::get("admin/cms/edit/" . $id, Core::getLanguage()->getItem("Edit")); } Core::getTPL()->addLoop("pages", $pages); return $this; }
/** * Index action. * * @return Bengine_Game_Controller_Research */ protected function indexAction() { Core::getLanguage()->load(array("info", "buildings")); /* @var Bengine_Game_Model_Collection_Construction $collection */ $collection = Application::getCollection("game/construction"); $collection->addTypeFilter(self::RESEARCH_CONSTRUCTION_TYPE, Game::getPlanet()->getData("ismoon"))->addUserJoin(Core::getUser()->get("userid"))->addDisplayOrder(); if (!Game::getPlanet()->getBuilding("RESEARCH_LAB") || !count($collection)) { Logger::dieMessage("RESEARCH_LAB_REQUIRED"); } Hook::event("ResearchLoaded", array($collection)); Core::getTPL()->addLoop("constructions", $collection); Core::getTPL()->assign("event", $this->event); $canResearch = true; if (!Game::getEH()->canReasearch()) { Logger::addMessage("RESEARCH_LAB_UPGRADING", "info"); $canResearch = false; } Core::getTPL()->assign("canResearch", $canResearch); Core::getTPL()->addHTMLHeaderFile("lib/jquery.countdown.js", "js"); return $this; }
/** * @return Bengine_Admin_Controller_Usergroups */ protected function indexAction() { if ($this->getParam("delete_usergroups")) { $this->delete($this->getParam("delete")); } else { if ($this->getParam("add_usergroup")) { $this->add($this->getParam("grouptitle"), $this->getParam("permissions")); } } $groups = array(); $result = Core::getQuery()->select("usergroup", array("usergroupid", "grouptitle", "standard"), "ORDER BY grouptitle ASC"); foreach ($result->fetchAll() as $row) { $id = $row["usergroupid"]; $groups[$id]["usergroupid"] = $id; $groups[$id]["grouptitle"] = $row["grouptitle"]; $groups[$id]["edit"] = Link::get("admin/usergroups/edit/" . $id, Core::getLanguage()->getItem("Edit")); $groups[$id]["standard"] = $row["standard"]; } Core::getTPL()->addLoop("groups", $groups); return $this; }
/** * Formats the message. * * @param Bengine_Game_Model_Message $message * * @return Bengine_Game_MessageFolder_Alliance */ protected function _format(Bengine_Game_Model_Message $message) { $senderName = $message->get("username"); $sender = !empty($senderName) ? Core::getLanguage()->getItem("ALLIANCE_GLOBAL_MAIL") . " (" . $senderName . ")" : Core::getLanguage()->getItem("ALLIANCE"); $message->set("sender", $sender); $this->replaceForeignSessionId($message); if (Core::getUser()->get("aid")) { $subject = "RE: " . preg_replace("#((RE|FW):\\s)+#is", "\\1", $message->get("subject")); $subject = rawurlencode($subject); $linkUrl = "game/"; if (URL_SESSION) { $linkUrl .= SID . "/"; } $linkUrl .= "Alliance/GlobalMail/" . $subject; if (!empty($senderName)) { $replyImg = Image::getImage("pm.gif", Core::getLanguage()->getItem("REPLY_ALLIANCE_MAIL")); $message->set("reply_link", Link::get($linkUrl, $replyImg)); } } return $this; }
/** * Check input data. * * @return Bengine_Game_Login */ public function checkData() { $this->dataChecked = true; $select = array("u.userid", "u.username", "p.password", "u.activation", "b.banid", "b.reason", "u.umode"); $joins = "LEFT JOIN " . PREFIX . "password p ON (u.userid = p.userid)"; $joins .= "LEFT JOIN " . PREFIX . "ban_u b ON (b.userid = u.userid AND b.to > '" . TIME . "')"; $result = Core::getQuery()->select("user u", $select, $joins, Core::getDB()->quoteInto("u.username = ?", $this->usr), "b.to DESC"); if ($row = $result->fetchRow()) { $result->closeCursor(); if (Str::compare($row["username"], $this->usr) && Str::compare($row["password"], $this->pw) && Str::length($row["activation"]) == 0 && !$row["banid"]) { $this->userid = $row["userid"]; Core::getQuery()->delete("loginattempts", "ip = ? OR username = ?", null, null, array(IPADDRESS, $this->usr)); Core::getQuery()->update("sessions", array("logged" => "0"), "userid = ?", array($this->userid)); if ($row["umode"]) { Core::getQuery()->update("planet", array("last" => TIME), "userid = ?", array($row["userid"])); } $this->canLogin = true; } else { $this->canLogin = false; if (!Str::compare($row["username"], $this->usr)) { $this->loginFailed("USERNAME_DOES_NOT_EXIST"); } if (Str::length($row["activation"]) > 0) { $this->loginFailed("NO_ACTIVATION"); } if ($row["banid"]) { Core::getLanguage()->load(array("Prefs")); Core::getLanguage()->assign("banReason", empty($row["reason"]) ? Core::getLanguage()->get("NO_BAN_REASON") : $row["reason"]); Core::getLanguage()->assign("pilloryLink", Link::get(Core::getLanguage()->getOpt("langcode") . "/pillory", Core::getLanguage()->get("PILLORY"))); $this->loginFailed("ACCOUNT_BANNED"); } $this->loginFailed("PASSWORD_INVALID"); } } else { $result->closeCursor(); $this->canLogin = false; $this->loginFailed("USERNAME_DOES_NOT_EXIST"); } return $this; }
/** * Annuls a ban. * * @param integer $banid * * @return Bengine_Game_Controller_Moderator */ protected function annulBanAction($banid) { Hook::event("UnbanUser", array($banid)); Core::getQuery()->update("ban_u", array("to" => TIME, "reason" => Core::getLanguage()->getItem("ANNULED")), "banid = ?", array($banid)); $result = Core::getQuery()->select("ban_u", "userid", "", Core::getDB()->quoteInto("banid = ?", $banid)); $row = $result->fetchRow(); $result->closeCursor(); $this->redirect("game/" . SID . "/Moderator/Index/" . $row["userid"], false); return $this; }
/** * Returns the mission name due to an id. * * @param integer $id Mission id * * @return string Mission name */ public static function getMissionName($id) { switch ($id) { case 6: $return = "STATIONATE"; break; case 7: $return = "TRANSPORT"; break; case 8: $return = "COLONIZE"; break; case 9: $return = "RECYCLING"; break; case 10: $return = "ATTACK"; break; case 11: $return = "SPY"; break; case 12: case 18: $return = "ALLIANCE_ATTACK"; break; case 13: case 17: $return = "HALT"; break; case 14: $return = "MOON_DESTRUCTION"; break; case 15: $return = "EXPEDITION"; break; case 16: $return = "ROCKET_ATTACK"; break; case 20: $return = "RETURN_FLY"; break; default: $return = "UNKOWN"; break; } Hook::event("GameGetMissionName", array(&$return)); return Core::getLanguage()->getItem($return); }
private static function GetEnhanceAssertionsInstance() { if (self::$EnhanceAssertions === null) { self::$EnhanceAssertions = new Assertions(Core::getLanguage()); } return self::$EnhanceAssertions; }
/** * Changes the ships against resources. * * @return Bengine_Game_Controller_Shipyard */ protected function changeAction() { if (!Core::getConfig()->get("SCRAP_MERCHANT_RATE")) { $this->redirect("game/" . SID . "/Shipyard"); } Core::getLanguage()->load(array("info", "buildings")); $selUnits = Core::getRequest()->getPOST("unit"); /* @var Bengine_Game_Model_Collection_Fleet $availUnits */ $availUnits = Application::getCollection("game/fleet", "game/unit"); $availUnits->addPlanetFilter(Core::getUser()->get("curplanet")); $metalCredit = 0; $siliconCredit = 0; $hydrogenCredit = 0; $totalQty = 0; $realUnits = array(); $rate = (double) Core::getConfig()->get("SCRAP_MERCHANT_RATE"); /* @var Bengine_Game_Model_Unit $unit */ foreach ($availUnits as $unit) { $unitId = $unit->getUnitid(); if (isset($selUnits[$unitId]) && $selUnits[$unitId] > 0) { $qty = _pos((int) $selUnits[$unitId]); $qty = min($qty, $unit->getQty()); $metalCredit += $qty * $unit->get("basic_metal"); $siliconCredit += $qty * $unit->get("basic_silicon"); $hydrogenCredit += $qty * $unit->get("basic_hydrogen"); $totalQty += $qty; $realUnits[(int) $unitId] = $qty; } } $points = ($metalCredit + $siliconCredit + $hydrogenCredit) / 1000; $metalCredit = floor($metalCredit * $rate); $siliconCredit = floor($siliconCredit * $rate); $hydrogenCredit = floor($hydrogenCredit * $rate); Core::getLang()->assign(array("metalCredit" => fNumber($metalCredit), "siliconCredit" => fNumber($siliconCredit), "hydrogenCredit" => fNumber($hydrogenCredit), "totalQty" => fNumber($totalQty))); if (Core::getRequest()->getPOST("verify") == "yes") { /* @var Bengine_Game_Model_Unit $unit */ foreach ($availUnits as $unit) { $unitId = (int) $unit->getUnitid(); if (isset($realUnits[$unitId])) { $qty = $realUnits[$unitId]; if ($unit->getQty() <= $qty) { Core::getQuery()->delete("unit2shipyard", "`unitid` = ? AND `planetid` = ?", null, null, array($unitId, Core::getUser()->get("curplanet"))); } else { $sql = "UPDATE `" . PREFIX . "unit2shipyard` SET `quantity` = `quantity` - ? WHERE `unitid` = ? AND `planetid` = ?"; Core::getDatabase()->query($sql, array($qty, $unitId, Core::getUser()->get("curplanet"))); } } } $sql = "UPDATE `" . PREFIX . "planet` SET `metal` = `metal` + ?, `silicon` = `silicon` + ?, `hydrogen` = `hydrogen` + ? WHERE `planetid` = ?"; Core::getDatabase()->query($sql, array($metalCredit, $siliconCredit, $hydrogenCredit, Core::getUser()->get("curplanet"))); $sql = "UPDATE `" . PREFIX . "user` SET `points` = `points` - ? WHERE `userid` = ?"; Core::getDatabase()->query($sql, array($points, Core::getUser()->get("userid"))); $this->redirect("game/" . SID . "/Shipyard"); } $this->setTemplate("shipyard/change"); $this->assign("units", $realUnits); return $this; }
/** * Shows all building information. * * @param integer $id * @throws Recipe_Exception_Generic * @return Bengine_Game_Controller_Constructions */ protected function infoAction($id) { $select = array("name", "demolish", "basic_metal", "basic_silicon", "basic_hydrogen", "basic_energy", "prod_metal", "prod_silicon", "prod_hydrogen", "prod_energy", "special", "cons_metal", "cons_silicon", "cons_hydrogen", "cons_energy", "charge_metal", "charge_silicon", "charge_hydrogen", "charge_energy"); $result = Core::getQuery()->select("construction", $select, "", Core::getDB()->quoteInto("buildingid = ? AND (mode = '1' OR mode = '2' OR mode = '5')", $id)); if ($row = $result->fetchRow()) { $result->closeCursor(); Core::getLanguage()->load("info,Resource"); Hook::event("BuildingInfoBefore", array(&$row)); // Assign general building data Core::getTPL()->assign("buildingName", Core::getLanguage()->getItem($row["name"])); Core::getTPL()->assign("buildingDesc", Core::getLanguage()->getItem($row["name"] . "_FULL_DESC")); Core::getTPL()->assign("buildingImage", Image::getImage("buildings/" . $row["name"] . ".gif", Core::getLanguage()->getItem($row["name"]), null, null, "leftImage")); Core::getTPL()->assign("edit", Link::get("game/" . SID . "/Construction_Edit/Index/" . $id, "[" . Core::getLanguage()->getItem("EDIT") . "]")); // Production and consumption of the building $prodFormula = false; if (!empty($row["prod_metal"])) { $prodFormula = $row["prod_metal"]; $baseCost = $row["basic_metal"]; } else { if (!empty($row["prod_silicon"])) { $prodFormula = $row["prod_silicon"]; $baseCost = $row["basic_metal"]; } else { if (!empty($row["prod_hydrogen"])) { $prodFormula = $row["prod_hydrogen"]; $baseCost = $row["basic_hydrogen"]; } else { if (!empty($row["prod_energy"])) { $prodFormula = $row["prod_energy"]; $baseCost = $row["basic_energy"]; } else { if (!empty($row["special"])) { $prodFormula = $row["special"]; $baseCost = 0; } } } } } $consFormula = false; if (!empty($row["cons_metal"])) { $consFormula = $row["cons_metal"]; } else { if (!empty($row["cons_silicon"])) { $consFormula = $row["cons_silicon"]; } else { if (!empty($row["cons_hydrogen"])) { $consFormula = $row["cons_hydrogen"]; } else { if (!empty($row["cons_energy"])) { $consFormula = $row["cons_energy"]; } } } } // Production and consumption chart $chartType = false; if ($prodFormula != false || $consFormula != false) { $chart = array(); $chartType = "cons_chart"; if ($prodFormula && $consFormula) { $chartType = "prod_and_cons_chart"; } else { if ($prodFormula) { $chartType = "prod_chart"; } } if (Game::getPlanet()->getBuilding($id) - 7 < 0) { $start = 7; } else { $start = Game::getPlanet()->getBuilding($id); } $productionFactor = (double) Core::getConfig()->get("PRODUCTION_FACTOR"); if (!empty($row["prod_energy"])) { $productionFactor = 1; } $currentProduction = 0; if ($prodFormula) { $currentProduction = parseFormula($prodFormula, $baseCost, Game::getPlanet()->getBuilding($id)) * $productionFactor; } $currentConsumption = 0; if ($consFormula) { $currentConsumption = parseFormula($consFormula, 0, Game::getPlanet()->getBuilding($id)); } for ($i = $start - 7; $i <= Game::getPlanet()->getBuilding($id) + 7; $i++) { $chart[$i]["level"] = $i; $chart[$i]["s_prod"] = $prodFormula ? parseFormula($prodFormula, $baseCost, $i) * $productionFactor : 0; $chart[$i]["s_diffProd"] = $prodFormula ? $chart[$i]["s_prod"] - $currentProduction : 0; $chart[$i]["s_cons"] = $consFormula ? parseFormula($consFormula, 0, $i) : 0; $chart[$i]["s_diffCons"] = $consFormula ? $currentConsumption - $chart[$i]["s_cons"] : 0; $chart[$i]["prod"] = fNumber($chart[$i]["s_prod"]); $chart[$i]["diffProd"] = fNumber($chart[$i]["s_diffProd"]); $chart[$i]["cons"] = fNumber($chart[$i]["s_cons"]); $chart[$i]["diffCons"] = fNumber($chart[$i]["s_diffCons"]); } Hook::event("BuildingInfoProduction", array(&$chart)); Core::getTPL()->addLoop("chart", $chart); } if ($chartType) { Core::getTPL()->assign("chartType", "game/constructions/" . $chartType); } // Show demolish function $factor = floatval($row["demolish"]); if (Game::getPlanet()->getBuilding($id) > 0 && $factor > 0.0) { Core::getTPL()->assign("buildingLevel", Game::getPlanet()->getBuilding($id)); Core::getTPL()->assign("demolish", true); $metal = ""; $_metal = 0; $silicon = ""; $_silicon = 0; $hydrogen = ""; $_hydrogen = 0; if ($row["basic_metal"] > 0) { $_metal = 1 / $factor * parseFormula($row["charge_metal"], $row["basic_metal"], Game::getPlanet()->getBuilding($id)); $metal = Core::getLanguage()->getItem("METAL") . ": " . fNumber($_metal); } Core::getTPL()->assign("metal", $metal); if ($row["basic_silicon"] > 0) { $_silicon = 1 / $factor * parseFormula($row["charge_silicon"], $row["basic_silicon"], Game::getPlanet()->getBuilding($id)); $silicon = Core::getLanguage()->getItem("SILICON") . ": " . fNumber($_silicon); } Core::getTPL()->assign("silicon", $silicon); if ($row["basic_hydrogen"] > 0) { $_hydrogen = 1 / $factor * parseFormula($row["charge_hydrogen"], $row["basic_hydrogen"], Game::getPlanet()->getBuilding($id)); $hydrogen = Core::getLanguage()->getItem("HYDROGEN") . ": " . fNumber($_hydrogen); } Core::getTPL()->assign("hydrogen", $hydrogen); $time = getBuildTime($_metal, $_silicon, self::BUILDING_CONSTRUCTION_TYPE); Core::getTPL()->assign("dimolishTime", getTimeTerm($time)); $showLink = Game::getPlanet()->getData("metal") >= $_metal && Game::getPlanet()->getData("silicon") >= $_silicon && Game::getPlanet()->getData("hydrogen") >= $_hydrogen; if ($id == 12 && Game::getEH()->getResearchEvent()) { $showLink = false; } $shipyardSize = Game::getEH()->getShipyardEvents()->getCalculatedSize(); if (($id == 8 || $id == 7) && $shipyardSize > 0) { $showLink = false; } Core::getTPL()->assign("showLink", $showLink && !$this->event && !Core::getUser()->get("umode")); Core::getTPL()->assign("demolishNow", Link::get("game/" . SID . "/Constructions/Demolish/{$id}", Core::getLanguage()->getItem("DEMOLISH_NOW"))); } else { Core::getTPL()->assign("demolish", false); } Hook::event("BuildingInfoAfter", array(&$row)); } else { $result->closeCursor(); throw new Recipe_Exception_Generic("Unkown building. You'd better don't manipulate the URL. We see everything ;)"); } return $this; }
/** * Parses an event. * * @param Bengine_Game_Model_Event $f * * @return array Parsed event data */ protected function parseEvent(Bengine_Game_Model_Event $f) { if ($f->getCode() == "game/alliedFleet" && $f->getUserid() != Core::getUser()->get("userid")) { return false; // Hide foreign formations } $event = array(); $event["time_r"] = $f->getTimeLeft(); $event["time"] = $f->getFormattedTimeLeft(); $event["eventid"] = $f->getEventid(); $event["time_finished"] = Date::timeToString(1, $f->getTime()); $event["raw_coordinates"] = $f->getDestinationCoords(false); Core::getLanguage()->assign("rockets", $f->getData("rockets", 0)); Core::getLanguage()->assign("planet", !$f->getData("oldmode") || $f->getData("oldmode") != 9 ? $f->getPlanetname() : Core::getLanguage()->getItem("DEBRIS")); // TODO: Old mode should be translated to code Core::getLanguage()->assign("coords", $f->getPlanetCoords()); Core::getLanguage()->assign("target", $f->getCode() != "game/recycling" ? $f->getDestinationPlanetname() : Core::getLanguage()->getItem("DEBRIS")); Core::getLanguage()->assign("targetcoords", $f->getDestinationCoords()); Core::getLanguage()->assign("metal", fNumber($f->getData("metal", 0))); Core::getLanguage()->assign("silicon", fNumber($f->getData("silicon", 0))); Core::getLanguage()->assign("hydrogen", fNumber($f->getData("hydrogen", 0))); Core::getLanguage()->assign("username", $f->getUsername()); Core::getLanguage()->assign("message", Link::get("game/" . SID . "/MSG/Write/" . rawurlencode($f->getUsername()), Image::getImage("pm.gif", Core::getLanguage()->getItem("WRITE_MESSAGE")))); Core::getLanguage()->assign("mission", $f->getCode() == "game/return" ? $f->getOrgModeName() : $f->getModeName()); Core::getLanguage()->assign("fleet", $f->getFleetString()); $event["class"] = $f->getCssClass(); if ($f->getCode() == "game/allianceAttack") { if ($f->getUserid() == Core::getUser()->get("userid")) { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OWN"); } else { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OTHER"); } $allyFleets = Game::getEH()->getFormationFleets($f->getEventid()); foreach ($allyFleets as $af) { $coords = $af->getPlanetCoords(); $msg = Core::getLanguage()->getItem("FLEET_MESSAGE_FORMATION"); $msg = sprintf($msg, $af->getUsername(), $af->getPlanetname(), $coords, $af->getFleetString()); $event["message"] .= $msg; } } else { if ($f->getCode() == "game/alliedFleet") { $mainFleet = Game::getModel("game/event")->load($f->getParentId()); if ($mainFleet->getUsierid() == Core::getUser()->get("userid")) { return false; } $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OWN"); $allyFleets = Game::getEH()->getFormationFleets($mainFleet->getEventid()); $allyFleets->add($mainFleet); foreach ($allyFleets as $af) { if ($af->getUserid() == Core::getUser()->get("userid")) { continue; } $coords = $af->getPlanetCoords(); $msg = Core::getLanguage()->getItem("FLEET_MESSAGE_FORMATION"); $msg = sprintf($msg, $af->getUsername(), $af->getPlanetname(), $coords, $af->getFleetString()); $event["message"] .= $msg; } } else { if ($f->getCode() == "game/holding" && $f->getUserid() == Core::getUser()->get("userid")) { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_HOLDING_1"); } else { if ($f->getCode() == "game/holding") { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_HOLDING_2"); } else { if ($f->getCode() == "game/return" && $f->getUserid() == Core::getUser()->get("userid")) { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_RETURN"); } else { if ($f->getUserid() == Core::getUser()->get("userid") && $f->getCode() == "game/missileAttack") { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_ROCKET_ATTACK"); } else { if ($f->getCode() == "game/missileAttack") { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_ROCKET_ATTACK_FOREIGN"); } else { if ($f->getUserid() == Core::getUser()->get("userid")) { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OWN"); } else { $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OTHER"); } } } } } } } } return $event; }
/** * Shows overview on resource production and options. * * @return Bengine_Game_Controller_Resource */ protected function init() { Core::getLanguage()->load("Resource,info,buildings"); $this->loadBuildingData(); return parent::init(); }