original_string: public function get_posts_search_results_renderer(array $searchterms) : posts_renderer {
          $urlfactory = $this->urlfactory;
  
          return new posts_renderer(
              $this->rendererbase,
              $this->builderfactory->get_exported_posts_builder(),
              'mod_forum/forum_posts_with_context_links',
              // Post process the exported posts to add the highlighting of the search terms to the post
              // and also the additional context links in the subject.
              function($exportedposts, $forumsbyid, $discussionsbyid) use ($searchterms, $urlfactory) {
                  $highlightwords = implode(' ', $searchterms);
  
                  return array_map(
                      function($exportedpost) use (
                          $forumsbyid,
                          $discussionsbyid,
                          $searchterms,
                          $highlightwords,
                          $urlfactory
                      ) {
                          $discussion = $discussionsbyid[$exportedpost->discussionid];
                          $forum = $forumsbyid[$discussion->get_forum_id()];
  
                          $viewdiscussionurl = $urlfactory->get_discussion_view_url_from_discussion($discussion);
                          $exportedpost->urls['viewforum'] = $urlfactory->get_forum_view_url_from_forum($forum)->out(false);
                          $exportedpost->urls['viewdiscussion'] = $viewdiscussionurl->out(false);
                          $exportedpost->subject = highlight($highlightwords, $exportedpost->subject);
                          $exportedpost->forumname = format_string($forum->get_name(), true);
                          $exportedpost->discussionname = highlight($highlightwords, format_string($discussion->get_name(), true));
                          $exportedpost->showdiscussionname = $forum->get_type() != 'single';
  
                          // Identify search terms only found in HTML markup, and add a warning about them to
                          // the start of the message text. This logic was copied exactly as is from the previous
                          // implementation.
                          $missingterms = '';
                          $exportedpost->message = highlight(
                              $highlightwords,
                              $exportedpost->message,
                              0,
                              '<fgw9sdpq4>',
                              '</fgw9sdpq4>'
                          );
  
                          foreach ($searchterms as $searchterm) {
                              if (
                                  preg_match("/$searchterm/i", $exportedpost->message) &&
                                  !preg_match('/<fgw9sdpq4>' . $searchterm . '<\/fgw9sdpq4>/i', $exportedpost->message)
                              ) {
                                  $missingterms .= " $searchterm";
                              }
                          }
  
                          $exportedpost->message = str_replace('<fgw9sdpq4>', '<span class="highlight">', $exportedpost->message);
                          $exportedpost->message = str_replace('</fgw9sdpq4>', '</span>', $exportedpost->message);
  
                          if ($missingterms) {
                              $strmissingsearchterms = get_string('missingsearchterms', 'forum');
                              $exportedpost->message = '<p class="highlight2">' . $strmissingsearchterms . ' '
                                  . $missingterms . '</p>' . $exportedpost->message;
                          }
  
                          return $exportedpost;
                      },
                      $exportedposts
                  );
              }
          );
      }
code: public function get_posts_search_results_renderer(array $searchterms) : posts_renderer {
          $urlfactory = $this->urlfactory;
  
          return new posts_renderer(
              $this->rendererbase,
              $this->builderfactory->get_exported_posts_builder(),
              'mod_forum/forum_posts_with_context_links',
              // Post process the exported posts to add the highlighting of the search terms to the post
              // and also the additional context links in the subject.
              function($exportedposts, $forumsbyid, $discussionsbyid) use ($searchterms, $urlfactory) {
                  $highlightwords = implode(' ', $searchterms);
  
                  return array_map(
                      function($exportedpost) use (
                          $forumsbyid,
                          $discussionsbyid,
                          $searchterms,
                          $highlightwords,
                          $urlfactory
                      ) {
                          $discussion = $discussionsbyid[$exportedpost->discussionid];
                          $forum = $forumsbyid[$discussion->get_forum_id()];
  
                          $viewdiscussionurl = $urlfactory->get_discussion_view_url_from_discussion($discussion);
                          $exportedpost->urls['viewforum'] = $urlfactory->get_forum_view_url_from_forum($forum)->out(false);
                          $exportedpost->urls['viewdiscussion'] = $viewdiscussionurl->out(false);
                          $exportedpost->subject = highlight($highlightwords, $exportedpost->subject);
                          $exportedpost->forumname = format_string($forum->get_name(), true);
                          $exportedpost->discussionname = highlight($highlightwords, format_string($discussion->get_name(), true));
                          $exportedpost->showdiscussionname = $forum->get_type() != 'single';
  
                          // Identify search terms only found in HTML markup, and add a warning about them to
                          // the start of the message text. This logic was copied exactly as is from the previous
                          // implementation.
                          $missingterms = '';
                          $exportedpost->message = highlight(
                              $highlightwords,
                              $exportedpost->message,
                              0,
                              '<fgw9sdpq4>',
                              '</fgw9sdpq4>'
                          );
  
                          foreach ($searchterms as $searchterm) {
                              if (
                                  preg_match("/$searchterm/i", $exportedpost->message) &&
                                  !preg_match('/<fgw9sdpq4>' . $searchterm . '<\/fgw9sdpq4>/i', $exportedpost->message)
                              ) {
                                  $missingterms .= " $searchterm";
                              }
                          }
  
                          $exportedpost->message = str_replace('<fgw9sdpq4>', '<span class="highlight">', $exportedpost->message);
                          $exportedpost->message = str_replace('</fgw9sdpq4>', '</span>', $exportedpost->message);
  
                          if ($missingterms) {
                              $strmissingsearchterms = get_string('missingsearchterms', 'forum');
                              $exportedpost->message = '<p class="highlight2">' . $strmissingsearchterms . ' '
                                  . $missingterms . '</p>' . $exportedpost->message;
                          }
  
                          return $exportedpost;
                      },
                      $exportedposts
                  );
              }
          );
      }
code_tokens: public function get_posts_search_results_renderer ( array $ searchterms ) : posts_renderer { $ urlfactory = $ this -> urlfactory ; return new posts_renderer ( $ this -> rendererbase , $ this -> builderfactory -> get_exported_posts_builder ( ) , 'mod_forum/forum_posts_with_context_links' , // Post process the exported posts to add the highlighting of the search terms to the post // and also the additional context links in the subject. function ( $ exportedposts , $ forumsbyid , $ discussionsbyid ) use ( $ searchterms , $ urlfactory ) { $ highlightwords = implode ( ' ' , $ searchterms ) ; return array_map ( function ( $ exportedpost ) use ( $ forumsbyid , $ discussionsbyid , $ searchterms , $ highlightwords , $ urlfactory ) { $ discussion = $ discussionsbyid [ $ exportedpost -> discussionid ] ; $ forum = $ forumsbyid [ $ discussion -> get_forum_id ( ) ] ; $ viewdiscussionurl = $ urlfactory -> get_discussion_view_url_from_discussion ( $ discussion ) ; $ exportedpost -> urls [ 'viewforum' ] = $ urlfactory -> get_forum_view_url_from_forum ( $ forum ) -> out ( false ) ; $ exportedpost -> urls [ 'viewdiscussion' ] = $ viewdiscussionurl -> out ( false ) ; $ exportedpost -> subject = highlight ( $ highlightwords , $ exportedpost -> subject ) ; $ exportedpost -> forumname = format_string ( $ forum -> get_name ( ) , true ) ; $ exportedpost -> discussionname = highlight ( $ highlightwords , format_string ( $ discussion -> get_name ( ) , true ) ) ; $ exportedpost -> showdiscussionname = $ forum -> get_type ( ) != 'single' ; // Identify search terms only found in HTML markup, and add a warning about them to // the start of the message text. This logic was copied exactly as is from the previous // implementation. $ missingterms = '' ; $ exportedpost -> message = highlight ( $ highlightwords , $ exportedpost -> message , 0 , '<fgw9sdpq4>' , '</fgw9sdpq4>' ) ; foreach ( $ searchterms as $ searchterm ) { if ( preg_match ( "/$searchterm/i" , $ exportedpost -> message ) && ! preg_match ( '/<fgw9sdpq4>' . $ searchterm . '<\/fgw9sdpq4>/i' , $ exportedpost -> message ) ) { $ missingterms .= " $searchterm" ; } } $ exportedpost -> message = str_replace ( '<fgw9sdpq4>' , '<span class="highlight">' , $ exportedpost -> message ) ; $ exportedpost -> message = str_replace ( '</fgw9sdpq4>' , '</span>' , $ exportedpost -> message ) ; if ( $ missingterms ) { $ strmissingsearchterms = get_string ( 'missingsearchterms' , 'forum' ) ; $ exportedpost -> message = '<p class="highlight2">' . $ strmissingsearchterms . ' ' . $ missingterms . '</p>' . $ exportedpost -> message ; } return $ exportedpost ; } , $ exportedposts ) ; } ) ; }
docstring: Create a posts renderer to render posts in the forum search results.
  
  @param string[] $searchterms The search terms to be highlighted in the posts
  @return posts_renderer
docstring_tokens: Create a posts renderer to render posts in the forum search results .