summaryrefslogtreecommitdiff
path: root/classes/Notice.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@controlyourself.ca>2009-02-16 18:02:31 -0500
committerEvan Prodromou <evan@controlyourself.ca>2009-02-16 18:02:31 -0500
commitca90d790aa9d93a4e88602330f91d4703c29b75d (patch)
tree256d565255f1ae9b377eea5a46615bb8233dfbf3 /classes/Notice.php
parent9978eadbf213e84a0bf3326fbf953e343d703e8e (diff)
Automatically add a tag for every group messages
If you post to a group !foo, it's automatically listed as being tagged "foo". This is to keep users from having to do !foo #foo in all their messages.
Diffstat (limited to 'classes/Notice.php')
-rw-r--r--classes/Notice.php40
1 files changed, 27 insertions, 13 deletions
diff --git a/classes/Notice.php b/classes/Notice.php
index b8cd2bd7f..8e08ad503 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -94,23 +94,28 @@ class Notice extends Memcached_DataObject
/* Add them to the database */
foreach(array_unique($match[1]) as $hashtag) {
/* elide characters we don't want in the tag */
- $hashtag = common_canonical_tag($hashtag);
-
- $tag = DB_DataObject::factory('Notice_tag');
- $tag->notice_id = $this->id;
- $tag->tag = $hashtag;
- $tag->created = $this->created;
- $id = $tag->insert();
- if (!$id) {
- $last_error = PEAR::getStaticProperty('DB_DataObject','lastError');
- common_log(LOG_ERR, 'DB error inserting hashtag: ' . $last_error->message);
- common_server_error(sprintf(_('DB error inserting hashtag: %s'), $last_error->message));
- return;
- }
+ $this->saveTag($hashtag);
}
return true;
}
+ function saveTag($hashtag)
+ {
+ $hashtag = common_canonical_tag($hashtag);
+
+ $tag = new Notice_tag();
+ $tag->notice_id = $this->id;
+ $tag->tag = $hashtag;
+ $tag->created = $this->created;
+ $id = $tag->insert();
+
+ if (!$id) {
+ throw new ServerException(sprintf(_('DB error inserting hashtag: %s'),
+ $last_error->message));
+ return;
+ }
+ }
+
static function saveNew($profile_id, $content, $source=null, $is_local=1, $reply_to=null, $uri=null) {
$profile = Profile::staticGet($profile_id);
@@ -621,6 +626,15 @@ class Notice extends Memcached_DataObject
continue;
}
+ // we automatically add a tag for every group name, too
+
+ $tag = Notice_tag::pkeyGet(array('tag' => common_canonical_tag($nickname),
+ 'notice_id' => $this->id));
+
+ if (is_null($tag)) {
+ $this->saveTag($nickname);
+ }
+
if ($profile->isMember($group)) {
$gi = new Group_inbox();