From 6155c95327e161d9f174163cfba57999721f7a66 Mon Sep 17 00:00:00 2001 From: Christopher Date: Fri, 5 Nov 2021 05:22:07 +0100 Subject: [PATCH] add indexer --- cron/04-object_indexer.php | 75 ++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 31 deletions(-) diff --git a/cron/04-object_indexer.php b/cron/04-object_indexer.php index a3f5008..d38a674 100644 --- a/cron/04-object_indexer.php +++ b/cron/04-object_indexer.php @@ -3,40 +3,53 @@ $regionStatement = $RUNTIME['PDO']->prepare("SELECT regions.RegionName AS Name, regions.RegionUUID AS UUID, regions.RegionImage AS Image, regions.RegionOwner AS OwnerID, users.UserName AS OwnerName, onlinetimes.RegionLastSeen AS LastSeen, onlinetimes.RegionOnlineUser AS OnlineCount, regions.RegionVersion AS RegionVersion, regions.RegionHostname AS Hostname, regions.RegionPort AS Port FROM regions INNER JOIN onlinetimes ON regions.RegionUUID = onlinetimes.RegionUUID INNER JOIN users ON regions.RegionOwner = users.UserUUID ORDER BY RAND() LIMIT 10"); $regionStatement->execute(array()); - while($row = $regionStatement->fetch()) +while($row = $regionStatement->fetch()) +{ + if(ping($row['Hostname'], $row['Port'])) { - if(ping($row['Hostname'], $row['Port'])) + $data = json_decode(getDataFromHTTP("http://".$row['Hostname'].":".$row['Port']."/RegionData", ""), true); + + //Cleanup + $ObjectsCleanupStatement = $RUNTIME['PDO']->prepare("SELECT * FROM parcels WHERE ParcelRegionUUID = ?"); + $ObjectsCleanupStatement->execute(array($row['UUID'])); + while($deleteRow = $ObjectsCleanupStatement->fetch()) { - $data = json_decode(getDataFromHTTP("http://".$row['Hostname'].":".$row['Port']."/RegionData", ""), true); - - foreach ($data['Parcels'] as $Parcel) - { - //Add User to DB if not exist - $QueueStatement = $RUNTIME['PDO']->prepare("INSERT IGNORE INTO users VALUES (?, ?, ?)"); - $QueueStatement->execute(array($Parcel['Owner']['UUID'], $Parcel['Owner']['Name'], "")); - - //Add Parcel to DB if not exist - $QueueStatement = $RUNTIME['PDO']->prepare("INSERT IGNORE INTO parcels VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - $QueueStatement->execute(array($Parcel['Parent'], $Parcel['UUID'], $Parcel['Name'], $Parcel['Description'], $Parcel['Sale'], $Parcel['InSearch'], $Parcel['Price'], $Parcel['Owner']['UUID'], $Parcel['Image'], $Parcel['Bitmap'], $Parcel['Traffic'])); - } - - //Add Objects - if(count($data['Objects']) != 0) - { - $rawSQLString = "INSERT IGNORE INTO objects VALUES "; - $rawSQLData = array(); - foreach ($data['Objects'] as $Object) - { - $rawSQLString .= " (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"; - array_push($rawSQLData, $Object['UUID'], $Object['Parent'], $Object['Name'], $Object['Description'], $Object['Image'], $Object['InSearch'], $Object['Sale'], $Object['Price'], $Object['Copy'], $Object['Position'], $Object['Owner']['UUID']); - } - - $QueueStatement = $RUNTIME['PDO']->prepare(rtrim($rawSQLString, ",")); - $QueueStatement->execute($rawSQLData); - } - - print_r($data); + $QueueStatement = $RUNTIME['PDO']->prepare("DELETE FROM objects WHERE ObjectParcelUUID = ?"); + $QueueStatement->execute(array($deleteRow['ParcelUUID'])); } + + $QueueStatement = $RUNTIME['PDO']->prepare("DELETE FROM parcels WHERE ParcelRegionUUID = ?"); + $QueueStatement->execute(array($row['UUID'])); + + //Add Parcels + foreach ($data['Parcels'] as $Parcel) + { + //Add User to DB if not exist + $QueueStatement = $RUNTIME['PDO']->prepare("INSERT IGNORE INTO users VALUES (?, ?, ?)"); + $QueueStatement->execute(array($Parcel['Owner']['UUID'], $Parcel['Owner']['Name'], "")); + + //Add Parcel to DB if not exist + $QueueStatement = $RUNTIME['PDO']->prepare("INSERT IGNORE INTO parcels VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + $QueueStatement->execute(array($Parcel['Parent'], $Parcel['UUID'], $Parcel['Name'], $Parcel['Description'], $Parcel['Sale'], $Parcel['InSearch'], $Parcel['Price'], $Parcel['Owner']['UUID'], $Parcel['Image'], $Parcel['Bitmap'], $Parcel['Traffic'])); + } + + //Add Objects + if(count($data['Objects']) != 0) + { + $rawSQLString = "INSERT IGNORE INTO objects VALUES "; + $rawSQLData = array(); + foreach ($data['Objects'] as $Object) + { + $rawSQLString .= " (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?),"; + array_push($rawSQLData, $Object['UUID'], $Object['Parent'], $Object['Name'], $Object['Description'], $Object['Image'], $Object['InSearch'], $Object['Sale'], $Object['Price'], $Object['Copy'], $Object['Position'], $Object['Owner']['UUID']); + } + + $QueueStatement = $RUNTIME['PDO']->prepare(rtrim($rawSQLString, ",")); + $QueueStatement->execute($rawSQLData); + } + + print_r($data); } +} ?> \ No newline at end of file