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.
131 lines
3.3 KiB
PHTML
131 lines
3.3 KiB
PHTML
7 months ago
|
<?php
|
||
|
/**
|
||
|
* Google AdSense.
|
||
|
*
|
||
|
* @since 1.0.34
|
||
|
* @package RankMathPro
|
||
|
* @subpackage RankMathPro\modules
|
||
|
* @author Rank Math <support@rankmath.com>
|
||
|
*/
|
||
|
|
||
|
namespace RankMathPro\Google;
|
||
|
|
||
|
use RankMath\Google\Api;
|
||
|
use RankMath\Helpers\Security;
|
||
|
use RankMath\Analytics\Workflow\Base;
|
||
|
use WP_Error;
|
||
|
|
||
|
defined( 'ABSPATH' ) || exit;
|
||
|
|
||
|
/**
|
||
|
* AdSense class.
|
||
|
*/
|
||
|
class Adsense {
|
||
|
|
||
|
/**
|
||
|
* Get adsense accounts.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function get_adsense_accounts() {
|
||
|
$accounts = [];
|
||
|
$response = Api::get()->http_get( 'https://adsense.googleapis.com/v2/accounts' );
|
||
|
if (
|
||
|
! Api::get()->is_success() ||
|
||
|
isset( $response->error ) ||
|
||
|
! isset( $response['accounts'] ) ||
|
||
|
! is_array( $response['accounts'] )
|
||
|
) {
|
||
|
return $accounts;
|
||
|
}
|
||
|
|
||
|
foreach ( $response['accounts'] as $account ) {
|
||
|
$accounts[ $account['name'] ] = [
|
||
|
'name' => $account['displayName'],
|
||
|
];
|
||
|
}
|
||
|
|
||
|
return $accounts;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Query adsense data from google client api.
|
||
|
*
|
||
|
* @param string $start_date Start date.
|
||
|
* @param string $end_date End date.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public static function get_adsense( $options = [] ) {
|
||
|
$account_id = isset( $options['account_id'] ) ? $options['account_id'] : self::get_adsense_id();
|
||
|
$start_date = isset( $options['start_date'] ) ? $options['start_date'] : '';
|
||
|
$end_date = isset( $options['end_date'] ) ? $options['end_date'] : '';
|
||
|
|
||
|
if ( ! $account_id || ! $start_date || ! $end_date ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
$request = Security::add_query_arg_raw(
|
||
|
[
|
||
|
'startDate.year' => gmdate( 'Y', strtotime( $start_date ) ),
|
||
|
'startDate.month' => gmdate( 'n', strtotime( $start_date ) ),
|
||
|
'startDate.day' => gmdate( 'j', strtotime( $start_date ) ),
|
||
|
'endDate.year' => gmdate( 'Y', strtotime( $end_date ) ),
|
||
|
'endDate.month' => gmdate( 'n', strtotime( $end_date ) ),
|
||
|
'endDate.day' => gmdate( 'j', strtotime( $end_date ) ),
|
||
|
'dimensions' => 'DATE',
|
||
|
'currencyCode' => 'USD',
|
||
|
'metrics' => 'ESTIMATED_EARNINGS',
|
||
|
],
|
||
|
'https://adsense.googleapis.com/v2/' . $account_id . '/reports:generate'
|
||
|
);
|
||
|
|
||
|
$workflow = 'adsense';
|
||
|
Api::get()->set_workflow( $workflow );
|
||
|
|
||
|
$response = Api::get()->http_get( $request );
|
||
|
|
||
|
Api::get()->log_failed_request( $response, $workflow, $start_date, func_get_args() );
|
||
|
|
||
|
if ( ! Api::get()->is_success() ) {
|
||
|
return new WP_Error( 'adsense_api_fail', 'Google AdSense API request failed.' );
|
||
|
}
|
||
|
|
||
|
if ( ! isset( $response['rows'] ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return $response['rows'];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get adsense id.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public static function get_adsense_id() {
|
||
|
static $rank_math_adsense_id;
|
||
|
|
||
|
if ( is_null( $rank_math_adsense_id ) ) {
|
||
|
$options = get_option( 'rank_math_google_analytic_options' );
|
||
|
$rank_math_adsense_id = ! empty( $options['adsense_id'] ) ? $options['adsense_id'] : false;
|
||
|
}
|
||
|
|
||
|
return $rank_math_adsense_id;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Is adsense connected.
|
||
|
*
|
||
|
* @return boolean
|
||
|
*/
|
||
|
public static function is_adsense_connected() {
|
||
|
$account = wp_parse_args(
|
||
|
get_option( 'rank_math_google_analytic_options' ),
|
||
|
[ 'adsense_id' => '' ]
|
||
|
);
|
||
|
|
||
|
return ! empty( $account['adsense_id'] );
|
||
|
}
|
||
|
}
|