示例#1
0
 /**
  * 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;
 }
示例#2
0
 /**
  * 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;
 }
示例#3
0
 /**
  * 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;
 }
示例#4
0
 /**
  * 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;
 }
示例#5
0
 /**
  * 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;
 }
示例#6
0
 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;
 }
示例#7
0
 /**
  * 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;
 }
示例#8
0
 /**
  * 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);
 }
示例#9
0
 /**
  * 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;
 }
示例#10
0
 /**
  * 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;
 }
示例#11
0
 /**
  * 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;
 }
示例#12
0
 /**
  * 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;
 }
示例#13
0
 /**
  * @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;
 }
示例#14
0
 /**
  * @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;
 }
示例#15
0
 /**
  * @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")));
 }
示例#16
0
 /**
  * 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;
 }
示例#17
0
 /**
  * @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;
 }
示例#18
0
 /**
  * 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");
 }
示例#19
0
 /**
  * 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;
 }
示例#20
0
 /**
  * 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;
 }
示例#21
0
 /**
  * @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;
 }
示例#22
0
 /**
  * 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;
 }
示例#23
0
 /**
  * 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;
 }
示例#24
0
 /**
  * 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;
 }
示例#25
0
 /**
  * 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;
 }
示例#27
0
 /**
  * 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;
 }
示例#28
0
 /**
  * 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;
 }
示例#29
0
 /**
  * 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;
 }
示例#30
0
 /**
  * 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();
 }