function makeUserFromRaw($userRaw, $type = "info", $lang = "en") { include_once "bintypes.php"; include_once "bin.php"; include_once "pointObject.php"; $newUser = new Collection(); $newUser->UserId = (int) $userRaw[0]; $validTypes = ["info", "full", "points", "bins"]; $valid = false; for ($i = 0; $i < count($validTypes); $i++) { if ($type == $validTypes[$i]) { $valid = true; } } if (!$valid) { $type = "info"; } if ($type == "info" || $type == "full") { $newUser->Name = html_entity_decode($userRaw[1], ENT_QUOTES); $newUser->Email = $userRaw[3]; } if ($type == "points" || $type == "full") { if (json_decode($userRaw[4]) == null) { $newUser->Points = new PointObject(); } else { $newUser->Points = json_decode($userRaw[4]); } } if ($type == "bins" || $type == "full") { $newUser->Bins = []; $binsRaw = GetBinsFromUser($userRaw[0]); for ($b = 0; $b < count($binsRaw); $b++) { $newBin = makeBinFromRaw($binsRaw[$b], $lang); array_push($newUser->Bins, $newBin); } } return $newUser; }
function EditBinWeight($id, $weight) { include_once "exchangeRates.php"; include_once "pointObject.php"; include_once "bin.php"; $binOld = makeBinFromRaw(GetBin($id), "en"); $oldWeight = $binOld->CurrentWeight; $weightDiff = max(0, $weight - $oldWeight); $link = Connect(); $time = time(); $sql = "INSERT INTO `history` (binId, weight, unixStamp) VALUES ('{$id}', '{$weight}', '{$time}')"; mysqli_query($link, $sql); $bin = GetBin($id); $typeId = (int) $bin[3]; $typeName = binTypes($bin[3], "en"); // award points $toAward = new PointObject(); $points = array(); switch ($typeName) { case "Waste": $toAward->Waste = $weightDiff * getExchangeRates()->waste; break; case "Plastic": $toAward->Plastic = $weightDiff * getExchangeRates()->plastic; break; case "Glass": $toAward->Glass = $weightDiff * getExchangeRates()->glass; break; case "Organic": $toAward->Organic = $weightDiff * getExchangeRates()->organic; break; case "Tin": $toAward->Tin = $weightDiff * getExchangeRates()->tin; break; case "Paper": $toAward->Paper = $weightDiff * getExchangeRates()->paper; break; case "Chemical": $toAward->Chemical = $weightDiff * getExchangeRates()->chemical; break; } $userId = (int) $bin[1]; $user = makeUserFromRaw(GetUser($userId), "full"); $newPoints = new PointObject(); $newPoints->Add($user->Points); $newPoints->Add($toAward); $user->Points = $newPoints; $user->Points->RemoveNegative(); EditUserPoints($user->UserId, json_encode($user->Points)); // return $toAward; }
array_push($errors, "Owner not set"); $success = false; } if ($newType == "") { array_push($errors, "Type not set"); $success = false; } if ($success) { $bin = RegisterNewBin($newOwner, $newName, $newType); echo json_encode(makeBinFromRaw($bin, $lang)); } else { echo '{"errors":' . json_encode($errors) . '}'; } } else { $binsRaw = GetAllBins(); if (!isset($_GET["id"])) { $bins = []; for ($i = 0; $i < count($binsRaw); $i++) { $newBin = makeBinFromRaw($binsRaw[$i], $lang); array_push($bins, $newBin); } echo json_encode($bins); } else { for ($i = 0; $i < count($binsRaw); $i++) { $newBin = makeBinFromRaw($binsRaw[$i], $lang); if ($newBin->BinId == $_GET["id"]) { echo json_encode($newBin); } } } }