|
|
@@ -1,18 +1,9 @@
|
|
|
<?php
|
|
|
|
|
|
require_once($path["page"] . "Page.php");
|
|
|
+ require_once($path["entity"] . "Custom_Filter.php");
|
|
|
require_once($path["entity"] . "Unit.php");
|
|
|
require_once($path["entity"] . "Rune.php");
|
|
|
-
|
|
|
- class Upgrade{
|
|
|
- private $db;
|
|
|
- public $unit = null;
|
|
|
- public $rune = [];
|
|
|
-
|
|
|
- public function __construct($db){
|
|
|
- $this->db = $db;
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* Upgradeable runes report page.
|
|
|
@@ -32,9 +23,9 @@
|
|
|
"rune_min_level" => 0,
|
|
|
"rune_max_level" => 15,
|
|
|
"rune_min_quality" => 0,
|
|
|
- "rune_max_quality" => 4,
|
|
|
+ "rune_max_quality" => 5,
|
|
|
"rune_min_original_quality" => 0,
|
|
|
- "rune_max_original_quality" => 4,
|
|
|
+ "rune_max_original_quality" => 5,
|
|
|
"rune_min_efficiency" => 0,
|
|
|
"rune_max_efficiency" => 100,
|
|
|
"rune_min_max_efficiency" => 0,
|
|
|
@@ -47,6 +38,11 @@
|
|
|
"alternative_source" => 0,
|
|
|
];
|
|
|
|
|
|
+ /**
|
|
|
+ * Custom filters for this page.
|
|
|
+ */
|
|
|
+ public $custom_filters = [];
|
|
|
+
|
|
|
/**
|
|
|
* List of available upgrades. Can be described as:
|
|
|
* $upgrades = [
|
|
|
@@ -73,10 +69,16 @@
|
|
|
public function __construct($db){
|
|
|
global $path;
|
|
|
global $root;
|
|
|
+ global $UID;
|
|
|
parent::__construct($db);
|
|
|
$this->view = $path["view"] . "report_runeupgrade.php";
|
|
|
$this->parse_filters();
|
|
|
- $s = $this->build_query();
|
|
|
+ if (!isset($_GET["custom_filter"])){
|
|
|
+ $s = $this->build_query();
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ $s = $this->build_custom_query($_GET["custom_filter"]);
|
|
|
+ }
|
|
|
$q = $this->db->query($s);
|
|
|
$prev_monster = "";
|
|
|
$prev_rune = "";
|
|
|
@@ -121,6 +123,18 @@
|
|
|
// Last entries
|
|
|
array_push($upgrade["upgrade"], $rupgrade);
|
|
|
array_push($this->upgrades, $upgrade);
|
|
|
+ // Get custom filters for the form
|
|
|
+ $s = "
|
|
|
+ SELECT id
|
|
|
+ FROM filter
|
|
|
+ WHERE
|
|
|
+ uid = '$UID' AND
|
|
|
+ page = 'REPORT_RUNEUPGRADE';
|
|
|
+ ";
|
|
|
+ $q = $this->db->query($s);
|
|
|
+ while ($r = $q->fetchArray(SQLITE3_ASSOC)){
|
|
|
+ array_push($this->custom_filters, new Custom_Filter($this->db, $r["id"]));
|
|
|
+ }
|
|
|
$this->title = "Replaceable runes - SWDB";
|
|
|
$this->description = "Find equiped runes that can be substituted for better ones.";
|
|
|
$this->canonical = $root . "report/runeupgrade/";
|
|
|
@@ -213,6 +227,60 @@
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Builds the query to the rune table using the a custom filter.
|
|
|
+ *
|
|
|
+ * @param int $filter Custom filter ID.
|
|
|
+ * @return The query to be executed.
|
|
|
+ */
|
|
|
+ private function build_custom_query($filter){
|
|
|
+ global $UID;
|
|
|
+ $s = "
|
|
|
+ SELECT condition
|
|
|
+ FROM filter
|
|
|
+ WHERE
|
|
|
+ uid = '$UID' AND
|
|
|
+ id = $filter;
|
|
|
+ ";
|
|
|
+ $q = $this->db->query($s);
|
|
|
+ $r = $q->fetchArray(SQLITE3_ASSOC);
|
|
|
+ $cond = $r["condition"];
|
|
|
+ $s = "
|
|
|
+ SELECT
|
|
|
+ unit.id AS unit,
|
|
|
+ rune.id AS id,
|
|
|
+ rune_alt.id AS alternative
|
|
|
+ FROM
|
|
|
+ rune,
|
|
|
+ rune rune_alt,
|
|
|
+ unit,
|
|
|
+ k_unit
|
|
|
+ WHERE
|
|
|
+ unit.uid = '$UID' AND
|
|
|
+ rune.uid = '$UID' AND
|
|
|
+ rune_alt.uid = '$UID' AND
|
|
|
+ unit.id = rune.assigned_to AND
|
|
|
+ unit.unit = k_unit.id AND
|
|
|
+ rune.type = rune_alt.type AND
|
|
|
+ rune.slot = rune_alt.slot AND
|
|
|
+ rune.main_stat = rune_alt.main_stat AND
|
|
|
+ rune.id <> rune_alt.id AND
|
|
|
+ (
|
|
|
+ $cond
|
|
|
+ )
|
|
|
+ ORDER BY
|
|
|
+ unit.stars DESC,
|
|
|
+ unit.level DESC,
|
|
|
+ unit.id,
|
|
|
+ rune.slot,
|
|
|
+ id,
|
|
|
+ rune_alt.stars DESC,
|
|
|
+ rune_alt.original_quality DESC,
|
|
|
+ rune_alt.main_stat_value DESC;
|
|
|
+ ";
|
|
|
+ return $s;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Builds the query for the page, using the providded or default filters.
|
|
|
*
|