"metal", R_CRYSTAL => "crystal", R_DEUTERIUM => "deuterium", R_ENERGY => "energy", F_SMALLCARGOSHIP => "kt", F_LARGECARGOSHIP => "gt", F_LIGHFIGHTER => "lj", F_HEAVYFIGHTER => "sj", F_CRUISER => "krz", F_BATTLESHIP => "ss", F_COLONYSHIP => "kolo", F_RECYCLER => "rec", F_ESPIONAGEPROBE => "spio", F_BOMBER => "bomb", F_DESTROYER => "zerri", F_DEATHSTAR => "ds", F_BATTLECRUISER=>"skrz", F_SOLARSATELLITE => "sat", D_MISSILELAUNCHER => "rak", D_SMALLLASER => "ll", D_HEAVYLASER => "sl", D_IONCANNON => "ion", D_GAUSSCANNON => "gauss", D_PLASMACANNON => "plasma", D_SMALLSHIELDDOME => "ksk", D_LARGESHILDDOME => "gsk", D_ANTIBALLISTICMISSILE => "arak", D_INTERPLANETARYMISSILE => "irak", B_METALMINE => "memi", B_CRYSTALMINE => "krimi", B_DEUTERIUMSYNTHESIZER => "deutsyn", B_SOLARPLANT => "solar", B_FUSIONPLANT => "fusion", B_ROBOTFACTORY => "robo", B_NANITEFACTORY => "nani", B_SHIPYARD => "rawe", B_METALSTORAGE => "mesp", B_CRYSTALSTORAGE => "krissp", B_DEUTERIUMTANK => "deutsp", B_RESAERCHLAB => "folab", B_TERRAFORMER => "terra", B_ALLIANCEDEPOT => "allydep", B_ROCKETSILO => "raksilo", B_LUNARBASE => "mbase", B_SENSORPHALANX => "sensor", B_JUMPGATE => "sprungtor", RS_ESPIONAGE => "spiolvl", RS_COMPUTER => "computech", RS_WEAPON => "waffentech", RS_SHIELDING => "schildtech", RS_ARMOUR => "rpz", RS_ENERGY => "energytech", RS_HYPERSPACE => "hypertech", RS_COMBUSTIONENGINE => "vbt", RS_IMPULSEENGINE => "impulse", RS_HYPERSPACEENGINE => "hra", RS_LASER => "lasertech", RS_ION => "iontech", RS_PLASMA => "plasmatech", RS_IRNETWORK => "forschungsnetz", RS_EXPEDITION => "expedition", RS_GRAVITON => "gravi" ); // resources you will lose at fleet var $fleet_array = array( F_SMALLCARGOSHIP => 4000, F_LARGECARGOSHIP => 12000, F_LIGHFIGHTER => 4000, F_HEAVYFIGHTER => 10000, F_CRUISER => 27000, F_BATTLESHIP => 60000, F_COLONYSHIP => 30000, F_RECYCLER => 30000, F_ESPIONAGEPROBE => 1000, F_BOMBER => 22500, F_DESTROYER => 110000, F_DEATHSTAR => 9000000, F_BATTLECRUISER => 70000, F_SOLARSATELLITE => 2000, ); // resources you will lose at def var $defence_array = array( D_MISSILELAUNCHER => 600, D_SMALLLASER => 600, D_HEAVYLASER => 2400, D_IONCANNON => 2400, D_GAUSSCANNON => 10500, D_PLASMACANNON => 30000, D_SMALLSHIELDDOME => 6000, D_LARGESHILDDOME => 30000, ); /** * @return downloads * @param String $dbusername Username for database * @param String $dbpassword Passwprd for database * @param String $dbname Name for the galaxytool database * @param String $tablename Name of the table with alle probe reports * @param String $dbhost Database host * @desc Constructor for this class */ function Probeparser($dbusername,$dbpassword,$dbname,$tablename,$galatable,$playertable,$dbhost="localhost") { if (!empty($dbusername) && !empty($dbname) && !empty($tablename) && !empty($galatable) && !empty($dbhost)) { $this->dbusername = $dbusername; $this->dbpassword = $dbpassword; $this->dbname = $dbname; $this->tablename = $tablename; $this->galatable = $galatable; $this->playertable = $playertable; $this->dbhost = $dbhost; } else { array_push($this->error,"wrong DB values"); return false; } } function parseEntry($string,$userid,$flush=true) { include "../languages/korean_workaround.inc.php"; include "../languages/taiwan_workaround.inc.php"; include "../languages/japan_workaround.inc.php"; include "../languages/chinese_workaround.inc.php"; global $moon_name, $top_array; $this->error = array(); $string = str_replace("Rohstoffe auf","Resources on",$string); // German $string = str_replace("Recursos en","Resources on",$string); // Spanish $string = str_replace("Recursos em","Resources on",$string); // Portugues + Brazilian $string = str_replace("Grondstoffen op","Resources on",$string); // Dutch $string = str_replace("Sirovine na","Resources on",$string); // Balkan $string = str_replace("Matières premières sur","Resources on",$string); // French $string = str_replace("Surowce na","Resources on",$string); // Polish $string = str_replace("Risorse su","Resources on",$string); // Italian $string = str_replace("Erőforrások","Resources on",$string); // Hungarian $string = str_replace("itibariyle mevcut olan hammadde","Resources on",$string); // Turkish // if (strpos($string,"itibariyle mevcut olan hammadde") !== false) { // Turkish // $string = strip_tags($string); // $string = preg_replace("/(.*\s\[\d+\:\d+\:\d+\]\s+\(.*\)\s\w+\s+\d+\-\d+\s\d+:\d+:\d+\s)(itibariyle mevcut olan hammadde)/","$2 $1",$string); // } $string = str_replace("Råstoffer på","Resources on",$string); // Danish = Råstoffer $string = str_replace("Сырьё на","Resources on",$string); // Russian $string = str_replace("Resurser på","Resources on",$string); // Swedish $string = str_replace("Πόροι στο","Resources on",$string); // Greek $string = str_replace("Resursele pe","Resources on",$string); // Romanian $string = str_replace("Erőforrások a","Resources on",$string); // Hungarian $string = str_replace("Suroviny na","Resources on",$string); // Czech $string = str_replace("Ressurser på","Resources on",$string); // Norwegian $string = str_replace("Ресирси на","Resources on",$string); // Bulgarian $string = str_replace("Resursai","Resources on",$string); // Bulgarian $string = str_replace("Resursai","Resources on",$string); // Bulgarian $string = str_replace("Resursi uz","Resources on",$string); // Latvian $string = str_replace("Resurssit","Resources on",$string); // Finnish $string = str_replace($taiwan_resources_on,"Resources on",$string); // Taiwan if (strpos($string,$korean_resources_on) !== false) { $string .= "Resources on ".$string; } $string = preg_replace($japan_resource_pattern,"Resources on $3 $4 at $1",$string); // Japan //$regexp = '/[^a-zA-Z0-9\\.\s\[\]\:\-\%]/i'; //$string = preg_replace($regexp,'', $string); // reomove special chars switch ($_SESSION['lang']) { case "english": include "../languages/english_probes.inc.php"; break; case "german": include "../languages/german_probes.inc.php"; break; case "spanish": include "../languages/spanish_probes.inc.php"; break; case "dutch": include "../languages/dutch_probes.inc.php"; break; case "balkan": include "../languages/balkan_probes.inc.php"; break; case "french": include "../languages/french_probes.inc.php"; break; case "portugues": include "../languages/portugues_probes.inc.php"; break; case "italian": include "../languages/italian_probes.inc.php"; break; case "turkish": include "../languages/turkish_probes.inc.php"; break; case "polish": include "../languages/polish_probes.inc.php"; break; case "danish": include "../languages/danish_probes.inc.php"; break; case "brazilian": include "../languages/brazilian_probes.inc.php"; break; case "russian": include "../languages/russian_probes.inc.php"; break; case "swedish": include "../languages/swedish_probes.inc.php"; break; case "greek": include "../languages/greek_probes.inc.php"; break; case "romanian": include "../languages/romanian_probes.inc.php"; break; case "hungarian": include "../languages/hungarian_probes.inc.php"; break; case "czech": include "../languages/czech_probes.inc.php"; break; case "korean": include "../languages/korean_probes.inc.php"; break; case "norwegian": include "../languages/norwegian_probes.inc.php"; break; case "taiwan": include "../languages/taiwan_probes.inc.php"; break; case "japan": include "../languages/japan_probes.inc.php"; break; case "chinese": include "../languages/chinese_probes.inc.php"; break; case "bulgarian": include "../languages/bulgarian_probes.inc.php"; break; case "lithuanian": include "../languages/lithuanian_probes.inc.php"; break; case "latvian": include "../languages/latvian_probes.inc.php"; break; case "finnish": include "../languages/finnish_probes.inc.php"; break; default: array_push($this->error,"unknown language: ".$_SESSION['lang']); return false; } $string = substr($string,strpos($string,"Resources on")); $string = str_replace("\r","",$string); $moon = "false"; // find the "[" from the coordinates (last "[") $startpos = 0; $end_pos = 0; while (strpos(substr($string,$startpos),"[") !== false) { $pos = strpos(substr($string,$startpos),"[")+1; $pos2 = strpos(substr($string,$startpos),"]"); // now check if there are only numbers and ":" up to the closing "]" if (preg_match("/\d+\:\d+\:\d+/",substr($string,$startpos+$pos,$startpos+$pos2-$pos))) { // we found our exit $pos += $startpos; $end_pos += $pos2; break; } $startpos += $pos2+1; $end_pos += $pos2+1; } // get Name $planetname = trim(substr($string,13,$pos-1-13)); if ($_SESSION['lang'] == "turkish") { $planetname = trim(substr($string,0,$pos-2)); } if (strpos($planetname,$moon_name) !== false) $moon = "true"; // get Position and Date $pos2 = $end_pos; //strpos($string,"]"); if ($pos2 === false) { array_push($this->error,"Position not found"); return false; } $planetpostion = substr($string,$pos,$pos2-$pos); $string = substr($string,$pos2); preg_match("/\d\d\-\d\d\s+\d\d\:\d\d\:\d\d/i",$string,$scantime); $scantime = $scantime[0]; $string = preg_split("/\d\d\-\d\d\s+\d\d\:\d\d\:\d\d/i",$string); $string = $string[1]; $string = str_replace(":","",$string); $string = str_replace(".","",$string); $lines = explode("\n",$string); $reportarray = array(); $scanned = "ressources"; for ($i=1;$i 1) { $name = ""; for ($j=0;$jerror,"No Report found!"); return false; } mysql_connect($this->dbhost,$this->dbusername,$this->dbpassword); mysql_select_db($this->dbname); $query = "REPLACE ".$this->tablename." SET "; $player_tech_updates = "UPDATE ".$this->playertable." SET "; $fleet_df = 0; $defence_df = 0; $unknown_entries = array(); $raksilo = 0; $phalanx = 0; $impulse = 0; $last_entry = ""; foreach ($reportarray as $key => $value) { if (isset($this->db_array[$key])) { // normal query $query .= $this->db_array[$key]."='".mysql_real_escape_string($value)."',"; // playertechs query if ($value > 0) { // only do something if the value is greater than zero if ($this->db_array[$key] == "spiolvl" || $this->db_array[$key] == "computech" || $this->db_array[$key] == "waffentech" || $this->db_array[$key] == "schildtech" || $this->db_array[$key] == "rpz" || $this->db_array[$key] == "energytech" || $this->db_array[$key] == "hypertech" || $this->db_array[$key] == "vbt" || $this->db_array[$key] == "impulse" || $this->db_array[$key] == "hra" || $this->db_array[$key] == "lasertech" || $this->db_array[$key] == "iontech" || $this->db_array[$key] == "plasmatech" || $this->db_array[$key] == "forschungsnetz" || $this->db_array[$key] == "expedition" || $this->db_array[$key] == "gravi") { $player_tech_updates .= $this->db_array[$key]."='".mysql_real_escape_string($value)."',"; } if ($this->db_array[$key] == "mbase" || $this->db_array[$key] == "sensor" || $this->db_array[$key] == "sprungtor") { $moon = "true"; } if ($this->db_array[$key] == "memi" || $this->db_array[$key] == "krimi" || $this->db_array[$key] == "deutsyn") { $moon = "false"; } // save data about raksilo, sensor and impulse if ($this->db_array[$key] == "raksilo") { $raksilo = intval($value); } if ($this->db_array[$key] == "sensor") { $phalanx = intval($value); } if ($this->db_array[$key] == "impulse") { $impulse = intval($value); } } $last_entry = $this->db_array[$key]; } else { // avoid error logs caused by activity display at reports if ($last_entry != "energy") { // error log array_push($unknown_entries, $key); } } if (isset($this->fleet_array[$key])) { $fleet_df += ($this->fleet_array[$key] * $value); } if (isset($this->defence_array[$key])) { $defence_df += ($this->defence_array[$key] * $value); } // second moon detection if ($key == B_LUNARBASE || $key == B_SENSORPHALANX || $key == B_JUMPGATE) { $moon = "true"; } } $coordinates = explode(":",$planetpostion); // calculate max range for rockets if ($raksilo > 3) { $min_rak = ($coordinates[1] - (($impulse*5)-1)); if ($min_rak < 0) $min_rak = 0; // to avoid problems with mysql unsigned data type $query .= " min_rak=".$min_rak.", max_rak=".($coordinates[1] + (($impulse*5)-1)).", "; } // calculate max range for phalanx if ($phalanx > 0) { $min_phalanx = ($coordinates[1] - (($phalanx*$phalanx)-1)); if ($min_phalanx < 0) $min_phalanx = 0; $query .= " min_phalanx=".$min_phalanx.", max_phalanx=".($coordinates[1] + (($phalanx*$phalanx)-1)).", "; } // return all unknown entries if (count($unknown_entries) > 0) { // add current system to error log if ($moon == "true") { array_push($this->error, $planetpostion." M ".REPORTS_PARTLY_INSERTED." ".implode(",",$unknown_entries)); } else { array_push($this->error, $planetpostion." ".REPORTS_PARTLY_INSERTED." ".implode(",",$unknown_entries)); } } else { // initialize error log $this->error = array(); } $query .= " fleet_resis='$fleet_df', defence_resis='$defence_df', "; if (count($coordinates) != 3) { array_push($this->error,"Wrong Coordinates for $planetpostion"); return false; } $query .= " galaxy='".$coordinates[0]."', system='".$coordinates[1]."', planet='".$coordinates[2]."', moon='".$moon."', scantime='".mysql_real_escape_string($scantime)."', scanned='$scanned', planetname='".mysql_real_escape_string($planetname)."', user_id='$userid'"; $res = mysql_query($query); if (!$res) { array_push($this->error ,$query." ".mysql_error()); return false; } // check if planetname at this coordinates is equal to planetname from reports if ($player_tech_updates != "UPDATE ".$this->playertable." SET ") { $query = "SELECT player_id FROM $this->galatable WHERE galaxy='".$coordinates[0]."' AND system='".$coordinates[1]."' AND planet='".$coordinates[2]."' AND planetname='".mysql_real_escape_string($planetname)."' LIMIT 1"; $res = mysql_query($query); if (!$res) { array_push($this->error ,$query." ".mysql_error()); return false; } if (mysql_num_rows($res) > 0) { $line = mysql_fetch_object($res); // update techs of that player $player_tech_updates .= " last_tech_update=NOW() WHERE id='$line->player_id'"; $res = mysql_query($player_tech_updates); if (!$res) { array_push($this->error ,$player_tech_updates." ".mysql_error()); return false; } } } if ($flush && count($this->error) == 0) { if ($moon == "true") { echo "
".$planetpostion." M ".PARSER_INFO1."
\n"; } else { echo "
".$planetpostion." ".PARSER_INFO1."
\n"; } flush(); } if ( count($this->error) > 0 ) return false; return true; } /** * Enter information from ogame screens like buildings, techs, fleet or defense * * @param String $planetname Planetname * @param String $coordinate The string contains the coordinates of that planet * @param boole $moon Indicates if the current data is from a moon or not * @param int $metal Amount of metal at that planet * @param int $crystal Amount of crystal at that planet * @param int $deut Amount of deuterium at that planet * @param int $energy Amount of energy at that planet * @param array $element_name Array contains all Names of objects at the ogame screen like: building names or ship names * @param array $element_quantity Array contains the quantities of the objects listed at $element_name * @param string $language Language that shall be used to insert the data * @param string $type Kind of data that shall be inserted ("fleet", "defense", "buildings" or "techs */ function insert_screen_data($planetname,$coordinate,$moon,$metal,$crystal,$deut,$energy,$element_name,$element_quantity,$language,$type) { switch ($language) { case "english": break; case "german": include "../languages/german_probes.inc.php"; break; case "spanish": include "../languages/spanish_probes.inc.php"; break; case "dutch": include "../languages/dutch_probes.inc.php"; break; case "balkan": include "../languages/balkan_probes.inc.php"; break; case "french": include "../languages/french_probes.inc.php"; break; case "portugues": include "../languages/portugues_probes.inc.php"; break; case "italian": include "../languages/italian_probes.inc.php"; break; case "turkish": include "../languages/turkish_probes.inc.php"; break; case "polish": include "../languages/polish_probes.inc.php"; break; case "danish": include "../languages/danish_probes.inc.php"; break; case "brazilian": include "../languages/brazilian_probes.inc.php"; break; case "russian": include "../languages/russian_probes.inc.php"; break; case "swedish": include "../languages/swedish_probes.inc.php"; break; case "greek": include "../languages/greek_probes.inc.php"; break; case "romanian": include "../languages/romanian_probes.inc.php"; break; case "hungarian": include "../languages/hungarian_probes.inc.php"; break; case "czech": include "../languages/czech_probes.inc.php"; break; case "korean": include "../languages/korean_probes.inc.php"; break; case "norwegian": include "../languages/norwegian_probes.inc.php"; break; case "taiwan": include "../languages/taiwan_probes.inc.php"; break; case "japan": include "../languages/japan_probes.inc.php"; break; case "chinese": include "../languages/chinese_probes.inc.php"; break; case "bulgarian": include "../languages/bulgarian_probes.inc.php"; break; case "lithuanian": include "../languages/lithuanian_probes.inc.php"; break; case "latvian": include "../languages/latvian_probes.inc.php"; break; case "finnish": include "../languages/finnish_probes.inc.php"; break; default: array_push($this->error,"unknown language: ".$language); return false; } $coordinates = explode(":",$coordinate); if (count($coordinates) != 3) { array_push($this->error,"Wrong Coordinates for $planetname [$coordinate]"); return false; } mysql_connect($this->dbhost,$this->dbusername,$this->dbpassword); mysql_select_db($this->dbname); $player_tech_updates = "UPDATE ".$this->playertable." SET "; $fleet_df = 0; $defence_df = 0; $unknown_entries = array(); $moon = ($moon) ? 'true' : 'false'; $raksilo = 0; $phalanx = 0; $impulse = 0; $fleet_array = array("kt"=>false, "gt"=>false, "lj"=>false, "sj"=>false, "krz"=>false, "ss"=>false, "kolo"=>false, "rec"=>false, "spio"=>false, "bomb"=>false, "zerri"=>false, "ds"=>false, "skrz"=>false, "sat"=>false ); $query = "INSERT INTO ".$this->tablename." SET "; $on_duplicate_key = "ON DUPLICATE KEY UPDATE "; for ( $i=0;$idb_array[$key])) { // normal query $query .= $this->db_array[$key]."='".mysql_real_escape_string($value)."',"; $on_duplicate_key .= $this->db_array[$key]."=VALUES(".$this->db_array[$key]."),"; if ($type == "fleet") { // remember what entries were inserted - to reset the others later $fleet_array[$this->db_array[$key]] = true; } // playertechs query if ($this->db_array[$key] == "spiolvl" || $this->db_array[$key] == "computech" || $this->db_array[$key] == "waffentech" || $this->db_array[$key] == "schildtech" || $this->db_array[$key] == "rpz" || $this->db_array[$key] == "energytech" || $this->db_array[$key] == "hypertech" || $this->db_array[$key] == "vbt" || $this->db_array[$key] == "impulse" || $this->db_array[$key] == "hra" || $this->db_array[$key] == "lasertech" || $this->db_array[$key] == "iontech" || $this->db_array[$key] == "plasmatech" || $this->db_array[$key] == "forschungsnetz" || $this->db_array[$key] == "expedition" || $this->db_array[$key] == "gravi") { $player_tech_updates .= $this->db_array[$key]."='".mysql_real_escape_string($value)."',"; } if ($this->db_array[$key] == "mbase" || $this->db_array[$key] == "sensor" || $this->db_array[$key] == "sprungtor") { $moon = "true"; } if ($this->db_array[$key] == "memi" || $this->db_array[$key] == "krimi" || $this->db_array[$key] == "deutsyn") { $moon = "false"; } // save data about raksilo, sensor and impulse if ($this->db_array[$key] == "raksilo") { $raksilo = intval($value); } if ($this->db_array[$key] == "sensor") { $phalanx = intval($value); } if ($this->db_array[$key] == "impulse") { $impulse = intval($value); } } else { // error log if (trim($key) != "") array_push($unknown_entries, $key); } if (isset($this->fleet_array[$key])) { $fleet_df += ($this->fleet_array[$key] * $value); } if (isset($this->defence_array[$key])) { $defence_df += ($this->defence_array[$key] * $value); } // second moon detection if ($key == B_LUNARBASE || $key == B_SENSORPHALANX || $key == B_JUMPGATE) { $moon = "true"; } } if ($type == "fleet") { foreach ($fleet_array as $dbkey => $value) { if ($value === false) { // the entry was not inserted yet and must be set to 0 $query .= $dbkey."='0', "; $on_duplicate_key .= $dbkey."=VALUES(".$dbkey."),"; } } } // return all unknown entries if (count($unknown_entries) > 0) { // add current system to error log if ($moon == "true") { array_push($this->error, $planetpostion." M ".REPORTS_PARTLY_INSERTED." ".implode(",",$unknown_entries)); } else { array_push($this->error, $planetpostion." ".REPORTS_PARTLY_INSERTED." ".implode(",",$unknown_entries)); } } if ($fleet_df > 0) { $query .= " fleet_resis='$fleet_df', "; $on_duplicate_key .= "fleet_resis=VALUES(fleet_resis),"; } if ($defence_df > 0) { $query .= " defence_resis='$defence_df', "; $on_duplicate_key .= " defence_resis=VALUES(defence_resis),"; } // add metal, crystal, deut and energy $query .= " metal=$metal, crystal=$crystal, deuterium=$deut, energy=$energy,"; $on_duplicate_key .= "metal=VALUES(metal), crystal=VALUES(crystal), deuterium=VALUES(deuterium), energy=VALUES(energy),"; $query .= " galaxy='".$coordinates[0]."', system='".$coordinates[1]."', planet='".$coordinates[2]."', moon='".$moon."', planetname='".mysql_real_escape_string($planetname)."'"; $on_duplicate_key .= " planetname=VALUES(planetname)"; $query .= " ".$on_duplicate_key; $res = mysql_query($query); if (!$res) { array_push($this->error ,"MySQL Error: ".$query." ".mysql_error()); return false; } // update rocket range or phalanx range if we had a tech or a building for this if ($impulse > 0) { $query = "UPDATE ".$this->tablename." SET "; $query .= " min_rak=".($coordinates[1] - (($impulse*5)-1)).", max_rak=".($coordinates[1] + (($impulse*5)-1)); $query .= " WHERE galaxy='".$coordinates[0]."' AND system='".$coordinates[1]."' AND planet='".$coordinates[2]."' AND moon='".$moon."' AND irak > 3"; $res = mysql_query($query); if (!$res) { array_push($this->error ,"MySQL Error: ".$query." ".mysql_error()); return false; } } if ($phalanx > 0) { $query = "UPDATE ".$this->tablename." SET "; $query .= " min_phalanx=".($coordinates[1] - (($phalanx*$phalanx)-1)).", max_phalanx=".($coordinates[1] + (($phalanx*$phalanx)-1)); $query .= " WHERE galaxy='".$coordinates[0]."' AND system='".$coordinates[1]."' AND planet='".$coordinates[2]."' AND moon='".$moon."'"; $res = mysql_query($query); if (!$res) { array_push($this->error ,"MySQL Error: ".$query." ".mysql_error()); return false; } } // update playertechs if ($player_tech_updates != "") { $query = "SELECT player_id FROM $this->galatable WHERE galaxy='".$coordinates[0]."' AND system='".$coordinates[1]."' AND planet='".$coordinates[2]."' AND planetname='".mysql_real_escape_string($planetname)."' LIMIT 1"; $res = mysql_query($query); if (!$res) { array_push($this->error ,"MySQL Error: ".$query." ".mysql_error()); return false; } if (mysql_num_rows($res) > 0) { $line = mysql_fetch_object($res); // update techs of that player $player_tech_updates .= " last_tech_update=NOW() WHERE id='$line->player_id'"; $res = mysql_query($player_tech_updates); if (!$res) { array_push($this->error ,"MySQL Error: ".$player_tech_updates." ".mysql_error()); return false; } } } if ( count($this->error) > 0 ) return false; return true; } } function array_sort($a,$b) { if (strlen($a) == strlen($b)) return 0; return (strlen($a) > strlen($b)) ? -1 : 1; } ?>