You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.8 KiB
PHP
116 lines
2.8 KiB
PHP
<?php
|
|
/**
|
|
* Get URL Inspection data.
|
|
*
|
|
* @since 1.0.84
|
|
* @package RankMath
|
|
* @subpackage RankMath\modules
|
|
* @author Rank Math <support@rankmath.com>
|
|
*/
|
|
|
|
namespace RankMath\Analytics;
|
|
|
|
use Exception;
|
|
use RankMath\Helpers\DB as DB_Helper;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Url_Inspection class.
|
|
*/
|
|
class Url_Inspection {
|
|
|
|
/**
|
|
* Holds the singleton instance of this class.
|
|
*
|
|
* @var Url_Inspection
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* Singleton
|
|
*/
|
|
public static function get() {
|
|
if ( is_null( self::$instance ) ) {
|
|
self::$instance = new self();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Schedule a new inspection for an object ID.
|
|
*
|
|
* @param string $page URL to inspect (relative).
|
|
* @param string $reschedule What to do if the job already exists: reschedule for new time, or skip and keep old time.
|
|
* @param int $delay Number of seconds to delay the inspection from now.
|
|
*/
|
|
public function schedule_inspection( $page, $reschedule = true, $delay = 0 ) {
|
|
$delay = absint( $delay );
|
|
if ( $reschedule ) {
|
|
as_unschedule_action( 'rank_math/analytics/get_inspections_data', [ $page ], 'rank-math' );
|
|
} elseif ( as_has_scheduled_action( 'rank_math/analytics/get_inspections_data', [ $page ], 'rank-math' ) ) {
|
|
// Already scheduled and reschedule = false.
|
|
return;
|
|
}
|
|
|
|
if ( 0 === $delay ) {
|
|
as_enqueue_async_action( 'rank_math/analytics/get_inspections_data', [ $page ], 'rank-math' );
|
|
return;
|
|
}
|
|
|
|
$time = time() + $delay;
|
|
as_schedule_single_action( $time, 'rank_math/analytics/get_inspections_data', [ $page ], 'rank-math' );
|
|
}
|
|
|
|
/**
|
|
* Fetch the inspection data for a URL, store it, and return it.
|
|
*
|
|
* @param string $page URL to inspect.
|
|
*/
|
|
public function inspect( $page ) {
|
|
$inspection = \RankMath\Google\Url_Inspection::get()->get_inspection_data( $page );
|
|
|
|
if ( empty( $inspection ) ) {
|
|
return [];
|
|
}
|
|
|
|
DB::store_inspection( $inspection );
|
|
|
|
return wp_parse_args( $inspection, DB::get_inspection_defaults() );
|
|
}
|
|
|
|
/**
|
|
* Get latest inspection results for each page.
|
|
*
|
|
* @param array $params Parameters.
|
|
* @param int $per_page Number of items per page.
|
|
*/
|
|
public function get_inspections( $params, $per_page ) {
|
|
// Early Bail!!
|
|
if ( ! DB_Helper::check_table_exists( 'rank_math_analytics_inspections' ) ) {
|
|
return;
|
|
}
|
|
|
|
return DB::get_inspections( $params, $per_page );
|
|
}
|
|
|
|
/**
|
|
* Check if the "Enable Index Status Tab" option is enabled.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function is_enabled() {
|
|
$profile = get_option( 'rank_math_google_analytic_profile', [] );
|
|
if ( empty( $profile ) || ! is_array( $profile ) ) {
|
|
return false;
|
|
}
|
|
|
|
$enable_index_status = true;
|
|
if ( isset( $profile['enable_index_status'] ) ) {
|
|
$enable_index_status = $profile['enable_index_status'];
|
|
}
|
|
|
|
return $enable_index_status;
|
|
}
|
|
}
|