: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
* Class WPSEO_presenter_paper.
class WPSEO_Paper_Presenter {
* The path to the view file.
* WPSEO_presenter_paper constructor.
* @param string $title The title of the paper.
* @param string|null $view_file Optional. The path to the view file. Use the content setting
* if do not wish to use a view file.
* @param array $settings Optional. Settings for the paper.
public function __construct( $title, $view_file = null, array $settings = [] ) {
'paper_id_prefix' => 'wpseo-',
'collapsible_header_class' => '',
$this->settings = wp_parse_args( $settings, $defaults );
$this->view_file = $view_file;
* Renders the collapsible paper and returns it as a string.
* @return string The rendered paper.
public function get_output() {
$view_variables = $this->get_view_variables();
extract( $view_variables, EXTR_SKIP );
$content = $this->settings['content'];
if ( $this->view_file !== null ) {
require $this->view_file;
$content = ob_get_clean();
require WPSEO_PATH . 'admin/views/paper-collapsible.php';
$rendered_output = ob_get_clean();
* Retrieves the view variables.
* @return array The view variables.
private function get_view_variables() {
if ( $this->settings['help_text'] instanceof WPSEO_Admin_Help_Panel === false ) {
$this->settings['help_text'] = new WPSEO_Admin_Help_Panel( '', '', '' );
'class' => $this->settings['class'],
'collapsible' => $this->settings['collapsible'],
'collapsible_config' => $this->collapsible_config(),
'collapsible_header_class' => $this->settings['collapsible_header_class'],
'title_after' => $this->settings['title_after'],
'help_text' => $this->settings['help_text'],
'view_file' => $this->view_file,
'paper_id' => $this->settings['paper_id'],
'paper_id_prefix' => $this->settings['paper_id_prefix'],
'yform' => Yoast_Form::get_instance(),
return array_merge( $this->settings['view_data'], $view_variables );
* Retrieves the collapsible config based on the settings.
* @return array The config.
protected function collapsible_config() {
if ( empty( $this->settings['collapsible'] ) ) {
if ( ! empty( $this->settings['expanded'] ) ) {
'toggle_icon' => 'dashicons-arrow-up-alt2',
'class' => 'toggleable-container',
'toggle_icon' => 'dashicons-arrow-down-alt2',
'class' => 'toggleable-container toggleable-container-hidden',