From 7065450f03078fb1ac2105b75f9c7a4e052bca9c Mon Sep 17 00:00:00 2001 From: James Walker Date: Tue, 20 Jul 2010 17:34:58 -0700 Subject: normalizing tags for status_network --- classes/Status_network.php | 52 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) (limited to 'classes/Status_network.php') diff --git a/classes/Status_network.php b/classes/Status_network.php index 64016dd79..d1ca454e2 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -27,7 +27,8 @@ class Status_network extends Safe_DataObject /* the code below is auto generated do not remove the above tag */ public $__table = 'status_network'; // table name - public $nickname; // varchar(64) primary_key not_null + public $site_id; // int(4) primary_key not_null + public $nickname; // varchar(64) unique_key not_null public $hostname; // varchar(255) unique_key public $pathname; // varchar(255) unique_key public $dbhost; // varchar(255) @@ -39,7 +40,6 @@ class Status_network extends Safe_DataObject public $logo; // varchar(255) public $created; // datetime() not_null public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP - public $tags; // text /* Static get */ function staticGet($k,$v=NULL) { @@ -308,9 +308,55 @@ class Status_network extends Safe_DataObject */ function getTags() { - return array_filter(explode("|", strval($this->tags))); + $result = array(); + + $tags = new Status_network_tag(); + $tags->site_id = $this->site_id; + if ($tags->find()) { + while ($tags->fetch()) { + $result[] = $tags->tag; + } + } + + return $result; } + /** + * Save a given set of tags + * @param array tags + */ + function setTags($tags) + { + $this->clearTags(); + foreach ($tags as $tag) { + $snt = new Status_network_tag(); + $snt->site_id = $this->site_id; + $snt->tag = $tag; + $snt->created = common_sql_now(); + + $id = $snt->insert(); + if (!$id) { + throw new Exception(_("Unable to save tag.")); + } + } + + return true; + } + + function clearTags() + { + $tag = new Status_network_tag(); + $tag->site_id = $this->site_id; + + if ($tag->find()) { + while($tag->fetch()) { + $tag->delete(); + } + } + + $tag->free(); + } + /** * Check if this site record has a particular meta-info tag attached. * @param string $tag -- cgit v1.2.3-54-g00ecf From 29b8a6a18f67de74fb6adb9e91c10e7d1577c067 Mon Sep 17 00:00:00 2001 From: James Walker Date: Wed, 28 Jul 2010 11:57:54 -0400 Subject: don't try to save empty tags --- classes/Status_network.php | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'classes/Status_network.php') diff --git a/classes/Status_network.php b/classes/Status_network.php index d1ca454e2..339f4c813 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -329,14 +329,16 @@ class Status_network extends Safe_DataObject { $this->clearTags(); foreach ($tags as $tag) { - $snt = new Status_network_tag(); - $snt->site_id = $this->site_id; - $snt->tag = $tag; - $snt->created = common_sql_now(); - - $id = $snt->insert(); - if (!$id) { - throw new Exception(_("Unable to save tag.")); + if (!empty($tag)) { + $snt = new Status_network_tag(); + $snt->site_id = $this->site_id; + $snt->tag = $tag; + $snt->created = common_sql_now(); + + $id = $snt->insert(); + if (!$id) { + throw new Exception(_("Unable to save tag.")); + } } } -- cgit v1.2.3-54-g00ecf From 5688c635a62ea109a9aa9565e40e994ea984cd95 Mon Sep 17 00:00:00 2001 From: James Walker Date: Wed, 28 Jul 2010 12:13:53 -0400 Subject: backwards compatibility for old tags format in hasTag --- classes/Status_network.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'classes/Status_network.php') diff --git a/classes/Status_network.php b/classes/Status_network.php index 339f4c813..a0f3ba5f7 100644 --- a/classes/Status_network.php +++ b/classes/Status_network.php @@ -318,6 +318,11 @@ class Status_network extends Safe_DataObject } } + // XXX : for backwards compatibility + if (empty($result)) { + return explode('|', $this->tags); + } + return $result; } -- cgit v1.2.3-54-g00ecf