Пример #1
0
    /**
     * Loads a site from the database using its name.
     *
     * @param $siteName The name of the site to load.
     *
     * @return bool|Site On success return a populated site object. On failure returns false.
     * @throws InvalidOperationException If database credentials have not been set.
     */
    public static final function loadSite($siteName)
    {
        if (is_null(self::$databaseCredentials)) {
            throw new InvalidOperationException('Database credentials must be set at the class level to allow this action to take place.');
        }
        Dune::setDatabaseCredentials(self::$databaseCredentials);
        $DBH = call_user_func_array('DatabaseHelper::getInstance', self::$databaseCredentials);
        if ($siteId = Site::getIdByName($siteName)) {
            $site = new Site($siteName);
        } else {
            return FALSE;
        }
        $loadDunesQuery = <<<MYSQL
            SELECT
                *
            FROM
                dunes d
            INNER JOIN
                sites s ON d.site_id = s.site_id
            WHERE
                s.site = :site

MYSQL;
        $loadDunesParams = array('site' => $siteName);
        $loadDunesResult = DatabaseHelper::query($DBH, $loadDunesQuery, $loadDunesParams);
        while ($duneData = $loadDunesResult->fetch(PDO::FETCH_ASSOC)) {
            $dune = new Dune(new LatLng($duneData['latitude'], $duneData['longitude']), $duneData['site'], $duneData['toe'], $duneData['crest'], (int) $duneData['dune_id']);
            $dune->loadTwlTimeSeries();
            if ($dune->hasTimeSeries()) {
                $site->addDune($dune);
            }
        }
        return $site;
    }