|
@@ -13,9 +13,28 @@
|
|
|
* Filtrs the eport can handle.
|
|
* Filtrs the eport can handle.
|
|
|
*/
|
|
*/
|
|
|
public $filters = [
|
|
public $filters = [
|
|
|
- "min_stars" => 5,
|
|
|
|
|
- "max_stars" => 6,
|
|
|
|
|
- "in_storage" => true,
|
|
|
|
|
|
|
+ "monster_min_stars" => 5,
|
|
|
|
|
+ "monster_max_stars" => 6,
|
|
|
|
|
+ "monster_name" => "",
|
|
|
|
|
+ "monster_in_storage" => false,
|
|
|
|
|
+ "rune_min_stars" => 5,
|
|
|
|
|
+ "rune_max_stars" => 6,
|
|
|
|
|
+ "rune_min_level" => 0,
|
|
|
|
|
+ "rune_max_level" => 15,
|
|
|
|
|
+ "rune_min_quality" => 0,
|
|
|
|
|
+ "rune_max_quality" => 4,
|
|
|
|
|
+ "rune_min_original_quality" => 0,
|
|
|
|
|
+ "rune_max_original_quality" => 4,
|
|
|
|
|
+ "rune_min_efficiency" => 0,
|
|
|
|
|
+ "rune_max_efficiency" => 100,
|
|
|
|
|
+ "rune_min_max_efficiency" => 0,
|
|
|
|
|
+ "rune_max_max_efficiency" => 100,
|
|
|
|
|
+ "rune_slot" => [],
|
|
|
|
|
+ "alternative_min_stars" => 5,
|
|
|
|
|
+ "alternative_min_original_quality" => 0,
|
|
|
|
|
+ "alternative_min_level" => 0,
|
|
|
|
|
+ "alternative_condition" => 3,
|
|
|
|
|
+ "alternative_source" => 0,
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -48,12 +67,12 @@
|
|
|
$this->view = $path["view"] . "report_runeupgrade.php";
|
|
$this->view = $path["view"] . "report_runeupgrade.php";
|
|
|
$this->parse_filters();
|
|
$this->parse_filters();
|
|
|
$s = $this->build_query();
|
|
$s = $this->build_query();
|
|
|
|
|
+ error_log("R: " . $s);
|
|
|
$q = $this->db->query($s);
|
|
$q = $this->db->query($s);
|
|
|
$prev_monster = "";
|
|
$prev_monster = "";
|
|
|
$prev_rune = "";
|
|
$prev_rune = "";
|
|
|
$upgrade = null;
|
|
$upgrade = null;
|
|
|
$rupgrade = null;
|
|
$rupgrade = null;
|
|
|
- $rune_i = 0; // DEBUG
|
|
|
|
|
while ($r = $q->fetchArray(SQLITE3_ASSOC)){
|
|
while ($r = $q->fetchArray(SQLITE3_ASSOC)){
|
|
|
if ($r["monster"] != $prev_monster){
|
|
if ($r["monster"] != $prev_monster){
|
|
|
if ($prev_rune != ""){
|
|
if ($prev_rune != ""){
|
|
@@ -84,7 +103,6 @@
|
|
|
];
|
|
];
|
|
|
}
|
|
}
|
|
|
array_push($rupgrade["alternative"], new Rune($this->db, $r["alternative"]));
|
|
array_push($rupgrade["alternative"], new Rune($this->db, $r["alternative"]));
|
|
|
- $rune_i ++;
|
|
|
|
|
}
|
|
}
|
|
|
// Last entries
|
|
// Last entries
|
|
|
array_push($upgrade["upgrade"], $rupgrade);
|
|
array_push($upgrade["upgrade"], $rupgrade);
|
|
@@ -100,14 +118,82 @@
|
|
|
* min_stars (1-6) and in_storage (on/off).
|
|
* min_stars (1-6) and in_storage (on/off).
|
|
|
*/
|
|
*/
|
|
|
private function parse_filters(){
|
|
private function parse_filters(){
|
|
|
- if (isset($_GET["min_stars"]) && intval($_GET["min_stars"]) > 0 && intval($_GET["min_stars"]) < 7){
|
|
|
|
|
- $this->filters["min_stars"] = $_GET["min_stars"];
|
|
|
|
|
|
|
+ // Monster
|
|
|
|
|
+ if (isset($_GET["monster_min_stars"]) && intval($_GET["monster_min_stars"]) > 0 && intval($_GET["mnster_min_stars"]) < 7){
|
|
|
|
|
+ $this->filters["monster_min_stars"] = $_GET["monster_min_stars"];
|
|
|
}
|
|
}
|
|
|
- if (isset($_GET["max_stars"]) && intval($_GET["max_stars"]) > 0 && intval($_GET["max_stars"]) < 7){
|
|
|
|
|
- $this->filters["max_stars"] = $_GET["max_stars"];
|
|
|
|
|
|
|
+ if (isset($_GET["monster_max_stars"]) && intval($_GET["max_stars"]) > 0 && intval($_GET["monster_max_stars"]) < 7){
|
|
|
|
|
+ $this->filters["mnster_max_stars"] = $_GET["monster_max_stars"];
|
|
|
}
|
|
}
|
|
|
- if (isset($_GET["in_storage"]) && $_GET["in_storage"] != "on"){
|
|
|
|
|
- $this->filters["in_storage"] = false;
|
|
|
|
|
|
|
+ if (isset($_GET["monster_in_storage"]) && $_GET["monster_in_storage"] == "on"){
|
|
|
|
|
+ $this->filters["monster_in_storage"] = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ else{
|
|
|
|
|
+ $this->filters["monster_in_storage"] = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["monster_name"]) && strlen($_GET["monster_name"]) > 0){
|
|
|
|
|
+ $this->filters["monster_name"] = SQLite3::escapeString($_GET["monster_name"]);
|
|
|
|
|
+ }
|
|
|
|
|
+ // Runes
|
|
|
|
|
+ if (isset($_GET["rune_min_stars"]) && intval($_GET["rune_min_stars"]) > 0 && intval($_GET["mnster_min_stars"]) < 7){
|
|
|
|
|
+ $this->filters["rune_min_stars"] = $_GET["rune_min_stars"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_max_stars"]) && intval($_GET["max_stars"]) > 0 && intval($_GET["rune_max_stars"]) < 7){
|
|
|
|
|
+ $this->filters["mnster_max_stars"] = $_GET["rune_max_stars"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_min_level"]) && intval($_GET["rune_min_level"]) >= 0 && intval($_GET["mnster_min_level"]) <= 15){
|
|
|
|
|
+ $this->filters["rune_min_level"] = $_GET["rune_min_level"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_max_level"]) && intval($_GET["max_level"]) >= 0 && intval($_GET["rune_max_level"]) <= 15){
|
|
|
|
|
+ $this->filters["mnster_max_level"] = $_GET["rune_max_level"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_min_quality"]) && intval($_GET["rune_min_quality"]) >= 0 && intval($_GET["rune_min_quality"]) < 5){
|
|
|
|
|
+ $this->filters["rune_min_quality"] = $_GET["rune_min_quality"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_max_quality"]) && intval($_GET["rune_max_quality"]) >= 0 && intval($_GET["rune_max_quality"]) < 5){
|
|
|
|
|
+ $this->filters["rune_max_quality"] = $_GET["rune_max_quality"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_min_original_quality"]) && intval($_GET["rune_min_original_quality"]) >= 0 && intval($_GET["rune_min_original_quality"]) < 5){
|
|
|
|
|
+ $this->filters["rune_min_original_quality"] = $_GET["rune_min_original_quality"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_max_original_quality"]) && intval($_GET["rune_max_original_quality"]) >= 0 && intval($_GET["rune_max_original_quality"]) < 5){
|
|
|
|
|
+ $this->filters["rune_max_original_quality"] = $_GET["rune_max_original_quality"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_min_efficiency"]) && intval($_GET["rune_min_efficiency"]) >= 0 && intval($_GET["rune_min_efficiency"]) <= 100){
|
|
|
|
|
+ $this->filters["rune_min_efficiency"] = $_GET["rune_min_efficiency"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_max_efficiency"]) && intval($_GET["rune_max_efficiency"]) >= 0 && intval($_GET["rune_max_efficiency"]) <= 100){
|
|
|
|
|
+ $this->filters["rune_max_efficiency"] = $_GET["rune_max_efficiency"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_min_max_efficiency"]) && intval($_GET["rune_min_max_efficiency"]) >= 0 && intval($_GET["rune_min_max_efficiency"]) <= 100){
|
|
|
|
|
+ $this->filters["rune_min_max_efficiency"] = $_GET["rune_min_max_efficiency"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_max_max_efficiency"]) && intval($_GET["rune_max_max_efficiency"]) >= 0 && intval($_GET["rune_max_max_efficiency"]) <= 100){
|
|
|
|
|
+ $this->filters["rune_max_max_efficiency"] = $_GET["rune_max_max_efficiency"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["rune_slot"])){
|
|
|
|
|
+ $slots = $_GET["rune_slot"];
|
|
|
|
|
+ foreach ($slots as $slot){
|
|
|
|
|
+ if (intval($slot) >= 1 && intval($slot) < 7){
|
|
|
|
|
+ array_push($this->filters["rune_slot"], intval($slot));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // Alternatives
|
|
|
|
|
+ if (isset($_GET["alternative_min_stars"]) && intval($_GET["alternative_min_stars"]) > 0 && intval($_GET["mnster_min_stars"]) < 7){
|
|
|
|
|
+ $this->filters["alternative_min_stars"] = $_GET["alternative_min_stars"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["alternative_min_level"]) && intval($_GET["alternative_min_level"]) >= 0 && intval($_GET["mnster_min_level"]) <= 15){
|
|
|
|
|
+ $this->filters["alternative_min_level"] = $_GET["alternative_min_level"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["alternative_min_original_quality"]) && intval($_GET["alternative_min_original_quality"]) >= 0 && intval($_GET["alternative_min_original_quality"]) < 5){
|
|
|
|
|
+ $this->filters["alternative_min_original_quality"] = $_GET["alternative_min_original_quality"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["alternative_condition"]) && intval($_GET["alternative_condition"]) >= 0 && intval($_GET["alternative_condition"]) <= 5){
|
|
|
|
|
+ $this->filters["alternative_condition"] = $_GET["alternative_condition"];
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isset($_GET["alternative_source"]) && intval($_GET["alternative_source"]) >= 0 && intval($_GET["alternative_source"]) <= 2){
|
|
|
|
|
+ $this->filters["alternative_source"] = $_GET["alternative_source"];
|
|
|
}
|
|
}
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -119,7 +205,7 @@
|
|
|
*/
|
|
*/
|
|
|
private function build_query(){
|
|
private function build_query(){
|
|
|
$s =
|
|
$s =
|
|
|
- " SELECT " .
|
|
|
|
|
|
|
+ "SELECT " .
|
|
|
" monster.id AS monster, " .
|
|
" monster.id AS monster, " .
|
|
|
" rune.id AS id, " .
|
|
" rune.id AS id, " .
|
|
|
" rune_alt.id AS alternative " .
|
|
" rune_alt.id AS alternative " .
|
|
@@ -129,23 +215,85 @@
|
|
|
" monster " .
|
|
" monster " .
|
|
|
"WHERE " .
|
|
"WHERE " .
|
|
|
" monster.id = rune.assigned_to AND " .
|
|
" monster.id = rune.assigned_to AND " .
|
|
|
- " monster.stars >= " . $this->filters["min_stars"] . " AND " .
|
|
|
|
|
- " monster.stars <= " . $this->filters["max_stars"] . " AND " .
|
|
|
|
|
- " rune.assigned_to IS NOT NULL AND " .
|
|
|
|
|
- " rune_alt.assigned_to IS NULL AND " .
|
|
|
|
|
|
|
+ " monster.stars >= " . $this->filters["monster_min_stars"] . " AND " .
|
|
|
|
|
+ " monster.stars <= " . $this->filters["monster_max_stars"] . " AND " .
|
|
|
|
|
+ " rune.stars >= " . $this->filters["rune_min_stars"] . " AND " .
|
|
|
|
|
+ " rune.stars <= " . $this->filters["rune_max_stars"] . " AND " .
|
|
|
|
|
+ " rune.level >= " . $this->filters["rune_min_level"] . " AND " .
|
|
|
|
|
+ " rune.level <= " . $this->filters["rune_max_level"] . " AND " .
|
|
|
|
|
+ " rune.quality >= " . $this->filters["rune_min_quality"] . " AND " .
|
|
|
|
|
+ " rune.quality <= " . $this->filters["rune_max_quality"] . " AND " .
|
|
|
|
|
+ " rune.original_quality >= " . $this->filters["rune_min_original_quality"] . " AND " .
|
|
|
|
|
+ " rune.original_quality <= " . $this->filters["rune_max_original_quality"] . " AND " .
|
|
|
|
|
+ " rune.efficiency >= " . $this->filters["rune_min_efficiency"] . " AND " .
|
|
|
|
|
+ " rune.efficiency <= " . $this->filters["rune_max_efficiency"] . " AND " .
|
|
|
|
|
+ " rune.max_efficiency >= " . $this->filters["rune_min_max_efficiency"] . " AND " .
|
|
|
|
|
+ " rune.max_efficiency <= " . $this->filters["rune_max_max_efficiency"] . " AND " .
|
|
|
" rune.type = rune_alt.type AND " .
|
|
" rune.type = rune_alt.type AND " .
|
|
|
" rune.slot = rune_alt.slot AND " .
|
|
" rune.slot = rune_alt.slot AND " .
|
|
|
" rune.main_stat = rune_alt.main_stat AND " .
|
|
" rune.main_stat = rune_alt.main_stat AND " .
|
|
|
- " ( " .
|
|
|
|
|
- " rune_alt.stars > rune.stars OR " .
|
|
|
|
|
- " ( " .
|
|
|
|
|
- " rune_alt.stars = rune.stars AND " .
|
|
|
|
|
- " rune_alt.original_quality > rune.original_quality" .
|
|
|
|
|
- " ) " .
|
|
|
|
|
- " ) ";
|
|
|
|
|
- if (!$this->filters["in_storage"]){
|
|
|
|
|
|
|
+ " rune_alt.stars >= " . $this->filters["alternative_min_stars"] . " AND " .
|
|
|
|
|
+ " rune_alt.level >= " . $this->filters["alternative_min_level"] . " AND " .
|
|
|
|
|
+ " rune_alt.original_quality >= " . $this->filters["alternative_min_original_quality"] . " AND ";
|
|
|
|
|
+ switch ($this->filters["alternative_source"]){
|
|
|
|
|
+ case 0: // Unassigned
|
|
|
|
|
+ $s = $s . " rune_alt.assigned_to IS NULL AND ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 1: // Unassigned or assigneed to lower star monsters
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " ( " .
|
|
|
|
|
+ " rune_alt.assigned_to IS NULL OR " .
|
|
|
|
|
+ " rune_alt assigned_to IN (SELECT id FROM monster m WHERE m.stars < monster.stars) " .
|
|
|
|
|
+ " ) AND ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ // Case 2: Assigned or unassigned.
|
|
|
|
|
+ }
|
|
|
|
|
+ switch ($this->filters["alternative_condition"]){
|
|
|
|
|
+ case 0: // Higher grade, any quality
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " rune_alt.stars >= rune.stars ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 1: // Higher grade or higher quality
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " ( " .
|
|
|
|
|
+ " rune_alt.stars > rune.stars OR " .
|
|
|
|
|
+ " rune_alt.original_quality > rune.original_quality " .
|
|
|
|
|
+ " ) ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 2: // Equal or higher grade and equal or higher quality
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " rune_alt.stars >= rune.stars AND " .
|
|
|
|
|
+ " rune_alt.original_quality >= rune.original_quality ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 3: // Equal or higher grade and higher quality
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " rune_alt.stars >= rune.stars AND " .
|
|
|
|
|
+ " rune_alt.original_quality > rune.original_quality ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 4: // Equal grade and equal or higher quality
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " rune_alt.stars > rune.stars AND " .
|
|
|
|
|
+ " rune_alt.original_quality >= rune.original_quality ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ default: // Case 5: Higher grade and higher quality
|
|
|
|
|
+ $s = $s .
|
|
|
|
|
+ " rune_alt.stars > rune.stars AND " .
|
|
|
|
|
+ " rune_alt.original_quality > rune.original_quality ";
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (strlen($this->filters["monster_name"]) > 0){
|
|
|
|
|
+ $s = $s . " AND monster.name LIKE = '%" . $this->filters["monster_name"] . "%' ";
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!$this->filters["monster_in_storage"]){
|
|
|
$s = $s . " AND monster.in_storage = 0 ";
|
|
$s = $s . " AND monster.in_storage = 0 ";
|
|
|
}
|
|
}
|
|
|
|
|
+ if (count($this->filters["rune_slot"]) > 0){
|
|
|
|
|
+ $s = $s . " AND rune_slot IN ( ";
|
|
|
|
|
+ foreach($this->filters["rune_slot"] as $t){
|
|
|
|
|
+ $s = $s . "$t, ";
|
|
|
|
|
+ }
|
|
|
|
|
+ $s = $s . "-1) ";
|
|
|
|
|
+ }
|
|
|
$s = $s .
|
|
$s = $s .
|
|
|
"ORDER BY " .
|
|
"ORDER BY " .
|
|
|
" monster.stars DESC, " .
|
|
" monster.stars DESC, " .
|