Source for file Weather.php
Documentation is available at Weather.php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2004 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available through the world-wide-web at |
// | http://www.php.net/license/2_02.txt. |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Alexander Wirtz <alex@pc4p.net> |
// +----------------------------------------------------------------------+
// $Id: Weather.php,v 1.32 2005/07/18 08:49:41 eru Exp $
* @package Services_Weather
define("SERVICES_WEATHER_EXPIRES_UNITS", 900 );
define("SERVICES_WEATHER_EXPIRES_LOCATION", 900 );
define("SERVICES_WEATHER_EXPIRES_WEATHER", 1800 );
define("SERVICES_WEATHER_EXPIRES_FORECAST", 7200 );
define("SERVICES_WEATHER_EXPIRES_LINKS", 43200 );
define("SERVICES_WEATHER_ERROR_SERVICE_NOT_FOUND", 10 );
define("SERVICES_WEATHER_ERROR_UNKNOWN_LOCATION", 11 );
define("SERVICES_WEATHER_ERROR_WRONG_SERVER_DATA", 12 );
define("SERVICES_WEATHER_ERROR_CACHE_INIT_FAILED", 13 );
define("SERVICES_WEATHER_ERROR_DB_NOT_CONNECTED", 14 );
// {{{ error codes defined by weather.com
define("SERVICES_WEATHER_ERROR_UNKNOWN_ERROR", 0 );
define("SERVICES_WEATHER_ERROR_NO_LOCATION", 1 );
define("SERVICES_WEATHER_ERROR_INVALID_LOCATION", 2 );
define("SERVICES_WEATHER_ERROR_INVALID_PARTNER_ID", 100 );
define("SERVICES_WEATHER_ERROR_INVALID_PRODUCT_CODE", 101 );
define("SERVICES_WEATHER_ERROR_INVALID_LICENSE_KEY", 102 );
// {{{ class Services_Weather
* This class acts as an interface to various online weather-services.
* Services_Weather searches for given locations and retrieves current
* weather data and, dependant on the used service, also forecasts. Up to
* now, SOAP services from CapeScience and EJSE, XML from weather.com and
* METAR/TAF from noaa.gov are supported, further services will get
* included, if they become available and are properly documented.
* @author Alexander Wirtz <alex@pc4p.net>
* @package Services_Weather
* @license http://www.php.net/license/2_02.txt
* Factory for creating the services-objects
* Usable keys for the options array are:
* o debug enables debugging output
* o cacheType defines what type of cache to use
* o cacheOptions passes cache options
* o unitsFormat use (US)-standard, metric or custom units
* o customUnitsFormat defines the customized units format
* o httpTimeout sets timeout for HTTP requests
* o dateFormat string to use for date output
* o timeFormat string to use for time output
* --- GlobalWeather Options
* o dsn String for defining the DB connection
* o dbOptions passes DB options
* o sourceMetar http, ftp or file - type of data-source for METAR
* o sourcePathMetar where to look for the source, URI or filepath,
* o sourceTaf http, ftp or file - type of data-source for TAF
* o sourcePathTaf where to look for the source, URI or filepath,
* --- weather.com Options
* o partnerID You'll receive these keys after registering
* o licenseKey with the weather.com XML-service
* @return PEAR_Error|object
* @throws PEAR_Error::SERVICES_WEATHER_ERROR_SERVICE_NOT_FOUND
function &service($service, $options = null )
$classname = "Services_Weather_". $service;
// Check for debugging-mode and set stuff accordingly
if (is_array($options) && isset ($options["debug"]) && $options["debug"] >= 2 ) {
if (!defined("SERVICES_WEATHER_DEBUG")) {
define("SERVICES_WEATHER_DEBUG", true );
include_once("Services/Weather/". $service. ".php");
if (!defined("SERVICES_WEATHER_DEBUG")) {
define("SERVICES_WEATHER_DEBUG", false );
@include_once("Services/Weather/". $service. ".php");
// No such service... bail out
// Create service and return
@$obj = &new $classname($options, $error);
* For your convenience, when I come up with changes in the API...
* Returns the message for a certain error code
* @param PEAR_Error|int $value
function _errorMessage ($value)
if (!isset ($errorMessages)) {
$value = $value->getCode ();
* Checks for an error object, same as in PEAR
* @param PEAR_Error|mixed $value
* Creates error, same as in PEAR with a customized flavor
function &raiseError ($code = SERVICES_WEATHER_ERROR_UNKNOWN_ERROR , $file = "", $line = 0 )
// This should improve the performance of the script, as PEAR is only included, when
$message = "Services_Weather";
if ($file != "" && $line > 0 ) {
$message .= " (". basename($file). ":". $line. ")";
$error = PEAR ::raiseError ($message, $code, PEAR_ERROR_RETURN , E_USER_NOTICE , "Services_Weather_Error", null , false );
Documentation generated on Mon, 11 Mar 2019 14:17:13 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.
|