From ed46a38ecfea0a87e01aacfcde181087d5e0f19f Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Wed, 17 Feb 2010 01:11:14 -0800 Subject: [PATCH] - conversation.uri needs to be nullable - factory method for creating new local conversations --- classes/Conversation.php | 33 +++++++++++++++++++++++++++++++-- classes/statusnet.ini | 3 ++- db/statusnet.sql | 2 +- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/classes/Conversation.php b/classes/Conversation.php index 929b06c149..ea8bd87b56 100755 --- a/classes/Conversation.php +++ b/classes/Conversation.php @@ -36,14 +36,43 @@ class Conversation extends Memcached_DataObject public $__table = 'conversation'; // table name public $id; // int(4) primary_key not_null - public $uri; // varchar(225) unique_key not_null + public $uri; // varchar(225) unique_key public $created; // datetime not_null public $modified; // timestamp not_null default_CURRENT_TIMESTAMP /* Static get */ - function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('Session',$k,$v); } + function staticGet($k,$v=NULL) { return Memcached_DataObject::staticGet('conversation',$k,$v); } /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE + + /** + * Factory method for creating a new conversation + * + * @return Conversation the new conversation DO + */ + static function create() + { + $conv = new Conversation(); + $conv->created = common_sql_now(); + $id = $conv->insert(); + + if (empty($id)) { + common_log_db_error($conv, 'INSERT', __FILE__); + return null; + } + + $orig = clone($conv); + $orig->uri = common_local_url('conversation', array('id' => $id)); + $result = $orig->update($conv); + + if (empty($result)) { + common_log_db_error($conv, 'UPDATE', __FILE__); + return null; + } + + return $conv; + } + } diff --git a/classes/statusnet.ini b/classes/statusnet.ini index 7a9ae07e70..81c1b68b23 100644 --- a/classes/statusnet.ini +++ b/classes/statusnet.ini @@ -49,12 +49,13 @@ consumer_key = K [conversation] id = 129 -uri = 130 +uri = 2 created = 142 modified = 384 [conversation__keys] id = N +uri = U [deleted_notice] id = 129 diff --git a/db/statusnet.sql b/db/statusnet.sql index 74e5b69547..97117c80aa 100644 --- a/db/statusnet.sql +++ b/db/statusnet.sql @@ -636,7 +636,7 @@ create table inbox ( create table conversation ( id integer auto_increment primary key comment 'unique identifier', - uri varchar(225) not null unique comment 'URI of the conversation', + uri varchar(225) unique comment 'URI of the conversation', created datetime not null comment 'date this record was created', modified timestamp comment 'date this record was modified' ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;