#!/bin/php com2us_id; } /** * Gets an element ID from it's name * * @param string $name Element name (case insensitive). * @return int Element ID, -1 on unknown element. */ function get_element_id($name){ $id = -1; switch (strtoupper($name)){ case "MAGIC": $id = 0; break; case "WATER": $id = 1; break; case "FIRE": $id = 2; break; case "WIND": $id = 3; break; case "LIGHT": $id = 4; break; case "DARK": $id = 5; break; case "PURE": $id = 6; break; } return $id; } /** * Gets an archetype ID from it's name * * @param string $name Archetype name (case insensitive). * @return int Archetype ID, -1 on unknown archetype. */ function get_archetype_id($name){ $id = 0; // NONE switch (strtoupper($name)){ case "ATTACK": $id = 1; break; case "DEFENSE": $id = 2; break; case "HP": $id = 3; break; case "SUPPORT": $id = 4; break; case "MATERIAL": $id = 5; break; } return $id; } /** * Gets an archetype ID from it's name * * @param string $name Archetype name (case insensitive). * @return int Archetype ID, -1 on unknown archetype. */ function connect_to_database(){ // Connect to the database $db = new SQLite3(PATH . "application/sw.sqlite"); if (!$db) { output(0, "Error connecting to th database: " . $db->lastErrorMsg()); exit(); } // Disable integrity $db->query("PRAGMA foreign_keys=OFF;"); return $db; } // TODO: Parse arguments // Connect to the database $db = connect_to_database(); // Loop skills pages $next = URL_SKILL; while ($next != null){ output(3, "Reading skills page: $next"); $contents = file_get_contents($next); if ($contents === false){ output(0, "Unable to read skill page: $next"); return -1; } $contents = json_decode($contents); $next = $contents->next; $list = $contents->results; foreach ($list as $skill){ $statement = $db->prepare("SELECT * FROM k_skill WHERE id = :id"); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); $q = $statement->execute(); $r = $q->fetchArray(SQLITE3_ASSOC); if (!$r){ $statement = $db->prepare(" INSERT INTO k_skill( id, name, description, slot, cooltime, hits, passive, aoe, max_level, multiplier_formula ) VALUES ( :id, :name, :description, :slot, :cooltime, :hits, :passive, :aoe, :max_level, :multiplier_formula ); "); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); $statement->bindValue(":name", $skill->name, SQLITE3_TEXT); $statement->bindValue(":description", $skill->name, SQLITE3_TEXT); $statement->bindValue(":slot", $skill->slot, SQLITE3_TEXT); $statement->bindValue(":cooltime", $skill->cooltime, SQLITE3_INTEGER); $statement->bindValue(":hits", $skill->hits, SQLITE3_INTEGER); $statement->bindValue(":passive", $skill->passive, SQLITE3_INTEGER); $statement->bindValue(":aoe", $skill->aoe, SQLITE3_INTEGER); $statement->bindValue(":max_level", $skill->max_level, SQLITE3_INTEGER); $statement->bindValue(":multiplier_formula", $skill->multiplier_formula, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); $url = 'https://swarfarm.com/static/herders/images/skills/' . $skill->icon_filename; $out = PATH . "public/img/skill/" . sprintf('%08d', $skill->com2us_id) . ".png"; output(4, "Downloading file '$url' to: '$out'"); if (!file_put_contents($out, file_get_contents($url))) { output(1, "Error downloading file '$url' to: '$out'"); } $level = 1; $statement = $db->prepare("INSERT INTO k_skill_level (skill, level, description) VALUES (:skill, :level, :description);"); $statement->bindValue(":skill", $skill->com2us_id, SQLITE3_INTEGER); $statement->bindValue(":level", $level, SQLITE3_INTEGER); foreach ($skill->upgrades as $upgrade){ $level ++; $statement = $db->prepare("INSERT INTO k_skill_level (skill, level, description) VALUES (:skill, :level, :description);"); $statement->bindValue(":skill", $skill->com2us_id, SQLITE3_INTEGER); $statement->bindValue(":level", $level, SQLITE3_INTEGER); $statement->bindValue(":description", str_replace("{0}", $upgrade->amount, $upgrade->effect), SQLITE3_TEXT); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } // TODO: Get data for other tables: // k_skill_effect } else{ // Compare all values if ($r["name"] != $skill->name){ $statement = $db->prepare("UPDATE k_skill SET name = :name WHERE id = :id;"); $statement->bindValue(":name", $skill->name, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["description"] != $skill->description){ $statement = $db->prepare("UPDATE k_skill SET description = :description WHERE id = :id;"); $statement->bindValue(":description", $skill->description, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["slot"] != $skill->slot){ $statement = $db->prepare("UPDATE k_skill SET slot = :slot WHERE id = :id;"); $statement->bindValue(":slot", $skill->slot, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["cooltime"] != $skill->cooltime){ $statement = $db->prepare("UPDATE k_skill SET cooltime = :cooltime WHERE id = :id;"); $statement->bindValue(":cooltime", $skill->cooltime, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["hits"] != $skill->hits){ $statement = $db->prepare("UPDATE k_skill SET hits = :hits WHERE id = :id;"); $statement->bindValue(":hits", $skill->hits, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } $passive = ($skill->passive == 1) ? (1) : (0); if ($r["passive"] != $passive){ $statement = $db->prepare("UPDATE k_skill SET passive = :passive WHERE id = :id;"); $statement->bindValue(":passive", $passive, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } $aoe = ($skill->aoe == 1) ? (1) : (0); if ($r["aoe"] != $aoe){ $statement = $db->prepare("UPDATE k_skill SET aoe = :aoe WHERE id = :id;"); $statement->bindValue(":aoe", $aoe, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["max_level"] != $skill->max_level){ $statement = $db->prepare("UPDATE k_skill SET max_level = :max_level WHERE id = :id;"); $statement->bindValue(":max_level", $skill->max_level, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["multiplier_formula"] != $skill->multiplier_formula){ $statement = $db->prepare("UPDATE k_skill SET multiplier_formula = :multiplier_formula WHERE id = :id;"); $statement->bindValue(":multiplier_formula", $skill->multiplier_formula, SQLITE3_TEXT); $statement->bindValue(":id", $skill->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } // Image download $out = PATH . "public/img/skill/" . sprintf('%08d', $skill->com2us_id) . ".png"; if (!file_exists($out)){ $url = 'https://swarfarm.com/static/herders/images/skills/' . $skill->icon_filename; output(4, "Downloading file '$url' to: '$out'"); if (!file_put_contents($out, file_get_contents($url))) { output(1, "Error downloading file '$url' to: '$out'"); } } } } //echo "NEXTPAGE: " . $next; } // Loop units pages $next = URL_UNIT; while ($next != null){ output(3, "Reading units page: $next"); $contents = file_get_contents($next); if($contents === false){ output(0, "Unable to retrieve monster list."); return -1; } $contents = json_decode($contents); $next = $contents->next; $list = $contents->results; foreach ($list as $unit){ $statement = $db->prepare("SELECT * FROM k_unit WHERE id = :id"); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); $q = $statement->execute(); $r = $q->fetchArray(SQLITE3_ASSOC); if (!$r){ $statement = $db->prepare(" INSERT INTO k_unit( id, family, name, element, archetype, base_stars, natural_stars, obtainable, can_awaken, awaken_bonus, skill_ups_to_max, leader_skill, hp, attack, defense, speed, crit_rate, crit_damage, resistance, accuracy, raw_hp, raw_attack, raw_defense, max_lvl_hp, max_lvl_attack, max_lvl_defense, awakens_from, awakens_to, fusion_food, homunculus, craft_cost ) VALUES ( :id, :family, :name, :element, :archetype, :base_stars, :natural_stars, :obtainable, :can_awaken, :awaken_bonus, :skill_ups_to_max, :leader_skill, :hp, :attack, :defense, :speed, :crit_rate, :crit_damage, :resistance, :accuracy, :raw_hp, :raw_attack, :raw_defense, :max_lvl_hp, :max_lvl_attack, :max_lvl_defense, :awakens_from, :awakens_to, :fusion_food, :homunculus, :craft_cost ); "); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_TEXT); $statement->bindValue(":family", $unit->family_id, SQLITE3_INTEGER); $statement->bindValue(":name", $unit->name, SQLITE3_TEXT); $statement->bindValue(":element", get_element_id($unit->element), SQLITE3_INTEGER); $statement->bindValue(":archetype", get_archetype_id($unit->archetype), SQLITE3_INTEGER); $statement->bindValue(":base_stars", $unit->base_stars, SQLITE3_INTEGER); $statement->bindValue(":natural_stars", $unit->natural_stars, SQLITE3_INTEGER); $statement->bindValue(":obtainable", $unit->obtainable, SQLITE3_INTEGER); $statement->bindValue(":can_awaken", $unit->can_awaken, SQLITE3_INTEGER); $statement->bindValue(":awaken_bonus", $unit->awaken_bonus, SQLITE3_TEXT); $statement->bindValue(":skill_ups_to_max", $unit->skill_ups_to_max, SQLITE3_INTEGER); $statement->bindValue(":leader_skill", $unit->leader_skill, SQLITE3_INTEGER); $statement->bindValue(":hp", $unit->base_hp, SQLITE3_INTEGER); $statement->bindValue(":attack", $unit->base_attack, SQLITE3_INTEGER); $statement->bindValue(":defense", $unit->base_defense, SQLITE3_INTEGER); $statement->bindValue(":speed", $unit->speed, SQLITE3_INTEGER); $statement->bindValue(":crit_rate", $unit->crit_rate, SQLITE3_INTEGER); $statement->bindValue(":crit_damage", $unit->crit_damage, SQLITE3_INTEGER); $statement->bindValue(":resistance", $unit->resistance, SQLITE3_INTEGER); $statement->bindValue(":accuracy", $unit->accuracy, SQLITE3_INTEGER); $statement->bindValue(":raw_hp", $unit->raw_hp, SQLITE3_INTEGER); $statement->bindValue(":raw_attack", $unit->raw_attack, SQLITE3_INTEGER); $statement->bindValue(":raw_defense", $unit->raw_defense, SQLITE3_INTEGER); $statement->bindValue(":max_lvl_hp", $unit->max_lvl_hp, SQLITE3_INTEGER); $statement->bindValue(":max_lvl_attack", $unit->max_lvl_attack, SQLITE3_INTEGER); $statement->bindValue(":max_lvl_defense", $unit->max_lvl_defense, SQLITE3_INTEGER); $statement->bindValue(":awakens_from", get_com2us_id($unit->awakens_from), SQLITE3_INTEGER); $statement->bindValue(":awakens_to", get_com2us_id($unit->awakens_to), SQLITE3_TEXT); $statement->bindValue(":fusion_food", $unit->fusion_food, SQLITE3_INTEGER); $statement->bindValue(":homunculus", $unit->homunculus, SQLITE3_INTEGER); $statement->bindValue(":craft_cost", 0, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); $url = 'https://swarfarm.com/static/herders/images/monsters/' . $unit->image_filename; $out = PATH . "public/img/unit/" . sprintf('%08d', $unit->com2us_id) . ".png"; output(4, "Downloading file '$url' to: '$out'"); if (!file_put_contents($out, file_get_contents($url))) { output(1, "Error downloading file '$url' to: '$out'"); } foreach ($unit->skills as $skill){ $statement = $db->prepare("INSERT INTO k_unit_skill (unit, skill) VALUES (:unit, :skill);"); $statement->bindValue(":unit", $unit->com2us_id, SQLITE3_INTEGER); $statement->bindValue(":skill", $skill, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } // TODO: Get data for other tables: // k_unit_essence // k_unit_source } else{ // Compare all values if ($r["family"] != $unit->family_id){ $statement = $db->prepare("UPDATE k_unit SET family = :family WHERE id = :id;"); $statement->bindValue(":family", $unit->family_id, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["name"] != $unit->name){ $statement = $db->prepare("UPDATE k_unit SET name = :name WHERE id = :id;"); $statement->bindValue(":name", $unit->name, SQLITE3_TEXT); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } $element = get_element_id($unit->element); if ($r["element"] != $element){ $statement = $db->prepare("UPDATE k_unit SET element = :element WHERE id = :id;"); $statement->bindValue(":element", $element, SQLITE3_TEXT); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } $archetype = get_archetype_id($unit->archetype); if ($r["archetype"] != $archetype){ $statement = $db->prepare("UPDATE k_unit SET archetype = :archetype WHERE id = :id;"); $statement->bindValue(":archetype", $archetype, SQLITE3_TEXT); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["base_stars"] != $unit->base_stars){ $statement = $db->prepare("UPDATE k_unit SET base_stars = :base_stars WHERE id = :id;"); $statement->bindValue(":base_stars", $unit->base_stars, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["natural_stars"] != $unit->natural_stars){ $statement = $db->prepare("UPDATE k_unit SET natural_stars = :natural_stars WHERE id = :id;"); $statement->bindValue(":natural_stars", $unit->natural_stars, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["obtainable"] != $unit->obtainable){ $statement = $db->prepare("UPDATE k_unit SET obtainable = :obtainable WHERE id = :id;"); $statement->bindValue(":obtainable", $unit->obtainable, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["can_awaken"] != $unit->can_awaken){ $statement = $db->prepare("UPDATE k_unit SET can_awaken = :can_awaken WHERE id = :id;"); $statement->bindValue(":can_awaken", $unit->can_awaken, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["awaken_bonus"] != $unit->awaken_bonus && $unit->awaken_bonus != 0){ $statement = $db->prepare("UPDATE k_unit SET awaken_bonus = :awaken_bonus WHERE id = :id;"); $statement->bindValue(":awaken_bonus", $unit->awaken_bonus, SQLITE3_TEXT); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_TEXT); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["skill_ups_to_max"] != $unit->skill_ups_to_max){ $statement = $db->prepare("UPDATE k_unit SET skill_ups_to_max = :skill_ups_to_max WHERE id = :id;"); $statement->bindValue(":skill_ups_to_max", $unit->skill_ups_to_max, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["hp"] != $unit->base_hp){ $statement = $db->prepare("UPDATE k_unit SET hp = :hp WHERE id = :id;"); $statement->bindValue(":hp", $unit->base_hp, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["attack"] != $unit->base_attack){ $statement = $db->prepare("UPDATE k_unit SET attack = :attack WHERE id = :id;"); $statement->bindValue(":attack", $unit->base_attack, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["defense"] != $unit->base_defense){ $statement = $db->prepare("UPDATE k_unit SET defense = :defense WHERE id = :id;"); $statement->bindValue(":defense", $unit->base_defense, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["speed"] != $unit->speed){ $statement = $db->prepare("UPDATE k_unit SET speed = :speed WHERE id = :id;"); $statement->bindValue(":speed", $unit->speed, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["crit_rate"] != $unit->crit_rate){ $statement = $db->prepare("UPDATE k_unit SET crit_rate = :crit_rate WHERE id = :id;"); $statement->bindValue(":crit_rate", $unit->crit_rate, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["crit_damage"] != $unit->crit_damage){ $statement = $db->prepare("UPDATE k_unit SET crit_damage = :crit_damage WHERE id = :id;"); $statement->bindValue(":crit_damage", $unit->crit_damage, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["resistance"] != $unit->resistance){ $statement = $db->prepare("UPDATE k_unit SET resistance = :resistance WHERE id = :id;"); $statement->bindValue(":resistance", $unit->resistance, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["accuracy"] != $unit->accuracy){ $statement = $db->prepare("UPDATE k_unit SET accuracy = :accuracy WHERE id = :id;"); $statement->bindValue(":accuracy", $unit->accuracy, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["raw_hp"] != $unit->raw_hp){ $statement = $db->prepare("UPDATE k_unit SET raw_hp = :raw_hp WHERE id = :id;"); $statement->bindValue(":raw_hp", $unit->raw_hp, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["raw_attack"] != $unit->raw_attack){ $statement = $db->prepare("UPDATE k_unit SET raw_attack = :raw_attack WHERE id = :id;"); $statement->bindValue(":raw_attack", $unit->raw_attack, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["raw_defense"] != $unit->raw_defense){ $statement = $db->prepare("UPDATE k_unit SET raw_defense = :raw_defense WHERE id = :id;"); $statement->bindValue(":raw_defense", $unit->raw_defense, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["max_lvl_hp"] != $unit->max_lvl_hp){ $statement = $db->prepare("UPDATE k_unit SET max_lvl_hp = :max_lvl_hp WHERE id = :id;"); $statement->bindValue(":max_lvl_hp", $unit->max_lvl_hp, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["max_lvl_attack"] != $unit->max_lvl_attack){ $statement = $db->prepare("UPDATE k_unit SET max_lvl_attack = :max_lvl_attack WHERE id = :id;"); $statement->bindValue(":max_lvl_attack", $unit->max_lvl_attack, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["max_lvl_defense"] != $unit->max_lvl_defense){ $statement = $db->prepare("UPDATE k_unit SET max_lvl_defense = :max_lvl_defense WHERE id = :id;"); $statement->bindValue(":max_lvl_defense", $unit->max_lvl_defense, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } $com2us_id = get_com2us_id($unit->awakens_from); if ($r["awakens_from"] != $com2us_id){ $statement = $db->prepare("UPDATE k_unit SET awakens_from = :awakens_from WHERE id = :id;"); $statement->bindValue(":awakens_from", $com2us_id, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } $com2us_id = get_com2us_id($unit->awakens_to); if ($r["awakens_to"] != $com2us_id){ $statement = $db->prepare("UPDATE k_unit SET awakens_to = :awakens_to WHERE id = :id;"); $statement->bindValue(":awakens_to", $com2us_id, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["fusion_food"] != $unit->fusion_food){ $statement = $db->prepare("UPDATE k_unit SET fusion_food = :fusion_food WHERE id = :id;"); $statement->bindValue(":fusion_food", $unit->fusion_food, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } if ($r["homunculus"] != $unit->homunculus){ $statement = $db->prepare("UPDATE k_unit SET homunculus = :homunculus WHERE id = :id;"); $statement->bindValue(":homunculus", $unit->homunculus, SQLITE3_INTEGER); $statement->bindValue(":id", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } // Loop skills. Only for inserting in k_skill and k_unit_skill $statement = $db->prepare("SELECT count(skill) AS c FROM k_unit_skill WHERE unit = :unit;"); $statement->bindValue(":unit", $unit->com2us_id, SQLITE3_INTEGER); $q = $statement->execute(); $r = $q->fetchArray(SQLITE3_ASSOC); if ($r["c"] != sizeof($unit->skills)){ $statement = $db->prepare("DELETE FROM k_unit_skill WHERE unit = :unit;"); $statement->bindValue(":unit", $unit->com2us_id, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); foreach ($unit->skills as $skill){ $statement = $db->prepare("INSERT INTO k_unit_skill (unit, skill) VALUES (:unit, :skill);"); $statement->bindValue(":unit", $unit->com2us_id, SQLITE3_INTEGER); $statement->bindValue(":skill", $skill, SQLITE3_INTEGER); output(4, "Execute query: "); output(4, $statement->getSQL(true)); $statement->execute(); } } // Image download $out = PATH . "public/img/unit/" . sprintf('%08d', $unit->com2us_id) . ".png"; if (!file_exists($out)){ //echo(" Downloading image " . $unit->image_filename . " to " . sprintf('%08d', $unit->com2us_id) . ".png"); $url = 'https://swarfarm.com/static/herders/images/monsters/' . $unit->image_filename; output(4, "Downloading file '$url' to: '$out'"); if (!file_put_contents($out, file_get_contents($url))) { output(1, "Error downloading file '$url' to: '$out'"); } } } } //echo "NEXTPAGE: " . $next; } ?>