<?php /** * @package WPSEO\Admin\Banner */ /** * Represents the render object for generating the html for the banner sidebar */ class WPSEO_Admin_Banner_Sidebar_Renderer { /** @var WPSEO_Admin_Banner_Spot_Renderer */ protected $spot_renderer; /** * Sets the spot renderer. * * @param WPSEO_Admin_Banner_Spot_Renderer $spot_renderer The spot renderer that has to be used. */ public function __construct( WPSEO_Admin_Banner_Spot_Renderer $spot_renderer ) { $this->spot_renderer = $spot_renderer; } /** * Renders the admin banner sidebar. * * @param WPSEO_Admin_Banner_Sidebar $banner_sidebar The sidebar to render. * * @return string */ public function render( WPSEO_Admin_Banner_Sidebar $banner_sidebar ) { return sprintf( ' <div class="wpseo_content_cell" id="sidebar-container"> <div id="sidebar"> <div class="wpseo_content_cell_title yoast-sidebar__title "> %1$s </div> %2$s </div> </div>', $banner_sidebar->get_title(), $this->render_banner_spots( $banner_sidebar->get_banner_spots() ) ); } /** * Renders the admin banner spots. * * @param WPSEO_Admin_Banner_Spot[] $banner_spots The banner spots to render. * * @return string */ protected function render_banner_spots( array $banner_spots ) { $return = ''; foreach ( $banner_spots as $banner_spot ) { $return .= $this->spot_renderer->render( $banner_spot ); } return $return; } }