115 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
/**
 | 
						|
 * WPSEO plugin file.
 | 
						|
 *
 | 
						|
 * @package WPSEO\Admin
 | 
						|
 *
 | 
						|
 * @uses    string $yoast_seo_type
 | 
						|
 * @uses    string $yoast_seo_dashicon
 | 
						|
 * @uses    string $yoast_seo_i18n_title
 | 
						|
 * @uses    string $yoast_seo_i18n_issues
 | 
						|
 * @uses    string $yoast_seo_i18n_no_issues
 | 
						|
 * @uses    string $yoast_seo_i18n_muted_issues_title
 | 
						|
 * @uses    int    $yoast_seo_active_total
 | 
						|
 * @uses    int    $yoast_seo_dismissed_total
 | 
						|
 * @uses    int    $yoast_seo_total
 | 
						|
 * @uses    array  $yoast_seo_active
 | 
						|
 * @uses    array  $yoast_seo_dismissed
 | 
						|
 */
 | 
						|
 | 
						|
if ( ! function_exists( '_yoast_display_notifications' ) ) {
 | 
						|
	/**
 | 
						|
	 * Create the notifications HTML with restore/dismiss button.
 | 
						|
	 *
 | 
						|
	 * @param array  $notifications_list List of notifications.
 | 
						|
	 * @param string $status             Status of the notifications (active/dismissed).
 | 
						|
	 *
 | 
						|
	 * @return string The output to render.
 | 
						|
	 */
 | 
						|
	function _yoast_display_notifications( $notifications_list, $status ) {
 | 
						|
		$notifications = '';
 | 
						|
 | 
						|
		foreach ( $notifications_list as $notification ) {
 | 
						|
 | 
						|
			switch ( $status ) {
 | 
						|
				case 'active':
 | 
						|
					$button = sprintf(
 | 
						|
						'<button type="button" class="button dismiss"><span class="screen-reader-text">%1$s</span><span class="dashicons dashicons-hidden"></span></button>',
 | 
						|
						esc_html__( 'Hide this item.', 'wordpress-seo' )
 | 
						|
					);
 | 
						|
					break;
 | 
						|
 | 
						|
				case 'dismissed':
 | 
						|
					$button = sprintf(
 | 
						|
						'<button type="button" class="button restore"><span class="screen-reader-text">%1$s</span><span class="dashicons yoast-svg-icon-eye"></span></button>',
 | 
						|
						esc_html__( 'Show this item.', 'wordpress-seo' )
 | 
						|
					);
 | 
						|
					break;
 | 
						|
			}
 | 
						|
 | 
						|
			$notifications .= sprintf(
 | 
						|
				'<div class="yoast-notification-holder" id="%1$s" data-nonce="%2$s" data-json="%3$s">%4$s%5$s</div>',
 | 
						|
				esc_attr( $notification->get_id() ),
 | 
						|
				esc_attr( $notification->get_nonce() ),
 | 
						|
				esc_attr( $notification->get_json() ),
 | 
						|
				// This needs to be fixed in https://github.com/Yoast/wordpress-seo-premium/issues/2548.
 | 
						|
				$notification,
 | 
						|
				// Note: $button is properly escaped above.
 | 
						|
				$button
 | 
						|
			);
 | 
						|
		}
 | 
						|
 | 
						|
		return $notifications;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
$wpseo_i18n_summary = $yoast_seo_i18n_issues;
 | 
						|
if ( ! $yoast_seo_active ) {
 | 
						|
	$yoast_seo_dashicon = 'yes';
 | 
						|
	$wpseo_i18n_summary = $yoast_seo_i18n_no_issues;
 | 
						|
}
 | 
						|
 | 
						|
?>
 | 
						|
<h3 class="yoast-notifications-header" id="<?php echo esc_attr( 'yoast-' . $yoast_seo_type . '-header' ); ?>">
 | 
						|
	<span class="dashicons <?php echo esc_attr( 'dashicons-' . $yoast_seo_dashicon ); ?>"></span>
 | 
						|
	<?php echo esc_html( $yoast_seo_i18n_title ); ?> (<?php echo (int) $yoast_seo_active_total; ?>)
 | 
						|
</h3>
 | 
						|
 | 
						|
<div id="<?php echo esc_attr( 'yoast-' . $yoast_seo_type ); ?>">
 | 
						|
 | 
						|
	<?php if ( $yoast_seo_total ) : ?>
 | 
						|
		<p><?php echo esc_html( $wpseo_i18n_summary ); ?></p>
 | 
						|
 | 
						|
		<div class="container yoast-notifications-active" id="<?php echo esc_attr( 'yoast-' . $yoast_seo_type . '-active' ); ?>">
 | 
						|
			<?php
 | 
						|
			// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: _yoast_display_notifications() as declared above is safe.
 | 
						|
			echo _yoast_display_notifications( $yoast_seo_active, 'active' );
 | 
						|
			?>
 | 
						|
		</div>
 | 
						|
 | 
						|
		<?php
 | 
						|
		if ( $yoast_seo_dismissed ) {
 | 
						|
			$dismissed_paper = new WPSEO_Paper_Presenter(
 | 
						|
				esc_html( $yoast_seo_i18n_muted_issues_title ),
 | 
						|
				null,
 | 
						|
				[
 | 
						|
					'paper_id'                 => esc_attr( $yoast_seo_type . '-dismissed' ),
 | 
						|
					'paper_id_prefix'          => 'yoast-',
 | 
						|
					'class'                    => 'yoast-notifications-dismissed',
 | 
						|
					'content'                  => _yoast_display_notifications( $yoast_seo_dismissed, 'dismissed' ),
 | 
						|
					'collapsible'              => true,
 | 
						|
					'collapsible_header_class' => 'yoast-notification',
 | 
						|
				]
 | 
						|
			);
 | 
						|
			// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Reason: get_output() output is properly escaped.
 | 
						|
			echo $dismissed_paper->get_output();
 | 
						|
		}
 | 
						|
		?>
 | 
						|
 | 
						|
	<?php else : ?>
 | 
						|
 | 
						|
		<p><?php echo esc_html( $yoast_seo_i18n_no_issues ); ?></p>
 | 
						|
 | 
						|
	<?php endif; ?>
 | 
						|
</div>
 |