mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-08-14 15:21:01 +00:00
@@ -3382,13 +3382,18 @@ class Automation {
|
|||||||
if ($dataarray && count($dataarray)) {
|
if ($dataarray && count($dataarray)) {
|
||||||
// preload village data
|
// preload village data
|
||||||
$vilIDs = [];
|
$vilIDs = [];
|
||||||
|
$tos = [];
|
||||||
|
$froms = [];
|
||||||
foreach($dataarray as $data) {
|
foreach($dataarray as $data) {
|
||||||
$vilIDs[$data['from']] = true;
|
$vilIDs[$data['from']] = true;
|
||||||
$vilIDs[$data['to']] = true;
|
$vilIDs[$data['to']] = true;
|
||||||
|
$tos[$data['to']] = true;
|
||||||
|
$froms[$data['from']] = true;
|
||||||
}
|
}
|
||||||
$vilIDs = array_keys($vilIDs);
|
$vilIDs = array_keys($vilIDs);
|
||||||
$database->getProfileVillages($vilIDs, 5);
|
$database->getProfileVillages($vilIDs, 5);
|
||||||
$database->getUnit($vilIDs);
|
$database->getUnit($vilIDs);
|
||||||
|
$database->getEnforce(array_keys($tos), array_keys($froms));
|
||||||
|
|
||||||
// calculate reinforcements data
|
// calculate reinforcements data
|
||||||
$movementProcIDs = [];
|
$movementProcIDs = [];
|
||||||
|
|||||||
+65
-6
@@ -5912,19 +5912,75 @@ References: User ID/Message ID, Mode
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getEnforce($vid, $from, $use_cache = true) {
|
function getEnforce($vid, $from, $use_cache = true) {
|
||||||
list($vid, $from) = $this->escape_input((int) $vid, (int) $from);
|
$array_passed = is_array($vid);
|
||||||
|
if (!$array_passed) {
|
||||||
|
$vid = [$vid];
|
||||||
|
$from = [$from];
|
||||||
|
} else {
|
||||||
|
foreach ($vid as $index => $vidValue) {
|
||||||
|
$vid[$index] = (int) $vidValue;
|
||||||
|
$from[$index] = (int) $from[$index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!count($vid)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
// first of all, check if we should be using cache and whether the field
|
// first of all, check if we should be using cache and whether the field
|
||||||
// required is already cached
|
// required is already cached
|
||||||
if ($use_cache && ($cachedValue = self::returnCachedContent(self::$villageFromReinforcementsCache, $vid.$from)) && !is_null($cachedValue)) {
|
if ($use_cache && !$array_passed && isset(self::$villageFromReinforcementsCache[$vid[0].$from[0]]) && is_array(self::$villageFromReinforcementsCache[$vid[0].$from[0]]) && !count(self::$villageFromReinforcementsCache[$vid[0].$from[0]])) {
|
||||||
|
return $cachedValue;
|
||||||
|
} else if ($use_cache && $array_passed) {
|
||||||
|
// check what we can return from cache
|
||||||
|
$newVIDs = [];
|
||||||
|
$newFROMs = [];
|
||||||
|
foreach ($vid as $index => $vidValue) {
|
||||||
|
if (!isset(self::$villageFromReinforcementsCache[$vidValue.$from[$index]])) {
|
||||||
|
$newVIDs[] = $vidValue;
|
||||||
|
$newFROMs[] = $from[$index];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// everything's cached, just return the cache
|
||||||
|
if (!count($newVIDs)) {
|
||||||
|
return self::$villageFromReinforcementsCache;
|
||||||
|
} else {
|
||||||
|
// update remaining IDs to select and cache
|
||||||
|
$vid = $newVIDs;
|
||||||
|
$from = $newFROMs;
|
||||||
|
}
|
||||||
|
} else if ($use_cache && !$array_passed && ($cachedValue = self::returnCachedContent(self::$villageFromReinforcementsCache, $vid[0].$from[0])) && !is_null($cachedValue)) {
|
||||||
return $cachedValue;
|
return $cachedValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
$q = "SELECT * from " . TB_PREFIX . "enforcement where `from` = $from and vref = $vid";
|
// build SELECT pairs
|
||||||
$result = mysqli_query($this->dblink,$q);
|
$pairs = [];
|
||||||
|
foreach ($vid as $index => $vidValue) {
|
||||||
|
$pairs[] = '(`from` = '.(int) $vidValue.' AND vref = '.(int) $from[$index].')';
|
||||||
|
}
|
||||||
|
|
||||||
self::$villageFromReinforcementsCache[$vid.$from] = mysqli_fetch_assoc($result);
|
$q = "SELECT * FROM " . TB_PREFIX . "enforcement WHERE ".implode(' OR ', $pairs);
|
||||||
return self::$villageFromReinforcementsCache[$vid.$from];
|
$result = $this->mysqli_fetch_all(mysqli_query($this->dblink,$q));
|
||||||
|
|
||||||
|
// return a single value
|
||||||
|
if (!$array_passed) {
|
||||||
|
self::$villageFromReinforcementsCache[$vid[0].$from[0]] = $result[0];
|
||||||
|
} else {
|
||||||
|
foreach ( $result as $record ) {
|
||||||
|
self::$villageFromReinforcementsCache[$record['from'].$record['vref']] = $record;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check for any missing IDs and fill them in with blanks,
|
||||||
|
// since no reinforcements were found for these villages
|
||||||
|
foreach ($vid as $index => $vidValue) {
|
||||||
|
if (!isset(self::$villageFromReinforcementsCache[$vidValue.$from[$index]])) {
|
||||||
|
self::$villageFromReinforcementsCache[$vidValue.$from[$index]] = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ($array_passed ? self::$villageReinforcementsCache : self::$villageReinforcementsCache[$vid[0].$from[0]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOasisEnforce($ref, $mode=0, $use_cache = true) {
|
function getOasisEnforce($ref, $mode=0, $use_cache = true) {
|
||||||
@@ -6068,6 +6124,7 @@ References: User ID/Message ID, Mode
|
|||||||
|
|
||||||
// clear enforce cache
|
// clear enforce cache
|
||||||
self::$villageReinforcementsCache = [];
|
self::$villageReinforcementsCache = [];
|
||||||
|
self::$villageFromReinforcementsCache = [];
|
||||||
self::$reinforcementsCache = [];
|
self::$reinforcementsCache = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6140,6 +6197,8 @@ References: User ID/Message ID, Mode
|
|||||||
$q = "SELECT e.*, v.owner as ownerv, v1.owner as owner1 FROM ".TB_PREFIX."enforcement as e LEFT JOIN ".TB_PREFIX."vdata as v ON e.from=v.wref LEFT JOIN ".TB_PREFIX."vdata as v1 ON e.vref=v1.wref where e.vref IN(".implode(', ', $id).") AND v.owner<>v1.owner";
|
$q = "SELECT e.*, v.owner as ownerv, v1.owner as owner1 FROM ".TB_PREFIX."enforcement as e LEFT JOIN ".TB_PREFIX."vdata as v ON e.from=v.wref LEFT JOIN ".TB_PREFIX."vdata as v1 ON e.vref=v1.wref where e.vref IN(".implode(', ', $id).") AND v.owner<>v1.owner";
|
||||||
} else if ($mode == 3) {
|
} else if ($mode == 3) {
|
||||||
$q = "SELECT e.*, v.owner as ownerv, v1.owner as owner1 FROM ".TB_PREFIX."enforcement as e LEFT JOIN ".TB_PREFIX."vdata as v ON e.from=v.wref LEFT JOIN ".TB_PREFIX."vdata as v1 ON e.vref=v1.wref where e.vref IN(".implode(', ', $id).") AND v.owner=v1.owner";
|
$q = "SELECT e.*, v.owner as ownerv, v1.owner as owner1 FROM ".TB_PREFIX."enforcement as e LEFT JOIN ".TB_PREFIX."vdata as v ON e.from=v.wref LEFT JOIN ".TB_PREFIX."vdata as v1 ON e.vref=v1.wref where e.vref IN(".implode(', ', $id).") AND v.owner=v1.owner";
|
||||||
|
} else if ($mode == 4) {
|
||||||
|
$q = "SELECT e.*, v.owner as ownerv, v1.owner as owner1 FROM ".TB_PREFIX."enforcement as e LEFT JOIN ".TB_PREFIX."vdata as v ON e.from=v.wref LEFT JOIN ".TB_PREFIX."vdata as v1 ON e.vref=v1.wref where e.vref IN(".implode(', ', $id).") AND v.owner=v1.owner";
|
||||||
}
|
}
|
||||||
$result = $this->mysqli_fetch_all(mysqli_query($this->dblink,$q));
|
$result = $this->mysqli_fetch_all(mysqli_query($this->dblink,$q));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user