protected $complete = null;
protected $question = null;
- protected $answerText = null;
+ protected $content = null;
/**
* Returns the title of the action
$this->element('title', null, _m('Answers'));
$this->elementEnd('head');
$this->elementStart('body');
- $form = new QnA_Answer($this->question, $this);
+ $form = new QnaanswerForm($this->question, $this);
$form->show();
$this->elementEnd('body');
$this->elementEnd('html');
public $profile_id; // int -> question.id
public $best; // (boolean) int -> whether the question asker has marked this as the best answer
public $revisions; // int -> count of revisions to this answer
- public $text; // text -> response text
+ public $content; // text -> response text
public $created; // datetime
/**
'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'),
}
return question;
}
-
+
function getProfile()
{
$profile = Profile::staticGet('id', $this->profile_id);
{
return self::toHTML(
$this->getProfile(),
- $this->getQuestion()
+ $this->getQuestion(),
+ $this
);
}
{
return self::toString(
$this->getProfile(),
- $this->getQuestion()
+ $this->getQuestion(),
+ $this
);
}
- static function toHTML($profile, $event, $response)
+ static function toHTML($profile, $question, $answer)
{
- $fmt = null;
-
- $notice = $event->getNotice();
+ $notice = $question->getNotice();
- switch ($response) {
- case 'Y':
- $fmt = _("<span class='automatic event-rsvp'><a href='%1s'>%2s</a> is attending <a href='%3s'>%4s</a>.</span>");
- break;
- case 'N':
- $fmt = _("<span class='automatic event-rsvp'><a href='%1s'>%2s</a> is not attending <a href='%3s'>%4s</a>.</span>");
- break;
- case '?':
- $fmt = _("<span class='automatic event-rsvp'><a href='%1s'>%2s</a> might attend <a href='%3s'>%4s</a>.</span>");
- break;
- default:
- throw new Exception("Unknown response code {$response}");
- break;
- }
+ $fmt = '<span class="answer_author"><a href="%1s">answer</a> by <a href="%2s">%3s</a></span>';
+ $fmt .= '<span class="answer_content">%4s</span>';
- return sprintf($fmt,
- htmlspecialchars($profile->profileurl),
- htmlspecialchars($profile->getBestName()),
- htmlspecialchars($notice->bestUrl()),
- htmlspecialchars($event->title));
+ return sprintf(
+ $fmt,
+ htmlspecialchars($notice->bestUrl()),
+ htmlspecialchars($profile->profileurl),
+ htmlspecialchars($profile->getBestName()),
+ htmlspecialchars($answer->content)
+ );
}
- static function toString($profile, $event, $response)
+ static function toString($profile, $question, $answer)
{
- $fmt = null;
-
- $notice = $event->getNotice();
+ $notice = $question->getNotice();
- switch ($response) {
- case 'Y':
- $fmt = _("%1s is attending %2s.");
- break;
- case 'N':
- $fmt = _("%1s is not attending %2s.");
- break;
- case '?':
- $fmt = _("%1s might attend %2s.>");
- break;
- default:
- throw new Exception("Unknown response code {$response}");
- break;
- }
+ $fmt = _(
+ '%1s answered the question "%2s": %3s'
+ );
- return sprintf($fmt,
- $profile->getBestName(),
- $event->title);
+ return sprintf(
+ $fmt,
+ htmlspecialchars($profile->getBestName()),
+ htmlspecialchars($question->title),
+ htmlspecialchars($answer->content)
+ );
}
-
/**
* Save a new answer notice
*
$answer->question_id = $question->id;
$answer->revisions = 0;
$answer->best = 0;
- $answer->text = $text;
+ $answer->content = $text;
$answer->created = common_sql_now();
$answer->uri = common_local_url(
'qnashowanswer',
return $this->getNotice()->bestUrl();
}
+ function getProfile()
+ {
+ $profile = Profile::staticGet('id', $this->profile_id);
+ if (empty($profile)) {
+ throw new Exception("No profile with ID {$this->profile_id}");
+ }
+ return $profile;
+ }
+
/**
* Get the answer from a particular user to this question, if any.
*
}
}
+ function getAnswers()
+ {
+ $a = new QnA_Answer();
+ $a->question_id = $this->id;
+ $cnt = $a->find();
+ if (!empty($cnt)) {
+ return $a;
+ } else {
+ return null;
+ }
+ }
+
function countAnswers()
{
$a = new QnA_Answer();
return QnA_Question::staticGet('uri', $notice->uri);
}
+ function asHTML()
+ {
+ return self::toHTML(
+ $this->getProfile(),
+ $this,
+ $this->getAnswers()
+ );
+ }
+
+ function asString()
+ {
+ return self::toString(
+ $this->getProfile(),
+ $this,
+ $this->getAnswers()
+ );
+ }
+
+ static function toHTML($profile, $question, $answer)
+ {
+ $notice = $question->getNotice();
+
+ $fmt = '<div class="qna_question">';
+ $fmt .= '<span class="question_title"><a href="%1s">%2s</a></span>';
+ $fmt .= '<span class="question_description">%3s</span>';
+ $fmt .= '<span class="question_author">asked by <a href="%4s">%5s</a></span>';
+ $fmt .= '</div>';
+
+ $q = sprintf(
+ $fmt,
+ htmlspecialchars($notice->bestUrl()),
+ htmlspecialchars($question->title),
+ htmlspecialchars($question->description),
+ htmlspecialchars($profile->profileurl),
+ htmlspecialchars($profile->getBestName())
+ );
+
+ $ans = array();
+
+ $ans[] = '<div class="qna_answers">';
+
+ while($answer->fetch()) {
+ $ans[] = $answer->asHTML();
+ }
+
+ $ans[] .= '</div>';
+
+ return $q . implode($ans);
+ }
+
+ static function toString($profile, $question, $answers)
+ {
+ $fmt = _(
+ '%1s asked the question "%2s": %3s'
+ );
+
+ return sprintf(
+ $fmt,
+ htmlspecialchars($profile->getBestName()),
+ htmlspecialchars($question->title),
+ htmlspecialchars($question->description)
+ );
+ }
+
/**
* Save a new question notice
*