• File: estimated-reading-time-conditional.php
  • Full Path: /home/matthif/www/wp-content/plugins/wordpress-seo/src/conditionals/admin/estimated-reading-time-conditional.php
  • Date Modified: 02/24/2024 11:29 PM
  • File size: 1.95 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace Yoast\WP\SEO\Conditionals\Admin;

use 
Yoast\WP\SEO\Conditionals\Conditional;

/**
 * Conditional that is only when we want the Estimated Reading Time.
 */
class Estimated_Reading_Time_Conditional implements Conditional {

    
/**
     * The Post Conditional.
     *
     * @var Post_Conditional
     */
    
protected $post_conditional;

    
/**
     * Constructs the Estimated Reading Time Conditional.
     *
     * @param Post_Conditional $post_conditional The post conditional.
     */
    
public function __constructPost_Conditional $post_conditional ) {
        
$this->post_conditional $post_conditional;
    }

    
/**
     * Returns whether this conditional is met.
     *
     * @return bool Whether the conditional is met.
     */
    
public function is_met() {
        
// phpcs:disable WordPress.Security.NonceVerification.Recommended,WordPress.Security.NonceVerification.Missing -- Reason: Nonce verification should not be done in a conditional but rather in the classes using the conditional.
        // Check if we are in our Elementor ajax request (for saving).
        
if ( \wp_doing_ajax() && isset( $_POST['action'] ) && \is_string$_POST['action'] ) ) {
            
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are only strictly comparing the variable.
            
$post_action \wp_unslash$_POST['action'] );
            if ( 
$post_action === 'wpseo_elementor_save' ) {
                return 
true;
            }
        }

        if ( ! 
$this->post_conditional->is_met() ) {
            return 
false;
        }

        
// We don't support Estimated Reading Time on the attachment post type.
        
if ( isset( $_GET['post'] ) && \is_string$_GET['post'] ) ) {
            
// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Reason: We are casting to an integer.
            
$post_id = (int) \wp_unslash$_GET['post'] );
            if ( 
$post_id !== && \get_post_type$post_id ) === 'attachment' ) {
                return 
false;
            }
        }

        return 
true;
        
// phpcs:enable WordPress.Security.NonceVerification.Recommended,WordPress.Security.NonceVerification.Missing
    
}
}