Subversion Repositories cheapmusic

Rev

Blame | Last modification | View Log | RSS feed

<?php
  include_once('php/exchangeRates.php');
  include_once('php/countryCodes.php');
  include_once('php/constants.php');
  include_once('php/ebay.php');

  // search for items
  function 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 array
  function 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/>&asymp; " . 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/>&asymp; " . 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 table
  function 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 high
  function compare_price($a, $b)
  {
    return strnatcmp($a['ConvertedTotalPrice'], $b['ConvertedTotalPrice']);
  }
  
  // print monetary values with correct symbol and thousands/decimal delimiters
  function 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, ',', '.') . "&euro;");
    } else if ($curr == "GBP") {
        return("&pound;" . 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 index
  function findLowest($arr, $type) {
    foreach ($arr as $value) {
        if ($type == $value["Type"]) {
            return($value["ConvertedTotalPrice"]);
        }
    }
    
    return(0);
  }

  // apply exchange rates
  function 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 input
  function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
  }

  // get a SESSION value, return empty string if not set
  function getSV($var) {
      if (!isset($_SESSION[$var])) {
        return ('');
      }
      
      return($_SESSION[$var]);
  }

  // initialize a SESSION value if not set
  function initSV($var, $value) {
      if (!isset($_SESSION[$var])) {
          $_SESSION[$var] = $value;
      }
  }

  // check POST value, return true if set and false if not
  function checkPV($var) {
      if (isset($_POST[$var])) {
        return (true);
      }
      
      return(false);
  }

// print search filter modal with current selection
function 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);
}
?>