]> dev.renevier.net Git - syj.git/blobdiff - application/controllers/GeomController.php
exported path: use title instead of idx for filename
[syj.git] / application / controllers / GeomController.php
index bb56a97bafa3b2728be1407626934fec4b8eb732..b01837c8c50c218e20cb452c59ffc6ff3bebe4dc 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/*  This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+/*  This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
     and is published under the AGPL license. */
 
 class GeomController extends Zend_Controller_Action
@@ -28,12 +28,14 @@ class GeomController extends Zend_Controller_Action
         }
 
         if (!$pathMapper->find($idx, $path)) {
-            if ($pathMapper->hasexisted($idx)) {
-                $api->setCode(410);
-            } else {
-                $api->setCode(404);
+            if (!$pathMapper->findByTitle($idx, $path)) {
+                if ($pathMapper->hasexisted($idx)) {
+                    $api->setCode(410);
+                } else {
+                    $api->setCode(404);
+                }
+                return;
             }
-            return;
         }
 
         switch ($ext) {
@@ -56,9 +58,11 @@ class GeomController extends Zend_Controller_Action
         $data .= '<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">';
         $data .= '<Placemark>';
         if ($path->creator) {
-            $data .= '<atom:author><atom:name>' . htmlspecialchars($path->creator->pseudo) . '</atom:name></atom:author>';
+            $data .= '<atom:author><atom:name>'
+                        . htmlspecialchars($path->creator->pseudo, ENT_COMPAT, "UTF-8")
+                        . '</atom:name></atom:author>';
         }
-        $data .= '<name>' . htmlspecialchars($path->displayTitle) . '</name>';
+        $data .= '<name>' . htmlspecialchars($path->displayTitle, ENT_COMPAT, "UTF-8") . '</name>';
         $data .= $path->geom->toKML();
         $data .= '</Placemark>';
         $data .= '</kml>';
@@ -72,15 +76,15 @@ class GeomController extends Zend_Controller_Action
         $data .= '<gpx creator="syj" version="1.0" xmlns="http://www.topografix.com/GPX/1/0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">';
         $data .= '<trk>';
         if ($path->creator) {
-            $data .= '<author>' . htmlspecialchars($path->creator->pseudo) . '</author>';
+            $data .= '<author>' . htmlspecialchars($path->creator->pseudo, ENT_COMPAT, "UTF-8") . '</author>';
         }
-        $data .= '<name>' . htmlspecialchars($path->displayTitle) . '</name>';
+        $data .= '<name>' . htmlspecialchars($path->displayTitle, ENT_COMPAT, "UTF-8") . '</name>';
         $data .= $path->geom->toGPX();
         $data .= '</trk>';
         $data .= '</gpx>';
 
         $api = $this->_helper->SyjApi;
-        $api->setCheckIfNoneMatch(true)->setContentType('application/octet-stream')->setBody($data);
+        $api->setCheckIfNoneMatch(true)->setContentType('application/gpx+xml')->setBody($data);
     }
 
     protected function json(Syj_Model_Path $path) {