X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FQnA%2Fclasses%2FQnA_Answer.php;h=2aa69cf5a301aab87e845402d7647cf8e040e804;hb=0590f2975e6c5b26bbe6121da5c49890e035721e;hp=a2333be6dcbccfc6d0bc58a876ae9720eed77e44;hpb=528d999ae757d382c00a88baac493f3c51e11d3b;p=quix0rs-gnu-social.git diff --git a/plugins/QnA/classes/QnA_Answer.php b/plugins/QnA/classes/QnA_Answer.php index a2333be6dc..2aa69cf5a3 100644 --- a/plugins/QnA/classes/QnA_Answer.php +++ b/plugins/QnA/classes/QnA_Answer.php @@ -48,6 +48,7 @@ class QnA_Answer extends Managed_DataObject public $__table = 'qna_answer'; // table name public $id; // char(36) primary key not null -> UUID + public $uri; // varchar(191) not 255 because utf8mb4 takes more space 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 @@ -55,39 +56,6 @@ class QnA_Answer extends Managed_DataObject 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. */ @@ -99,24 +67,25 @@ class QnA_Answer extends Managed_DataObject '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' => 191, + '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( @@ -136,9 +105,9 @@ class QnA_Answer extends Managed_DataObject * * @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}"); } @@ -152,12 +121,17 @@ class QnA_Answer extends Managed_DataObject */ function getNotice() { - return Notice::staticGet('uri', $this->uri); + return Notice::getKV('uri', $this->uri); } - function bestUrl() + static function fromNotice($notice) { - return $this->getNotice()->bestUrl(); + return QnA_Answer::getKV('uri', $notice->uri); + } + + function getUrl() + { + return $this->getNotice()->getUrl(); } /** @@ -167,18 +141,22 @@ class QnA_Answer extends Managed_DataObject */ function getQuestion() { - $question = QnA_Question::staticGet('id', $this->question_id); + $question = QnA_Question::getKV('id', $this->question_id); if (empty($question)) { - throw new Exception("No question with ID {$this->question_id}"); + // TRANS: Exception thown when getting a question with a non-existing ID. + // TRANS: %s is the non-existing question ID. + throw new Exception(sprintf(_m('No question with ID %s'),$this->question_id)); } return $question; } function getProfile() { - $profile = Profile::staticGet('id', $this->profile_id); + $profile = Profile::getKV('id', $this->profile_id); if (empty($profile)) { - throw new Exception("No profile with ID {$this->profile_id}"); + // TRANS: Exception thown when getting a profile with a non-existing ID. + // TRANS: %s is the non-existing profile ID. + throw new Exception(sprintf(_m('No profile with ID %s'),$this->profile_id)); } return $profile; } @@ -205,43 +183,45 @@ class QnA_Answer extends Managed_DataObject { $notice = $question->getNotice(); - $fmt = ''; + $out = new XMLStringer(); + $cls = array('qna_answer'); if (!empty($answer->best)) { - $fmt = '

'; - } else { - $fmt = '

'; + $cls[] = 'best'; } - $fmt .= 'answer by %3$s'; - $fmt .= '%4$s'; + $out->elementStart('p', array('class' => implode(' ', $cls))); + $out->elementStart('span', 'answer-content'); + $out->raw(common_render_text($answer->content)); + $out->elementEnd('span'); + if (!empty($answer->revisions)) { - $fmt .= '' - . $answer->revisions - . _m('revisions') - . ''; + $out->elementstart('span', 'answer-revisions'); + $out->text( + htmlspecialchars( + // Notification of how often an answer was revised. + // TRANS: %s is the number of answer revisions. + sprintf(_m('%s revision','%s revisions',$answer->revisions), $answer->revisions) + ) + ); + $out->elementEnd('span'); } - $fmt .= '

'; - return sprintf( - $fmt, - htmlspecialchars($notice->bestUrl()), - htmlspecialchars($profile->profileurl), - htmlspecialchars($profile->getBestName()), - htmlspecialchars($answer->content) - ); + $out->elementEnd('p'); + + return $out->getString(); } static function toString($profile, $question, $answer) { + // @todo FIXME: unused variable? $notice = $question->getNotice(); - $fmt = _m( - '%1$s answered the question "%2$s": %3$s' - ); - return sprintf( - $fmt, + // TRANS: Text for a question that was answered. + // TRANS: %1$s is the user that answered, %2$s is the question title, + // TRANS: %2$s is the answer content. + _m('%1$s answered the question "%2$s": %3$s'), htmlspecialchars($profile->getBestName()), htmlspecialchars($question->title), htmlspecialchars($answer->content) @@ -280,6 +260,8 @@ class QnA_Answer extends Managed_DataObject $answer->insert(); $content = sprintf( + // TRANS: Text for a question that was answered. + // TRANS: %s is the question title. _m('answered "%s"'), $question->title );