Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93
/home/sportsfe.../httpdocs/wp-conte.../plugins/advanced.../modules/gadsense/includes
File: adsense-report-api.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* Retrieve report data from Google.
[3] Fix | Delete
*/
[4] Fix | Delete
class Advanced_Ads_AdSense_Report_Api {
[5] Fix | Delete
[6] Fix | Delete
/**
[7] Fix | Delete
* Version of the AdSense Management API in use (for getting fresh data).
[8] Fix | Delete
*
[9] Fix | Delete
* @var string
[10] Fix | Delete
*/
[11] Fix | Delete
const API_VERSION = '2.0';
[12] Fix | Delete
[13] Fix | Delete
/**
[14] Fix | Delete
* Report API endpoint.
[15] Fix | Delete
*
[16] Fix | Delete
* @var string
[17] Fix | Delete
*/
[18] Fix | Delete
private $endpoint_url;
[19] Fix | Delete
[20] Fix | Delete
/**
[21] Fix | Delete
* Report type
[22] Fix | Delete
*
[23] Fix | Delete
* @var string
[24] Fix | Delete
*/
[25] Fix | Delete
private $type;
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
* The API access token or an error array.
[29] Fix | Delete
*
[30] Fix | Delete
* @var array|string
[31] Fix | Delete
*/
[32] Fix | Delete
private $access_token;
[33] Fix | Delete
[34] Fix | Delete
/**
[35] Fix | Delete
* The current connected AdSense account.
[36] Fix | Delete
*
[37] Fix | Delete
* @var string
[38] Fix | Delete
*/
[39] Fix | Delete
private $publisher_id;
[40] Fix | Delete
[41] Fix | Delete
/**
[42] Fix | Delete
* Instance constructor.
[43] Fix | Delete
*
[44] Fix | Delete
* @param string $type report type.
[45] Fix | Delete
*/
[46] Fix | Delete
public function __construct( $type ) {
[47] Fix | Delete
$publisher_id = Advanced_Ads_AdSense_Data::get_instance()->get_adsense_id();
[48] Fix | Delete
$this->type = $type;
[49] Fix | Delete
$this->access_token = Advanced_Ads_AdSense_MAPI::get_access_token( $publisher_id );
[50] Fix | Delete
$this->publisher_id = $publisher_id;
[51] Fix | Delete
[52] Fix | Delete
$endpoint_args = [
[53] Fix | Delete
'startDate.year' => '%SY%', // Start date's year - integer (4 digits).
[54] Fix | Delete
'startDate.month' => '%SM%', // Start date's month - integer.
[55] Fix | Delete
'startDate.day' => '%SD%', // Start date's integer - integer.
[56] Fix | Delete
'endDate.year' => '%EY%', // End date's year - integer (4 digits).
[57] Fix | Delete
'endDate.month' => '%EM%', // End date's month - integer.
[58] Fix | Delete
'endDate.day' => '%ED%', // End date's integer - integer.
[59] Fix | Delete
'dimension1' => '%DIM%', // Primary reporting dimension (domain name or ad unit name).
[60] Fix | Delete
'dimension2' => 'DATE', // Secondary reporting dimension.
[61] Fix | Delete
'metrics' => 'ESTIMATED_EARNINGS', // Report metrics.
[62] Fix | Delete
'reportingTimeZone' => 'ACCOUNT_TIME_ZONE', // Time zone used in report data.
[63] Fix | Delete
];
[64] Fix | Delete
$this->endpoint_url = str_replace( [ 'dimension1', 'dimension2' ], 'dimensions', add_query_arg( $endpoint_args, 'https://adsense.googleapis.com/v2/accounts/%pubid%/reports:generate' ) );
[65] Fix | Delete
}
[66] Fix | Delete
[67] Fix | Delete
/**
[68] Fix | Delete
* Checks if the current setup has an access token.
[69] Fix | Delete
*
[70] Fix | Delete
* @return bool true if there is a token.
[71] Fix | Delete
*/
[72] Fix | Delete
public function has_token() {
[73] Fix | Delete
return is_string( $this->access_token );
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
/**
[77] Fix | Delete
* Get access token related error message.
[78] Fix | Delete
*
[79] Fix | Delete
* @return array Array of error messages.
[80] Fix | Delete
*/
[81] Fix | Delete
public function get_token_error() {
[82] Fix | Delete
return is_string( $this->access_token ) ? [] : $this->access_token;
[83] Fix | Delete
}
[84] Fix | Delete
[85] Fix | Delete
/**
[86] Fix | Delete
* Check if there is an error related to access tokens.
[87] Fix | Delete
*
[88] Fix | Delete
* @return bool true if any error happened when requesting an access token.
[89] Fix | Delete
*/
[90] Fix | Delete
public function has_token_error() {
[91] Fix | Delete
return ! is_string( $this->access_token );
[92] Fix | Delete
}
[93] Fix | Delete
[94] Fix | Delete
/**
[95] Fix | Delete
* Perform the actual call to Google for fresh data.
[96] Fix | Delete
*
[97] Fix | Delete
* @return array associative array with the response or with error data in case of failure.
[98] Fix | Delete
*/
[99] Fix | Delete
public function call_google() {
[100] Fix | Delete
$dimension = $this->type === 'unit' ? 'AD_UNIT_ID' : 'DOMAIN_NAME';
[101] Fix | Delete
$today = new DateTimeImmutable();
[102] Fix | Delete
$start_date = $today->sub( date_interval_create_from_date_string( '28 days' ) );
[103] Fix | Delete
// Replace placeholder in the endpoint with actual arguments.
[104] Fix | Delete
$url = str_replace(
[105] Fix | Delete
[
[106] Fix | Delete
'%pubid%',
[107] Fix | Delete
'%DIM%',
[108] Fix | Delete
'%SY%',
[109] Fix | Delete
'%SM%',
[110] Fix | Delete
'%SD%',
[111] Fix | Delete
'%EY%',
[112] Fix | Delete
'%EM%',
[113] Fix | Delete
'%ED%',
[114] Fix | Delete
],
[115] Fix | Delete
[
[116] Fix | Delete
$this->publisher_id,
[117] Fix | Delete
$dimension,
[118] Fix | Delete
$start_date->format( 'Y' ),
[119] Fix | Delete
$start_date->format( 'n' ),
[120] Fix | Delete
$start_date->format( 'j' ),
[121] Fix | Delete
$today->format( 'Y' ),
[122] Fix | Delete
$today->format( 'n' ),
[123] Fix | Delete
$today->format( 'j' ),
[124] Fix | Delete
],
[125] Fix | Delete
$this->endpoint_url
[126] Fix | Delete
);
[127] Fix | Delete
[128] Fix | Delete
$headers = [
[129] Fix | Delete
'Authorization' => 'Bearer ' . $this->access_token,
[130] Fix | Delete
];
[131] Fix | Delete
[132] Fix | Delete
$response = wp_remote_get( $url, [ 'headers' => $headers ] );
[133] Fix | Delete
Advanced_Ads_AdSense_MAPI::log( 'Fetched AdSense Report from ' . $url );
[134] Fix | Delete
[135] Fix | Delete
if ( is_wp_error( $response ) ) {
[136] Fix | Delete
return [
[137] Fix | Delete
'status' => false,
[138] Fix | Delete
// translators: AdSense ID.
[139] Fix | Delete
'msg' => sprintf( esc_html__( 'Error while retrieving report for "%s".', 'advanced-ads' ), $this->publisher_id ),
[140] Fix | Delete
'raw' => $response->get_error_message(),
[141] Fix | Delete
];
[142] Fix | Delete
}
[143] Fix | Delete
[144] Fix | Delete
$response_body = json_decode( $response['body'], true );
[145] Fix | Delete
[146] Fix | Delete
if ( ! isset( $response_body['startDate'] ) ) {
[147] Fix | Delete
return [
[148] Fix | Delete
'status' => false,
[149] Fix | Delete
// translators: AdSense ID.
[150] Fix | Delete
'msg' => sprintf( esc_html__( 'Invalid response while retrieving report for "%s".', 'advanced-ads' ), $this->publisher_id ),
[151] Fix | Delete
'raw' => $response['body'],
[152] Fix | Delete
];
[153] Fix | Delete
}
[154] Fix | Delete
[155] Fix | Delete
$response_body['api_version'] = self::API_VERSION;
[156] Fix | Delete
$response_body['timestamp'] = time();
[157] Fix | Delete
[158] Fix | Delete
return [
[159] Fix | Delete
'status' => true,
[160] Fix | Delete
'response_body' => $response_body,
[161] Fix | Delete
];
[162] Fix | Delete
}
[163] Fix | Delete
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function