예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
        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);
            }
        }
    }
}