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.../classes
File: ad-select.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* Abstracts ad selection.
[3] Fix | Delete
*
[4] Fix | Delete
* The class allows to modify 'methods' (named callbacks) to provide ads
[5] Fix | Delete
* through `advanced-ads-ad-select-methods` filter.
[6] Fix | Delete
* This can be used to replace default methods, wrap them or add new ones.
[7] Fix | Delete
*
[8] Fix | Delete
* Further allows to provide ad selection attributes
[9] Fix | Delete
* through `advanced-ads-ad-select-args` filter to influence behaviour of the
[10] Fix | Delete
* selection method.
[11] Fix | Delete
* Default methods have a `override` attribute that allows to replace the
[12] Fix | Delete
* content. This may be used to defer or skip ad codes dynamically.
[13] Fix | Delete
*
[14] Fix | Delete
* @since 1.5.0
[15] Fix | Delete
*/
[16] Fix | Delete
class Advanced_Ads_Select {
[17] Fix | Delete
[18] Fix | Delete
const PLACEMENT = 'placement';
[19] Fix | Delete
const GROUP = 'group';
[20] Fix | Delete
const AD = 'id'; // alias of self::ID
[21] Fix | Delete
const ID = 'id';
[22] Fix | Delete
[23] Fix | Delete
protected $methods;
[24] Fix | Delete
[25] Fix | Delete
private function __construct() {}
[26] Fix | Delete
[27] Fix | Delete
/**
[28] Fix | Delete
*
[29] Fix | Delete
* @var Advanced_Ads_Select
[30] Fix | Delete
*/
[31] Fix | Delete
private static $instance;
[32] Fix | Delete
[33] Fix | Delete
/**
[34] Fix | Delete
*
[35] Fix | Delete
* @return Advanced_Ads_Select
[36] Fix | Delete
*/
[37] Fix | Delete
public static function get_instance()
[38] Fix | Delete
{
[39] Fix | Delete
if ( ! isset(self::$instance) ) {
[40] Fix | Delete
self::$instance = new self;
[41] Fix | Delete
}
[42] Fix | Delete
[43] Fix | Delete
return self::$instance;
[44] Fix | Delete
}
[45] Fix | Delete
[46] Fix | Delete
/**
[47] Fix | Delete
*
[48] Fix | Delete
* @return array
[49] Fix | Delete
*/
[50] Fix | Delete
public function get_methods()
[51] Fix | Delete
{
[52] Fix | Delete
if ( ! isset($this->methods) ) {
[53] Fix | Delete
$methods = [
[54] Fix | Delete
self::AD => [ $this, 'get_ad_by_id' ],
[55] Fix | Delete
self::GROUP => [ $this, 'get_ad_by_group' ],
[56] Fix | Delete
self::PLACEMENT => [ $this, 'get_ad_by_placement' ],
[57] Fix | Delete
];
[58] Fix | Delete
[59] Fix | Delete
$this->methods = apply_filters( 'advanced-ads-ad-select-methods', $methods );
[60] Fix | Delete
}
[61] Fix | Delete
[62] Fix | Delete
return $this->methods;
[63] Fix | Delete
}
[64] Fix | Delete
[65] Fix | Delete
/**
[66] Fix | Delete
* Advanced ad selection methods should not directly rely on
[67] Fix | Delete
* current environment factors.
[68] Fix | Delete
* Prior to actual ad selection the meta is provided to allow for
[69] Fix | Delete
* serialised, proxied or otherwise defered selection workflows.
[70] Fix | Delete
*
[71] Fix | Delete
* @return array
[72] Fix | Delete
*/
[73] Fix | Delete
public function get_ad_arguments( $method, $id, $args = [] )
[74] Fix | Delete
{
[75] Fix | Delete
$args = (array) $args;
[76] Fix | Delete
[77] Fix | Delete
$args['previous_method'] = isset( $args['method'] ) ? $args['method'] : null;
[78] Fix | Delete
$args['previous_id'] = isset( $args['id'] ) ? $args['id'] : null;
[79] Fix | Delete
[80] Fix | Delete
if ( $id || ! isset( $args['id'] ) ) $args['id'] = $id;
[81] Fix | Delete
$args['method'] = $method;
[82] Fix | Delete
[83] Fix | Delete
$args = apply_filters( 'advanced-ads-ad-select-args', $args, $method, $id );
[84] Fix | Delete
[85] Fix | Delete
return $args;
[86] Fix | Delete
}
[87] Fix | Delete
[88] Fix | Delete
public function get_ad_by_method( $id, $method, $args = [] ) {
[89] Fix | Delete
[90] Fix | Delete
$methods = $this->get_methods();
[91] Fix | Delete
if ( ! isset($methods[ $method ]) ) {
[92] Fix | Delete
return ;
[93] Fix | Delete
}
[94] Fix | Delete
if ( ! advads_can_display_ads() ) {
[95] Fix | Delete
return ;
[96] Fix | Delete
}
[97] Fix | Delete
$args = $this->get_ad_arguments( $method, $id, $args );
[98] Fix | Delete
[99] Fix | Delete
return call_user_func( $methods[ $method ], $args );
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
// internal
[103] Fix | Delete
public function get_ad_by_id($args) {
[104] Fix | Delete
if ( isset($args['override']) ) {
[105] Fix | Delete
return $args['override'];
[106] Fix | Delete
}
[107] Fix | Delete
if ( ! isset($args['id']) || $args['id'] == 0 ) {
[108] Fix | Delete
return ;
[109] Fix | Delete
}
[110] Fix | Delete
[111] Fix | Delete
// We can't get the ad from the repository, this is the only instance where the arguments are passed in the constructor.
[112] Fix | Delete
$ad = new Advanced_Ads_Ad( (int) $args['id'], $args );
[113] Fix | Delete
[114] Fix | Delete
if ( false !== ( $override = apply_filters( 'advanced-ads-ad-select-override-by-ad', false, $ad, $args ) ) ) {
[115] Fix | Delete
return $override;
[116] Fix | Delete
}
[117] Fix | Delete
[118] Fix | Delete
// check conditions
[119] Fix | Delete
if ( $ad->can_display() ) {
[120] Fix | Delete
return $ad->output();
[121] Fix | Delete
}
[122] Fix | Delete
}
[123] Fix | Delete
[124] Fix | Delete
// internal
[125] Fix | Delete
public function get_ad_by_group($args) {
[126] Fix | Delete
if ( isset($args['override']) ) {
[127] Fix | Delete
return $args['override'];
[128] Fix | Delete
}
[129] Fix | Delete
if ( ! isset($args['id']) || $args['id'] == 0 ) {
[130] Fix | Delete
return;
[131] Fix | Delete
}
[132] Fix | Delete
[133] Fix | Delete
// get ad
[134] Fix | Delete
$id = (int) $args['id'];
[135] Fix | Delete
$adgroup = new Advanced_Ads_Group( $id, $args );
[136] Fix | Delete
$ordered_ad_ids = $adgroup->get_ordered_ad_ids();
[137] Fix | Delete
[138] Fix | Delete
if ( false !== ( $override = apply_filters( 'advanced-ads-ad-select-override-by-group', false, $adgroup, $ordered_ad_ids, $args ) ) ) {
[139] Fix | Delete
return $override;
[140] Fix | Delete
}
[141] Fix | Delete
[142] Fix | Delete
return $adgroup->output( $ordered_ad_ids );
[143] Fix | Delete
}
[144] Fix | Delete
[145] Fix | Delete
// internal
[146] Fix | Delete
public function get_ad_by_placement($args) {
[147] Fix | Delete
if ( isset($args['override']) ) {
[148] Fix | Delete
return $args['override'];
[149] Fix | Delete
}
[150] Fix | Delete
if ( ! isset($args['id']) || $args['id'] == '' ) {
[151] Fix | Delete
return ;
[152] Fix | Delete
}
[153] Fix | Delete
[154] Fix | Delete
// check conditions
[155] Fix | Delete
if ( ! Advanced_Ads_Placements::can_display( $args['id'] ) ) {
[156] Fix | Delete
return;
[157] Fix | Delete
}
[158] Fix | Delete
[159] Fix | Delete
// get placement content
[160] Fix | Delete
$id = $args['id'];
[161] Fix | Delete
return Advanced_Ads_Placements::output( $id, $args );
[162] Fix | Delete
}
[163] Fix | Delete
}
[164] Fix | Delete
[165] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function