Subversion Repositories cheapmusic

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 - 1
<?php
2
  include_once('php/exchangeRates.php');
3
  include_once('php/countryCodes.php');
4
  include_once('php/constants.php');
5
  include_once('php/ebay.php');
6
 
7
  // search for items
8
  function searchAll($searchKey) {
9
    $arr = [];
10
    $newArr = [];
11
    if ($_SESSION["filterConditionNew"]) { $arr = get_ebay($searchKey, constant("NEW")); }
12
    if ($_SESSION["filterConditionUsed"]) { $newArr = get_ebay($searchKey, constant("USED")); }
13
    $arr = array_merge($arr, $newArr);
14
 
15
    $arr = applyExchangeRates($arr);
16
    usort($arr, 'compare_price');
17
 
18
    return $arr;
19
  }
20
 
21
  // build HTML table from array
22
  function buildTable($arr) {
23
    $str = "<div class=\"table\">";
24
    $str .= "<table class=\"table table-striped table-condensed small\">";
25
    $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>";
26
    $str .= "<tbody>";
27
 
28
    foreach ($arr as $value) {
29
        $url = base64_encode($value["URL"]);
30
 
31
        $str .= "<tr>";
32
 
33
        // Image
2 - 34
        $str .= "<td><a href=\"/redirect.php?target=" . $url . "\" target=\"_blank\"><img class=\"img-fluid\" src=\"" . $value["Image"] . "\" alt=\"Item Image\"></a></td>";
1 - 35
 
36
        // Title / Merchant
37
        $str .= "<td class=\"text-left\"><span class=\"font-weight-bold\">" . $value["Title"] . "</span><br/>";
38
        $str .= "<span class=\"font-weight-bold\">" . $value["Merchant"] . "</span><br/>" . $value["SellerName"] . " (" . number_format($value["FeedbackScore"], 0, "", ",") . " / " . $value["FeedbackPercent"] . "%)</td>";
39
 
40
        // Condition
41
        $str .= "<td>";
42
        $categoryImage = "";
43
        $tooltip = "";
44
        switch ($value["Category"]) {
45
            case "CD":
46
            $categoryImage = "cd";
47
            $tooltip = "Compact Disc";
48
            break;
49
            case "Record":
50
            $categoryImage = "vinyl";
51
            $tooltip = "Vinyl Record";
52
            break;
53
            case "Digital":
54
            $categoryImage = "digital";
55
            $tooltip = "Digital Download";
56
            break;
57
        }
58
        $str .= "<span class=\"font-weight-bold\">" . $value["Condition"] . "</span>";
59
        $str .= "<br/><br/>";
2 - 60
        $str .= "<img class=\"img-fluid\" title=\"" . $tooltip . "\" data-toggle=\"tooltip\" data-placement=\"right\" data-delay=\"200\" style=\"max-height:32px\" src=\"/images/" . "$categoryImage" . ".png\">";
1 - 61
        $str .= "</td>";
62
 
63
        // Price
64
        $str .= "<td class=\"hide-small\">" . print_monetary($value["Price"], $value["Currency"]);
65
        if ($value["Currency"] != $_SESSION["buyerCurrency"]) {
66
          $str .= "<br/>&asymp; " . print_monetary($value["ConvertedPrice"], $_SESSION["buyerCurrency"]);
67
        }
68
        $str .= "</td>";
69
 
70
        // Shipping and Handling Cost
71
        $str .= "<td class=\"hide-small\">";
72
        if ($value["ShippingCost"] == 0.00) {
73
            $str .= "Free Shipping";
74
        } else {
75
            $str .= print_monetary($value["ShippingCost"], $value["ShippingCurrency"]);
76
        }
77
        if ($value["ShippingCurrency"] != $_SESSION["buyerCurrency"]) {
78
          $str .= "<br/>&asymp; " . print_monetary($value["ConvertedShippingCost"], $_SESSION["buyerCurrency"]);
79
        }
2 - 80
        $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>";
1 - 81
 
82
        // Total Price
83
        $str .= "<td class=\"font-weight-bolder\">" . print_monetary($value["ConvertedTotalPrice"], $_SESSION["buyerCurrency"]) . "</td>";
84
 
85
        // Link
2 - 86
        $str .= "<td><a class=\"btn btn-danger\" role=\"button\" href=\"/redirect.php?target=" . $url . "\" target=\"_blank\">Buy It Now</a></td>";
1 - 87
 
88
        $str .= "</tr>";
89
    }
90
 
91
    $str .= "</tbody>";
92
    $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>";
93
    $str .= "</table>";
94
    $str .= "</div>";
95
 
96
    return($str);
97
  }
98
 
99
  // print summary/header on top of listing table
100
  function printTableHeader() {
101
    $str = '<div class="container-fluid row text-left mb-3 bg-light">';
2 - 102
    $str .= '    <div class="col-lg-2 col-md-4 col-sm-6 col-12';
1 - 103
    if ($_SESSION["lowNew"] <= 0) {
104
        $str .= " opacity-5";
105
    }
106
    $str .= '">';
107
    $str .= '        <span class="display-4 font-weight-bolder">New</span><br>from ' . print_monetary($_SESSION["lowNew"], $_SESSION["buyerCurrency"]);
108
    $str .= '    </div>';
2 - 109
    $str .= '    <div class="col-lg-2 col-md-4 col-sm-6 col-12';
1 - 110
    if ($_SESSION["lowUsed"] <= 0) {
111
        $str .= " opacity-5";
112
    }
113
    $str .= '">';
114
    $str .= '        <span class="display-4 font-weight-bolder">Used</span><br>from ' . print_monetary($_SESSION["lowUsed"], $_SESSION["buyerCurrency"]);
115
    $str .= '    </div>';
116
    // BUGBUG Digital
117
    $str .= '</div>';
118
 
119
    return $str;
120
  }
121
 
122
 
123
  // compare price for sort low to high
124
  function compare_price($a, $b)
125
  {
126
    return strnatcmp($a['ConvertedTotalPrice'], $b['ConvertedTotalPrice']);
127
  }
128
 
129
  // print monetary values with correct symbol and thousands/decimal delimiters
130
  function print_monetary($num, $curr) {
131
    if ($curr == "USD") {
132
        return("$" . number_format($num, 2, '.', ','));
133
    } else if ($curr == "CAD") {
134
        return("C $" . number_format($num, 2, '.', ','));
135
    } else if ($curr == "EUR") {
136
        return(number_format($num, 2, ',', '.') . "&euro;");
137
    } else if ($curr == "GBP") {
138
        return("&pound;" . number_format($num, 2, '.', ','));
139
    } else if ($curr == "AUD") {
140
        return("AU $" . number_format($num, 2, '.', ','));
141
    }
142
 
143
    return ($curr . " " . number_format($num, 2, '.', ','));
144
  }
145
 
146
  // find lowest used / new prices and return their array index
147
  function findLowest($arr, $type) {
148
    foreach ($arr as $value) {
149
        if ($type == $value["Type"]) {
150
            return($value["ConvertedTotalPrice"]);
151
        }
152
    }
153
 
154
    return(0);
155
  }
156
 
157
  // apply exchange rates
158
  function applyExchangeRates($arr) {
159
    foreach ($arr as &$value) {
160
        $value["ConvertedPrice"] = $value["Price"];
161
        $value["ConvertedShippingCost"] = $value["ShippingCost"];
162
 
163
        if ($_SESSION["buyerCurrency"] != $value["Currency"]) {
164
            $value["ConvertedPrice"] = number_format($value["Price"] / getExchangeRate($_SESSION["buyerCurrency"], $value["Currency"]), 2, '.', '');
165
        }
166
 
167
        if ($_SESSION["buyerCurrency"] != $value["ShippingCurrency"]) {
168
            $value["ConvertedShippingCost"] = number_format($value["ShippingCost"] / getExchangeRate($_SESSION["buyerCurrency"], $value["ShippingCurrency"]), 2, '.', '');
169
        }
170
 
171
        $value["ConvertedTotalPrice"] = number_format($value["ConvertedPrice"] + $value["ConvertedShippingCost"], 2, '.', '');
172
    }
173
 
174
    return($arr);
175
  }
176
 
177
  // sanitize user input
178
  function test_input($data) {
179
    $data = trim($data);
180
    $data = stripslashes($data);
181
    $data = htmlspecialchars($data);
182
    return $data;
183
  }
184
 
185
  // get a SESSION value, return empty string if not set
186
  function getSV($var) {
187
      if (!isset($_SESSION[$var])) {
188
        return ('');
189
      }
190
 
191
      return($_SESSION[$var]);
192
  }
193
 
194
  // initialize a SESSION value if not set
195
  function initSV($var, $value) {
196
      if (!isset($_SESSION[$var])) {
197
          $_SESSION[$var] = $value;
198
      }
199
  }
200
 
201
  // check POST value, return true if set and false if not
202
  function checkPV($var) {
203
      if (isset($_POST[$var])) {
204
        return (true);
205
      }
206
 
207
      return(false);
208
  }
209
 
210
// print search filter modal with current selection
211
function printSearchFilterModal() {
212
  $str = '';
213
  $str .= '<div class="modal fade" id="filterModal">';
214
  $str .= '    <div class="modal-dialog">';
215
  $str .= '        <div class="modal-content">';
216
  $str .= '';
217
  $str .= '            <div class="modal-header">';
218
  $str .= '                <h4 class="modal-title">Search Filters</h4>';
219
  $str .= '            </div>';
220
  $str .= '';
221
  $str .= '            <form method="post" action="/index.php">';
222
  $str .= '                <div class="modal-body">';
223
  $str .= '                    <div class="card-group">';
224
  $str .= '';
225
  $str .= '                        <div class="card">';
226
  $str .= '                            <div class="card-header font-weight-bold">Condition</div>';
227
  $str .= '                            <div class="card-body">';
228
  $str .= '                                <div class="form-check">';
229
  $str .= '                                    <label class="form-check-label">';
230
  $str .= '                                        <input name="filterConditionNew" type="checkbox" class="form-check-input" value="New"' . ($_SESSION["filterConditionNew"] ? " checked" : "") . '>New';
231
  $str .= '                                    </label>';
232
  $str .= '                                </div>';
233
  $str .= '                                <div class="form-check">';
234
  $str .= '                                    <label class="form-check-label">';
235
  $str .= '                                        <input name="filterConditionUsed" type="checkbox" class="form-check-input" value="Used"' . ($_SESSION["filterConditionUsed"] ? " checked" : "") . '>Used';
236
  $str .= '                                    </label>';
237
  $str .= '                                </div>';
238
  $str .= '                            </div>';
239
  $str .= '                        </div>';
240
  $str .= '';
241
  $str .= '                        <div class="card">';
242
  $str .= '                            <div class="card-header font-weight-bold">Media Type</div>';
243
  $str .= '                            <div class="card-body">';
244
  $str .= '                                <div class="form-check">';
245
  $str .= '                                    <label class="form-check-label">';
246
  $str .= '                                        <input name="filterMediaTypeCD" type="checkbox" class="form-check-input" value="CD"' . ($_SESSION["filterMediaTypeCD"] ? " checked" : "") . '>Compact Disc';
247
  $str .= '                                    </label>';
248
  $str .= '                                </div>';
249
  $str .= '                                <div class="form-check">';
250
  $str .= '                                    <label class="form-check-label">';
251
  $str .= '                                        <input name="filterMediaTypeRecord" type="checkbox" class="form-check-input" value="Record"' . ($_SESSION["filterMediaTypeRecord"] ? " checked" : "") . '>Vinyl Record';
252
  $str .= '                                    </label>';
253
  $str .= '                                </div>';
254
  $str .= '                                <div class="form-check">';
255
  $str .= '                                    <label class="form-check-label">';
256
  $str .= '                                        <input name="filterMediaTypeDigital" type="checkbox" class="form-check-input" value="Digital"' . ($_SESSION["filterMediaTypeDigital"] ? " checked" : "") . '>Digital';
257
  $str .= '                                    </label>';
258
  $str .= '                                </div>';
259
  $str .= '                            </div>';
260
  $str .= '                        </div>';
261
  $str .= '                    </div>';
262
  $str .= '                </div>';
263
  $str .= '';
264
  $str .= '                <div class="modal-footer ">';
2 - 265
  $str .= '                    <button id="save" type="submit" class="btn btn-success" name="submit" value="Save">Save</button>';
1 - 266
  $str .= '                    <button id="discard" type="button" class="btn btn-danger" data-dismiss="modal">Discard</button>';
267
  $str .= '                </div>';
268
  $str .= '            </form>';
269
  $str .= '        </div>';
270
  $str .= '    </div>';
271
  $str .= '</div>';
272
 
273
  return($str);
274
}
275
?>