function run(Contact $user, $qreq, $ssel)
 {
     global $Conf;
     $result = Dbl::qe_raw($Conf->paperQuery($user, array("paperId" => $ssel->selection(), "allReviews" => 1, "reviewerName" => 1)));
     $texts = array();
     $errors = array();
     $user->set_forceShow(true);
     $rf = ReviewForm::get();
     while ($row = PaperInfo::fetch($result, $user)) {
         if ($whyNot = $user->perm_view_review($row, null, null)) {
             $errors[whyNotText($whyNot, "view review")] = true;
         } else {
             if ($row->reviewSubmitted) {
                 defappend($texts[$row->paperId], $rf->pretty_text($row, $row, $user) . "\n");
             }
         }
     }
     $crows = $Conf->comment_rows($Conf->paperQuery($user, array("paperId" => $ssel->selection(), "allComments" => 1, "reviewerName" => 1)), $user);
     foreach ($crows as $row) {
         if ($user->can_view_comment($row, $row, null)) {
             $crow = new CommentInfo($row, $row);
             defappend($texts[$row->paperId], $crow->unparse_text($user) . "\n");
         }
     }
     $this->finish($ssel, $texts, $errors);
 }