/solar27/include/game/classes/template.php
PHP | 537 lines | 414 code | 60 blank | 63 comment | 22 complexity | e24bb3b94475dce6ded003027c4ce9ef MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-2.0
- <?php
- // Solar Imperium is licensed under GPL2, Check LICENSE.TXT for mode details //
- class Template
- {
- var $DB;
- var $TPL;
- var $page_name;
- var $events_data;
- var $notices_data;
- var $coord;
- var $events_count;
- var $events_height;
- var $ingame;
- var $game_id;
-
- //////////////////////////////////////////////////////////////////////
- // Constructor
- //////////////////////////////////////////////////////////////////////
- function Template($DB,$game_id)
- {
- $this->DB = $DB;
- $this->game_id = $game_id;
- $this->TPL = new Smarty();
- if (isset($_GET["XML"])) {
- $this->TPL->template_dir = "../templates/xml/game/";
- $this->TPL->compile_dir = "../templates_c/xml/game/";
- } else {
- $this->TPL->template_dir = "../templates/game/";
- $this->TPL->compile_dir = "../templates_c/game/";
- }
- $this->events_data = array();
- $this->events_data["SYSTEM"] = "";
- $this->events_data["WARFARE"] = "";
- $this->events_data["COMMUNICATION"] = "";
- $this->events_data["DIPLOMACY"] = "";
- $this->events_count = array();
- $this->events_count["SYSTEM"] = 0;
- $this->events_count["WARFARE"] = 0;
- $this->events_count["COMMUNICATION"] = 0;
- $this->events_count["DIPLOMACY"] = 0;
- $this->notices_data = "";
- $this->coord = $this->DB->Execute("SELECT * FROM game".$this->game_id."_tb_coordinator");
- if (!$this->coord) trigger_error($this->DB->ErrorMsg());
- $this->coord = $this->coord->fields;
- $this->ingame = true;
- }
- //////////////////////////////////////////////////////////////////////
- // Set Page
- //////////////////////////////////////////////////////////////////////
- function setPage($page_name)
- {
- $this->page_name = $page_name;
- $file = explode("/",$_SERVER["SCRIPT_FILENAME"]);
- $file = $file[count($file)-1];
- if (($file == "ingame_starmap.php") || ($file == "destroy_empire.php"))
- $this->ingame = true;
- else
- $this->ingame = false;
- //
- //
- // if ((isset($_SESSION["empire_id"])) &&
- // ($file != "scoreboard.php")&&
- // ($file != "starmap.php")&&
- // ($file != "destroy_empire.php")&&
- // ($file != "show_active.php")&&
- // ($file != "show_empire.php")&&
- // ($file != "show_coalition.php")&&
- // ($file != "hall_of_fame.php")) $this->ingame = true; else $this->ingame = false;
- }
- //////////////////////////////////////////////////////////////////////
- // Render the page
- //////////////////////////////////////////////////////////////////////
- function render()
- {
-
- if (isset($_GET["NOTICE"])) $this->showNotice($_GET["NOTICE"],false);
- if (isset($_GET["WARNING"])) $this->showNotice($_GET["WARNING"],true);
-
- $file = explode("/",$_SERVER["SCRIPT_FILENAME"]);
- $file = $file[count($file)-1];
-
- if (($file == "show_empire.php") ||
- ($file == "show_active.php") ||
- ($file == "galaxypedia.php")) $render_banners = false;
-
-
-
- $this->TPL->assign("color_normal",TPL_COLOR_NORMAL);
- $this->TPL->assign("color_highlight",TPL_COLOR_HIGHLIGHT);
- // dynamic variables
- $this->TPL->assign("game_date",date("m/d/y",$this->coord["date"]));
-
- $date = time(NULL) - $this->coord["date"];
- $this->TPL->assign("game_life",floor($date / (60*60*24)));
- $online_players = $this->DB->Execute("SELECT COUNT(*) FROM game".$this->game_id."_tb_session");
- $this->TPL->assign("online_players",$online_players->fields[0]);
- $total_players = $this->DB->Execute("SELECT COUNT(*) FROM game".$this->game_id."_tb_empire WHERE active=1");
- $this->TPL->assign("total_players",$total_players->fields[0]);
- $this->TPL->assign("events_script","");
-
- if ($this->notices_data != "") {
- //$this->TPL->assign("events_data",$this->notices_data);
- $script = "<script>
- CustomAlert('$this->notices_data');
- </script>
- ";
- $this->TPL->assign("events_script",$script);
- } else {
-
- // $smarty = new Smarty();
- // $smarty->template_dir = "../templates/game/";
- // $smarty->compile_dir = "../templates_c/game/";
- if ($this->events_height > 500) $this->events_height = 500;
- // $smarty->assign("events_div_size",$this->events_height+50);
- // $smarty->assign("events_content_size",$this->events_height."px");
-
- // $smarty->assign("events_data_content_system",$this->events_data["SYSTEM"]);
- // $smarty->assign("events_data_content_warfare",$this->events_data["WARFARE"]);
- // $smarty->assign("events_data_content_communication",$this->events_data["COMMUNICATION"]);
- // $smarty->assign("events_data_content_diplomacy",$this->events_data["DIPLOMACY"]);
- // $smarty->assign("events_count_content_system",$this->events_count["SYSTEM"]);
- // $smarty->assign("events_count_content_warfare",$this->events_count["WARFARE"]);
- // $smarty->assign("events_count_content_communication",$this->events_count["COMMUNICATION"]);
- // $smarty->assign("events_count_content_diplomacy",$this->events_count["DIPLOMACY"]);
- //
- // if ($this->events_count["DIPLOMACY"] != 0) $smarty->assign("script_code","onClickDiplomacy();");
- // if ($this->events_count["COMMUNICATION"] != 0) $smarty->assign("script_code","onClickCommunication();");
- // if ($this->events_count["WARFARE"] != 0) $smarty->assign("script_code","onClickWarfare();");
- // if ($this->events_count["SYSTEM"] != 0) $smarty->assign("script_code","onClickSystem();");
- // if (($this->events_count["DIPLOMACY"] + $this->events_count["COMMUNICATION"] + $this->events_count["WARFARE"] + $this->events_count["SYSTEM"]) == 0)
- // $this->TPL->assign("events_data","");
- // else
- // $this->TPL->assign("events_data",$smarty->fetch("events_data.html").$this->notices_data);
- $script = "<script>
-
- events_data_content_system = Base64.decode('".base64_encode(stripslashes($this->events_data["SYSTEM"]))."');
- events_data_content_warfare = Base64.decode('".base64_encode(stripslashes($this->events_data["WARFARE"]))."');
- events_data_content_communication = Base64.decode('".base64_encode(stripslashes($this->events_data["COMMUNICATION"]))."');
- events_data_content_diplomacy = Base64.decode('".base64_encode(stripslashes($this->events_data["DIPLOMACY"]))."');
- document.getElementById('events_count_content_system').innerHTML = '".$this->events_count["SYSTEM"]."';
- document.getElementById('events_count_content_warfare').innerHTML = '".$this->events_count["WARFARE"]."';
- document.getElementById('events_count_content_communication').innerHTML = '".$this->events_count["COMMUNICATION"]."';
- document.getElementById('events_count_content_diplomacy').innerHTML = '".$this->events_count["DIPLOMACY"]."';
- renderEvents(".($this->events_height+50).");
- </script>
- ";
-
- $this->TPL->assign("events_script",$script);
- }
- // EMBED in a page
- if ($this->ingame) {
- $this->TPL->assign("page_content",$this->TPL->fetch($this->page_name));
- $this->TPL->assign("page_title",$file);
- $this->TPL->assign("version",CONF_GAME_VERSION);
- $this->TPL->assign("game_name",CONF_GAME_NAME);
- return $this->TPL->fetch("ingame.html");
-
- } else {
-
- $this->TPL->assign("page_content",$this->TPL->fetch($this->page_name));
- $this->TPL->assign("page_title",$file);
- $this->TPL->assign("version",CONF_GAME_VERSION);
- $this->TPL->assign("game_name",CONF_GAME_NAME);
-
-
- return $this->TPL->fetch("simple_frame.html");
- }
- }
- //////////////////////////////////////////////////////////////////////
- // Show notice
- //////////////////////////////////////////////////////////////////////
- function showNotice($msg,$isWarning = false)
- {
- // $smarty = new Smarty();
- // $smarty->template_dir = "../templates/game/";
- // $smarty->compile_dir = "../templates_c/game/";
- //
- // $smarty->assign("msg",stripslashes($msg));
- // if ($isWarning)
- // $this->notices_data .= $smarty->fetch("warning".($this->ingame==true?"_ingame":"").".html");
- // else
- // $this->notices_data .= $smarty->fetch("notice".($this->ingame==true?"_ingame":"").".html");
- // $this->notices_data = str_replace("\n","",$this->notices_data);
- // $this->notices_data = str_replace("\r","",$this->notices_data);
- $this->notices_data = str_replace("\n","",stripslashes($msg));
- $this->notices_data = str_replace("\r","",$this->notices_data);
- // unset($smarty);
-
- }
- //////////////////////////////////////////////////////////////////////
- // Show event
- //////////////////////////////////////////////////////////////////////
- function showEvent($msg,$isWarning = false, $filter = "SYSTEM")
- {
- $smarty = new Smarty();
- $smarty->template_dir = "../templates/game/";
- $smarty->compile_dir = "../templates_c/game/";
- $tpl_filename = "";
-
- if ($isWarning)
- $tpl_filename = "warning".($this->ingame==true?"_ingame":"").".html";
- else
- $tpl_filename = "notice".($this->ingame==true?"_ingame":"").".html";
- $smarty->assign("msg",stripslashes($msg));
- $data = $smarty->fetch($tpl_filename);
-
- $data = str_replace("\n","",$data);
- $data = str_replace("\r","",$data);
- $data = str_replace("'","\'",$data);
- $this->events_data[$filter] .= $data;
- $this->events_count[$filter]++;
-
- }
- //////////////////////////////////////////////////////////////////////
- // Show notice
- //////////////////////////////////////////////////////////////////////
- function getNotice($msg,$isWarning = false)
- {
- $smarty = new Smarty();
- $smarty->template_dir = "../templates/game/";
- $smarty->compile_dir = "../templates_c/game/";
- $msg = $msg[1];
-
- $smarty->assign("msg",stripslashes($msg));
- $notice_data = "";
-
- if ($isWarning)
- $notice_data = $smarty->fetch("warning".($this->ingame==true?"_ingame":"").".html");
- else
- $notice_data = $smarty->fetch("notice".($this->ingame==true?"_ingame":"").".html");
- unset($smarty);
-
- return $notice_data;
- }
- //////////////////////////////////////////////////////////////////////
- // Show file
- //////////////////////////////////////////////////////////////////////
- function showFile($file)
- {
- return $this->TPL->fetch($file);
- }
-
- //////////////////////////////////////////////////////////////////////
- // Set variable
- //////////////////////////////////////////////////////////////////////
- function setVar($name,$value)
- {
- $this->TPL->assign($name,$value);
- }
- //////////////////////////////////////////////////////////////////////
- // Set loop
- //////////////////////////////////////////////////////////////////////
- function setLoop($name,$value)
- {
- $this->TPL->assign($name,$value);
- }
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function formatNumber($number)
- {
- $output = number_format($number);
-
- return $output;
- }
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function formatCredits($number,$html=true)
- {
- $output = $this->formatNumber($number);
-
- if ($html)
- return "<b style=\"color:".TPL_COLOR_NORMAL."\">$output</b>".
- " <b style=\"color:".TPL_COLOR_HIGHLIGHT."\">Cr.</b>";
- else
- return $output." Cr.";
- }
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function formatFood($number,$html=true)
- {
- $output = $this->formatNumber($number);
-
- if ($html)
- return "<b style=\"color:".TPL_COLOR_NORMAL."\">$output</b>".
- " <b style=\"color:".TPL_COLOR_HIGHLIGHT."\">Mgt.</b>";
- else
- return $output." Mgt.";
- }
-
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function formatPopulation($number,$html=true)
- {
- $output = $this->formatNumber($number);
-
- if ($html)
- return "<b style=\"color:".TPL_COLOR_NORMAL."\">$output</b>".
- " <b style=\"color:".TPL_COLOR_HIGHLIGHT."\">M</b>";
- else
- return $output." M";
- }
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function formatTime($date)
- {
- $days = floor($date / (60*60*24));
- $date -= ($days * 60*60*24);
- $hours = str_pad(floor($date / (60*60)),2,"0",STR_PAD_LEFT);
- $date -= ($hours * 60*60);
- $minutes = str_pad(floor($date / (60)),2,"0",STR_PAD_LEFT);
- return $days."d ".$hours.":".$minutes;
- }
-
-
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function displayEmpireHTML($id,$emperor,$empire,$your_networth)
- {
-
- global $DB,$CONF_PREMIUM_MEMBERS;
- $emperor = stripslashes($emperor);
- $empire = stripslashes($empire);
- $text = "<table style=\"margin-bottom: 0px;display:inline;\" border=0 cellspacing=0 cellpadding=1><tr>";
-
-
- $text .= "<td><img src=\"img_logo.php?empire=$id\" border=\"1\" width=\"32\" height=\"32\" bordercolor=\"white\" style=\"border-color:white\"></td>";
-
- $query = "SELECT game".$this->game_id."_tb_coalition.logo,game".$this->game_id."_tb_member.* FROM game".$this->game_id."_tb_coalition,game".$this->game_id."_tb_member WHERE game".$this->game_id."_tb_member.empire='$id' AND game".$this->game_id."_tb_coalition.id = game".$this->game_id."_tb_member.coalition";
- $rs = $DB->Execute($query);
- if (!$rs) trigger_error($query . "<br/><br/>".$DB->ErrorMsg());
-
- if (!$rs->EOF)
- {
- $text .= "<td><img src=\"img_logo.php?data=".$rs->fields["logo"]."\" border=\"1\" width=\"32\" height=\"32\" bordercolor=\"white\" style=\"border-color:white\"></td>";
- }
-
- $text .= "<td> <a href=\"javascript:show_info($id);\" style=\"text-decoration:none\"><b style=\"color:white\">$emperor</b><b style=\"color:#ff9999\">@</b><b style=\"color:#CACACA\">$empire</b></a>";
- if ($your_networth!="") {
-
- $rs = $DB->Execute("SELECT networth FROM game".$this->game_id."_tb_empire WHERE id='".intval($id)."'");
- $enemy_networth = $rs->fields["networth"];
- if ($enemy_networth == 0) $enemy_networth = 1;
- if ($your_networth == 0) $your_networth = 1;
-
- $percent = round(($enemy_networth / $your_networth)*100,3);
-
- $star = "<img src=\"../images/common/star.gif\" border=\"0\">";
- $stars = $star.$star.$star;
-
- if ($percent <= 80) $stars = $star.$star;
- if ($percent <= 40) $stars = $star;
- if ($percent >= 120) $stars = $star.$star.$star.$star;
- if ($percent >= 140) $stars = $star.$star.$star.$star.$star;
-
- $text .= " $stars";
-
- }
- $text .="</td></tr></table>";
- return $text;
- }
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function displayEmpire($emperor,$empire,$your_networth)
- {
- global $DB,$CONF_PREMIUM_MEMBERS;
-
- $emperor = stripslashes($emperor);
- $empire = stripslashes($empire);
- $text = $emperor ."@".$empire." ";
-
-
- if ($your_networth!="") {
-
- $rs = $DB->Execute("SELECT networth FROM game".$this->game_id."_tb_empire WHERE emperor='".addslashes($emperor)."'");
- $enemy_networth = $rs->fields["networth"];
- if ($enemy_networth == 0) $enemy_networth = 1;
- if ($your_networth == 0) $your_networth = 1;
-
- $percent = round(($enemy_networth / $your_networth)*100,3);
- $star = "*";
- $stars = $star.$star.$star;
-
- if ($percent <= 80) $stars = $star.$star;
- if ($percent <= 40) $stars = $star;
- if ($percent >= 120) $stars = $star.$star.$star.$star;
- if ($percent >= 140) $stars = $star.$star.$star.$star.$star;
-
-
- $text .= " $stars";
-
- }
- return $text;
- }
-
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function showMessage($msg_data)
- {
- $params = unserialize($msg_data["params"]);
-
- $smarty = new Smarty();
- $smarty->template_dir = "../templates/game/";
- $smarty->compile_dir = "../templates_c/game/";
-
- $smarty->assign("subject",stripslashes($params["subject"]));
- $smarty->assign("content",stripslashes($params["content"]));
- $smarty->assign("date",$this->formatTime(time(NULL) - $msg_data["date"]));
-
-
- $rs = $this->DB->Execute("SELECT * FROM game".$this->game_id."_tb_empire WHERE id='".$msg_data["event_from"]."'");
- $smarty->assign("author",$this->displayEmpireHTML($rs->fields["id"],$rs->fields["emperor"],$rs->fields["name"],""));
- $smarty->assign("id",$msg_data["id"]);
-
- if ($rs->fields["id"] == $_SESSION["empire_id"])
- $smarty->assign("bgcolor","#336666");
- else
- $smarty->assign("bgcolor","#447777");
-
- $msg_content = $smarty->fetch("message/body.html");
- unset($smarty);
- return $msg_content;
- }
-
- //////////////////////////////////////////////////////////////////////
- //
- //////////////////////////////////////////////////////////////////////
- function ShowProductionLevel($percentage) {
- $p = floor($percentage / 20);
-
- $html = "<table onmouseover=\"return escape('".T_("Current production level").": $percentage %');\" style=\"display: inline;margin:0px;padding:0px;border:0px solid black\" cellspacing=1 cellpadding=0><tr>";
-
- for ($i=0;$i<10;$i++) {
- $bgcolor = "#333333";
- if ($i <= $p) {
- $bgcolor = "white";
- if ($p <= 5) $bgcolor = "blue";
- if ($p <= 5) $bgcolor = "#00FF00";
- if ($p < 4) $bgcolor = "yellow";
- if ($p < 2) $bgcolor = "red";
- }
-
- $html .= "<td bgcolor=\"$bgcolor\"><img src=\"../images/game/placeholder.gif\" width=\"2\" height=\"10\" border=\"0\"></td>";
- }
-
- $html .= "</tr></table>";
-
- return $html;
-
- }
- }
- ?>