Exemplo n.º 1
0
 function GetBoardFromSite($queryParameters)
 {
     $result = array();
     $result = CAirportBoard::GetOneBoardFromSite($queryParameters, "");
     $res = $result["HTML"];
     unset($result["HTML"]);
     /*// Ниже код для загрузки табло за сутки (используется три запроса с последующей склейкой)
       $result = CAirportBoard::GetOneBoardFromSite( $queryParameters, "v=3" );
       $res = $result["HTML"];
       unset($result["HTML"]);
       $result2 = CAirportBoard::GetOneBoardFromSite( $queryParameters, "v=11" );
       $res .= $result2["HTML"];
       unset($result2["HTML"]);
       $result3 = CAirportBoard::GetOneBoardFromSite( $queryParameters, "v=19" );
       $res .= $result3["HTML"];
       unset($result3["HTML"]);
       
       if ( intval($result2["ERROR"]["CODE"]) )
       {
         $result["ERROR"] = $result2["ERROR"];
       } elseif ( intval($result3["ERROR"]["CODE"]) )
       {
         $result["ERROR"] = $result3["ERROR"];
       }
       */
     if (!intval($result["ERROR"]["CODE"])) {
         $res = '<table>' . $res . '</table>';
         $res = str_replace("<br>", " ", $res);
         $res = str_replace("<nobr>", "", $res);
         $res = str_replace("</nobr>", "", $res);
         //trace($res);
         $xml = new CDataXML();
         if ($xml->LoadString($res)) {
             $node = $xml->SelectNodes("/table");
             $rows = $node->elementsByName("tr");
             $akNames = array();
             $akCodes = array();
             $departures = array();
             $arrivals = array();
             $terminals = array();
             $i = 0;
             foreach ($rows as $row) {
                 if (strstr($row->getAttribute("class"), "tr0")) {
                     $cells = $row->elementsByName("td");
                     // Определяем код авиакомпании и номер рейса
                     preg_match_all("/([A-Za-zА-Яа-я0-9]{2})\\s*([0-9]+)\\s*/", $cells[0]->content, $flightNumber, PREG_PATTERN_ORDER);
                     $cityPatterns = array("/([\\W\\d]+)\\(/", "/\\s+\\)\\s*/");
                     $cityReplace = array("\$1 (", ")");
                     $result["FLIGHTS"][$i] = array("FLIGHT" => array("AK_CODE" => $flightNumber[1][0], "NUMBER" => $flightNumber[2][0]), "AK_NAME" => "", "DEPARTURE" => htmlspecialcharsEx(preg_replace($cityPatterns, $cityReplace, $cells[1]->content)), "ARRIVAL" => htmlspecialcharsEx(preg_replace($cityPatterns, $cityReplace, $cells[1]->content)), "STATUS" => CAirportBoard::GetStatusInfo($cells[5]->content), "TIME" => array("PLANNED" => CAirportBoard::GetDateTimeArray($cells[2]->content), "ESTIMATED" => "", "ACTUAL" => CAirportBoard::GetDateTimeArray($cells[3]->content)), "TERMINAL" => "");
                     // Формируем список уникальных терминалов и пунктов вылета и прилета для фильтра
                     if (!in_array($flightNumber[1][0], $akCodes)) {
                         $akCodes[] = $flightNumber[1][0];
                     }
                     if (!in_array($result["FLIGHTS"][$i]["DEPARTURE"], $departures)) {
                         $departures[] = $result["FLIGHTS"][$i]["DEPARTURE"];
                     }
                     if (!in_array($result["FLIGHTS"][$i]["ARRIVAL"], $arrivals)) {
                         $arrivals[] = $result["FLIGHTS"][$i]["ARRIVAL"];
                     }
                     $i++;
                 }
             }
             sort($akNames);
             sort($akCodes);
             sort($departures);
             sort($arrivals);
             sort($terminals);
             $result["AK_NAMES"] = $akNames;
             $result["AK_CODES"] = $akCodes;
             $result["DEPARTURES"] = $departures;
             $result["ARRIVALS"] = $arrivals;
             $result["TERMINALS"] = $terminals;
         }
     }
     return $result;
 }
Exemplo n.º 2
0
 function GetBoardFromSite($queryParameters)
 {
     $result = array();
     $result = CAirportBoard::GetOneBoardFromSite($queryParameters, "p=1&time2=24");
     $result2 = CAirportBoard::GetOneBoardFromSite($queryParameters, "p=2&time2=24");
     if (intval($result2["ERROR"]["CODE"])) {
         $result["ERROR"] = $result2["ERROR"];
     }
     if (!intval($result["ERROR"]["CODE"])) {
         $result["AK_NAMES"] = array();
         $result["AK_CODES"] = array();
         $result["DEPARTURES"] = array();
         $result["ARRIVALS"] = array();
         $result["TERMINALS"] = array();
         $result = CAirportBoard::AddFlightsToResult($result["HTML"], $result, "Пулково-1");
         unset($result["HTML"]);
         $result = CAirportBoard::AddFlightsToResult($result2["HTML"], $result, "Пулково-2");
         unset($result2);
         sort($result["AK_NAMES"]);
         sort($result["AK_CODES"]);
         sort($result["DEPARTURES"]);
         sort($result["ARRIVALS"]);
         sort($result["TERMINALS"]);
         // Сортируем рейсы по абсолютному времени вылета
         SortFreeStyleArray($result["FLIGHTS"], array('["TIME"]["PLANNED"]["DATETIME"]' => 'ASC', '["FLIGHT"]' => 'ASC'));
         //trace($result);
     }
     return $result;
 }