Advertisement
Filkolev

04. Box Office

Jan 12th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.48 KB | None | 0 0
  1. <?php
  2.  
  3. $order = $_GET['order'];
  4. $filter = $_GET['filter'];
  5. $maxSeats = intval($_GET['maxSeats']);
  6. $minSeats = intval($_GET['minSeats']);
  7. $pattern = "/\s*(.*?)\s*\((.*?)\)-\s*(.*?)\s*\/\s*(\d+)/";
  8.  
  9. preg_match_all($pattern, $_GET['list'], $matches, PREG_SET_ORDER);
  10. $result = array();
  11.  
  12. foreach ($matches as $match) {
  13.     $name =  trim($match[1]);
  14.     $genre = trim($match[2]);
  15.     $stars = preg_split("/\s*,\s*/", $match[3], -1, PREG_SPLIT_NO_EMPTY);
  16.     $seatsFilled = intval(trim($match[4]));
  17.  
  18.     if ($seatsFilled >= $minSeats && $seatsFilled <= $maxSeats && ($filter == $genre || $filter == 'all')) {
  19.         $result[] = [
  20.             'name' => $name,
  21.             'stars' => $stars,
  22.             'filled seats' => $seatsFilled
  23.         ];
  24.     }
  25. }
  26.  
  27. uasort($result, function ($a, $b) {
  28.     global $order;
  29.  
  30.     if (strcmp($a['name'], $b['name']) == 0) {
  31.         return $a['filled seats'] - $b['filled seats'];
  32.     }
  33.  
  34.     return $order == 'ascending' ^ $a['name'] < $b['name'] ? 1 : -1;
  35. });
  36.  
  37. $toPrint = "";
  38.  
  39. foreach ($result as $screening) {
  40.     $toPrint .= "<div class=\"screening\"><h2>". htmlspecialchars($screening['name']) ."</h2>";
  41.     $toPrint .= "<ul>";
  42.  
  43.     foreach ($screening['stars'] as $star) {
  44.         $toPrint .= "<li class=\"star\">" . htmlspecialchars($star) . "</li>";
  45.     }
  46.  
  47.     $toPrint .= "</ul>";
  48.     $toPrint .= "<span class=\"seatsFilled\">" . $screening['filled seats'] . " seats filled</span>";
  49.     $toPrint .= "</div>";
  50. }
  51.  
  52. echo $toPrint;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement