Im Folgenden findet sich der Quelltext von poi2gpx.php
vom Nutzer Mey2008 in der Fassung vom 09. August 2017.
<?php /* poi2gpx - Version 2015-05-13 Author: https://de.wikivoyage.org/wiki/User:Mey2008 Contributors: https://it.wikivoyage.org/wiki/Utente:Andyrom75 License: Affero GPL v3 or later http://www.gnu.org/licenses/agpl-3.0.html Recent changes: 2017-08-09: adding description 2015-05-13: character & masked as & - application/gpx+xml 2015-04-27: default color; read monument articls 2015-04-18: Read Template:GPX/ for ru 2015-04-17: Convert special characters in file name to "_" 2015-04-16: Special characters ' " & now allowed in POI names 2015-04-02: Better regex to filter header of gpx track 2015-04-01: New color for drink, filename, type + nummer + name 2015-03-21: All marker colors equal https://en.wikivoyage.org/wiki/Template:TypeToColor ToDo: --- */ //PHP error reporting *** TEST *** error_reporting (E_ALL | E_STRICT); ini_set ('display_errors' , 1); include('./readpage.php'); // echo '<pre>'; print_r($GLOBALS); echo '</pre>'; // *** TEST *** // POI'S to GPX $file_out = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> '; $file_out .= '<gpx version="1.1" creator="Wikivoyage" xmlns="http://www.topografix.com/GPX/1/1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"> '; for($i=1; $i <= $max; $i++) { if ($p[$i] != 0) { $lat = number_format($x[$i], 4); $lon = number_format($y[$i], 4); $number = str_pad($p[$i], 2 ,'0', STR_PAD_LEFT); $name = str_replace(array('"', "'", "<", ">", "&", "[["), array(""", "'", "<", ">", "&", ""), $n[$i]); $cat = $c[$i]; $desc = $d[$i]; $color = str_ireplace(array('see', 'do', 'buy', 'eat', 'drink', 'sleep', 'other', 'city', 'go', 'view', 'vicinity', 'gold', 'lime', 'red', 'silver'), array('#4682b4', '#808080', '#008080', '#d2691e', '#810061', '#000080', '#228b22', '#0000ff', '#a52a2a', '#416941', '#800000', '#ffd700', '#00ff00', '#ff0000', '#c0c0c0'), $cat); if ($color == $cat) { $color = "ffd700"; $line = ' <wpt lat="' . $lat . '" lon="' . $lon . '"> <name>' . $name . '</name> <type>' . $cat . '</type> <extensions> <color>' . $color . '</color> </extensions> <desc>' . $desc . '</desc> </wpt> '; } else { $line = ' <wpt lat="' . $lat . '" lon="' . $lon . '"> <name>[' . ucfirst($cat) . ' ' . $number . '] ' . $name . '</name> <type>' . $cat . '</type> <extensions> <color>' . $color . '</color> </extensions> <desc>' . $desc . '</desc> </wpt> '; } $file_out .= $line; } } // read gpx $gpxcontent = ""; if ($lang == 'el' || $lang == 'en' || $lang == 'fr' || $lang == 'it' || $lang == 'nl' || $lang == 'ru') { // Gpx data --> Template:GPX/Articlename $gpxcontent = @file_get_contents("https://" . $lang . ".wikivoyage.org/w/index.php?title=Template:GPX/" . $file . "&action=raw"); } else { // Gpx data --> Articlename/Gpx $gpxcontent = @file_get_contents("https://" . $lang . ".wikivoyage.org/w/index.php?title=" . $file . "/Gpx&action=raw"); } if (!$gpxcontent) { $gpxcontent = "</gpx>"; } $gpxcontent = str_replace("\n", "\r\n", $gpxcontent); $gpxcontent = preg_replace("/(.*)?<trk>/s", " <trk>", $gpxcontent); $file_out = $file_out . $gpxcontent; $out = strlen($file_out); if ($out > 350) { $filename = str_replace(array(":", "/"), "_", $file) . "_" . $lang . ".gpx"; if (isset($file_out)) { header("Content-Length: $out"); header("Content-Type: application/gpx+xml"); header("Content-Disposition: attachment; filename=$filename"); header("Content-Transfer-Encoding: binary"); echo $file_out; exit; } } else { $file_out = "No geocoded POI's in this WV acticle."; $out = strlen($file_out); $filename = str_replace(array(":", "/"), "_", $file) . "_" . $lang . "_--_ERROR_--_NO_GEOCODED_POI.txt"; if (isset($file_out)) { header("Content-Length: $out"); header("Content-Type: application/gpx+xml"); header("Content-Disposition: attachment; filename=$filename"); header("Content-Transfer-Encoding: binary"); echo $file_out; exit; } } ?>