public static function traderouteCreate(\ADODB_mysqli $db, \PDO $pdo_db, string $lang, Reg $tkireg, Smarty $template, array $playerinfo, $num_traderoutes, $ptype1, $ptype2, $port_id1, $port_id2, int $planet_id1, int $planet_id2, $team_planet_id1, $team_planet_id2, $move_type, $circuit_type, $editing) { $langvars = \Tki\Translate::load($pdo_db, $lang, array('traderoutes', 'common', 'global_includes', 'global_funcs', 'footer', 'regional')); $src_id = null; $dest_id = null; $src_type = null; $dest_type = null; if ($num_traderoutes >= $tkireg->max_traderoutes_player && empty($editing)) { // Dont let them exceed max traderoutes \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_maxtdr'], $template); } // Database sanity check for source if ($ptype1 == 'port') { // Check for valid Source Port if ($port_id1 >= $tkireg->max_sectors) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidspoint'], $template); } $query = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id = ?;", array($port_id1)); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); if (!$query || $query->EOF) { $langvars['l_tdr_errnotvalidport'] = str_replace("[tdr_port_id]", $port_id1, $langvars['l_tdr_errnotvalidport']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnotvalidport'], $template); } // OK we definitely have a port here $source = $query->fields; if ($source['port_type'] == 'none') { $langvars['l_tdr_errnoport'] = str_replace("[tdr_port_id]", $port_id1, $langvars['l_tdr_errnoport']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnoport'], $template); } } else { $query = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id = ?;", array($planet_id1)); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); $source = $query->fields; if (!$query || $query->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnosrc'], $template); } // Check for valid Source Planet if ($source['sector_id'] >= $tkireg->max_sectors) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidsrc'], $template); } if ($source['owner'] != $playerinfo['ship_id']) { if (($playerinfo['team'] == 0 || $playerinfo['team'] != $source['team']) && $source['sells'] == 'N') { // $langvars['l_tdr_errnotownnotsell'] = str_replace("[tdr_source_name]", $source[name], $langvars['l_tdr_errnotownnotsell']); // $langvars['l_tdr_errnotownnotsell'] = str_replace("[tdr_source_sector_id]", $source[sector_id], $langvars['l_tdr_errnotownnotsell']); // \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnotownnotsell'], $template); // Check for valid Owned Source Planet \Tki\AdminLog::writeLog($pdo_db, 902, "{$playerinfo['ship_id']}|Tried to find someones planet: {$planet_id1} as source."); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invalidsrc'], $template); } } } // OK we have $source, *probably* now lets see if we have ever been there // Attempting to fix the map the universe via traderoute bug $pl1query = $db->Execute("SELECT * FROM {$db->prefix}movement_log WHERE sector_id = ? AND ship_id = ?;", array($source['sector_id'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $pl1query, __LINE__, __FILE__); $num_res1 = $pl1query->numRows(); if ($num_res1 == 0) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, "You cannot create a traderoute from a sector you have not visited!", $template); } // Note: shouldnt we, more realistically, require a ship to be *IN* the source sector to create the traderoute? // Database sanity check for dest if ($ptype2 == 'port') { // Check for valid Dest Port if ($port_id2 >= $tkireg->max_sectors) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invaliddport'], $template); } $query = $db->Execute("SELECT * FROM {$db->prefix}universe WHERE sector_id = ?;", array($port_id2)); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); if (!$query || $query->EOF) { $langvars['l_tdr_errnotvaliddestport'] = str_replace("[tdr_port_id]", $port_id2, $langvars['l_tdr_errnotvaliddestport']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnotvaliddestport'], $template); } $destination = $query->fields; if ($destination['port_type'] == 'none') { $langvars['l_tdr_errnoport2'] = str_replace("[tdr_port_id]", $port_id2, $langvars['l_tdr_errnoport2']); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnoport2'], $template); } } else { $query = $db->Execute("SELECT * FROM {$db->prefix}planets WHERE planet_id = ?;", array($planet_id2)); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); $destination = $query->fields; if (!$query || $query->EOF) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnodestplanet'], $template); } // Check for valid Dest Planet if ($destination['sector_id'] >= $tkireg->max_sectors) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invaliddplanet'], $template); } if ($destination['owner'] != $playerinfo['ship_id'] && $destination['sells'] == 'N') { // $langvars['l_tdr_errnotownnotsell2'] = str_replace("[tdr_dest_name]", $destination['name'], $langvars['l_tdr_errnotownnotsell2']); // $langvars['l_tdr_errnotownnotsell2'] = str_replace("[tdr_dest_sector_id]", $destination['sector_id'], $langvars['l_tdr_errnotownnotsell2']); // \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_errnotownnotsell2'], $template); // Check for valid Owned Source Planet \Tki\AdminLog::writeLog($pdo_db, 902, "{$playerinfo['ship_id']}|Tried to find someones planet: {$planet_id2} as dest."); \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, $langvars['l_tdr_invaliddplanet'], $template); } } // OK now we have $destination lets see if we've been there. $pl2query = $db->Execute("SELECT * FROM {$db->prefix}movement_log WHERE sector_id = ? AND ship_id = ?;", array($destination['sector_id'], $playerinfo['ship_id'])); \Tki\Db::LogDbErrors($pdo_db, $pl2query, __LINE__, __FILE__); $num_res2 = $pl2query->numRows(); if ($num_res2 == 0) { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, "You cannot create a traderoute into a sector you have not visited!", $template); } // Check destination - we cannot trade INTO a special port if (array_key_exists('port_type', $destination) === true && $destination['port_type'] == 'special') { \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, "You cannot create a traderoute into a special port!", $template); } // Check traderoute for src => dest \Tki\Traderoute2::traderouteCheckCompatible($db, $pdo_db, $lang, $ptype1, $ptype2, $move_type, $circuit_type, $source, $destination, $playerinfo, $tkireg, $template); if ($ptype1 == 'port') { $src_id = $port_id1; } elseif ($ptype1 == 'planet') { $src_id = $planet_id1; } elseif ($ptype1 == 'team_planet') { $src_id = $team_planet_id1; } if ($ptype2 == 'port') { $dest_id = $port_id2; } elseif ($ptype2 == 'planet') { $dest_id = $planet_id2; } elseif ($ptype2 == 'team_planet') { $dest_id = $team_planet_id2; } if ($ptype1 == 'port') { $src_type = 'P'; } elseif ($ptype1 == 'planet') { $src_type = 'L'; } elseif ($ptype1 == 'team_planet') { $src_type = 'C'; } if ($ptype2 == 'port') { $dest_type = 'P'; } elseif ($ptype2 == 'planet') { $dest_type = 'L'; } elseif ($ptype2 == 'team_planet') { $dest_type = 'C'; } if ($move_type == 'realspace') { $mtype = 'R'; } else { $mtype = 'W'; } if (empty($editing)) { $query = $db->Execute("INSERT INTO {$db->prefix}traderoutes VALUES(NULL, ?, ?, ?, ?, ?, ?, ?);", array($src_id, $dest_id, $src_type, $dest_type, $mtype, $playerinfo['ship_id'], $circuit_type)); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); echo "<p>" . $langvars['l_tdr_newtdrcreated']; } else { $query = $db->Execute("UPDATE {$db->prefix}traderoutes SET source_id = ?, dest_id = ?, source_type = ?, dest_type = ?, move_type = ?, owner = ?, circuit = ? WHERE traderoute_id = ?;", array($src_id, $dest_id, $src_type, $dest_type, $mtype, $playerinfo['ship_id'], $circuit_type, $editing)); \Tki\Db::LogDbErrors($pdo_db, $query, __LINE__, __FILE__); echo "<p>" . $langvars['l_tdr_modified']; } $langvars['l_tdr_returnmenu'] = str_replace("[here]", "<a href='traderoute.php'>" . $langvars['l_here'] . "</a>", $langvars['l_tdr_returnmenu']); echo " " . $langvars['l_tdr_returnmenu']; \Tki\Traderoute2::traderouteDie($pdo_db, $lang, $tkireg, null, $template); }