function OnPreRender()
 {
     /* @var $o_top_level Category */
     $review_item = $this->o_topic->GetReviewItem();
     $s_suggested_title = urlencode(StringFormatter::PlainText(trim($review_item->GetTitle())));
     $s_page = urlencode($_SERVER['REQUEST_URI']);
     $s_subscribe_link = '/play/subscribe.php?type=' . $review_item->GetType() . '&item=' . $review_item->GetId() . '&title=' . $s_suggested_title . '&page=' . $s_page;
     $s_subscribe_title = 'Get an email alert every time there are new comments on this page';
     $this->AddControl('<div class="forumSubscribe"><a href="' . $s_subscribe_link . '" title="' . $s_subscribe_title . '">Subscribe to comments</a></div>');
     if (!$this->authentication_manager->GetUser()->Permissions()->HasPermission(PermissionType::ForumAddMessage())) {
         $add = $this->o_topic->GetCount() ? 'Add your comments' : 'Be the first to add your comments!';
         $this->AddControl('<div class="forumPost"><a href="' . Html::Encode($this->authentication_manager->GetPermissionUrl()) . urlencode('#forumMessageForm') . '">' . $add . '</a></div>');
     }
 }
 function GetFormattedMessages()
 {
     /* @var $o_person User */
     /* @var $o_message ForumMessage */
     $s_text = '';
     $a_messages = $this->topic->GetItems();
     if (is_array($a_messages)) {
         $s_text .= '<div class="forumTopic" typeof="sioc:Thread" about="' . $this->topic->TopicLinkedDataUri() . '">' . "\n";
         $message_type = $this->topic->GetReviewItem() ? "Comment" : "BoardPost";
         $b_alternate = true;
         $position_in_topic = 1;
         $total_messages = count($a_messages);
         $first_message = $position_in_topic - 1;
         $last_message = $total_messages - 1;
         for ($i = $first_message; $i <= $last_message; $i++) {
             /* @var $message ForumMessage */
             $message = $a_messages[$i];
             # get person
             $o_person = $message->GetUser();
             # Declare relationship between messages.
             $reply_of = $i > 0 ? ' rel="sioc:reply_of" resource="' . $a_messages[$i - 1]->MessageLinkedDataUri() . '"' : "";
             $has_reply = $i < $total_messages - 1 ? ' rel="sioc:has_reply" resource="' . $a_messages[$i + 1]->MessageLinkedDataUri() . '"' : "";
             # start message row
             $s_text .= '<hr /><div class="forumMessage';
             if ($b_alternate) {
                 $s_text .= " forumAltMessage";
             }
             $s_text .= '" id="message' . $message->GetId() . '" typeof="sioctypes:' . $message_type . '" about="' . $message->MessageLinkedDataUri() . '"' . ' rel="sioc:has_container" rev="sioc:container_of" resource="' . $this->topic->TopicLinkedDataUri() . '">' . '<h2 class="aural" about="' . $message->MessageLinkedDataUri() . '"' . $reply_of . '><span about="' . $message->MessageLinkedDataUri() . '"' . $has_reply . '>Message ' . $position_in_topic . '</span></h2>';
             $position_in_topic++;
             # add profile
             $s_text .= '<div class="profile';
             if ($b_alternate) {
                 $s_text .= " altProfile";
             }
             $s_text .= '"><p about="' . $message->MessageLinkedDataUri() . '"><span class="small">Posted by </span>' . '<span rel="sioc:has_creator" rev="sioc:creator_of"><a typeof="sioc:UserAccount" about="' . $o_person->GetLinkedDataUri() . '" href="' . $o_person->GetUserProfileUrl() . '">' . $o_person->GetName() . '</a></span>';
             if ($o_person->GetLocation()) {
                 $s_text .= '<span class="small">, ' . $o_person->GetLocation() . "</span>";
             }
             $s_text .= '<span class="small" property="dcterms:created" content="' . Date::Microformat($message->GetDate()) . '"> at ' . Date::BritishDateAndTime($message->GetDate(), false, true, true) . "</span>";
             $s_text .= '</p>';
             $s_text .= '<ul class="large"><li>Posted: ' . Date::BritishDateAndTime($message->GetDate(), false, true, true) . '</li>' . '<li>Signed up: ' . Date::MonthAndYear($o_person->GetSignUpDate()) . "</li>\n" . '<li>Total messages: ' . $o_person->GetTotalMessages() . "</li>\n";
             if ($o_person->GetLocation()) {
                 $s_text .= '<li>Location: ' . $o_person->GetLocation() . '</li>' . "\n";
             }
             $s_text .= '</ul>';
             $s_text .= '</div>';
             # add the message
             $s_text .= '<div about="' . $message->MessageLinkedDataUri() . '" rel="awol:content" class="message';
             if ($b_alternate) {
                 $s_text .= " altMessage";
             }
             if ($i == $last_message) {
                 $s_text .= '" id="last-message';
             }
             $s_text .= '"><div typeof="awol:Content"><meta property="awol:type" content="text/html" /><div property="awol:body">';
             $s_text .= $message->GetFormattedBody($this->o_settings);
             $s_text .= "</div></div>";
             $s_text .= '</div></div>' . "\n";
             $b_alternate = !$b_alternate;
         }
         $s_text .= '<hr /></div>' . "\n\n";
         return $s_text;
     }
 }