summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/ChangeLog2
-rw-r--r--src/SemanticScuttle/Service/CommonDescription.php25
2 files changed, 27 insertions, 0 deletions
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 4b1c30b..3ea4b8a 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -9,6 +9,8 @@ ChangeLog for SemantiScuttle
- Fix HTTP content type header for RSS
- Add config option to allow sorting by bookmark creation date
instead of modification date
+- Fix bug #2887063: Common tag combination description feels broken
+
0.95.1 - 2009-11-16
-------------------
diff --git a/src/SemanticScuttle/Service/CommonDescription.php b/src/SemanticScuttle/Service/CommonDescription.php
index 8acd254..39c5826 100644
--- a/src/SemanticScuttle/Service/CommonDescription.php
+++ b/src/SemanticScuttle/Service/CommonDescription.php
@@ -49,6 +49,8 @@ class SemanticScuttle_Service_CommonDescription extends SemanticScuttle_DbServic
}
function addTagDescription($tag, $desc, $uId, $time) {
+ $tag = self::getSortedTag($tag);
+
// Check if no modification
$lastDesc = $this->getLastTagDescription($tag);
if($lastDesc['cdDescription'] == $desc) {
@@ -70,6 +72,8 @@ class SemanticScuttle_Service_CommonDescription extends SemanticScuttle_DbServic
}
function getLastTagDescription($tag) {
+ $tag = self::getSortedTag($tag);
+
$query = "SELECT *";
$query.= " FROM `". $this->getTableName() ."`";
$query.= " WHERE tag='".$tag."'";
@@ -200,5 +204,26 @@ class SemanticScuttle_Service_CommonDescription extends SemanticScuttle_DbServic
$this->db->sql_query($query);
}
+
+
+ /**
+ * Sorts a tag combination.
+ *
+ * Multiple tags are separated by "+" signs. Semantically,
+ * tag combinations like "blue+flower" and "flower+blue" are identical.
+ * This method sorts the single tags so i.e. the common bookmark description
+ * of "blue+flower" is also shown for "flower+blue".
+ *
+ * @param string $tag Single tag or tag combination ("+")
+ *
+ * @return string Sorted tag combination
+ */
+ protected static function getSortedTag($tag)
+ {
+ $tags = explode('+', $tag);
+ sort($tags);
+ return implode('+', $tags);
+ }
+
}
?>