prepare(" SELECT unit.id AS id FROM unit, k_unit WHERE k_unit.id = unit.unit AND unit.uid = :uid AND ( k_unit.id = :id OR k_unit.awakens_from = :id OR k_unit.awakens_to = :id ); "); $statement->bindValue(':uid', $uid, SQLITE3_INTEGER); $statement->bindValue(':id', $id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ array_push($this->owned, new Unit($r["id"], false)); } } } /** * Fusion. * * Represents an object from the table 'fusion'. * * @category Entity */ class Fusion extends Entity{ /** * @var K_Unit K_Unit to fuse. */ public $product; /** * @var K_Unit K_Unit to fuse (awakened). */ public $product_awaken; /** * @var K_Unit K_Unit to fuse (unawakened). */ public $product_unawaken; /** * @var Monster_Fusion Fusions required to create ingredients. */ public $fusion = []; /** * @var \K_Unit[] List of unfuseable K_Unit material. */ public $ingredient = []; /** * @var \K_Unit[] List of unfuseable K_Unit material. (unawakened). */ public $ingredient_unawaken = []; /** * @var int Stars of the monster to fuse. */ public $stars; /** * @var int Fusion cost. */ public $cost; /** * Constructor. * * Searches the database and retrieves the information about the * fusion, populating it and it's items. * * @param int $id Product monster id. * @param int $uid User id. * @global resource Database connection. */ public function __construct($id, $uid = null){ global $db; $statement = $db->prepare(" SELECT DISTINCT product, stars, cost FROM k_fusion WHERE product = $id OR product = (SELECT awakens_to FROM k_unit WHERE id = $id) OR product = (SELECT awakens_from FROM k_unit WHERE id = $id); "); $statement->bindValue(':id', $id, SQLITE3_INTEGER); $r = $statement->execute()->fetchArray(SQLITE3_ASSOC); $this->product = new Monster_Fusion($r["product"], $uid); $this->product_awaken = new Monster_Fusion($this->product->awakens_to, $uid); $this->stars = $r["stars"]; $this->cost = $r["cost"]; $statement = $db->prepare(" SELECT DISTINCT ingredient FROM k_fusion WHERE product = :product AND ingredient IN ( SELECT DISTINCT k_unit.id FROM k_fusion, k_unit WHERE k_fusion.product = k_unit.awakens_from OR k_fusion.product = k_unit.awakens_to OR k_fusion.product = k_unit.id ); "); $statement->bindValue(':product', $this->product->id, SQLITE3_INTEGER); $q_f = $statement->execute(); while ($r_f = $q_f->fetchArray(SQLITE3_ASSOC)){ array_push($this->fusion, new Fusion($r_f["ingredient"], $uid)); } $statement = $db->prepare(" SELECT id, awakens_from FROM k_unit WHERE id IN ( SELECT DISTINCT ingredient FROM k_fusion WHERE product = :product AND ingredient NOT IN ( SELECT DISTINCT k_unit.id FROM k_fusion, k_unit WHERE k_fusion.product = k_unit.awakens_from OR k_fusion.product = k_unit.awakens_to OR k_fusion.product = k_unit.id ) ); "); $statement->bindValue(':product', $this->product->id, SQLITE3_INTEGER); $q_m = $statement->execute(); while ($r_m = $q_m->fetchArray(SQLITE3_ASSOC)){ $m = new Monster_Fusion($r_m["id"], $uid); array_push($this->ingredient, $m); $m = new Monster_Fusion($r_m["awakens_from"], $uid); $m->load_essences(); array_push($this->ingredient_unawaken, $m); } } } ?>