| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Data class to save answers to questions | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |  * @category QnA | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |  * @package  StatusNet | 
					
						
							|  |  |  |  * @author   Zach Copley <zach@status.net> | 
					
						
							|  |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | 
					
						
							|  |  |  |  * @link     http://status.net/ | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * StatusNet - the distributed open-source microblogging tool | 
					
						
							|  |  |  |  * Copyright (C) 2011, StatusNet, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.     See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program. If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if (!defined('STATUSNET')) { | 
					
						
							|  |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * For storing answers | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |  * @category QnA | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |  * @package  StatusNet | 
					
						
							|  |  |  |  * @author   Zach Copley <zach@status.net> | 
					
						
							|  |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl.html AGPLv3 | 
					
						
							|  |  |  |  * @link     http://status.net/ | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @see      DB_DataObject | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  | class QnA_Answer extends Managed_DataObject | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |     const  OBJECT_TYPE = 'http://activityschema.org/object/answer'; | 
					
						
							| 
									
										
										
										
											2011-03-21 16:51:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |     public $__table = 'qna_answer'; // table name
 | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     public $id;          // char(36) primary key not null -> UUID
 | 
					
						
							| 
									
										
										
										
											2015-02-12 18:18:55 +01:00
										 |  |  |     public $uri;         // varchar(191)   not 255 because utf8mb4 takes more space
 | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     public $question_id; // char(36) -> question.id UUID
 | 
					
						
							|  |  |  |     public $profile_id;  // int -> question.id
 | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     public $best;        // (boolean) int -> whether the question asker has marked this as the best answer
 | 
					
						
							|  |  |  |     public $revisions;   // int -> count of revisions to this answer
 | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |     public $content;     // text -> response text
 | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     public $created;     // datetime
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * The One True Thingy that must be defined and declared. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public static function schemaDef() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return array( | 
					
						
							|  |  |  |             'description' => 'Record of answers to questions', | 
					
						
							|  |  |  |             'fields' => array( | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |                 'id' => array( | 
					
						
							| 
									
										
										
										
											2011-03-21 16:51:38 -07:00
										 |  |  |                     'type'     => 'char', | 
					
						
							|  |  |  |                     'length'   => 36, | 
					
						
							| 
									
										
										
										
											2015-02-12 17:45:02 +01:00
										 |  |  |                     'not null' => true, 'description' => 'UUID of the response', | 
					
						
							|  |  |  |                 ), | 
					
						
							|  |  |  |                 'uri'      => array( | 
					
						
							|  |  |  |                     'type'        => 'varchar', | 
					
						
							| 
									
										
										
										
											2015-02-12 18:18:55 +01:00
										 |  |  |                     'length'      => 191, | 
					
						
							| 
									
										
										
										
											2015-02-12 17:45:02 +01:00
										 |  |  |                     '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), | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |             ), | 
					
						
							|  |  |  |             'primary key' => array('id'), | 
					
						
							|  |  |  |             'unique keys' => array( | 
					
						
							|  |  |  |                 'question_uri_key' => array('uri'), | 
					
						
							|  |  |  |                 'question_id_profile_id_key' => array('question_id', 'profile_id'), | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             'indexes' => array( | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |                 'profile_id_question_id_index' => array('profile_id', 'question_id'), | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |             ) | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Get an answer based on a notice | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param Notice $notice Notice to check for | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |      * @return QnA_Answer found response or null | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2013-08-18 11:18:45 +02:00
										 |  |  |     static function getByNotice($notice) | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-08-18 13:04:58 +02:00
										 |  |  |         $answer = self::getKV('uri', $notice->uri); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         if (empty($answer)) { | 
					
						
							| 
									
										
										
										
											2011-04-04 01:27:38 -07:00
										 |  |  |             throw new Exception("No answer with URI {$notice->uri}"); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         } | 
					
						
							|  |  |  |         return $answer; | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Get the notice that belongs to this answer | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Notice | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     function getNotice() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-08-18 13:04:58 +02:00
										 |  |  |         return Notice::getKV('uri', $this->uri); | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-04 23:58:35 -07:00
										 |  |  |     static function fromNotice($notice) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-08-18 13:04:58 +02:00
										 |  |  |         return QnA_Answer::getKV('uri', $notice->uri); | 
					
						
							| 
									
										
										
										
											2011-04-04 23:58:35 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |     function getUrl() | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2014-04-29 19:46:58 +02:00
										 |  |  |         return $this->getNotice()->getUrl(); | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Get the Question this is an answer to | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |      * @return QnA_Question | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |      */ | 
					
						
							|  |  |  |     function getQuestion() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-08-18 13:04:58 +02:00
										 |  |  |         $question = QnA_Question::getKV('id', $this->question_id); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         if (empty($question)) { | 
					
						
							| 
									
										
										
										
											2011-06-05 11:06:08 +02:00
										 |  |  |             // 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)); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-03-31 09:58:26 -07:00
										 |  |  |         return $question; | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     function getProfile() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2013-08-18 13:04:58 +02:00
										 |  |  |         $profile = Profile::getKV('id', $this->profile_id); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         if (empty($profile)) { | 
					
						
							| 
									
										
										
										
											2011-06-05 11:06:08 +02:00
										 |  |  |             // 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)); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         } | 
					
						
							|  |  |  |         return $profile; | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     function asHTML() | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         return self::toHTML( | 
					
						
							|  |  |  |             $this->getProfile(), | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |             $this->getQuestion(), | 
					
						
							|  |  |  |             $this | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         ); | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     function asString() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return self::toString( | 
					
						
							|  |  |  |             $this->getProfile(), | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |             $this->getQuestion(), | 
					
						
							|  |  |  |             $this | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |     static function toHTML($profile, $question, $answer) | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |         $notice = $question->getNotice(); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |         $out = new XMLStringer(); | 
					
						
							| 
									
										
										
										
											2011-04-04 01:27:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |         $cls = array('qna_answer'); | 
					
						
							| 
									
										
										
										
											2011-04-04 01:27:38 -07:00
										 |  |  |         if (!empty($answer->best)) { | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |             $cls[] = 'best'; | 
					
						
							| 
									
										
										
										
											2011-04-04 01:27:38 -07:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |         $out->elementStart('p', array('class' => implode(' ', $cls))); | 
					
						
							|  |  |  |         $out->elementStart('span', 'answer-content'); | 
					
						
							| 
									
										
										
										
											2011-05-23 12:30:34 -04:00
										 |  |  |         $out->raw(common_render_text($answer->content)); | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |         $out->elementEnd('span'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-01 23:59:35 -07:00
										 |  |  |         if (!empty($answer->revisions)) { | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |             $out->elementstart('span', 'answer-revisions'); | 
					
						
							|  |  |  |             $out->text( | 
					
						
							|  |  |  |                 htmlspecialchars( | 
					
						
							| 
									
										
										
										
											2011-06-05 11:06:08 +02:00
										 |  |  |                     // 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) | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |                 ) | 
					
						
							|  |  |  |             ); | 
					
						
							|  |  |  |             $out->elementEnd('span'); | 
					
						
							| 
									
										
										
										
											2011-04-01 23:59:35 -07:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-04 15:08:47 -07:00
										 |  |  |         $out->elementEnd('p'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $out->getString(); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |     static function toString($profile, $question, $answer) | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2011-06-05 11:06:08 +02:00
										 |  |  |         // @todo FIXME: unused variable?
 | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |         $notice = $question->getNotice(); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |         return sprintf( | 
					
						
							| 
									
										
										
										
											2011-06-05 11:06:08 +02:00
										 |  |  |             // 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'), | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |             htmlspecialchars($profile->getBestName()), | 
					
						
							|  |  |  |             htmlspecialchars($question->title), | 
					
						
							|  |  |  |             htmlspecialchars($answer->content) | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Save a new answer notice | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param Profile  $profile | 
					
						
							|  |  |  |      * @param Question $Question the question being answered | 
					
						
							|  |  |  |      * @param array | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return Notice saved notice | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |     static function saveNew($profile, $question, $text, $options = null) | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |     { | 
					
						
							|  |  |  |         if (empty($options)) { | 
					
						
							|  |  |  |             $options = array(); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-21 16:51:38 -07:00
										 |  |  |         $answer              = new QnA_Answer(); | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |         $answer->id          = UUID::gen(); | 
					
						
							|  |  |  |         $answer->profile_id  = $profile->id; | 
					
						
							|  |  |  |         $answer->question_id = $question->id; | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         $answer->revisions   = 0; | 
					
						
							|  |  |  |         $answer->best        = 0; | 
					
						
							| 
									
										
										
										
											2011-03-30 10:33:15 -07:00
										 |  |  |         $answer->content     = $text; | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |         $answer->created     = common_sql_now(); | 
					
						
							|  |  |  |         $answer->uri         = common_local_url( | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |             'qnashowanswer', | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |             array('id' => $answer->id) | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |         ); | 
					
						
							| 
									
										
										
										
											2011-03-21 16:51:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |         common_log(LOG_DEBUG, "Saving answer: $answer->id, $answer->uri"); | 
					
						
							|  |  |  |         $answer->insert(); | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $content  = sprintf( | 
					
						
							| 
									
										
										
										
											2011-06-05 11:06:08 +02:00
										 |  |  |             // TRANS: Text for a question that was answered.
 | 
					
						
							|  |  |  |             // TRANS: %s is the question title.
 | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |             _m('answered "%s"'), | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |             $question->title | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |         ); | 
					
						
							| 
									
										
										
										
											2011-03-21 16:51:38 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |         $link = '<a href="' . htmlspecialchars($answer->uri) . '">' . htmlspecialchars($question->title) . '</a>'; | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |         // TRANS: Rendered version of the notice content answering a question.
 | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |         // TRANS: %s a link to the question with question title as the link content.
 | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |         $rendered = sprintf(_m('answered "%s"'), $link); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $tags    = array(); | 
					
						
							|  |  |  |         $replies = array(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |         $options = array_merge( | 
					
						
							|  |  |  |             array( | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |                 'urls'        => array(), | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |                 'content'     => $content, | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |                 'rendered'    => $rendered, | 
					
						
							|  |  |  |                 'tags'        => $tags, | 
					
						
							|  |  |  |                 'replies'     => $replies, | 
					
						
							|  |  |  |                 'reply_to'    => $question->getNotice()->id, | 
					
						
							| 
									
										
										
										
											2011-03-21 20:57:19 -07:00
										 |  |  |                 'object_type' => self::OBJECT_TYPE | 
					
						
							|  |  |  |             ), | 
					
						
							|  |  |  |             $options | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!array_key_exists('uri', $options)) { | 
					
						
							| 
									
										
										
										
											2011-03-21 15:50:36 -07:00
										 |  |  |             $options['uri'] = $answer->uri; | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-20 19:24:35 -07:00
										 |  |  |         $saved = Notice::saveNew( | 
					
						
							|  |  |  |             $profile->id, | 
					
						
							|  |  |  |             $content, | 
					
						
							|  |  |  |             array_key_exists('source', $options) ? | 
					
						
							|  |  |  |             $options['source'] : 'web', | 
					
						
							|  |  |  |             $options | 
					
						
							|  |  |  |         ); | 
					
						
							| 
									
										
										
										
											2011-03-17 17:43:13 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return $saved; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |