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

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/advanced.../modules/gadsense/includes
File: class-mapi.php
header( 'Content-Type: application/json' );
[1000] Fix | Delete
echo wp_json_encode( $response );
[1001] Fix | Delete
}
[1002] Fix | Delete
die;
[1003] Fix | Delete
}
[1004] Fix | Delete
[1005] Fix | Delete
/**
[1006] Fix | Delete
* Save account and token after account selection MCN.
[1007] Fix | Delete
*/
[1008] Fix | Delete
public function ajax_account_selected() {
[1009] Fix | Delete
if ( ! WordPress::user_can( 'advanced_ads_manage_options' ) ) {
[1010] Fix | Delete
die;
[1011] Fix | Delete
}
[1012] Fix | Delete
$post_data = wp_unslash( $_POST );
[1013] Fix | Delete
$nonce = isset( $post_data['nonce'] ) ? $post_data['nonce'] : '';
[1014] Fix | Delete
if ( ! wp_verify_nonce( $nonce, 'advads-mapi' ) ) {
[1015] Fix | Delete
die( 'Unauthorized request' );
[1016] Fix | Delete
}
[1017] Fix | Delete
[1018] Fix | Delete
$token_data = wp_unslash( $post_data['token_data'] );
[1019] Fix | Delete
$account = wp_unslash( $post_data['account'] );
[1020] Fix | Delete
[1021] Fix | Delete
if ( $token_data && $account ) {
[1022] Fix | Delete
self::save_token_from_data( $token_data, $account );
[1023] Fix | Delete
wp_send_json( [ 'status' => true ] );
[1024] Fix | Delete
}
[1025] Fix | Delete
$error = 'Token data missing';
[1026] Fix | Delete
if ( $token_data ) {
[1027] Fix | Delete
$error = 'No account provided';
[1028] Fix | Delete
}
[1029] Fix | Delete
[1030] Fix | Delete
wp_send_json(
[1031] Fix | Delete
[
[1032] Fix | Delete
'status' => false,
[1033] Fix | Delete
'error_msg' => $error,
[1034] Fix | Delete
]
[1035] Fix | Delete
);
[1036] Fix | Delete
}
[1037] Fix | Delete
[1038] Fix | Delete
/**
[1039] Fix | Delete
* Get AdSense account details from a new access token.
[1040] Fix | Delete
*/
[1041] Fix | Delete
public function ajax_get_account_details() {
[1042] Fix | Delete
if ( ! WordPress::user_can( 'advanced_ads_manage_options' ) ) {
[1043] Fix | Delete
wp_send_json_error( 'Unauthorized', 401 );
[1044] Fix | Delete
}
[1045] Fix | Delete
$post_data = wp_unslash( $_POST );
[1046] Fix | Delete
$nonce = isset( $post_data['nonce'] ) ? $post_data['nonce'] : '';
[1047] Fix | Delete
[1048] Fix | Delete
if ( ! wp_verify_nonce( $nonce, 'advads-mapi' ) ) {
[1049] Fix | Delete
wp_send_json_error( 'invalid authorization', 401 );
[1050] Fix | Delete
}
[1051] Fix | Delete
[1052] Fix | Delete
$url = 'https://adsense.googleapis.com/v2/accounts';
[1053] Fix | Delete
$list_child_url = 'https://adsense.googleapis.com/v2/accounts/%pubid%:listChildAccounts';
[1054] Fix | Delete
$token_data = wp_unslash( $post_data['token_data'] );
[1055] Fix | Delete
[1056] Fix | Delete
if ( ! is_array( $token_data ) ) {
[1057] Fix | Delete
wp_send_json(
[1058] Fix | Delete
[
[1059] Fix | Delete
'status' => false,
[1060] Fix | Delete
'error_msg' => esc_html__( 'No token provided. Token data needed to get account details.', 'advanced-ads' ),
[1061] Fix | Delete
]
[1062] Fix | Delete
);
[1063] Fix | Delete
}
[1064] Fix | Delete
[1065] Fix | Delete
$headers = [ 'Authorization' => 'Bearer ' . $token_data['access_token'] ];
[1066] Fix | Delete
$response = wp_remote_get( $url, [ 'headers' => $headers ] );
[1067] Fix | Delete
[1068] Fix | Delete
self::log( 'Get account details from new access token' );
[1069] Fix | Delete
[1070] Fix | Delete
if ( is_wp_error( $response ) ) {
[1071] Fix | Delete
wp_send_json(
[1072] Fix | Delete
[
[1073] Fix | Delete
'status' => false,
[1074] Fix | Delete
'error_msg' => $response->get_error_message(),
[1075] Fix | Delete
]
[1076] Fix | Delete
);
[1077] Fix | Delete
}
[1078] Fix | Delete
if ( trim( $response['body'] ) === '{}' ) {
[1079] Fix | Delete
// Empty, disapproved or other reason.
[1080] Fix | Delete
$options = self::get_option();
[1081] Fix | Delete
$options['connect_error'] = [
[1082] Fix | Delete
'message' => esc_html__( 'No AdSense account data found.', 'advanced-ads' ),
[1083] Fix | Delete
'reason' => 'noAdsenseData',
[1084] Fix | Delete
];
[1085] Fix | Delete
update_option( self::OPTNAME, $options );
[1086] Fix | Delete
wp_send_json_error( [ 'error' => esc_html__( 'No AdSense account data found.', 'advanced-ads' ) ], 404 );
[1087] Fix | Delete
}
[1088] Fix | Delete
[1089] Fix | Delete
$accounts = json_decode( trim( $response['body'] ), true );
[1090] Fix | Delete
[1091] Fix | Delete
if ( isset( $accounts['accounts'] ) ) {
[1092] Fix | Delete
$pub_id = explode( '/', $accounts['accounts'][0]['name'] )[1];
[1093] Fix | Delete
$child_accounts = wp_remote_get( str_replace( '%pubid%', $pub_id, $list_child_url ), [ 'headers' => $headers ] );
[1094] Fix | Delete
[1095] Fix | Delete
if ( is_wp_error( $child_accounts ) ) {
[1096] Fix | Delete
wp_send_json_error( $child_accounts, 500 );
[1097] Fix | Delete
}
[1098] Fix | Delete
$accounts_list = json_decode( trim( $child_accounts['body'] ), true );
[1099] Fix | Delete
if ( trim( $child_accounts['body'] ) === '{}' ) {
[1100] Fix | Delete
// Standard AdSense account.
[1101] Fix | Delete
self::save_token_from_data( $token_data, $accounts['accounts'][0] );
[1102] Fix | Delete
wp_send_json_success( [ 'reload' => true ] );
[1103] Fix | Delete
}
[1104] Fix | Delete
[1105] Fix | Delete
if ( null !== $accounts_list ) {
[1106] Fix | Delete
// Network account.
[1107] Fix | Delete
$details = [];
[1108] Fix | Delete
$html = '';
[1109] Fix | Delete
$details[ $pub_id ] = [
[1110] Fix | Delete
'id' => $pub_id,
[1111] Fix | Delete
'name' => $accounts['accounts'][0]['displayName'],
[1112] Fix | Delete
];
[1113] Fix | Delete
$html .= sprintf( '<option value="%1$s">%2$s [%3$s]</option>', esc_attr( $pub_id ), esc_html( $accounts['accounts'][0]['displayName'] ), esc_html( $pub_id ) );
[1114] Fix | Delete
[1115] Fix | Delete
foreach ( $accounts_list['accounts'] as $item ) {
[1116] Fix | Delete
$account_id = explode( '/', $item['name'] )[1];
[1117] Fix | Delete
$details[ $account_id ] = [
[1118] Fix | Delete
'id' => $account_id,
[1119] Fix | Delete
'name' => $item['displayName'],
[1120] Fix | Delete
];
[1121] Fix | Delete
$html .= sprintf( '<option value="%1$s">%2$s [%3$s]</option>', esc_attr( $account_id ), esc_html( $item['displayName'] ), esc_html( $account_id ) );
[1122] Fix | Delete
}
[1123] Fix | Delete
wp_send_json_success(
[1124] Fix | Delete
[
[1125] Fix | Delete
'details' => $details,
[1126] Fix | Delete
'html' => $html,
[1127] Fix | Delete
'token_data' => $token_data,
[1128] Fix | Delete
]
[1129] Fix | Delete
);
[1130] Fix | Delete
}
[1131] Fix | Delete
wp_send_json_error( [ 'message' => 'unexpected response - get child accounts' ], 400 );
[1132] Fix | Delete
}
[1133] Fix | Delete
}
[1134] Fix | Delete
[1135] Fix | Delete
/**
[1136] Fix | Delete
* Submit Google API confirmation code. Save the token and update ad client list.
[1137] Fix | Delete
*/
[1138] Fix | Delete
public function ajax_confirm_code() {
[1139] Fix | Delete
if ( ! WordPress::user_can( 'advanced_ads_manage_options' ) ) {
[1140] Fix | Delete
die;
[1141] Fix | Delete
}
[1142] Fix | Delete
$nonce = isset( $_POST['nonce'] ) ? $_POST['nonce'] : '';
[1143] Fix | Delete
if ( false !== wp_verify_nonce( $nonce, 'advads-mapi' ) ) {
[1144] Fix | Delete
$code = urldecode( $_POST['code'] );
[1145] Fix | Delete
$cid = self::CID;
[1146] Fix | Delete
$cs = self::CS;
[1147] Fix | Delete
[1148] Fix | Delete
$use_user_app = self::use_user_app();
[1149] Fix | Delete
[1150] Fix | Delete
if ( $use_user_app ) {
[1151] Fix | Delete
$cid = ADVANCED_ADS_MAPI_CID;
[1152] Fix | Delete
$cs = ADVANCED_ADS_MAPI_CIS;
[1153] Fix | Delete
}
[1154] Fix | Delete
[1155] Fix | Delete
$code_url = 'https://www.googleapis.com/oauth2/v4/token';
[1156] Fix | Delete
$redirect_uri = self::REDIRECT_URI;
[1157] Fix | Delete
$grant_type = 'authorization_code';
[1158] Fix | Delete
[1159] Fix | Delete
$args = [
[1160] Fix | Delete
'timeout' => 10,
[1161] Fix | Delete
'body' => [
[1162] Fix | Delete
'code' => $code,
[1163] Fix | Delete
'client_id' => $cid,
[1164] Fix | Delete
'client_secret' => $cs,
[1165] Fix | Delete
'redirect_uri' => $redirect_uri,
[1166] Fix | Delete
'grant_type' => $grant_type,
[1167] Fix | Delete
],
[1168] Fix | Delete
];
[1169] Fix | Delete
[1170] Fix | Delete
$response = wp_remote_post( $code_url, $args );
[1171] Fix | Delete
[1172] Fix | Delete
self::log( 'Confirm authorization code' );
[1173] Fix | Delete
[1174] Fix | Delete
if ( is_wp_error( $response ) ) {
[1175] Fix | Delete
return json_encode(
[1176] Fix | Delete
[
[1177] Fix | Delete
'status' => false,
[1178] Fix | Delete
'msg' => 'error while submitting code',
[1179] Fix | Delete
'raw' => $response->get_error_message(),
[1180] Fix | Delete
]
[1181] Fix | Delete
);
[1182] Fix | Delete
} else {
[1183] Fix | Delete
$token = json_decode( $response['body'], true );
[1184] Fix | Delete
[1185] Fix | Delete
if ( null !== $token && isset( $token['refresh_token'] ) ) {
[1186] Fix | Delete
$expires = time() + absint( $token['expires_in'] );
[1187] Fix | Delete
$token['expires'] = $expires;
[1188] Fix | Delete
header( 'Content-Type: application/json' );
[1189] Fix | Delete
echo json_encode(
[1190] Fix | Delete
[
[1191] Fix | Delete
'status' => true,
[1192] Fix | Delete
'token_data' => $token,
[1193] Fix | Delete
]
[1194] Fix | Delete
);
[1195] Fix | Delete
} else {
[1196] Fix | Delete
header( 'Content-Type: application/json' );
[1197] Fix | Delete
echo json_encode(
[1198] Fix | Delete
[
[1199] Fix | Delete
'status' => false,
[1200] Fix | Delete
'response_body' => $response['body'],
[1201] Fix | Delete
]
[1202] Fix | Delete
);
[1203] Fix | Delete
}
[1204] Fix | Delete
}
[1205] Fix | Delete
}
[1206] Fix | Delete
die;
[1207] Fix | Delete
}
[1208] Fix | Delete
[1209] Fix | Delete
/**
[1210] Fix | Delete
* Enqueue admin scripts
[1211] Fix | Delete
*
[1212] Fix | Delete
* @param string $hook current page hook.
[1213] Fix | Delete
*/
[1214] Fix | Delete
public function admin_scripts( $hook ) {
[1215] Fix | Delete
if ( 'advanced-ads_page_advanced-ads-settings' == $hook ) {
[1216] Fix | Delete
wp_enqueue_script( 'gasense/mapi/settings', GADSENSE_BASE_URL . 'admin/assets/js/mapi-settings.js', [ 'jquery', 'wp-util' ], ADVADS_VERSION );
[1217] Fix | Delete
}
[1218] Fix | Delete
}
[1219] Fix | Delete
[1220] Fix | Delete
/**
[1221] Fix | Delete
* Print alert data in admin footer
[1222] Fix | Delete
*/
[1223] Fix | Delete
public function admin_footer() {
[1224] Fix | Delete
$data = Advanced_Ads_AdSense_Data::get_instance();
[1225] Fix | Delete
$adsense_id = $data->get_adsense_id();
[1226] Fix | Delete
$has_token = Advanced_Ads_AdSense_MAPI::has_token( $adsense_id );
[1227] Fix | Delete
$alerts = self::get_stored_account_alerts( $adsense_id );
[1228] Fix | Delete
$refresh_alerts = false;
[1229] Fix | Delete
[1230] Fix | Delete
// default value, never checked for alerts.
[1231] Fix | Delete
if ( [] === $alerts && $has_token ) {
[1232] Fix | Delete
$refresh_alerts = true;
[1233] Fix | Delete
}
[1234] Fix | Delete
if ( $has_token && is_array( $alerts ) ) {
[1235] Fix | Delete
// Check weekly for alerts.
[1236] Fix | Delete
if ( isset( $alerts['lastCheck'] ) && time() > absint( $alerts['lastCheck'] ) + DAY_IN_SECONDS * 7 ) {
[1237] Fix | Delete
$refresh_alerts = true;
[1238] Fix | Delete
}
[1239] Fix | Delete
// Only try to get the alerts in the background once a day.
[1240] Fix | Delete
if ( isset( $alerts['inlineAttempt'] ) && time() < $alerts['inlineAttempt'] + DAY_IN_SECONDS ) {
[1241] Fix | Delete
$refresh_alerts = false;
[1242] Fix | Delete
}
[1243] Fix | Delete
}
[1244] Fix | Delete
if ( $refresh_alerts ) {
[1245] Fix | Delete
$nonce = wp_create_nonce( 'mapi-alerts' );
[1246] Fix | Delete
?>
[1247] Fix | Delete
<input type="hidden" id="advads-mapi-refresh-alerts" />
[1248] Fix | Delete
<script type="text/javascript">
[1249] Fix | Delete
;(function($) {
[1250] Fix | Delete
[1251] Fix | Delete
$( '#mapi-alerts-overlay' ).css( 'display', 'block' );
[1252] Fix | Delete
[1253] Fix | Delete
var pubId = $( '#adsense-id' ).val();
[1254] Fix | Delete
$.ajax({
[1255] Fix | Delete
url: ajaxurl,
[1256] Fix | Delete
type: 'post',
[1257] Fix | Delete
data: {
[1258] Fix | Delete
action: 'advads-mapi-get-alerts',
[1259] Fix | Delete
account: '<?php echo wp_strip_all_tags( $adsense_id ); ?>',
[1260] Fix | Delete
nonce: '<?php echo wp_strip_all_tags( $nonce ); ?>',
[1261] Fix | Delete
inlineAttempt: 1,
[1262] Fix | Delete
},
[1263] Fix | Delete
success:function(response, status, XHR) {
[1264] Fix | Delete
if ( 'undefined' != typeof response.alerts ) {
[1265] Fix | Delete
$( '#advads-mapi-refresh-alerts' ).trigger( 'advadsMapiRefreshAlerts', [response] );
[1266] Fix | Delete
}
[1267] Fix | Delete
$( '#mapi-alerts-overlay' ).css( 'display', 'none' );
[1268] Fix | Delete
},
[1269] Fix | Delete
error:function(request, status, error) {
[1270] Fix | Delete
$( '#mapi-alerts-overlay' ).css( 'display', 'none' );
[1271] Fix | Delete
},
[1272] Fix | Delete
});
[1273] Fix | Delete
[1274] Fix | Delete
})(window.jQuery);
[1275] Fix | Delete
</script>
[1276] Fix | Delete
<?php
[1277] Fix | Delete
}
[1278] Fix | Delete
}
[1279] Fix | Delete
[1280] Fix | Delete
public static function log( $task = 'No task provided' ) {
[1281] Fix | Delete
if ( ! defined( 'ADVANCED_ADS_LOG_ADSENSE_API' ) || ! ADVANCED_ADS_LOG_ADSENSE_API ) {
[1282] Fix | Delete
return;
[1283] Fix | Delete
}
[1284] Fix | Delete
[1285] Fix | Delete
$message = date_i18n( '[Y-m-d H:i:s]' ) . ' ' . $task . "\n";
[1286] Fix | Delete
error_log( $message, 3, WP_CONTENT_DIR . '/advanced-ads-google-api-requests.log' );
[1287] Fix | Delete
}
[1288] Fix | Delete
[1289] Fix | Delete
/**
[1290] Fix | Delete
* Sort ad units list alphabetically
[1291] Fix | Delete
*/
[1292] Fix | Delete
public static function get_sorted_adunits( $adunits ) {
[1293] Fix | Delete
$units_sorted_by_name = [];
[1294] Fix | Delete
$units_by_id = [];
[1295] Fix | Delete
foreach ( $adunits as $unit ) {
[1296] Fix | Delete
$units_sorted_by_name[ $unit['name'] ] = $unit['id'];
[1297] Fix | Delete
$units_by_id[ $unit['id'] ] = $unit;
[1298] Fix | Delete
}
[1299] Fix | Delete
ksort( $units_sorted_by_name );
[1300] Fix | Delete
$units_sorted_by_name = array_flip( $units_sorted_by_name );
[1301] Fix | Delete
$results = [];
[1302] Fix | Delete
foreach ( $units_sorted_by_name as $id => $name ) {
[1303] Fix | Delete
$results[ $name ] = $units_by_id[ $id ];
[1304] Fix | Delete
}
[1305] Fix | Delete
return $results;
[1306] Fix | Delete
}
[1307] Fix | Delete
[1308] Fix | Delete
/**
[1309] Fix | Delete
* Format ad type and size strings from Google for display
[1310] Fix | Delete
*
[1311] Fix | Delete
* @param Advanced_Ads_Ad_Network_Ad_Unit $ad_unit the ad unit for which to format the details.
[1312] Fix | Delete
* @param string $format takes either type or size.
[1313] Fix | Delete
*
[1314] Fix | Delete
* @return string
[1315] Fix | Delete
*/
[1316] Fix | Delete
public static function format_ad_data( Advanced_Ads_Ad_Network_Ad_Unit $ad_unit, $format = 'type' ) {
[1317] Fix | Delete
if ( 'type' === $format ) {
[1318] Fix | Delete
$str = $ad_unit->display_type;
[1319] Fix | Delete
$options = self::get_option();
[1320] Fix | Delete
if ( array_key_exists( $ad_unit->id, $options['ad_codes'] ) ) {
[1321] Fix | Delete
preg_match_all( '/data-ad-format="(?<format>.+?)"|data-ad-layout="(?<layout>.+?)"/', $options['ad_codes'][ $ad_unit->id ], $matches );
[1322] Fix | Delete
$format = array_filter( $matches['format'] );
[1323] Fix | Delete
$layout = array_filter( $matches['layout'] );
[1324] Fix | Delete
$format = reset( $format );
[1325] Fix | Delete
$layout = reset( $layout );
[1326] Fix | Delete
if ( empty( $format ) ) {
[1327] Fix | Delete
$format = '';
[1328] Fix | Delete
}
[1329] Fix | Delete
if ( empty( $layout ) ) {
[1330] Fix | Delete
$layout = '';
[1331] Fix | Delete
}
[1332] Fix | Delete
[1333] Fix | Delete
if ( 'autorelaxed' === $format ) {
[1334] Fix | Delete
$str = _x( 'Multiplex', 'AdSense ad type', 'advanced-ads' );
[1335] Fix | Delete
} elseif ( 'fluid' === $format ) {
[1336] Fix | Delete
if ( 'in-article' === $layout ) {
[1337] Fix | Delete
$str = _x( 'In-article', 'AdSense ad type', 'advanced-ads' );
[1338] Fix | Delete
} else {
[1339] Fix | Delete
$str = _x( 'In-feed', 'AdSense ad type', 'advanced-ads' );
[1340] Fix | Delete
}
[1341] Fix | Delete
}
[1342] Fix | Delete
}
[1343] Fix | Delete
[1344] Fix | Delete
switch ( $str ) {
[1345] Fix | Delete
case 'DISPLAY':
[1346] Fix | Delete
$str = _x( 'Display', 'AdSense ad type', 'advanced-ads' );
[1347] Fix | Delete
break;
[1348] Fix | Delete
case 'LINK':
[1349] Fix | Delete
$str = _x( 'Link', 'AdSense ad type', 'advanced-ads' );
[1350] Fix | Delete
break;
[1351] Fix | Delete
case 'MATCHED_CONTENT':
[1352] Fix | Delete
$str = _x( 'Multiplex', 'AdSense ad type', 'advanced-ads' );
[1353] Fix | Delete
break;
[1354] Fix | Delete
case 'ARTICLE':
[1355] Fix | Delete
$str = _x( 'In-article', 'AdSense ad type', 'advanced-ads' );
[1356] Fix | Delete
break;
[1357] Fix | Delete
case 'FEED':
[1358] Fix | Delete
$str = _x( 'In-feed', 'AdSense ad type', 'advanced-ads' );
[1359] Fix | Delete
break;
[1360] Fix | Delete
case 'TYPE_UNSPECIFIED':
[1361] Fix | Delete
default:
[1362] Fix | Delete
}
[1363] Fix | Delete
} elseif ( 'size' === $format ) {
[1364] Fix | Delete
// size.
[1365] Fix | Delete
$str = $ad_unit->display_size === '1x3' ? 'Responsive' : $ad_unit->display_size;
[1366] Fix | Delete
if ( strpos( $str, 'SIZE_' ) === 0 ) {
[1367] Fix | Delete
$str = str_replace( '_', 'x', substr( $str, 5 ) );
[1368] Fix | Delete
}
[1369] Fix | Delete
$str = ucfirst( strtolower( $str ) );
[1370] Fix | Delete
} else {
[1371] Fix | Delete
$str = '';
[1372] Fix | Delete
}
[1373] Fix | Delete
[1374] Fix | Delete
return $str;
[1375] Fix | Delete
}
[1376] Fix | Delete
[1377] Fix | Delete
/**
[1378] Fix | Delete
* Check if the credential are the default ones or from user's app
[1379] Fix | Delete
*/
[1380] Fix | Delete
public static function use_user_app() {
[1381] Fix | Delete
if ( ( defined( 'ADVANCED_ADS_MAPI_CID' ) && '' != ADVANCED_ADS_MAPI_CID ) && ( defined( 'ADVANCED_ADS_MAPI_CIS' ) && '' != ADVANCED_ADS_MAPI_CIS ) ) {
[1382] Fix | Delete
return true;
[1383] Fix | Delete
} else {
[1384] Fix | Delete
return false;
[1385] Fix | Delete
}
[1386] Fix | Delete
}
[1387] Fix | Delete
[1388] Fix | Delete
public static function has_token( $adsense_id = '' ) {
[1389] Fix | Delete
if ( empty( $adsense_id ) ) {
[1390] Fix | Delete
return false;
[1391] Fix | Delete
}
[1392] Fix | Delete
[1393] Fix | Delete
$has_token = false;
[1394] Fix | Delete
$options = self::get_option();
[1395] Fix | Delete
if ( self::use_user_app() ) {
[1396] Fix | Delete
if ( isset( $options['accounts'][ $adsense_id ] ) && ! empty( $options['accounts'][ $adsense_id ]['user_app']['refresh_token'] ) ) {
[1397] Fix | Delete
$has_token = true;
[1398] Fix | Delete
}
[1399] Fix | Delete
} elseif ( isset( $options['accounts'][ $adsense_id ] ) && ! empty( $options['accounts'][ $adsense_id ]['default_app']['refresh_token'] ) ) {
[1400] Fix | Delete
$has_token = true;
[1401] Fix | Delete
}
[1402] Fix | Delete
[1403] Fix | Delete
return $has_token;
[1404] Fix | Delete
}
[1405] Fix | Delete
[1406] Fix | Delete
/**
[1407] Fix | Delete
* Save token obtained from confirmation code
[1408] Fix | Delete
*
[1409] Fix | Delete
* @param string $token access token data.
[1410] Fix | Delete
* @param array $details selected account details.
[1411] Fix | Delete
*/
[1412] Fix | Delete
public static function save_token_from_data( $token, $details ) {
[1413] Fix | Delete
$options = self::get_option();
[1414] Fix | Delete
$adsense_id = isset( $details['id'] ) ? $details['id'] : explode( '/', $details['name'] )[1];
[1415] Fix | Delete
[1416] Fix | Delete
if ( ! isset( $options['accounts'][ $adsense_id ] ) ) {
[1417] Fix | Delete
$options['accounts'][ $adsense_id ] = self::$empty_account_data;
[1418] Fix | Delete
}
[1419] Fix | Delete
if ( self::use_user_app() ) {
[1420] Fix | Delete
$options['accounts'][ $adsense_id ]['user_app'] = [
[1421] Fix | Delete
'access_token' => $token['access_token'],
[1422] Fix | Delete
'refresh_token' => $token['refresh_token'],
[1423] Fix | Delete
'expires' => $token['expires'],
[1424] Fix | Delete
'token_type' => $token['token_type'],
[1425] Fix | Delete
];
[1426] Fix | Delete
} else {
[1427] Fix | Delete
$options['accounts'][ $adsense_id ]['default_app'] = [
[1428] Fix | Delete
'access_token' => $token['access_token'],
[1429] Fix | Delete
'refresh_token' => $token['refresh_token'],
[1430] Fix | Delete
'expires' => $token['expires'],
[1431] Fix | Delete
'token_type' => $token['token_type'],
[1432] Fix | Delete
];
[1433] Fix | Delete
}
[1434] Fix | Delete
$options['accounts'][ $adsense_id ]['details'] = [
[1435] Fix | Delete
'id' => $adsense_id,
[1436] Fix | Delete
'name' => isset( $details['displayName'] ) ? $details['displayName'] : $details['name'],
[1437] Fix | Delete
];
[1438] Fix | Delete
$options['connect_error'] = [];
[1439] Fix | Delete
update_option( self::OPTNAME, $options );
[1440] Fix | Delete
[1441] Fix | Delete
$gadsense_data = Advanced_Ads_AdSense_Data::get_instance();
[1442] Fix | Delete
$gadsense_options = $gadsense_data->get_options();
[1443] Fix | Delete
$gadsense_options['adsense-id'] = $adsense_id;
[1444] Fix | Delete
update_option( GADSENSE_OPT_NAME, $gadsense_options );
[1445] Fix | Delete
}
[1446] Fix | Delete
[1447] Fix | Delete
/**
[1448] Fix | Delete
* Get a list of stored alerts for a given AdSense account.
[1449] Fix | Delete
*
[1450] Fix | Delete
* @param string $pub_id the publisher account.
[1451] Fix | Delete
* @return array $alerts
[1452] Fix | Delete
*/
[1453] Fix | Delete
public static function get_stored_account_alerts( $pub_id = '' ) {
[1454] Fix | Delete
if ( empty( $pub_id ) ) {
[1455] Fix | Delete
return false;
[1456] Fix | Delete
}
[1457] Fix | Delete
$options = self::get_option();
[1458] Fix | Delete
if ( isset( $options['accounts'][ $pub_id ] ) ) {
[1459] Fix | Delete
if ( isset( $options['accounts'][ $pub_id ]['alerts'] ) && is_array( $options['accounts'][ $pub_id ]['alerts'] ) ) {
[1460] Fix | Delete
$alerts = $options['accounts'][ $pub_id ]['alerts'];
[1461] Fix | Delete
return self::filter_stored_account_alerts( $alerts );
[1462] Fix | Delete
} else {
[1463] Fix | Delete
return [];
[1464] Fix | Delete
}
[1465] Fix | Delete
}
[1466] Fix | Delete
return false;
[1467] Fix | Delete
}
[1468] Fix | Delete
[1469] Fix | Delete
/**
[1470] Fix | Delete
* We filter out specific alerts from the AdSense account when they are
[1471] Fix | Delete
* - duplicates
[1472] Fix | Delete
* - irrelevant when placing ads in the frontend
[1473] Fix | Delete
*
[1474] Fix | Delete
* @param array $alert_items alerts.
[1475] Fix | Delete
* @param null|array $disabled_alerts additional disabled alerts.
[1476] Fix | Delete
* @return array filtered alert items.
[1477] Fix | Delete
*/
[1478] Fix | Delete
public static function filter_account_alerts( array $alert_items, $disabled_alerts = null ) {
[1479] Fix | Delete
if ( empty( $alert_items ) || ! is_array( $alert_items ) ) {
[1480] Fix | Delete
return $alert_items;
[1481] Fix | Delete
}
[1482] Fix | Delete
[1483] Fix | Delete
// the message IDs we don’t even import from AdSense.
[1484] Fix | Delete
$disabled_adsense_alerts = [
[1485] Fix | Delete
'SELLERS_JSON_CONSENT', // AdSense message: We encourage you to publish your seller information in the Google sellers.json file. Visit the account settings page to review your current visibility status.
[1486] Fix | Delete
'REPORTING_HORIZON_LEGACY_DATA_NOTICE', // AdSense message: Data older than three years is no longer available in Reporting. This data can be downloaded for a limited time.
[1487] Fix | Delete
];
[1488] Fix | Delete
[1489] Fix | Delete
// additional messages to disable. Useful if the function is used in different situations.
[1490] Fix | Delete
if ( ! empty( $disabled_alerts ) && is_array( $disabled_alerts ) ) {
[1491] Fix | Delete
$disabled_adsense_alerts = array_merge( $disabled_adsense_alerts, $disabled_alerts );
[1492] Fix | Delete
}
[1493] Fix | Delete
[1494] Fix | Delete
// remove alerts based on specific IDs.
[1495] Fix | Delete
foreach ( $alert_items as $internal_id => $item ) {
[1496] Fix | Delete
if (
[1497] Fix | Delete
( isset( $item['id'] ) && in_array( $item['id'], $disabled_adsense_alerts, true ) )
[1498] Fix | Delete
|| ( isset( $item['type'] ) && in_array( str_replace( '-', '_', strtoupper( $item['type'] ) ), $disabled_adsense_alerts, true ) )
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function