| New file | 
 |  |  | 
 |  |  | <?php | 
 |  |  | class Output { | 
 |  |  |    static function createMapping($db, VehicleTypes $vehicleTypes, $saveConfig = FALSE) { | 
 |  |  |       $mapping = []; | 
 |  |  |       foreach($db->getAll() as $vehicle) { | 
 |  |  |          $mapping[$vehicle['id']] = $vehicleTypes->getByNumber($vehicle['num']); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       if($saveConfig) { | 
 |  |  |          $json = json_encode($mapping); | 
 |  |  |          if(!file_put_contents($saveConfig['result_temp'], $json)) { | 
 |  |  |             throw new Exception('Result save failed'); | 
 |  |  |          } | 
 |  |  |          rename($saveConfig['result_temp'], $saveConfig['result']); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return $mapping; | 
 |  |  |    } | 
 |  |  | 	 | 
 |  |  |    function createVehiclesList($trips, $mapping, $saveConfig = FALSE) { | 
 |  |  |       $lines = []; | 
 |  |  |       $vehicles = []; | 
 |  |  |       foreach($trips as $trip) { | 
 |  |  |          $vehicle = $mapping[$trip['id']] ?? []; | 
 |  |  |          $vehicle += ['trip' => $trip['id']]; | 
 |  |  |          $lines[$trip['line']][] = [ | 
 |  |  |             'trip' => $trip, | 
 |  |  |             'vehicle' => $vehicle, | 
 |  |  |          ]; | 
 |  |  |          $vehicles[$vehicle['type'] ?? '?'][] = $vehicle; | 
 |  |  |       } | 
 |  |  |       foreach($lines as &$line) { | 
 |  |  |          usort($line, function($a, $b) { | 
 |  |  |             return (substr($a['vehicle']['num'] ?? '', 2) <=> substr($b['vehicle']['num'] ?? '', 2));  | 
 |  |  |          }); | 
 |  |  |       } | 
 |  |  |       unset($line); | 
 |  |  |       ksort($lines); | 
 |  |  |       foreach($vehicles as &$vehicle) { | 
 |  |  |          usort($vehicle, function($a, $b) { | 
 |  |  |             return (substr($a['num'] ?? '', 2) <=> substr($b['num'] ?? '', 2)); | 
 |  |  |          }); | 
 |  |  |       } | 
 |  |  |       unset($vehicle); | 
 |  |  |       ksort($vehicles); | 
 |  |  | 		 | 
 |  |  |       if($saveConfig) { | 
 |  |  |          $twigLoader = new \Twig\Loader\FilesystemLoader(__DIR__.'/../templates'); | 
 |  |  |          $twig = new \Twig\Environment($twigLoader); | 
 |  |  | 			 | 
 |  |  |          $vehiclesHtml = $twig->render('vehicles.html', [ | 
 |  |  |             'lines' => $lines, | 
 |  |  |             'vehicles' => $vehicles, | 
 |  |  |             'prefix' => $saveConfig['prefix'], | 
 |  |  |          ]); | 
 |  |  |          if(!file_put_contents($saveConfig['result_vehicles_temp'], $vehiclesHtml)) { | 
 |  |  |             throw new Exception('Vehicles save failed'); | 
 |  |  |          } | 
 |  |  |          rename($saveConfig['result_vehicles_temp'], $saveConfig['result_vehicles']); | 
 |  |  |       } | 
 |  |  | 		 | 
 |  |  |       return $lines; | 
 |  |  |    } | 
 |  |  | } |