Last active
August 29, 2015 14:22
-
-
Save BlackScorp/0477f318c4f60010f979 to your computer and use it in GitHub Desktop.
Refactoring legacy code step by step
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| session_start(); | |
| require_once('./global.php'); | |
| exec_header(); | |
| //$bgEngine->gamenavigation->siteCheck("object.php"); | |
| $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; | |
| $id = isset($_REQUEST['id']) ? (int)$_REQUEST['id'] : null; | |
| $gameField = isset($bgEngine->gamefields->usergamefield[$id]) ? $bgEngine->gamefields->usergamefield[$id] : ''; | |
| $isHome = false; | |
| $isReturn = false; | |
| if ($id && $gameField) { | |
| $isHome = $gameField['home'] == 1; | |
| $isReturn = $gameField['gameobjectid']]['return'] == 1; | |
| } | |
| $isConfirmed = isset($_REQUEST['do']) && $_REQUEST['do'] == 'yes' ? true : false; | |
| #----------------------------------------------------------------------------------------- | |
| # LEAVE OBJECT (GIVE UP OBJECT) | |
| #----------------------------------------------------------------------------------------- | |
| if ($action == 'leave' && !$isHome && $isReturn) { | |
| if ($isConfirmed) { | |
| $bgEngine->gamefields->leaveGamefield($id); | |
| unset($_SESSION['gf']); | |
| $bgEngine->gamefields->readActField(); | |
| header("Location:object.php"); | |
| } else { | |
| $bgEngine->tengine->display("game_header.tpl"); | |
| $bgEngine->tengine->display("game_box_error.tpl"); | |
| $bgEngine->tengine->display("game_box_info.tpl"); | |
| $bgEngine->tengine->display("game_object_leave.tpl"); | |
| $bgEngine->tengine->display("game_footer.tpl"); | |
| require_once(CWD . '/game/footer.php'); | |
| } | |
| exit; | |
| } | |
| $gameFieldId = $_SESSION['gf']; | |
| $objectId = isset($_GET['id'])?(int)$_GET['id']:$gameFieldId; | |
| $addOrDeleteShortCut = isset($_POST['shortcut_add']) || isset($_POST['shortcut_delete']); | |
| $addShortCut = isset($_POST['shortcut_add']); | |
| $deleteShortCut = isset($_POST['shortcut_delete']); | |
| $cateogries = $_POST['categories']; | |
| $objectNameExists = isset($_POST['object_name']) && strlen(trim($_POST['object_name'])) > 0; | |
| $objectName = $objectNameExists?substr($_POST['object_name'], 0, 25):''; | |
| if ($addOrDeleteShortCut) { | |
| $infoBoxMessage = ''; | |
| #----------------------------------------------------------------------------------------- | |
| # ADD NEW SHORTCUT | |
| #----------------------------------------------------------------------------------------- | |
| if ($addShortCut) { | |
| $query = $bgEngine->db->query("INSERT INTO " . TABLE_PREFIX . "usershortcut | |
| (" . TABLE_PREFIX . "usershortcut.cat_id, | |
| " . TABLE_PREFIX . "usershortcut.gamefieldid) | |
| VALUE | |
| (:cat, | |
| :gf)"); | |
| $infoBoxMessage = $bgEngine->tengine->getconfigvars('shortcuts_add_success'); | |
| } | |
| #----------------------------------------------------------------------------------------- | |
| # DELETE SHORTCUT | |
| #----------------------------------------------------------------------------------------- | |
| if ($deleteShortCut) { | |
| $query = $bgEngine->db->query("DELETE FROM " . TABLE_PREFIX . "usershortcut | |
| WHERE " . TABLE_PREFIX . "usershortcut.cat_id = :cat | |
| AND " . TABLE_PREFIX . "usershortcut.gamefieldid = :gf"); | |
| $infoBoxMessage = $bgEngine->tengine->getconfigvars('shortcuts_delete_success'); | |
| $bgEngine->shortcuts->readCategorys(); | |
| } | |
| $query->bind(':cat', $cateogries); | |
| $query->bind(':gf', $objectId); | |
| $query->execute(); | |
| $bgEngine->shortcuts->readShortcuts(); | |
| $bgEngine->shortcuts->buildLinks('head'); | |
| $bgEngine->shortcuts->createTree(); | |
| $bgEngine->tengine->assign("shortcuts", $bgEngine->shortcuts->tree); | |
| $bgEngine->tengine->assign("info_box_message", $infoBoxMessage); | |
| } | |
| #----------------------------------------------------------------------------------------- | |
| # READ SHORTCUT CATEGORIES | |
| #----------------------------------------------------------------------------------------- | |
| $query = $bgEngine->db->query("SELECT " . Q_CACHE . " " . TABLE_PREFIX . "usershortcut_cat.* | |
| FROM " . TABLE_PREFIX . "usershortcut_cat | |
| WHERE " . TABLE_PREFIX . "usershortcut_cat.userid = :userid | |
| ORDER BY " . TABLE_PREFIX . "usershortcut_cat.name"); | |
| $query->bind(':userid', $bgEngine->userinfo['userid']); | |
| $query->execute(); | |
| $data = array(); | |
| while ($result = $query->fetch_assoc()) { | |
| $data[] = $result; | |
| } | |
| $bgEngine->tengine->assign("shortcut_cats", $data); | |
| #----------------------------------------------------------------------------------------- | |
| # READ OBJECT INFORMATION (ANY OBJECTS) | |
| #----------------------------------------------------------------------------------------- | |
| $query = $bgEngine->db->query('SELECT ' . Q_NO_CACHE . ' ' . TABLE_PREFIX . 'gamefield.*, | |
| ' . TABLE_PREFIX . 'gameobject.*, | |
| ' . TABLE_PREFIX . 'gameobject.fields as objectfields, | |
| ' . TABLE_PREFIX . 'userfield.userid, | |
| ' . TABLE_PREFIX . 'userfield.name, | |
| ' . TABLE_PREFIX . 'userfield.fields, | |
| ' . TABLE_PREFIX . 'userfield.home, | |
| ' . TABLE_PREFIX . 'user.username, | |
| ' . TABLE_PREFIX . 'user.partyid, | |
| ' . TABLE_PREFIX . 'useralliance.*, | |
| ' . TABLE_PREFIX . 'alliance.*, | |
| ' . TABLE_PREFIX . 'user.userid, | |
| ' . TABLE_PREFIX . 'login.online_state, | |
| ' . TABLE_PREFIX . 'userhighscore.lastactivity | |
| FROM ' . TABLE_PREFIX . 'gamefield | |
| LEFT JOIN ' . TABLE_PREFIX . 'userfield ON ' . TABLE_PREFIX . 'userfield.gamefieldid = ' . TABLE_PREFIX . 'gamefield.gamefieldid | |
| JOIN ' . TABLE_PREFIX . 'gameobject ON ' . TABLE_PREFIX . 'gameobject.gameobjectid = ' . TABLE_PREFIX . 'gamefield.gameobjectid | |
| LEFT JOIN ' . TABLE_PREFIX . 'user ON ' . TABLE_PREFIX . 'user.userid = ' . TABLE_PREFIX . 'userfield.userid | |
| LEFT JOIN ' . TABLE_PREFIX . 'loginuser ON ' . TABLE_PREFIX . 'loginuser.userid = ' . TABLE_PREFIX . 'user.userid | |
| LEFT JOIN ' . TABLE_PREFIX . 'login ON ' . TABLE_PREFIX . 'login.loginid = ' . TABLE_PREFIX . 'loginuser.loginid | |
| LEFT JOIN ' . TABLE_PREFIX . 'useralliance ON ' . TABLE_PREFIX . 'useralliance.userid = ' . TABLE_PREFIX . 'user.userid | |
| LEFT JOIN ' . TABLE_PREFIX . 'alliance ON ' . TABLE_PREFIX . 'alliance.allianceid = ' . TABLE_PREFIX . 'useralliance.allianceid | |
| LEFT JOIN ' . TABLE_PREFIX . 'userhighscore ON ' . TABLE_PREFIX . 'userhighscore.userid = ' . TABLE_PREFIX . 'user.userid | |
| WHERE ' . TABLE_PREFIX . 'gamefield.gamefieldid = :fieldid'); | |
| $query->bind(':fieldid', $objectId); | |
| $query->execute(); | |
| $result = $query->fetch_assoc(); | |
| //------------------------- SETUP ARMY LIMITS (04/2015) ----------------------- | |
| $maxtowerlvl = $bgEngine->formular->executeFormular($bgEngine->groupinfo['squad_formular']); | |
| $bgEngine->tengine->assign("maxtowerlvl", $maxtowerlvl); | |
| $maxarmysize = $maxtowerlvl * 100; | |
| $repulseLevel = $bgEngine->gamefields->usergamefield[$gameFieldId]['r' . REPULSE_ID]; //affected by buff 68: Repulse | |
| $maxarmysize -= $repulseLevel * 50; | |
| $maxarmysize = max(0, $maxarmysize); | |
| $bgEngine->tengine->assign("repulseLevel", $repulseLevel); | |
| $bgEngine->tengine->assign("maxarmysize", $maxarmysize); | |
| $maxspellsize = $bgEngine->formular->executeFormular($bgEngine->groupinfo['squad_formular']); | |
| $mindblockLevel = $bgEngine->gamefields->usergamefield[$gameFieldId]['r' . MINDBLOCK_ID]; | |
| $maxspellsize -= $mindblockLevel; | |
| $maxspellsize = max(0, $maxspellsize); | |
| $bgEngine->tengine->assign("mindblockLevel", $mindblockLevel); | |
| $bgEngine->tengine->assign("maxspellsize", $maxspellsize); | |
| $shacklesLevel = $bgEngine->gamefields->usergamefield[$gameFieldId]['r' . SHACKLES_ID]; | |
| $bgEngine->tengine->assign("shacklesLevel", $shacklesLevel); | |
| $bgEngine->tengine->assign("maxherosize", 1); | |
| $bgEngine->tengine->assign("maxunitsize", $maxtowerlvl + 5); | |
| $inspectingOwnObject = false; | |
| $inspectingForeignObject = false; | |
| #----------------------------------------------------------------------------------------- | |
| # INSPECTING YOUR OWN OBJECT | |
| #----------------------------------------------------------------------------------------- | |
| if ($result['userid'] == $bgEngine->userinfo['userid'] && $result['gamefieldid'] == $gameFieldId) { | |
| $inspectingOwnObject = true; | |
| //read squads | |
| $bgEngine->squads->setGamefieldId($gameFieldId, true); | |
| $bgEngine->squads->resetSquads(); | |
| $bgEngine->squads->readSquads(); | |
| $bgEngine->movement = new bgEngineMovement($bgEngine); | |
| $bgEngine->movement->checkSquadMovement(); | |
| $bgEngine->tengine->assign("units", $bgEngine->gamefields->usergamefield[$bgEngine->squads->gamefieldId]['units']); | |
| $bgEngine->tengine->assign("squads", $bgEngine->squads->squad); | |
| $bgEngine->tengine->assign("squadsstation", $bgEngine->squads->squadStation); | |
| //read units | |
| $bgEngine->units->readBuildlist(); | |
| $bgEngine->units->fetchUnits(); | |
| //read buildings | |
| $bgEngine->buildings->checkBuildings(); | |
| $bgEngine->buildings->fetchBuildings(); | |
| $bgEngine->buildings->readUnitAssignment(); | |
| //read researches | |
| $bgEngine->researches->checkResearch(); | |
| $bgEngine->researches->fetchResearch(); | |
| $bgEngine->tengine->assign("buildings", $bgEngine->gamefields->usergamefield[$objectId]['buildings']); | |
| $bgEngine->tengine->assign("researches", $bgEngine->gamefields->usergamefield[$objectId]['researches']); | |
| $bgEngine->tengine->assign("units", $bgEngine->gamefields->usergamefield[$objectId]['units']); | |
| if (isset($result['gameobjectid'])) { | |
| if ($objectNameExists) { | |
| $query = $bgEngine->db->query('UPDATE ' . TABLE_PREFIX . 'userfield | |
| SET ' . TABLE_PREFIX . 'userfield.name = :objectname | |
| WHERE ' . TABLE_PREFIX . 'userfield.gamefieldid = :fieldid'); | |
| $query->bind(':objectname', $objectName); | |
| $query->bind(':fieldid', $gameFieldId); | |
| $query->execute(); | |
| $result['name'] = $objectName; | |
| $bgEngine->gamefields->usergamefield[$gameFieldId]['name'] = $objectName; | |
| $bgEngine->tengine->assign("gamefields", $bgEngine->gamefields->usergamefield); | |
| } | |
| $bgEngine->tengine->display("game_box_error.tpl"); | |
| $bgEngine->tengine->display("game_box_info.tpl"); | |
| $bgEngine->tengine->display("game_object.tpl"); | |
| } | |
| } | |
| #----------------------------------------------------------------------------------------- | |
| # INSPECTING AN FOREIGN OBJECT | |
| #----------------------------------------------------------------------------------------- | |
| else { | |
| $inspectingForeignObject = true; | |
| if (isset($result['gameobjectid'])) { | |
| //Need Hero level for item count | |
| foreach ($bgEngine->gamefields->usergamefield[$gameFieldId]['units'] as $unitid => $unitdata) { | |
| if ($bgEngine->gamefields->usergamefield[$gameFieldId]["u" . $unitid] > 0) { | |
| $bgEngine->units->calcUnitAttribute(UNIT_STAT_LEVEL, $unitid); | |
| } | |
| } | |
| $bgEngine->tengine->assign("units", $bgEngine->gamefields->usergamefield[$gameFieldId]['units']); | |
| $bgEngine->tengine->display("game_object_stranger.tpl"); | |
| } | |
| } | |
| if (isset($result['gameobjectid'])) { | |
| $result['partytitle'] = $bgEngine->tengine->getconfigvars('party_' . $result['partyid']); | |
| //recalculate fields | |
| $bgEngine->formular->addSyntax('BASIC_FIELDS', $result['fields']); | |
| $result['fields'] = $bgEngine->formular->executeFormular($bgEngine->groupinfo['fields_formular']); | |
| $result['isonline'] = isOnline($result['online_state'], $result['lastactivity'], $result['allianceid'], $bgEngine->userinfo['allianceid']); | |
| $coords = ''; | |
| foreach ($bgEngine->gamefields->gamefieldlevel as $fieldlvl) { | |
| $coords .= $result['field' . $fieldlvl['gamefieldlevelid']] . ':'; | |
| if ($inspectingOwnObject) { | |
| $mapnum = $result['field' . $fieldlvl['gamefieldlevelid']]; | |
| } | |
| } | |
| $coords = trim($coords, ':'); | |
| if ($inspectingOwnObject) { | |
| $result['mapnum'] = $mapnum; | |
| } | |
| $result['coordstring'] = $coords; | |
| $result['usernameurl'] = urlencode($result['username']); | |
| $result['name'] = empty($result['name']) ? $bgEngine->tengine->getconfigvars('gameobject_' . $result['gameobjectid']) : $result['name']; | |
| $bgEngine->tengine->assign("entry", $result); | |
| $bgEngine->tengine->display("game_header.tpl"); | |
| $bgEngine->tengine->display("game_footer.tpl"); | |
| } | |
| require_once(CWD . '/game/footer.php'); | |
| #========================================================================================= |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment