Blame | Last modification | View Log | RSS feed
<?phpinclude_once('php/exchangeRates.php');include_once('php/countryCodes.php');include_once('php/constants.php');include_once('php/ebay.php');// search for itemsfunction searchAll($searchKey) {$arr = [];$newArr = [];if ($_SESSION["filterConditionNew"]) { $arr = get_ebay($searchKey, constant("NEW")); }if ($_SESSION["filterConditionUsed"]) { $newArr = get_ebay($searchKey, constant("USED")); }$arr = array_merge($arr, $newArr);$arr = applyExchangeRates($arr);usort($arr, 'compare_price');return $arr;}// build HTML table from arrayfunction buildTable($arr) {$str = "<div class=\"table\">";$str .= "<table class=\"table table-striped table-condensed small\">";$str .= "<thead class=\"thead-dark sticky-top\"><tr><th>Image</th><th class=\"text-left\">Title / Merchant</th><th>Condition</th><th class=\"hide-small\">Price</th><th class=\"hide-small\">S/H</th><th>Total</th><th></th></tr></thead>";$str .= "<tbody>";foreach ($arr as $value) {$url = base64_encode($value["URL"]);$str .= "<tr>";// Image$str .= "<td><a href=\"php/redirect.php?target=" . $url . "\" target=\"_blank\"><img class=\"img-fluid\" src=\"" . $value["Image"] . "\" alt=\"Item Image\"></a></td>";// Title / Merchant$str .= "<td class=\"text-left\"><span class=\"font-weight-bold\">" . $value["Title"] . "</span><br/>";$str .= "<span class=\"font-weight-bold\">" . $value["Merchant"] . "</span><br/>" . $value["SellerName"] . " (" . number_format($value["FeedbackScore"], 0, "", ",") . " / " . $value["FeedbackPercent"] . "%)</td>";// Condition$str .= "<td>";$categoryImage = "";$tooltip = "";switch ($value["Category"]) {case "CD":$categoryImage = "cd";$tooltip = "Compact Disc";break;case "Record":$categoryImage = "vinyl";$tooltip = "Vinyl Record";break;case "Digital":$categoryImage = "digital";$tooltip = "Digital Download";break;}$str .= "<span class=\"font-weight-bold\">" . $value["Condition"] . "</span>";$str .= "<br/><br/>";$str .= "<img class=\"img-fluid\" title=\"" . $tooltip . "\" data-toggle=\"tooltip\" data-placement=\"right\" data-delay=\"200\" style=\"max-height:32px\" src=\"images/" . "$categoryImage" . ".png\">";$str .= "</td>";// Price$str .= "<td class=\"hide-small\">" . print_monetary($value["Price"], $value["Currency"]);if ($value["Currency"] != $_SESSION["buyerCurrency"]) {$str .= "<br/>≈ " . print_monetary($value["ConvertedPrice"], $_SESSION["buyerCurrency"]);}$str .= "</td>";// Shipping and Handling Cost$str .= "<td class=\"hide-small\">";if ($value["ShippingCost"] == 0.00) {$str .= "Free Shipping";} else {$str .= print_monetary($value["ShippingCost"], $value["ShippingCurrency"]);}if ($value["ShippingCurrency"] != $_SESSION["buyerCurrency"]) {$str .= "<br/>≈ " . print_monetary($value["ConvertedShippingCost"], $_SESSION["buyerCurrency"]);}$str .= "<br/>Ships from <img class=\"img-fluid\" title=\"" . getCountry($value["Country"]) . "\" data-toggle=\"tooltip\" data-placement=\"right\" data-delay=\"200\" src=\"images/flags/" . $value["Country"] . ".png\" alt=\"" . getCountry($value["Country"]) . " Flag\"></td>";// Total Price$str .= "<td class=\"font-weight-bolder\">" . print_monetary($value["ConvertedTotalPrice"], $_SESSION["buyerCurrency"]) . "</td>";// Link//$str .= "<td><a href=\"php/redirect.php?target=" . $url . "\" target=\"_blank\"><img class=\"img-fluid\" src=\"images/button_buy-it-now.png\" alt=\"Buy Iy Now\"></a></td>";$str .= "<td><a class=\"btn btn-danger\" role=\"button\" href=\"php/redirect.php?target=" . $url . "\" target=\"_blank\">Buy It Now</a></td>";$str .= "</tr>";}$str .= "</tbody>";$str .= "<tfoot class=\"text-right\"><tr><td colspan=\"7\">Prices retrieved on " . gmdate("Y-m-d H:i") . " UTC<br>Daily exchange rates updates</td></tr></tfoot>";$str .= "</table>";$str .= "</div>";return($str);}// print summary/header on top of listing tablefunction printTableHeader() {$str = '<div class="container-fluid row text-left mb-3 bg-light">';$str .= ' <div class="col-lg-2 col-md-3 col-sm-4';if ($_SESSION["lowNew"] <= 0) {$str .= " opacity-5";}$str .= '">';$str .= ' <span class="display-4 font-weight-bolder">New</span><br>from ' . print_monetary($_SESSION["lowNew"], $_SESSION["buyerCurrency"]);$str .= ' </div>';$str .= ' <div class="col-lg-2 col-md-3 col-sm-4';if ($_SESSION["lowUsed"] <= 0) {$str .= " opacity-5";}$str .= '">';$str .= ' <span class="display-4 font-weight-bolder">Used</span><br>from ' . print_monetary($_SESSION["lowUsed"], $_SESSION["buyerCurrency"]);$str .= ' </div>';// BUGBUG Digital$str .= '</div>';return $str;}// compare price for sort low to highfunction compare_price($a, $b){return strnatcmp($a['ConvertedTotalPrice'], $b['ConvertedTotalPrice']);}// print monetary values with correct symbol and thousands/decimal delimitersfunction print_monetary($num, $curr) {if ($curr == "USD") {return("$" . number_format($num, 2, '.', ','));} else if ($curr == "CAD") {return("C $" . number_format($num, 2, '.', ','));} else if ($curr == "EUR") {return(number_format($num, 2, ',', '.') . "€");} else if ($curr == "GBP") {return("£" . number_format($num, 2, '.', ','));} else if ($curr == "AUD") {return("AU $" . number_format($num, 2, '.', ','));}return ($curr . " " . number_format($num, 2, '.', ','));}// find lowest used / new prices and return their array indexfunction findLowest($arr, $type) {foreach ($arr as $value) {if ($type == $value["Type"]) {return($value["ConvertedTotalPrice"]);}}return(0);}// apply exchange ratesfunction applyExchangeRates($arr) {foreach ($arr as &$value) {$value["ConvertedPrice"] = $value["Price"];$value["ConvertedShippingCost"] = $value["ShippingCost"];if ($_SESSION["buyerCurrency"] != $value["Currency"]) {$value["ConvertedPrice"] = number_format($value["Price"] / getExchangeRate($_SESSION["buyerCurrency"], $value["Currency"]), 2, '.', '');}if ($_SESSION["buyerCurrency"] != $value["ShippingCurrency"]) {$value["ConvertedShippingCost"] = number_format($value["ShippingCost"] / getExchangeRate($_SESSION["buyerCurrency"], $value["ShippingCurrency"]), 2, '.', '');}$value["ConvertedTotalPrice"] = number_format($value["ConvertedPrice"] + $value["ConvertedShippingCost"], 2, '.', '');}return($arr);}// sanitize user inputfunction test_input($data) {$data = trim($data);$data = stripslashes($data);$data = htmlspecialchars($data);return $data;}// get a SESSION value, return empty string if not setfunction getSV($var) {if (!isset($_SESSION[$var])) {return ('');}return($_SESSION[$var]);}// initialize a SESSION value if not setfunction initSV($var, $value) {if (!isset($_SESSION[$var])) {$_SESSION[$var] = $value;}}// check POST value, return true if set and false if notfunction checkPV($var) {if (isset($_POST[$var])) {return (true);}return(false);}// print search filter modal with current selectionfunction printSearchFilterModal() {$str = '';$str .= '<div class="modal fade" id="filterModal">';$str .= ' <div class="modal-dialog">';$str .= ' <div class="modal-content">';$str .= '';$str .= ' <div class="modal-header">';$str .= ' <h4 class="modal-title">Search Filters</h4>';$str .= ' </div>';$str .= '';$str .= ' <form method="post" action="/index.php">';$str .= ' <div class="modal-body">';$str .= ' <div class="card-group">';$str .= '';$str .= ' <div class="card">';$str .= ' <div class="card-header font-weight-bold">Condition</div>';$str .= ' <div class="card-body">';$str .= ' <div class="form-check">';$str .= ' <label class="form-check-label">';$str .= ' <input name="filterConditionNew" type="checkbox" class="form-check-input" value="New"' . ($_SESSION["filterConditionNew"] ? " checked" : "") . '>New';$str .= ' </label>';$str .= ' </div>';$str .= ' <div class="form-check">';$str .= ' <label class="form-check-label">';$str .= ' <input name="filterConditionUsed" type="checkbox" class="form-check-input" value="Used"' . ($_SESSION["filterConditionUsed"] ? " checked" : "") . '>Used';$str .= ' </label>';$str .= ' </div>';$str .= ' </div>';$str .= ' </div>';$str .= '';$str .= ' <div class="card">';$str .= ' <div class="card-header font-weight-bold">Media Type</div>';$str .= ' <div class="card-body">';$str .= ' <div class="form-check">';$str .= ' <label class="form-check-label">';$str .= ' <input name="filterMediaTypeCD" type="checkbox" class="form-check-input" value="CD"' . ($_SESSION["filterMediaTypeCD"] ? " checked" : "") . '>Compact Disc';$str .= ' </label>';$str .= ' </div>';$str .= ' <div class="form-check">';$str .= ' <label class="form-check-label">';$str .= ' <input name="filterMediaTypeRecord" type="checkbox" class="form-check-input" value="Record"' . ($_SESSION["filterMediaTypeRecord"] ? " checked" : "") . '>Vinyl Record';$str .= ' </label>';$str .= ' </div>';$str .= ' <div class="form-check">';$str .= ' <label class="form-check-label">';$str .= ' <input name="filterMediaTypeDigital" type="checkbox" class="form-check-input" value="Digital"' . ($_SESSION["filterMediaTypeDigital"] ? " checked" : "") . '>Digital';$str .= ' </label>';$str .= ' </div>';$str .= ' </div>';$str .= ' </div>';$str .= ' </div>';$str .= ' </div>';$str .= '';$str .= ' <div class="modal-footer ">';$str .= ' <button id="save" type="submit" class="btn btn-success" name="submit" value="Save"">Save</button>';$str .= ' <button id="discard" type="button" class="btn btn-danger" data-dismiss="modal">Discard</button>';$str .= ' </div>';$str .= ' </form>';$str .= ' </div>';$str .= ' </div>';$str .= '</div>';return($str);}?>