Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //$GLOBALS['savepoint'] = "test";
- // Setup error reporting
- // All errors are sent to C:/wamp/www/storage.log
- ini_set('error_reporting', E_ALL);
- error_reporting(E_ALL);
- ini_set('log_errors',TRUE);
- ini_set('html_errors',FALSE);
- ini_set('error_log','storage.log');
- ini_set('display_errors',FALSE);
- // Utility functions
- function fail($closeDB=false, $rollbackAndCommit=false)
- {
- $mysqlerror = mysql_error();
- if($mysqlerror == "") $mysqlerror="No MySQL error";
- ob_start();
- debug_print_backtrace();
- error_log($mysqlerror."\n".ob_get_clean()."-----------");
- if($rollbackAndCommit)
- {
- mysql_query("ROLLBACK;");
- mysql_query("COMMIT;");
- }
- if($closeDB) mysql_close();
- header(' ', true, 400);
- exit();
- }
- function mExit($message, $closeDB)
- {
- echo $message;
- if($closeDB) mysql_close();
- exit();
- }
- function openDB()
- {
- mysql_connect('localhost','root','','sorting_system') or fail(false);
- mysql_select_db('sorting_system') or fail(false);
- }
- // Storage query functions
- function checkSorterIsInited($sorterID)
- {
- $result = mysql_query("SELECT sorterID FROM sorters2 WHERE sorterID=$sorterID;");
- if(!$result) return -1;
- if(mysql_num_rows($result) > 0) return 1;
- else return 0;
- }
- function checkIDExists($itemID)
- {
- $result = mysql_query("SELECT id FROM items WHERE id=$itemID;");
- if(!$result) return -1;
- if(mysql_num_rows($result) > 0) return 1;
- else return 0;
- }
- function checkNameExists($itemName)
- {
- $result = mysql_query("SELECT name FROM items WHERE name='$itemName';");
- if(!$result) return -1;
- if(mysql_num_rows($result) > 0) return 1;
- else return 0;
- }
- function getItemStackSize($itemID)
- {
- $result = mysql_query("SELECT stacksize FROM items WHERE id=$itemID;");
- if(!$result) return -1;
- $row = mysql_fetch_row($result);
- return $row[0];
- }
- function checkBankForItem($sorterID, $itemID)
- {
- $result = mysql_query("SELECT * FROM sorters2 WHERE sorterID=$sorterID;");
- if(!$result) return -1;
- $row = mysql_fetch_row($result);
- for($i=2; $i<4; ++$i)
- if($row[$i] == $itemID)
- if($row[$i+2] < $row[$i+4])
- return $i-1;
- return -2;
- }
- function otherBanksHaveItem($sorterID, $itemID)
- {
- $result = mysql_query("SELECT * FROM sorters2 WHERE sorterID!=$sorterID;");
- if(!$result) return -1;
- while ($row = mysql_fetch_row($result))
- {
- for($i=2; $i<4; ++$i)
- if($row[$i] == $itemID)
- if($row[$i+2] < $row[$i+4])
- return 1;
- }
- return 0;
- }
- function updateChestCount($sorterID, $chestNum, $amount)
- {
- if(!mysql_query("UPDATE sorters2 SET chest".$chestNum."Count=chest".$chestNum."Count+$amount WHERE sorterID=$sorterID;")) return -1;
- return 1;
- }
- function dropAllIntoChest($sorterID, $chestNum, &$amount)
- {
- $result = mysql_query("SELECT * FROM sorters2 WHERE sorterID=$sorterID;");
- if(!$result) return -1;
- $row = mysql_fetch_row($result);
- $availableSpace = $row[$chestNum+5] - $row[$chestNum+3];
- if($amount > $availableSpace)
- {
- updateChestCount($sorterID, $chestNum, $availableSpace);
- $amount -= $availableSpace;
- return "$availableSpace>$chestNum,";
- }
- else
- {
- updateChestCount($sorterID, $chestNum, $amount);
- $command = "$amount>$chestNum,";
- $amount = 0;
- return $command;
- }
- }
- function getFirstUnusedChest($sorterID)
- {
- $result = mysql_query("SELECT chest1ID, chest2ID FROM sorters2 WHERE sorterID=$sorterID;");
- if(!$result) return -1;
- $row = mysql_fetch_row($result);
- for($i=0; $i<2; ++$i)
- if($row[$i] <= 0)
- return $i+1;
- return -2;
- }
- function initChest($sorterID, $chestNum, $itemID)
- {
- $result = mysql_query("SELECT chest".$chestNum."Slots FROM sorters2 WHERE sorterID=$sorterID;");
- if(!$result) return -1;
- $row = mysql_fetch_row($result);
- if(!mysql_query("UPDATE sorters2 SET chest".$chestNum."ID=$itemID,chest".$chestNum."Max=".($row[0]*getItemStackSize($itemID)).",chest".$chestNum."Count=0 WHERE sorterID=$sorterID;")) return -1;
- }
- function clearChest($sorterID, $chestNum)
- {
- if(!mysql_query("UPDATE sorters2 SET chest".$chestNum."Count=0,chest".$chestNum."ID=0,chest".$chestNum."Max=0 WHERE sorterID=".$sorterID.";")) return -1; return 1;
- }
- function checkAllOtherChestsForItem($sorterID, $chestNum, $itemID) // Checks every chest in the system other than the selected one for an item
- {
- $query = "SELECT * FROM sorters2;";
- $result = mysql_query($query);
- if(!$result) return -1;
- while ($row = mysql_fetch_row($result))
- {
- for($i=2; $i<4; ++$i)
- {
- if($sorterID == $row[0] and $i-1==$chestNum)
- continue;
- if($row[$i] == $itemID)
- if($row[$i+2] < $row[$i+6])
- return 1;
- }
- }
- return 0;
- }
- // GET functions
- function getUserComputer()
- {
- openDB();
- $result = mysql_query("SELECT userComp FROM info WHERE row=1;");
- if(!$result) fail(true);
- echo mysql_fetch_row($result)[0];
- mysql_close();
- }
- function getSorterDirection()
- {
- isset($_GET['sID']) or fail();
- openDB();
- switch(checkSorterIsInited($_GET['sID']))
- {
- case -1: case 0: fail(true);
- }
- $result = mysql_query("SELECT sorterDirection FROM sorters2 WHERE sorterID=".$_GET['sID'].";");
- if(!$result) fail(true);
- $row = mysql_fetch_row($result);
- echo $row[0];
- mysql_close();
- }
- function getStackSizeAndCatigoryByID()
- {
- isset($_GET['iID']) or fail();
- openDB();
- $size = getItemStackSize($_GET['iID']);
- if($size == -1) fail(true);
- else echo $size;
- echo ",";
- $result = mysql_query("SELECT catigory FROM items WHERE id=".$_GET['iID']);
- if(!$result) fail(true);
- $row = mysql_fetch_row($result);
- if(empty($row[0])) fail(true);
- echo $row[0];
- mysql_close();
- }
- /*maybe dont need*/function getStackSizeByID()
- {
- isset($_GET['iID']) or fail();
- openDB();
- $size = getItemStackSize($_GET['iID']);
- if($size == -1) fail(true);
- else echo $size;
- mysql_close();
- }
- /*maybe dont need*/ function getCatigoryByID()
- {
- isset($_GET['iID']) or fail();
- openDB();
- $result = mysql_query("SELECT catigory FROM items WHERE id=".$_GET['iID']);
- if(!$result) fail(true);
- $row = mysql_fetch_row($result);
- if(empty($row[0])) fail(true);
- echo $row[0];
- mysql_close();
- }
- function getCatigories()
- {
- openDB();
- $result = mysql_query("SELECT DISTINCT catigory FROM items ORDER BY catigory;");
- if(!$result) fail();
- while ($row = mysql_fetch_row($result))
- echo $row[0] . ",";
- mysql_close();
- }
- function listItemsByCatigory()
- {
- isset($_GET['catigory']) or fail();
- openDB();
- $result = mysql_query("SELECT name FROM items WHERE ((id IN (SELECT chest1ID FROM sorters2 WHERE chest1Count>0)) OR (id IN (SELECT chest2ID FROM sorters2 WHERE chest2Count>0))) AND catigory='".$_GET['catigory']."' ORDER BY name;");
- if(!$result) fail(true);
- while ($row = mysql_fetch_row($result))
- echo $row[0] . ",";
- mysql_close();
- }
- function getStacksizeByName()
- {
- isset($_GET['name']) or fail();
- openDB();
- $result = mysql_query("SELECT stacksize FROM items WHERE name='".$_GET['name']."';");
- if(!$result) fail(true);
- $row = mysql_fetch_row($result);
- echo $row[0];
- mysql_close();
- }
- function getItemAmountByName()
- {
- isset($_GET['name']) or fail();
- openDB();
- $result = mysql_query("SELECT id FROM items WHERE name='".$_GET['name']."';");
- if(!$result) fail(true);
- $row = mysql_fetch_row($result);
- $iID = $row[0];
- if(!$iID) fail(true);
- $result = mysql_query("SELECT chest1ID,chest2ID,chest1Count,chest2Count FROM sorters2 WHERE chest1ID=$iID OR chest2ID=$iID;");
- if(!$result) fail(true);
- $total = 0;
- while ($row = mysql_fetch_row($result))
- for($i=0;$i<2;++$i)
- if($row[$i] == $iID)
- $total += $row[$i+2];
- echo $total;
- mysql_close();
- }
- // POST functions
- function addItem()
- {
- isset($_POST['iID']) or fail();
- isset($_POST['stacksize']) or fail();
- isset($_POST['name']) or fail();
- isset($_POST['catigory']) or fail();
- $meta = 0;
- if(isset($_POST['meta'])) $meta = $_POST['meta'];
- $id = $_POST['iID'] + ($meta * 32768);
- openDB();
- mysql_query("INSERT INTO items (id, stacksize, name, catigory) VALUES ($id, " . $_POST['stacksize'] . ", '" . $_POST['name'] . "', '".$_POST['catigory']."');") or fail(true);
- echo "Success.";
- mysql_close();
- }
- function setUserComputer()
- {
- openDB();
- if(!mysql_query("UPDATE info SET userComp=".$_POST['cID']." WHERE row=1;"))
- fail(true);
- mysql_close();
- }
- function initSorter()
- {
- $sorterID = $_POST['sID'];
- isset($sorterID) or fail();
- openDB();
- switch(checkSorterIsInited($sorterID))
- {
- case -1: fail(true);
- case 1: mExit("Already initialized.", true);
- }
- mysql_query("INSERT INTO sorters2 (sorterID,sorterDirection) VALUES ($sorterID,-1);") or fail(true);
- mysql_close();
- }
- function setChestSizes()
- {
- $sorterID = $_POST['sID'];
- isset($sorterID) or fail();
- isset($_POST['chest1']) or fail();
- isset($_POST['chest2']) or fail();
- if($_POST['chest1'] == -1 or $_POST['chest2'] == -1) fail();
- openDB();
- mysql_query("BEGIN;") or fail(true);
- mysql_query("UPDATE sorters2 SET chest1Slots=".$_POST['chest1'].",chest2Slots=".$_POST['chest2']." WHERE sorterID=$sorterID;") or fail(true, true);
- $result = mysql_query("SELECT * FROM sorters2 WHERE sorterID=$sorterID;") or fail(true, true);
- $row = mysql_fetch_row($result);
- for($i=2; $i<4; ++$i)
- {
- if($row[$i] > 0 and checkIDExists($row[$i]) == 1)
- {
- $max = $row[$i+6]*getItemStackSize($row[$i]);
- if($max < 0 or !mysql_query("UPDATE sorters2 SET chest".($i-1)."Max=$max WHERE sorterID=$sorterID;"))
- fail(true, true);
- }
- }
- mysql_query("COMMIT;") or fail(true, true);
- mysql_close();
- }
- function setSorterDirection()
- {
- $dir = $_POST['dir'];
- isset($_POST['sID']) or fail();
- isset($dir) or fail();
- openDB();
- switch(checkSorterIsInited($_POST['sID']))
- {
- case -1: case 0: fail(true);
- }
- if($dir > 3 or $dir < 0)
- fail(true);
- mysql_query("UPDATE sorters2 SET sorterDirection=\"$dir\" WHERE sorterID=".$_POST['sID'].";") or fail(true);
- mysql_close();
- }
- function recieveItem()
- {
- $sorterID = $_POST['sID'];
- $itemID = $_POST['iID'];
- $amount = $_POST['amt'];
- isset($sorterID) or fail();
- isset($itemID) or fail();
- isset($amount) or fail();
- openDB();
- mysql_query("BEGIN;") or fail(true);
- if(checkIDExists($itemID) != 1) fail(true, true);
- if(checkSorterIsInited($sorterID) != 1) fail(true, true);
- $i=0;
- for(;$i<10;++$i)
- {
- $chest = checkBankForItem($sorterID, $itemID);
- if($chest == -1)
- {
- fail(true, true);
- }
- elseif($chest > 0)
- {
- $command = dropAllIntoChest($sorterID, $chest, $amount);
- if($command == -1)
- fail(true, true);
- else
- echo $command;
- }
- else
- {
- $otherBanks = otherBanksHaveItem($sorterID, $itemID);
- if($otherBanks == -1)
- {
- fail(true, true);
- }
- else if($otherBanks == 1)
- {
- echo "SENDNEXT,";
- break;
- }
- else
- {
- $firstEmpty = getFirstUnusedChest($sorterID);
- if($firstEmpty == -1)
- {
- fail(true, true);
- }
- else if($firstEmpty == -2)
- {
- echo "SENDNEXT,";
- break;
- }
- else
- {
- if(initChest($sorterID, $firstEmpty, $itemID) == -1)
- fail(true, true);
- $command = dropAllIntoChest($sorterID, $firstEmpty, $amount);
- if($command == -1)
- fail(true, true);
- else
- echo $command;
- }
- }
- }
- if($amount <= 0)
- break;
- }
- if($i>=9) fail(true, true);
- mysql_query("COMMIT;") or fail(true, true);
- mysql_close();
- }
- function pullItem()
- {
- isset($_POST['name']) or fail();
- isset($_POST['amt']) or fail();
- openDB();
- mysql_query("BEGIN;") or fail(true);
- $nameExists = checkNameExists($_POST['name']);
- if($nameExists == -1) fail(true, true);
- elseif($nameExists == 0) fail(true, true);
- $result = mysql_query("SELECT id FROM items WHERE name='".$_POST['name']."';");
- if(!$result) fail(true, true);
- $row = mysql_fetch_row($result);
- $iID = $row[0];
- $result = mysql_query("SELECT * FROM sorters2 WHERE chest1ID=$iID OR chest2ID=$iID;");
- if(!$result) fail(true, true);
- $amount_left = $_POST['amt'];
- while ($row = mysql_fetch_row($result))
- {
- for($i=2;$i<4;++$i)
- {
- $chestNum = $i-1;
- if($row[$i] == $iID)
- {
- $count = $row[$i+2];
- if($count <= 0)
- {
- continue;
- }
- elseif($count <= $amount_left)
- {
- if(updateChestCount($row[0], $chestNum, -$count) == -1)
- {
- fail(true, true);
- }
- else
- {
- echo "PULL ".$row[0]." $chestNum $iID $count,";
- if(checkAllOtherChestsForItem($row[0], $chestNum, $iID)==1)
- //setChestCountToZero($row[0], $chestNum);
- //else
- clearChest($row[0], $chestNum);
- }
- $amount_left -= $count;
- }
- else
- {
- if(updateChestCount($row[0], $chestNum, -$amount_left) == -1)
- fail(true, true);
- else
- echo "PULL ".$row[0]." $chestNum $iID $amount_left,";
- $amount_left = 0;
- }
- }
- if($amount_left <= 0) break;
- }
- if($amount_left <= 0) break;
- }
- //if($amount_left > 0)
- // $lua_command .= "NOTIFY not_enough";
- mysql_query("COMMIT;") or fail(true, true);
- mysql_close();
- }
- if(isset($_GET['func']))
- $_GET['func']();
- else
- fail();
- //mysql_connect('localhost','root','','sorting_system') or fail(false);
- //mysql_select_db('sorting_system') or fail(false);
- //echo updateChestCount(1, 1, 3); echo mysql_error();
- //mysql_close();
- //mysql_query("BEGIN;"); echo mysql_error()."<br>";
- //mysql_query("SAVEPOINT aidan"); echo mysql_error()."<br>";
- //updateChestCount(1, 1, 3);
- //if(isset($_GET['rollback']))
- // mysql_query("ROLLBACK;"); echo mysql_error()."<br>";
- //mysql_query("COMMIT;"); echo mysql_error()."<br>";
- //mysql_close();
- //mysql_query("ROLLBACK TO SAVEPOINT aidan"); echo mysql_error()."<br>";
- //mysql_query("COMMIT"); echo mysql_error()."<br>";
- //
- //$id = mysql_connect('localhost','root','','sorting_system') or fail(false);
- //mysql_select_db('sorting_system') or fail(false);
- //openDB();
- //updateChestCount(1, 1, 3);
- //echo $id;
- //mysqli_rollback($id);
- //echo mysql_query("SAVEPOINT aidansave");
- //echo "<br>";
- //echo mysql_error();
- //echo "<br>";
- //
- //sleep(5);
- //echo "<br>";
- //echo mysql_query("ROLLBACK TO SAVEPOINT aidansave");//("SAVEPOINT start");
- //echo "<br>";
- //echo mysql_error();
- // function test()
- // {
- // echo $GLOBALS['savepoint'];
- // }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement