parseXml($xml); foreach ($values as $element) { if($this->sepNameSpace(strtoupper($element['tag'])) == "WFS_CAPABILITIES" && $element['type'] == "open"){ return $element['attributes'][version]; } } throw new Exception("WFS version could not be determined from XML."); } /** * Creates a WFS object by parsing its capabilities document. * * The WFS version is determined by parsing * the capabilities document up-front. * * @return Wfs * @param $xml String, $auth - optional array with authentication info, default false */ public function createFromXml ($xml, $auth=false) { try { $version = $this->getVersionFromXml($xml); switch ($version) { case "1.0.0": $factory = new Wfs_1_0_Factory(); break; case "1.1.0": $factory = new Wfs_1_1_Factory(); break; case "2.0.0": $factory = new Wfs_2_0_Factory(); break; case "2.0.2": $factory = new Wfs_2_0_Factory(); break; default: throw new Exception("Unknown WFS version " . $version); break; } return $factory->createFromXml($xml, $auth); } catch (Exception $e) { new mb_exception($e); return null; } } public function createFromDb ($id) { try { $sql = "SELECT wfs_version FROM wfs WHERE wfs_id = $1"; $v = array($id); $t = array("i"); $res = db_prep_query($sql, $v, $t); $row = db_fetch_array($res); if ($row) { $version = $row["wfs_version"]; switch ($version) { case "1.0.0": $factory = new Wfs_1_0_Factory(); break; case "1.1.0": $factory = new Wfs_1_1_Factory(); break; case "2.0.0": $factory = new Wfs_2_0_Factory(); break; default: throw new Exception("Unknown WFS version " . $version); break; } return $factory->createFromDb($id); } } catch (Exception $e) { new mb_exception($e); return null; } } } ?>