Advertisement
enevlogiev

conferences

May 4th, 2015
377
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.83 KB | None | 0 0
  1. <?php
  2. date_default_timezone_set("Europe/Sofia");
  3. $page = $_GET['page'];
  4. $pageSize = $_GET['pageSize'];
  5. $text = $_GET['conferences'];
  6.  
  7. $pattern = "/\\[(\\d\\d\\d\\d-\\d\\d-\\d\\d|\\d\\d\\d\\d\\/\\d\\d\\/\\d\\d)\\s*,\\s*(#[a-zA-Z.-]+)\\s*,\\s*'(.+?)'\\s*,\\s*([a-zA-Z,-]+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\]/";
  8. $events = array();
  9. $dateArr = array();
  10. $locationArr = array();
  11. $ticketsArr = array();
  12. $nameArr = array();
  13.  
  14. preg_match_all($pattern, $text, $matches);
  15.  
  16.  
  17. for ($i = 0; $i < count($matches[0]); $i++) {
  18.     $date = trim($matches[1][$i]);
  19.     $hash = trim($matches[2][$i]);
  20.     $name = trim($matches[3][$i]);
  21.     $location = trim($matches[4][$i]);
  22.     $allTickets = trim($matches[5][$i]);
  23.     $ticketsSold = trim($matches[6][$i]);
  24.  
  25.     $events[] = [
  26.         "date" => date_create($date),
  27.         "hash" => $hash,
  28.         "name" => $name,
  29.         "location" => $location,
  30.         "all-tickets" => $allTickets,
  31.         "tickets-sold" => $ticketsSold
  32.     ];
  33.  
  34.     $nameArr[] = $name;
  35.     $dateArr[] = date_create($date);
  36.     $locationArr[] = $location;
  37.     $ticketsArr[] = $allTickets;
  38. }
  39.  
  40.  
  41.  
  42. array_multisort($dateArr, SORT_DESC, $locationArr, SORT_ASC, $ticketsArr, SORT_DESC, $nameArr, SORT_ASC, $events);
  43.  
  44. var_dump($events);
  45. $currPage = ($page - 1) * $pageSize;
  46. $endPage = $currPage + $pageSize;
  47. $len = count($events);
  48.  
  49.  
  50. for ($i = 0; $i < $len; $i++) {
  51.     if ($i <  $currPage || $i >= $endPage) {
  52.         unset($events[$i]);
  53.     }
  54. }
  55.  
  56.  
  57. $eventsGrouped = array();
  58.  
  59.  
  60.  
  61. foreach ($events as $event) {
  62.     $key = $event['date']->format("Y-m-d");
  63.     if (!isset($eventsGrouped[$key])) {
  64.         $eventsGrouped[$key] = array();
  65.     }
  66.     $today = date_create("2015-05-03");
  67.     $diff = $event['date']->diff($today);
  68.     $days = $diff->days;
  69.     if ($event['date'] < $today) {
  70.         $days = "-" . $days;
  71.     } else if ($event['date'] >= $today) {
  72.         $days = "+" . $days;
  73.     }
  74.  
  75.     $seatsLeft = intval($event['all-tickets']) - intval($event['tickets-sold']);
  76.     $eventsGrouped[$key][] = [
  77.         "name" => $event['name'],
  78.         "hash" => $event['hash'],
  79.         "days-left" => $days,
  80.         "seats-left" => $seatsLeft
  81.     ];
  82. }
  83.  
  84.  
  85. echo "<table border=\"1\" cellpadding=\"5\">";
  86. echo "<tr>";
  87. echo "<th>Date</th>";
  88. echo "<th>Event name</th>";
  89. echo "<th>Event hash</th>";
  90. echo "<th>Days left</th>";
  91. echo "<th>Seats left</th>";
  92. echo "</tr>";
  93. if (empty($eventsGrouped)) {
  94.     echo "<tr><td>-</td><td>-</td><td>-</td><td>-</td><td>-</td></tr>";
  95. } else {
  96.     foreach ($eventsGrouped as $key => $value) {
  97.         $rowspan = count($value);
  98.         if ($rowspan > 1) {
  99.             for ($i = 0; $i < count($value); $i++) {
  100.                 if ($i == 0) {
  101.                     echo "<tr><td rowspan=\"$rowspan\">$key</td>";
  102.                 } else {
  103.                     echo "<tr>";
  104.                 }
  105.                 $currName = htmlspecialchars($value[$i]['name']);
  106.                 $currName = str_replace("'", "", $currName);
  107.                 echo "<td>" . $currName . "</td>";
  108.                 echo "<td>" . htmlspecialchars($value[$i]['hash']) . "</td>";
  109.                 echo "<td>" . htmlspecialchars($value[$i]['days-left']) . " days</td>";
  110.                 echo "<td>" . htmlspecialchars($value[$i]['seats-left']) . " seats left</td>";
  111.                 echo "</tr>";
  112.             }
  113.         } else {
  114.             $currName = htmlspecialchars($value[0]['name']);
  115.             $currName = str_replace("'", "", $currName);
  116.             echo "<tr><td>$key</td>";
  117.             echo "<td>" . $currName . "</td>";
  118.             echo "<td>" . htmlspecialchars($value[0]['hash']) . "</td>";
  119.             echo "<td>" . htmlspecialchars($value[0]['days-left']) . " days</td>";
  120.             echo "<td>" . htmlspecialchars($value[0]['seats-left']) . " seats left</td>";
  121.             echo "</tr>";
  122.         }
  123.     }
  124. }
  125. echo "</table>";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement