public $__table = 'qna_answer'; // table name
public $id; // char(36) primary key not null -> UUID
+ public $uri; // varchar(255)
public $question_id; // char(36) -> question.id UUID
public $profile_id; // int -> question.id
public $best; // (boolean) int -> whether the question asker has marked this as the best answer
public $content; // text -> response text
public $created; // datetime
- /**
- * Get an instance by key
- *
- * This is a utility method to get a single instance with a given key value.
- *
- * @param string $k Key to use to lookup
- * @param mixed $v Value to lookup
- *
- * @return QnA_Answer object found, or null for no hits
- *
- */
- function staticGet($k, $v=null)
- {
- return Memcached_DataObject::staticGet('QnA_Answer', $k, $v);
- }
-
- /**
- * Get an instance by compound key
- *
- * This is a utility method to get a single instance with a given set of
- * key-value pairs. Usually used for the primary key for a compound key; thus
- * the name.
- *
- * @param array $kv array of key-value mappings
- *
- * @return QA_Answer object found, or null for no hits
- *
- */
- function pkeyGet($kv)
- {
- return Memcached_DataObject::pkeyGet('QnA_Answer', $kv);
- }
-
/**
* The One True Thingy that must be defined and declared.
*/
'id' => array(
'type' => 'char',
'length' => 36,
- 'not null' => true, 'description' => 'UUID of the response'),
- 'uri' => array(
- 'type' => 'varchar',
- 'length' => 255,
- 'not null' => true,
- 'description' => 'UUID to the answer notice'
- ),
- 'question_id' => array(
- 'type' => 'char',
- 'length' => 36,
- 'not null' => true,
- 'description' => 'UUID of question being responded to'
- ),
- 'content' => array('type' => 'text'), // got a better name?
- 'best' => array('type' => 'int', 'size' => 'tiny'),
- 'revisions' => array('type' => 'int'),
- 'profile_id' => array('type' => 'int'),
- 'created' => array('type' => 'datetime', 'not null' => true),
+ 'not null' => true, 'description' => 'UUID of the response',
+ ),
+ 'uri' => array(
+ 'type' => 'varchar',
+ 'length' => 255,
+ 'not null' => true,
+ 'description' => 'UUID to the answer notice',
+ ),
+ 'question_id' => array(
+ 'type' => 'char',
+ 'length' => 36,
+ 'not null' => true,
+ 'description' => 'UUID of question being responded to',
+ ),
+ 'content' => array('type' => 'text'), // got a better name?
+ 'best' => array('type' => 'int', 'size' => 'tiny'),
+ 'revisions' => array('type' => 'int'),
+ 'profile_id' => array('type' => 'int'),
+ 'created' => array('type' => 'datetime', 'not null' => true),
),
'primary key' => array('id'),
'unique keys' => array(
*
* @return QnA_Answer found response or null
*/
- function getByNotice($notice)
+ static function getByNotice($notice)
{
- $answer = self::staticGet('uri', $notice->uri);
+ $answer = self::getKV('uri', $notice->uri);
if (empty($answer)) {
throw new Exception("No answer with URI {$notice->uri}");
}
*/
function getNotice()
{
- return Notice::staticGet('uri', $this->uri);
+ return Notice::getKV('uri', $this->uri);
}
static function fromNotice($notice)
{
- return QnA_Answer::staticGet('uri', $notice->uri);
+ return QnA_Answer::getKV('uri', $notice->uri);
}
- function bestUrl()
+ function getUrl()
{
- return $this->getNotice()->bestUrl();
+ return $this->getNotice()->getUrl();
}
/**
*/
function getQuestion()
{
- $question = QnA_Question::staticGet('id', $this->question_id);
+ $question = QnA_Question::getKV('id', $this->question_id);
if (empty($question)) {
// TRANS: Exception thown when getting a question with a non-existing ID.
// TRANS: %s is the non-existing question ID.
function getProfile()
{
- $profile = Profile::staticGet('id', $this->profile_id);
+ $profile = Profile::getKV('id', $this->profile_id);
if (empty($profile)) {
// TRANS: Exception thown when getting a profile with a non-existing ID.
// TRANS: %s is the non-existing profile ID.
array('id' => $answer->id)
);
- common_log(LOG_DEBUG, "Saving answer: $answer->id, $answer->uri");
+ common_debug("Saving answer: $answer->id, $answer->uri");
$answer->insert();
$content = sprintf(