pdoOpen() public method

Open a connection to the database.
public pdoOpen ( )
Ejemplo n.º 1
0
function upgrade()
{
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
    $common = new common();
    $settings = new settings();
    try {
        // Add the positions.aircraft column if the portal is using MySQL or SQLite database.
        if ($settings::db_driver == "mysql") {
            // Check to see if the column already exists.
            $dbh = $common->pdoOpen();
            if (count($dbh->query("SHOW COLUMNS FROM `" . $settings::db_prefix . "positions` LIKE 'aircraft'")->fetchAll()) == 0) {
                // Add the column if it does not exist.
                $sql = "ALTER TABLE " . $settings::db_prefix . "positions ADD COLUMN aircraft BIGINT";
                $sth = $dbh->prepare($sql);
                $sth->execute();
                $sth = NULL;
            }
            $dbh = NULL;
        }
        if ($settings::db_driver == "sqlite") {
            // Check to see if the column already exists.
            $dbh = $common->pdoOpen();
            $columns = $dbh->query("pragma table_info(positions)")->fetchArray(SQLITE3_ASSOC);
            $columnExists = FALSE;
            foreach ($columns as $column) {
                if ($column['name'] == 'lastSeen') {
                    $columnExists = TRUE;
                }
            }
            // Add the column if it does not exist.
            if (!$columnExists) {
                $sql = "ALTER TABLE " . $settings::db_prefix . "positionss ADD COLUMN aircraft BIGINT";
                $sth = $dbh->prepare($sql);
                $sth->execute();
                $sth = NULL;
            }
            $dbh = NULL;
        }
        // Update the version and patch settings..
        $common->updateSetting("version", "2.1.0");
        $common->updateSetting("patch", "");
        // The upgrade process completed successfully.
        $results['success'] = TRUE;
        $results['message'] = "Upgrade to v2.1.0 successful.";
        return $results;
    } catch (Exception $e) {
        // Something went wrong during this upgrade process.
        $results['success'] = FALSE;
        $results['message'] = $e->getMessage();
        return $results;
    }
}
Ejemplo n.º 2
0
function getByPosition()
{
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
    $settings = new settings();
    $common = new common();
    //
    $flightData = array();
    // PDO
    $dbh = $common->pdoOpen();
    $sql = "SELECT flight, aircraft FROM " . $settings::db_prefix . "positions WHERE id = :id";
    $sth = $dbh->prepare($sql);
    $sth->bindParam(':id', $_GET['position'], PDO::PARAM_INT);
    $sth->execute();
    $position = $sth->fetch();
    $sth = NULL;
    $dbh = NULL;
    $dbh = $common->pdoOpen();
    $sql = "SELECT flight, firstSeen, lastSeen FROM " . $settings::db_prefix . "flights WHERE id = :id";
    $sth = $dbh->prepare($sql);
    $sth->bindParam(':id', $position['flight'], PDO::PARAM_INT);
    $sth->execute();
    $flight = $sth->fetch();
    $sth = NULL;
    $dbh = NULL;
    $dbh = $common->pdoOpen();
    $sql = "SELECT icao, firstSeen, lastSeen FROM " . $settings::db_prefix . "aircraft WHERE id = :id";
    $sth = $dbh->prepare($sql);
    $sth->bindParam(':id', $position['flight'], PDO::PARAM_INT);
    $sth->execute();
    $aircraft = $sth->fetch();
    $sth = NULL;
    $dbh = NULL;
    $flightData['icao'] = $aircraft['icao'];
    $flightData['flight'] = $flight['flight'];
    $date = new DateTime($aircraft['firstSeen'], new DateTimeZone('UTC'));
    $date->setTimezone(new DateTimeZone($common->getSetting('timeZone')));
    $flightData['afs'] = $date->format($common->getSetting('dateFormat'));
    $date = new DateTime($aircraft['lastSeen'], new DateTimeZone('UTC'));
    $date->setTimezone(new DateTimeZone($common->getSetting('timeZone')));
    $flightData['als'] = $date->format($common->getSetting('dateFormat'));
    $date = new DateTime($flight['firstSeen'], new DateTimeZone('UTC'));
    $date->setTimezone(new DateTimeZone($common->getSetting('timeZone')));
    $flightData['ffs'] = $date->format($common->getSetting('dateFormat'));
    $date = new DateTime($flight['lastSeen'], new DateTimeZone('UTC'));
    $date->setTimezone(new DateTimeZone($common->getSetting('timeZone')));
    $flightData['fls'] = $date->format($common->getSetting('dateFormat'));
    return $flightData;
}
Ejemplo n.º 3
0
function getVisibleFlights()
{
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
    $settings = new settings();
    $common = new common();
    // Get all flights to be notified about from the flightNotifications.xml file.
    $lookingFor = array();
    if ($settings::db_driver == "xml") {
        // XML
        $savedFlights = simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "flightNotifications.xml");
        foreach ($savedFlights as $savedFlight) {
            $lookingFor[] = array($savedFlight);
        }
    } else {
        // PDO
        $dbh = $common->pdoOpen();
        $sql = "SELECT flight, lastMessageCount FROM " . $settings::db_prefix . "flightNotifications";
        $sth = $dbh->prepare($sql);
        $sth->execute();
        $lookingFor = $sth->fetchAll();
        $sth = NULL;
        $dbh = NULL;
    }
    // Check dump1090-mutability's aircraft JSON output to see if the flight is visible.
    $visibleFlights = array();
    $url = "http://localhost/dump1090/data/aircraft.json";
    $json = file_get_contents($url);
    $data = json_decode($json, true);
    foreach ($data['aircraft'] as $aircraft) {
        if (array_key_exists('flight', $aircraft)) {
            $visibleFlights[] = strtoupper(trim($aircraft['flight']));
        }
    }
    $foundFlights = array();
    $foundFlights['tracking'] = '';
    foreach ($lookingFor as $flight) {
        if (strpos($flight[0], "%") !== false) {
            $searchFor = str_replace("%", "", $flight[0]);
            foreach ($visibleFlights as $visible) {
                // Still needs to be modified to send data using the new format as done below.
                if (strpos(strtolower($visible), strtolower($searchFor)) !== false) {
                    $foundFlights[] = $visible;
                }
            }
        } else {
            if (in_array($flight[0], $visibleFlights)) {
                $thisFlight['flight'] = $flight[0];
                $thisFlight['lastMessageCount'] = $flight[1];
                $foundFlights['tracking'][] = $thisFlight;
            }
        }
    }
    return json_decode(json_encode((array) $foundFlights), true);
}
Ejemplo n.º 4
0
function upgrade()
{
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
    $common = new common();
    $settings = new settings();
    try {
        // Change tables containing datetime data to datetime.
        if ($settings::db_driver != "mysql") {
            $dbh = $common->pdoOpen();
            $sql = "ALTER TABLE " . $settings::db_prefix . "aircraft MODIFY firstSeen DATETIME NOT NULL";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $sql = "ALTER TABLE adsb_aircraft MODIFY lastSeen DATETIME NOT NULL";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $sql = "ALTER TABLE adsb_blogPosts MODIFY date DATETIME NOT NULL";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $sql = "ALTER TABLE adsb_flights MODIFY firstSeen DATETIME NOT NULL";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $sql = "ALTER TABLE adsb_flights MODIFY firstSeen DATETIME NOT NULL";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $sql = "ALTER TABLE adsb_positions MODIFY time DATETIME NOT NULL";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $dbh = NULL;
        }
        // Add timezone setting.
        $common->addSetting("timeZone", date_default_timezone_get());
        // update the version and patch settings.
        $common->updateSetting("version", "2.0.1");
        $common->updateSetting("patch", "");
        // The upgrade process completed successfully.
        $results['success'] = TRUE;
        $results['message'] = "Upgrade to v2.0.1 successful.";
        return $results;
    } catch (Exception $e) {
        // Something went wrong during this upgrade process.
        $results['success'] = FALSE;
        $results['message'] = $e->getMessage();
        return $results;
    }
}
Ejemplo n.º 5
0
// Items per page.
$itemsPerPage = 25;
// The title of this page.
$pageData['title'] = "Flights Seen";
// Add flight data to the $pageData array using the search string if available.
if (isset($_POST['flight'])) {
    $searchString = $_POST['flight'];
} else {
    $searchString = "";
}
// Set the start stop positions to be used in the query.
$start = 1;
if (isset($_GET['page'])) {
    $start = $_GET['page'] * $itemsPerPage;
}
$dbh = $common->pdoOpen();
$sql = "SELECT COUNT(*) FROM " . $settings::db_prefix . "flights WHERE flight LIKE :like ORDER BY lastSeen DESC, flight";
$sth = $dbh->prepare($sql);
$sth->bindValue(':like', "%" . $searchString . "%", PDO::PARAM_STR);
$sth->execute();
$totalFlights = $sth->fetchColumn();
$sth = NULL;
$dbh = NULL;
$dbh = $common->pdoOpen();
$sql = "SELECT * FROM " . $settings::db_prefix . "flights WHERE flight LIKE :like ORDER BY lastSeen DESC, flight LIMIT :start, :items";
$sth = $dbh->prepare($sql);
$sth->bindValue(':like', "%" . $searchString . "%", PDO::PARAM_STR);
$sth->bindValue(':start', $start, PDO::PARAM_INT);
$sth->bindValue(':items', $itemsPerPage, PDO::PARAM_INT);
$sth->execute();
$flights = $sth->fetchAll(PDO::FETCH_ASSOC);
Ejemplo n.º 6
0
 function deleteSetting($name)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
     $settings = new settings();
     if ($settings::db_driver == "xml") {
         $xmlSettings = simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "settings.xml");
         foreach ($xmlSettings as $xmlSetting) {
             if ($xmlSetting->name == $name) {
                 $dom = dom_import_simplexml($xmlSetting);
                 $dom->parentNode->removeChild($dom);
             }
         }
         file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "settings.xml", $xmlSettings->asXml());
     } else {
         // PDO
         require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
         $common = new common();
         $dbh = $common->pdoOpen();
         $sql = "DELETE FROM " . $settings::db_prefix . "settings WHERE name = :name";
         $sth = $dbh->prepare($sql);
         $sth->bindParam(':name', $name, PDO::PARAM_STR, 100);
         $sth->execute();
         $sth = NULL;
         $dbh = NULL;
     }
 }
Ejemplo n.º 7
0
 function getLoginUsingToken($token)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
     $settings = new settings();
     if ($settings::db_driver == "xml") {
         // XML
         $administrators = simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "administrators.xml");
         foreach ($administrators as $administrator) {
             if ($administrator->token == $token) {
                 return $administrator->login;
             }
         }
         return NULL;
     } else {
         // PDO
         require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
         $common = new common();
         $dbh = $common->pdoOpen();
         $sql = "SELECT * FROM " . $settings::db_prefix . "administrators WHERE token = :token";
         $sth = $dbh->prepare($sql);
         $sth->bindParam(':token', $token, PDO::PARAM_STR, 10);
         $sth->execute();
         $row = $sth->fetch();
         $sth = NULL;
         $dbh = NULL;
         return $row['login'];
     }
 }
Ejemplo n.º 8
0
function upgrade()
{
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
    require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
    $common = new common();
    $settings = new settings();
    try {
        if ($settings::db_driver == "xml") {
            // Create XML files used to store links data.
            $xml = new XMLWriter();
            $xml->openMemory();
            $xml->setIndent(true);
            $xml->startDocument('1.0', 'UTF-8');
            $xml->startElement("links");
            $xml->endElement();
            file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "links.xml", $xml->flush(true));
        }
        if ($settings::db_driver == "mysql") {
            $dbh = $common->pdoOpen();
            // Add the links table.
            $sql = "CREATE TABLE " . $settings::db_prefix . "links(id INT(11) AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, address VARCHAR(250) NOT NULL);";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $dbh = NULL;
        }
        if ($settings::db_driver == "sqlite") {
            // Create a new settings.class.php file adding the path to the SQLite database as the value for the db_host constant.
            $content = <<<EOF
<?php

    /////////////////////////////////////////////////////////////////////////////////////
    //                            ADS-B RECEIVER PORTAL                                //
    // =============================================================================== //
    // Copyright and Licensing Information:                                            //
    //                                                                                 //
    // The MIT License (MIT)                                                           //
    //                                                                                 //
    // Copyright (c) 2015-2016 Joseph A. Prochazka                                     //
    //                                                                                 //
    // Permission is hereby granted, free of charge, to any person obtaining a copy    //
    // of this software and associated documentation files (the "Software"), to deal   //
    // in the Software without restriction, including without limitation the rights    //
    // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell       //
    // copies of the Software, and to permit persons to whom the Software is           //
    // furnished to do so, subject to the following conditions:                        //
    //                                                                                 //
    // The above copyright notice and this permission notice shall be included in all  //
    // copies or substantial portions of the Software.                                 //
    //                                                                                 //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR      //
    // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,        //
    // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE     //
    // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER          //
    // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,   //
    // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE   //
    // SOFTWARE.                                                                       //
    /////////////////////////////////////////////////////////////////////////////////////

    class settings {
        // Database Settings
        const db_driver = 'sqlite';
        const db_database = '';
        const db_username = '';
        const db_password = '';
        const db_host = '/var/www/html/data/portal.sqlite';
        const db_prefix = 'adsb_';

        // Security Settings
        const sec_length = 6;

        // PDO Settings
        const pdo_debug = TRUE;
    }

?>
EOF;
            file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php", $content);
            // Open a connection to the database.
            $dbh = $common->pdoOpen();
            // Add the links table.
            $sql = "CREATE TABLE " . $settings::db_prefix . "links(INTEGER PRIMARY KEY, name TEXT NOT NULL, address TEXT NOT NULL);";
            $sth = $dbh->prepare($sql);
            $sth->execute();
            $sth = NULL;
            $dbh = NULL;
        }
        // Rename the enableFlightNotifications to enableWebNotifications.
        $enableWebNotifications = $common->getSetting('enableFlightNotifications');
        $common->addSetting('enableWebNotifications', $enableWebNotifications);
        $common->deleteSetting('enableFlightNotifications');
        // Add Google Maps API Key setting.
        $common->addSetting('googleMapsApiKey', '');
        // Add enable custom links setting.
        $common->addSetting('enableLinks', FALSE);
        // Update the version and patch settings..
        $common->updateSetting("version", "2.5.0");
        $common->updateSetting("patch", "");
        // The upgrade process completed successfully.
        $results['success'] = TRUE;
        $results['message'] = "Upgrade to v2.5.0 successful.";
        return $results;
    } catch (Exception $e) {
        // Something went wrong during this upgrade process.
        $results['success'] = FALSE;
        $results['message'] = $e->getMessage();
        return $results;
    }
}
Ejemplo n.º 9
0
 function addPost($author, $title, $contents)
 {
     require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "settings.class.php";
     $settings = new settings();
     if ($settings::db_driver == "xml") {
         // XML
         $blogPosts = simplexml_load_file($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "blogPosts.xml");
         $blogPost = $blogPosts->addChild('blogPost', '');
         $blogPost->addChild('title', $title);
         $blogPost->addChild('date', gmdate('Y-m-d H:i:s', time()));
         $blogPost->addChild('author', $author);
         $blogPost->addChild('contents', html_entity_decode($contents, null, "UTF-8"));
         $dom = dom_import_simplexml($blogPosts)->ownerDocument;
         $dom->formatOutput = TRUE;
         file_put_contents($_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "blogPosts.xml", $dom->saveXML());
     } else {
         // PDO
         require_once $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . "classes" . DIRECTORY_SEPARATOR . "common.class.php";
         $common = new common();
         $dbh = $common->pdoOpen();
         $sql = "INSERT INTO " . $settings::db_prefix . "blogPosts (title, date, author, contents) VALUES (:title, :date, :author, :contents)";
         $sth = $dbh->prepare($sql);
         $sth->bindParam(':title', $title, PDO::PARAM_STR, 100);
         $sth->bindParam(':date', gmdate('Y-m-d H:i:s', time()), PDO::PARAM_STR, 20);
         $sth->bindParam(':author', $author, PDO::PARAM_STR, 100);
         $sth->bindParam(':contents', $contents, PDO::PARAM_STR, 20000);
         $sth->execute();
         $sth = NULL;
         $dbh = NULL;
     }
 }