X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=classes%2FStatus_network.php;h=5d01e72ccc9041c62f1313891963bf820fdfaa37;hb=6d5b6d98b5f68d784fee736518eaaae7a26a51f6;hp=4a1f2c37475a4ef4a91ff26d7fd8260669387688;hpb=8b9436e8ae1ebcc7ef10752bb9666939200e26aa;p=quix0rs-gnu-social.git diff --git a/classes/Status_network.php b/classes/Status_network.php index 4a1f2c3747..5d01e72ccc 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) { @@ -144,12 +144,40 @@ class Status_network extends Safe_DataObject return parent::update($orig); } + /** + * DB_DataObject doesn't allow updating keys (even non-primary) + */ + function updateKeys(&$orig) + { + $this->_connect(); + foreach (array('hostname', 'pathname') as $k) { + if (strcmp($this->$k, $orig->$k) != 0) { + $parts[] = $k . ' = ' . $this->_quote($this->$k); + } + } + if (count($parts) == 0) { + // No changes + return true; + } + + $toupdate = implode(', ', $parts); + + $table = common_database_tablename($this->tableName()); + $qry = 'UPDATE ' . $table . ' SET ' . $toupdate . + ' WHERE nickname = ' . $this->_quote($this->nickname); + $orig->decache(); + $result = $this->query($qry); + $this->decache(); + + return $result; + } + function delete() { $this->decache(); # while we still have the values! return parent::delete(); } - + /** * @param string $servername hostname * @param string $wildcard hostname suffix to match wildcard config @@ -279,7 +307,54 @@ class Status_network extends Safe_DataObject */ function getTags() { - return array_filter(explode("|", strval($this->tags))); + $result = Status_network_tag::getTags($this->site_id); + + // XXX : for backwards compatibility + if (empty($result)) { + return explode('|', $this->tags); + } + + return $result; + } + + /** + * Save a given set of tags + * @param array tags + * @fixme only add/remove differentials + */ + function setTags($tags) + { + $this->clearTags(); + foreach ($tags as $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) { + // TRANS: Exception thrown when a tag cannot be saved. + 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(); } /**