Fix #22 and #24: Escape slashes in tags in URLs
authorChristian Weiske <cweiske@cweiske.de>
Fri, 14 Aug 2015 05:47:15 +0000 (07:47 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Fri, 14 Aug 2015 05:47:21 +0000 (07:47 +0200)
References:
- https://github.com/cweiske/grauphel/issues/22
- https://github.com/cweiske/grauphel/issues/24

controller/guicontroller.php

index 29dd03f..d48296d 100644 (file)
@@ -168,6 +168,7 @@ class GuiController extends Controller
      */
     public function tag($rawtag)
     {
+        $rawtag = $this->unescapeTagFromUrl($rawtag);
         $notes = $this->getNotes()->loadNotesOverview(null, $rawtag, true);
         usort(
             $notes,
@@ -288,7 +289,8 @@ class GuiController extends Controller
                     'name' => $name,
                     'id'   => $rawtag,
                     'href' => $this->urlGen->linkToRoute(
-                        'grauphel.gui.tag', array('rawtag' => $rawtag)
+                        'grauphel.gui.tag',
+                        array('rawtag' => $this->escapeTagForUrl($rawtag))
                     ),
                     'selected' => $rawtag == $selectedRawtag,
                 );
@@ -352,5 +354,15 @@ class GuiController extends Controller
         }
         return false;
     }
+
+    protected function escapeTagForUrl($rawtag)
+    {
+        return str_replace('/', '%2F', $rawtag);
+    }
+
+    protected function unescapeTagFromUrl($rawtag)
+    {
+        return str_replace('%2F', '/', $rawtag);
+    }
 }
 ?>