: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
namespace Yoast\WP\SEO\Presenters\Admin;
use Yoast\WP\SEO\Helpers\Product_Helper;
use Yoast\WP\SEO\Helpers\Short_Link_Helper;
use Yoast\WP\SEO\Presenters\Abstract_Presenter;
* Class Indexing_Failed_Notification_Presenter.
* @package Yoast\WP\SEO\Presenters\Notifications
class Indexing_Failed_Notification_Presenter extends Abstract_Presenter {
protected $product_helper;
* @var WPSEO_Addon_Manager
protected $class_addon_manager;
protected $short_link_helper;
* Indexing_Failed_Notification_Presenter constructor.
* @param Product_Helper $product_helper The product helper.
* @param Short_Link_Helper $short_link_helper The addon manager.
* @param WPSEO_Addon_Manager $class_addon_manager The addon manager.
public function __construct( $product_helper, $short_link_helper, $class_addon_manager ) {
$this->class_addon_manager = $class_addon_manager;
$this->short_link_helper = $short_link_helper;
$this->product_helper = $product_helper;
* Returns the notification as an HTML string.
* @return string The notification in an HTML string representation.
public function present() {
$notification_text = \sprintf(
/* Translators: %1$s expands to an opening anchor tag for a link leading to the Yoast SEO tools page, %2$s expands to a closing anchor tag. */
'Something has gone wrong and we couldn\'t complete the optimization of your SEO data. Please %1$sre-start the process%2$s.',
'<a href="' . \get_admin_url( null, 'admin.php?page=wpseo_tools' ) . '">',
if ( $this->product_helper->is_premium() ) {
if ( $this->has_valid_premium_subscription() ) {
// Add a support message for premium customers.
$notification_text .= ' ';
$notification_text .= \esc_html__( 'If the problem persists, please contact support.', 'wordpress-seo' );
// Premium plugin with inactive addon; overwrite the entire error message.
$notification_text = \sprintf(
/* Translators: %1$s expands to an opening anchor tag for a link leading to the Premium installation page, %2$s expands to a closing anchor tag. */
'Oops, something has gone wrong and we couldn\'t complete the optimization of your SEO data. Please make sure to activate your subscription in MyYoast by completing %1$sthese steps%2$s.',
'<a href="' . \esc_url( $this->short_link_helper->get( 'https://yoa.st/3wv' ) ) . '">',
return '<p>' . $notification_text . '</p>';
* Determines if the site has a valid Premium subscription.
protected function has_valid_premium_subscription() {
return $this->class_addon_manager->has_valid_subscription( WPSEO_Addon_Manager::PREMIUM_SLUG );