]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Elide_Tags
authorGarret Buell <terragb@gmail.com>
Mon, 1 Sep 2008 02:59:32 +0000 (22:59 -0400)
committerGarret Buell <terragb@gmail.com>
Mon, 1 Sep 2008 02:59:32 +0000 (22:59 -0400)
Make "#sanfrancisco", "#SanFrancisco", "#san_francisco", "#San.Francisco", and "#SAN-FRANCISCO" all link to http://identi.ca/tag/sanfrancisco but preserve appearance

darcs-hash:20080901025932-e3c0d-c0a939eaf7e242d88cbcb0d651c9d53718c60a9d.gz

classes/Notice.php
lib/util.php

index 5e1f83a52f535573f39721f330d319d61d83628d..06750b43638c156e9966b3e34a1fb49ddcbf98d8 100644 (file)
@@ -54,10 +54,13 @@ class Notice extends DB_DataObject
 
        function saveTags() {
                /* extract all #hastags */
-               $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9]{1,64})/', strtolower($this->content), $match);
+               $count = preg_match_all('/(?:^|\s)#([A-Za-z0-9_\-\.]{1,64})/', strtolower($this->content), $match);
                if (!$count) {
                        return true;
                }
+               
+               /* elide characters we don't want in the tag */
+               $match[1] = str_replace(array('-', '_', '.'), '', $match[1]);
 
                /* Add them to the database */
                foreach(array_unique($match[1]) as $hashtag) {
index 469bc986febd948edf43d1be91d834cd3bbdd492..15300921265d431bded7e15b7da3d801756c5fcc 100644 (file)
@@ -688,16 +688,16 @@ function common_render_content($text, $notice) {
        $r = preg_replace('@https?://[^)\]>\s]+@', '<a href="\0" class="extlink">\0</a>', $r);
        $r = preg_replace('/(^|\s+)@([a-z0-9]{1,64})/e', "'\\1@'.common_at_link($id, '\\2')", $r);
        $r = preg_replace('/^T ([A-Z0-9]{1,64}) /e', "'T '.common_at_link($id, '\\1').' '", $r);
-       $r = preg_replace('/(^|\s+)#([A-Za-z0-9]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
+       $r = preg_replace('/(^|\s+)#([A-Za-z0-9_\-\.]{1,64})/e', "'\\1#'.common_tag_link('\\2')", $r);
        # XXX: machine tags
        return $r;
 }
 
 function common_tag_link($tag) {
        if(common_config('site', 'fancy')) {
-               return '<a href="' . htmlspecialchars(common_path('tag/' . strtolower($tag))) . '" rel="tag" class="hashlink">' . htmlspecialchars($tag) . '</a>';
+               return '<a href="' . htmlspecialchars(common_path('tag/' . strtolower(str_replace(array('-', '_', '.'), '', $tag)))) . '" rel="tag" class="hashlink">' . htmlspecialchars($tag) . '</a>';
        } else {
-               return '<a href="' . htmlspecialchars(common_path('index.php?action=tag&tag=' . strtolower($tag))) . '" rel="tag" class="hashlink">' . htmlspecialchars($tag) . '</a>';
+               return '<a href="' . htmlspecialchars(common_path('index.php?action=tag&tag=' . strtolower(str_replace(array('-', '_', '.'), '', $tag)))) . '" rel="tag" class="hashlink">' . htmlspecialchars($tag) . '</a>';
        }
 }