芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/.trash/cepali/mod/forum/classes/local/renderers/posts.php
. /** * Posts renderer. * * @package mod_forum * @copyright 2019 Ryan Wyllie
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ namespace mod_forum\local\renderers; defined('MOODLE_INTERNAL') || die(); use mod_forum\local\builders\exported_posts as exported_posts_builder; use renderer_base; use stdClass; /** * Posts renderer class. * * @copyright 2019 Ryan Wyllie
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class posts { /** @var renderer_base $renderer Renderer base */ private $renderer; /** @var exported_posts_builder $exportedpostsbuilder Builder for building exported posts */ private $exportedpostsbuilder; /** @var string $template The template to render */ private $template; /** @var callable $postprocessfortemplate Function to process exported posts before template rendering */ private $postprocessfortemplate; /** * Constructor. * * @param renderer_base $renderer Renderer base * @param exported_posts_builder $exportedpostsbuilder Builder for building exported posts * @param string $template The template to render * @param callable $postprocessfortemplate Function to process exported posts before template rendering */ public function __construct( renderer_base $renderer, exported_posts_builder $exportedpostsbuilder, string $template, callable $postprocessfortemplate = null ) { $this->renderer = $renderer; $this->exportedpostsbuilder = $exportedpostsbuilder; $this->template = $template; $this->postprocessfortemplate = $postprocessfortemplate; } /** * Render the given posts for the forums and discussions. * * @param stdClass $user The user viewing the posts * @param forum_entity[] $forums A list of all forums for these posts * @param discussion_entity[] $discussions A list of all discussions for these posts * @param post_entity[] $posts The posts to render * @return string */ public function render( stdClass $user, array $forums, array $discussions, array $posts ) : string { // Format the forums and discussion to make them more easily accessed later. $forums = array_reduce($forums, function($carry, $forum) { $carry[$forum->get_id()] = $forum; return $carry; }, []); $discussions = array_reduce($discussions, function($carry, $discussion) { $carry[$discussion->get_id()] = $discussion; return $carry; }, []); $exportedposts = $this->exportedpostsbuilder->build( $user, $forums, $discussions, $posts ); if ($this->postprocessfortemplate !== null) { // We've got some post processing to do! $exportedposts = ($this->postprocessfortemplate)($exportedposts, $forums, $discussions, $user); } return $this->renderer->render_from_template( $this->template, ['posts' => array_values($exportedposts)] ); } }