|  |  | 
 |  |  |    if(empty($_GET['query'])) throw new UnexpectedValueException(); | 
 |  |  |    if(strlen($_GET['query']) > 50) throw new UnexpectedValueException(); | 
 |  |  |     | 
 |  |  |    // Initialize DB connection an query | 
 |  |  |    // Initialize a DB connection an a query | 
 |  |  |    $pdo = new PDO('sqlite:stops/stops.db', NULL, NULL, array( | 
 |  |  |       PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION | 
 |  |  |    )); | 
 |  |  |    $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ?'); | 
 |  |  |    $st = $pdo->prepare('SELECT DISTINCT id FROM stop_search WHERE word LIKE ? AND id LIKE \'t%\''); | 
 |  |  |     | 
 |  |  |    // Split stop name into words | 
 |  |  |    $words = split_stop_name($_GET['query']); | 
 |  |  |     | 
 |  |  |    // Find relevant stop IDs | 
 |  |  |    // Find matching stops (their IDs) | 
 |  |  |    $ids = NULL; | 
 |  |  |    foreach($words as $word) { | 
 |  |  |       if(empty($word)) continue; | 
 |  |  | 
 |  |  |       $results = $st->fetchAll(PDO::FETCH_COLUMN); | 
 |  |  |       $st->closeCursor(); | 
 |  |  |        | 
 |  |  |       // Merge results with previous searches | 
 |  |  |       if(is_array($ids)) { | 
 |  |  |          // Merge results with list for previous words | 
 |  |  |          $ids = array_intersect($ids, $results); | 
 |  |  |       } else { | 
 |  |  |          // First search - initialize results list | 
 |  |  |          $ids = $results; | 
 |  |  |       } | 
 |  |  |        | 
 |  |  | 
 |  |  |       if(count($ids) == 0) break; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    // Close DB connection | 
 |  |  |    // Close a DB connection | 
 |  |  |    unset($st, $pdo); | 
 |  |  |     | 
 |  |  |    // No query was executed | 
 |  |  |    // No query was executed - return empty list | 
 |  |  |    if(!is_array($ids)) throw new UnexpectedValueException(); | 
 |  |  |     | 
 |  |  |    // Build structure for UI | 
 |  |  |    // Build a structure for the UI | 
 |  |  |    $stop_list = []; | 
 |  |  |    $query_lower = mb_strtolower($_GET['query'], 'UTF-8'); | 
 |  |  |    foreach($ids as $id) { | 
 |  |  | 
 |  |  |       ]; | 
 |  |  |    } | 
 |  |  |     | 
 |  |  |    // Sort stops by relevence | 
 |  |  |    // Sort stops by relevance | 
 |  |  |    usort($stop_list, function($a, $b) { | 
 |  |  |       $rel = $b['relevance'] - $a['relevance']; | 
 |  |  |       if($rel == 0) return strcasecmp($a['name'], $b['name']); |