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/clone/wp-conte.../plugins/advanced.../modules/ad-posit.../classes
File: ad-positioning.php
<?php
[0] Fix | Delete
[1] Fix | Delete
/**
[2] Fix | Delete
* Class handling the ad positioning and migrating values from previous solutions.
[3] Fix | Delete
*/
[4] Fix | Delete
class Advanced_Ads_Ad_Positioning {
[5] Fix | Delete
/**
[6] Fix | Delete
* The instance of the current ad.
[7] Fix | Delete
*
[8] Fix | Delete
* @var Advanced_Ads_Ad
[9] Fix | Delete
*/
[10] Fix | Delete
private $ad;
[11] Fix | Delete
[12] Fix | Delete
/**
[13] Fix | Delete
* The structure of these output options.
[14] Fix | Delete
*
[15] Fix | Delete
* @var array
[16] Fix | Delete
*/
[17] Fix | Delete
private $positioning = [
[18] Fix | Delete
'position' => 'none',
[19] Fix | Delete
'clearfix' => false,
[20] Fix | Delete
'margin' => [
[21] Fix | Delete
'top' => 0,
[22] Fix | Delete
'left' => 0,
[23] Fix | Delete
'bottom' => 0,
[24] Fix | Delete
'right' => 0,
[25] Fix | Delete
],
[26] Fix | Delete
];
[27] Fix | Delete
[28] Fix | Delete
/**
[29] Fix | Delete
* Class constructor.
[30] Fix | Delete
*
[31] Fix | Delete
* @param Advanced_Ads_Ad $ad The current ad object.
[32] Fix | Delete
*/
[33] Fix | Delete
public function __construct( Advanced_Ads_Ad $ad ) {
[34] Fix | Delete
$this->ad = $ad;
[35] Fix | Delete
$this->migrate_values();
[36] Fix | Delete
$this->filter_values();
[37] Fix | Delete
}
[38] Fix | Delete
[39] Fix | Delete
/**
[40] Fix | Delete
* Migrate option from a previous solution where floating was an additional setting.
[41] Fix | Delete
*
[42] Fix | Delete
* @return void
[43] Fix | Delete
*/
[44] Fix | Delete
private function migrate_values() {
[45] Fix | Delete
$options = $this->get_options();
[46] Fix | Delete
[47] Fix | Delete
$this->positioning['margin'] = array_merge(
[48] Fix | Delete
$this->positioning['margin'],
[49] Fix | Delete
array_map( function($value) { return (int)$value; }, $options['margin'] )
[50] Fix | Delete
);
[51] Fix | Delete
[52] Fix | Delete
$this->positioning['position'] = $options['position'];
[53] Fix | Delete
// instead of having an empty value, set an explicit default.
[54] Fix | Delete
if ( empty( $this->positioning['position'] ) ) {
[55] Fix | Delete
$this->positioning['position'] = 'none';
[56] Fix | Delete
$this->positioning['clearfix'] = false;
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
// left, center, right are the old values, if it's none of these we've already migrated.
[60] Fix | Delete
if ( ! in_array( $this->positioning['position'], [ 'left', 'center', 'right' ], true ) ) {
[61] Fix | Delete
// ensure we get an array with min two elements.
[62] Fix | Delete
$position = explode( '_', $this->positioning['position'] . '_' );
[63] Fix | Delete
[64] Fix | Delete
// explicitly set clearfix option.
[65] Fix | Delete
$this->positioning['clearfix'] = $position[0] !== 'center' && $position[1] === 'nofloat';
[66] Fix | Delete
[67] Fix | Delete
return;
[68] Fix | Delete
}
[69] Fix | Delete
[70] Fix | Delete
if ( $this->positioning['position'] === 'center' ) {
[71] Fix | Delete
$this->positioning['position'] = 'center_nofloat';
[72] Fix | Delete
[73] Fix | Delete
return;
[74] Fix | Delete
}
[75] Fix | Delete
[76] Fix | Delete
$this->positioning['clearfix'] = ! empty( $options['clearfix'] );
[77] Fix | Delete
$this->positioning['position'] .= $this->positioning['clearfix'] ? '_nofloat' : '_float';
[78] Fix | Delete
}
[79] Fix | Delete
[80] Fix | Delete
/**
[81] Fix | Delete
* Filter the option value for Advanced_Ads_Ad.
[82] Fix | Delete
* This ensures we don't have to update the whole positioning process but can change only the wp-admin side of things.
[83] Fix | Delete
*
[84] Fix | Delete
* @return void
[85] Fix | Delete
*/
[86] Fix | Delete
private function filter_values() {
[87] Fix | Delete
foreach ( $this->positioning as $key => $value ) {
[88] Fix | Delete
add_filter( "advanced-ads-ad-option-output.{$key}", function() use ( $value ) {
[89] Fix | Delete
return $value;
[90] Fix | Delete
} );
[91] Fix | Delete
[92] Fix | Delete
if ( is_array( $value ) ) {
[93] Fix | Delete
foreach ( $value as $sub_key => $sub_value ) {
[94] Fix | Delete
add_filter( "advanced-ads-ad-option-output.{$sub_key}", function() use ( $sub_value ) {
[95] Fix | Delete
return $sub_value;
[96] Fix | Delete
} );
[97] Fix | Delete
}
[98] Fix | Delete
}
[99] Fix | Delete
}
[100] Fix | Delete
}
[101] Fix | Delete
[102] Fix | Delete
/**
[103] Fix | Delete
* Set up the positioning options with title, description and icon.
[104] Fix | Delete
*
[105] Fix | Delete
* @return array
[106] Fix | Delete
*/
[107] Fix | Delete
private function setup_positioning_options() {
[108] Fix | Delete
return [
[109] Fix | Delete
'default' => [
[110] Fix | Delete
'title' => __( "Theme’s Default", 'advanced-ads' ),
[111] Fix | Delete
'description' => __( 'The ad will behave as predefined by the theme.', 'advanced-ads' ),
[112] Fix | Delete
'options' => [
[113] Fix | Delete
'none' => [],
[114] Fix | Delete
],
[115] Fix | Delete
],
[116] Fix | Delete
'float' => [
[117] Fix | Delete
'title' => _x( 'Float', 'Layout options "Text Flow" heading', 'advanced-ads' ),
[118] Fix | Delete
'description' => __( 'Text will wrap around the ad and its margin.', 'advanced-ads' ),
[119] Fix | Delete
'options' => [
[120] Fix | Delete
'left_float' => [],
[121] Fix | Delete
'right_float' => [],
[122] Fix | Delete
],
[123] Fix | Delete
],
[124] Fix | Delete
'block' => [
[125] Fix | Delete
'title' => _x( 'Block', 'Layout options "Text Flow" heading', 'advanced-ads' ),
[126] Fix | Delete
'description' => __( 'Text will continue after the ad and its margin.', 'advanced-ads' ),
[127] Fix | Delete
'options' => [
[128] Fix | Delete
'left_nofloat' => [
[129] Fix | Delete
'img' => 'block-lr',
[130] Fix | Delete
],
[131] Fix | Delete
'center_nofloat' => [
[132] Fix | Delete
'img' => 'block-cntr',
[133] Fix | Delete
],
[134] Fix | Delete
'right_nofloat' => [
[135] Fix | Delete
'img' => 'block-lr',
[136] Fix | Delete
],
[137] Fix | Delete
],
[138] Fix | Delete
],
[139] Fix | Delete
];
[140] Fix | Delete
}
[141] Fix | Delete
[142] Fix | Delete
/**
[143] Fix | Delete
* Concatenate the templates and prepare inline styles and scripts.
[144] Fix | Delete
*
[145] Fix | Delete
* @return string
[146] Fix | Delete
*/
[147] Fix | Delete
public function return_admin_view() {
[148] Fix | Delete
return $this->positioning_admin_view() . $this->spacing_admin_view();
[149] Fix | Delete
}
[150] Fix | Delete
[151] Fix | Delete
/**
[152] Fix | Delete
* Include the positioning view.
[153] Fix | Delete
*
[154] Fix | Delete
* @return string
[155] Fix | Delete
*/
[156] Fix | Delete
private function positioning_admin_view() {
[157] Fix | Delete
$positioning = $this->positioning['position'];
[158] Fix | Delete
$positioning_options = $this->setup_positioning_options();
[159] Fix | Delete
[160] Fix | Delete
ob_start();
[161] Fix | Delete
include_once __DIR__ . '/../views/ad-positioning.php';
[162] Fix | Delete
[163] Fix | Delete
return ob_get_clean();
[164] Fix | Delete
}
[165] Fix | Delete
[166] Fix | Delete
/**
[167] Fix | Delete
* Include the spacing/margin view.
[168] Fix | Delete
*
[169] Fix | Delete
* @return string
[170] Fix | Delete
*/
[171] Fix | Delete
private function spacing_admin_view() {
[172] Fix | Delete
$is_centered = explode( '_', $this->positioning['position'] )[0] === 'center';
[173] Fix | Delete
$spacings = [
[174] Fix | Delete
'top' => [
[175] Fix | Delete
'label' => _x( 'Top', 'Ad positioning spacing label', 'advanced-ads' ),
[176] Fix | Delete
],
[177] Fix | Delete
'right' => [
[178] Fix | Delete
'label' => _x( 'Right', 'Ad positioning spacing label', 'advanced-ads' ),
[179] Fix | Delete
],
[180] Fix | Delete
'bottom' => [
[181] Fix | Delete
'label' => _x( 'Bottom', 'Ad positioning spacing label', 'advanced-ads' ),
[182] Fix | Delete
],
[183] Fix | Delete
'left' => [
[184] Fix | Delete
'label' => _x( 'Left', 'Ad positioning spacing label', 'advanced-ads' ),
[185] Fix | Delete
],
[186] Fix | Delete
];
[187] Fix | Delete
foreach ( $spacings as $direction => $item ) {
[188] Fix | Delete
$spacings[ $direction ]['value'] = (int) $this->positioning['margin'][ $direction ];
[189] Fix | Delete
}
[190] Fix | Delete
[191] Fix | Delete
ob_start();
[192] Fix | Delete
include_once __DIR__ . '/../views/ad-spacing.php';
[193] Fix | Delete
[194] Fix | Delete
return ob_get_clean();
[195] Fix | Delete
}
[196] Fix | Delete
[197] Fix | Delete
/**
[198] Fix | Delete
* Get a well-formed array to work with.
[199] Fix | Delete
*
[200] Fix | Delete
* @return array
[201] Fix | Delete
*/
[202] Fix | Delete
private function get_options() {
[203] Fix | Delete
$options = $this->ad->options();
[204] Fix | Delete
if ( empty( $options['output'] ) ) {
[205] Fix | Delete
return $this->positioning;
[206] Fix | Delete
}
[207] Fix | Delete
[208] Fix | Delete
return wp_parse_args( $options['output'], $this->positioning );
[209] Fix | Delete
}
[210] Fix | Delete
}
[211] Fix | Delete
[212] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function