]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
Fixes #3210. Keeping -s in URL friendly titles.
authorBrett Profitt <brett.profitt@gmail.com>
Sun, 26 Feb 2012 01:54:15 +0000 (17:54 -0800)
committerBrett Profitt <brett.profitt@gmail.com>
Sun, 26 Feb 2012 01:54:15 +0000 (17:54 -0800)
engine/lib/output.php
engine/tests/regression/trac_bugs.php

index b96cf354cf37d6f96cae062cdc807a329a3ec3a8..b1245a924b60d8cce3a84e38e62e7586842679a1 100644 (file)
@@ -310,15 +310,19 @@ function elgg_get_friendly_title($title) {
                return $result;
        }
 
+       // @todo not using this because of locale concerns
        //$title = iconv('UTF-8', 'ASCII//TRANSLIT', $title);
 
+       // @todo this uses a utf8 character class. can use if
+       // we want to support utf8 in the url.
+       //$title = preg_replace('/[^\p{L}\- ]/u', '', $title);
+
        // use A-Za-z0-9_ instead of \w because \w is locale sensitive
-       $title = preg_replace("/[^A-Za-z0-9_ ]/", "", $title);
-       $title = preg_replace("/[^\w ]/", "", $title);
+       $title = preg_replace("/[^A-Za-z0-9_\- ]/", "", $title);
        $title = str_replace(" ", "-", $title);
        $title = str_replace("--", "-", $title);
        $title = trim($title);
-       $title = strtolower($title);
+       $title = elgg_strtolower($title);
        return $title;
 }
 
index 99cf8177445523d2b34c7f15d7f83d9b6a96e5c3..26a45ab6a2b62535a9c41cee9f130a217b5c8fb5 100644 (file)
@@ -199,4 +199,22 @@ class ElggCoreRegressionBugsTest extends ElggCoreUnitTest {
                $this->assertFalse($result);
                $this->assertEqual(array(), $DB_DELAYED_QUERIES);
        }
+
+       /**
+        * http://trac.elgg.org/ticket/3210 - Don't remove -s in friendly titles
+        * @todo: http://trac.elgg.org/ticket/2276 - improve char encoding
+        */
+       public function test_friendly_title() {
+               $cases = array(
+                       'Simple Test' => 'simple-test',
+                       'Test top-level page' => 'test-top-level-page',
+//                     'éclair' => 'éclair',
+//                     'English, Español, and 日本語' => 'english-español-and-日本語'
+               );
+
+               foreach ($cases as $case => $expected) {
+                       $friendly_title = elgg_get_friendly_title($case);
+                       $this->assertIdentical($expected, $friendly_title);
+               }
+       }
 }