Edit File by line
/home/zeestwma/richards.../wp-conte.../plugins/jetpack/modules/wordads/php
File: class-wordads-sidebar-widget.php
<?php
[0] Fix | Delete
/**
[1] Fix | Delete
* Widget for adding ads to a sidebar.
[2] Fix | Delete
*
[3] Fix | Delete
* @package automattic/jetpack
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
if ( ! defined( 'ABSPATH' ) ) {
[7] Fix | Delete
exit( 0 );
[8] Fix | Delete
}
[9] Fix | Delete
[10] Fix | Delete
/**
[11] Fix | Delete
* Widget for inserting an ad into your sidebar
[12] Fix | Delete
*
[13] Fix | Delete
* @since 4.5.0
[14] Fix | Delete
*/
[15] Fix | Delete
class WordAds_Sidebar_Widget extends WP_Widget {
[16] Fix | Delete
[17] Fix | Delete
/**
[18] Fix | Delete
* Allowed tags.
[19] Fix | Delete
*
[20] Fix | Delete
* @var string[]
[21] Fix | Delete
*/
[22] Fix | Delete
private static $allowed_tags = array( 'mrec', 'wideskyscraper', 'leaderboard' );
[23] Fix | Delete
[24] Fix | Delete
/**
[25] Fix | Delete
* Mapping array of widget sizes with the WordAds_Smart formats.
[26] Fix | Delete
*
[27] Fix | Delete
* @var string[]
[28] Fix | Delete
*/
[29] Fix | Delete
private static $sizes_x_smart_format = array(
[30] Fix | Delete
'300x250' => 'sidebar_widget_mediumrectangle',
[31] Fix | Delete
'728x90' => 'sidebar_widget_leaderboard',
[32] Fix | Delete
'160x600' => 'sidebar_widget_wideskyscraper',
[33] Fix | Delete
);
[34] Fix | Delete
[35] Fix | Delete
/**
[36] Fix | Delete
* Number of widgets.
[37] Fix | Delete
*
[38] Fix | Delete
* @var int
[39] Fix | Delete
*/
[40] Fix | Delete
private static $num_widgets = 0;
[41] Fix | Delete
[42] Fix | Delete
/**
[43] Fix | Delete
* WordAds_Sidebar_Widget constructor.
[44] Fix | Delete
*/
[45] Fix | Delete
public function __construct() {
[46] Fix | Delete
parent::__construct(
[47] Fix | Delete
'wordads_sidebar_widget',
[48] Fix | Delete
/** This filter is documented in modules/widgets/facebook-likebox.php */
[49] Fix | Delete
apply_filters( 'jetpack_widget_name', 'Ads' ),
[50] Fix | Delete
array(
[51] Fix | Delete
'description' => __( 'Insert an ad unit wherever you can place a widget.', 'jetpack' ),
[52] Fix | Delete
'customize_selective_refresh' => true,
[53] Fix | Delete
)
[54] Fix | Delete
);
[55] Fix | Delete
[56] Fix | Delete
add_filter( 'widget_types_to_hide_from_legacy_widget_block', array( $this, 'hide_widget_in_block_editor' ) );
[57] Fix | Delete
}
[58] Fix | Delete
[59] Fix | Delete
/**
[60] Fix | Delete
* Remove the Ad widget from the Legacy Widget block
[61] Fix | Delete
*
[62] Fix | Delete
* @param array $widget_types List of widgets that are currently removed from the Legacy Widget block.
[63] Fix | Delete
*
[64] Fix | Delete
* @return array $widget_types New list of widgets that will be removed.
[65] Fix | Delete
*/
[66] Fix | Delete
public function hide_widget_in_block_editor( $widget_types ) {
[67] Fix | Delete
$widget_types[] = 'wordads_sidebar_widget';
[68] Fix | Delete
return $widget_types;
[69] Fix | Delete
}
[70] Fix | Delete
[71] Fix | Delete
/**
[72] Fix | Delete
* The Widget outputter.
[73] Fix | Delete
*
[74] Fix | Delete
* @param array $args Widget args.
[75] Fix | Delete
* @param array $instance The Widget instance.
[76] Fix | Delete
*
[77] Fix | Delete
* @return bool|void
[78] Fix | Delete
*/
[79] Fix | Delete
public function widget( $args, $instance ) {
[80] Fix | Delete
global $wordads;
[81] Fix | Delete
if ( $wordads->should_bail() ) {
[82] Fix | Delete
return false;
[83] Fix | Delete
}
[84] Fix | Delete
[85] Fix | Delete
if ( ! isset( $instance['unit'] ) ) {
[86] Fix | Delete
$instance['unit'] = 'mrec';
[87] Fix | Delete
}
[88] Fix | Delete
[89] Fix | Delete
++self::$num_widgets;
[90] Fix | Delete
$width = WordAds::$ad_tag_ids[ $instance['unit'] ]['width'];
[91] Fix | Delete
$height = WordAds::$ad_tag_ids[ $instance['unit'] ]['height'];
[92] Fix | Delete
$unit_id = 1 === self::$num_widgets ? 3 : self::$num_widgets + 3; // 2nd belowpost is '4'
[93] Fix | Delete
$section_id = 0 === $wordads->params->blog_id ?
[94] Fix | Delete
WORDADS_API_TEST_ID :
[95] Fix | Delete
$wordads->params->blog_id . $unit_id;
[96] Fix | Delete
[97] Fix | Delete
$smart_format = self::$sizes_x_smart_format[ "{$width}x{$height}" ];
[98] Fix | Delete
// phpcs:disable WordPress.Security.NonceVerification.Recommended
[99] Fix | Delete
$is_watl_enabled = isset( $_GET['wordads-logging'] ) && isset( $_GET[ $smart_format ] ) && 'true' === $_GET[ $smart_format ];
[100] Fix | Delete
[101] Fix | Delete
// Get the widget snippet.
[102] Fix | Delete
$widget_snippet = $this->get_widget_snippet( $instance, $section_id, $height, $width );
[103] Fix | Delete
[104] Fix | Delete
// Render the IPW or house ad if WATL is disabled.
[105] Fix | Delete
if ( ! $is_watl_enabled ) {
[106] Fix | Delete
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[107] Fix | Delete
echo $widget_snippet;
[108] Fix | Delete
return;
[109] Fix | Delete
}
[110] Fix | Delete
[111] Fix | Delete
// Remove linebreaks and sanitize.
[112] Fix | Delete
$tag = esc_js( str_replace( array( "\n", "\t", "\r" ), '', $widget_snippet ) );
[113] Fix | Delete
[114] Fix | Delete
// Add the fallback to be processed by WATL.
[115] Fix | Delete
$fallback_snippet = <<<HTML
[116] Fix | Delete
<script type="text/javascript">
[117] Fix | Delete
var sas_fallback = sas_fallback || [];
[118] Fix | Delete
sas_fallback.push(
[119] Fix | Delete
{ tag: "$tag", type: '$smart_format' }
[120] Fix | Delete
);
[121] Fix | Delete
</script>
[122] Fix | Delete
HTML;
[123] Fix | Delete
[124] Fix | Delete
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
[125] Fix | Delete
echo $fallback_snippet . $wordads::get_watl_ad_html_tag( $smart_format );
[126] Fix | Delete
}
[127] Fix | Delete
[128] Fix | Delete
/**
[129] Fix | Delete
* The widget snippet.
[130] Fix | Delete
*
[131] Fix | Delete
* @param array $instance The widget instance.
[132] Fix | Delete
* @param string $section_id The section id.
[133] Fix | Delete
* @param int $height The ad height.
[134] Fix | Delete
* @param int $width The ad width.
[135] Fix | Delete
*
[136] Fix | Delete
* @return string
[137] Fix | Delete
*/
[138] Fix | Delete
private function get_widget_snippet( $instance, $section_id, $height, $width ) {
[139] Fix | Delete
global $wordads;
[140] Fix | Delete
[141] Fix | Delete
if ( $wordads->option( 'wordads_house', true ) ) {
[142] Fix | Delete
$unit = 'mrec';
[143] Fix | Delete
if ( 'leaderboard' === $instance['unit'] && ! $this->params->mobile_device ) {
[144] Fix | Delete
$unit = 'leaderboard';
[145] Fix | Delete
} elseif ( 'wideskyscraper' === $instance['unit'] ) {
[146] Fix | Delete
$unit = 'widesky';
[147] Fix | Delete
}
[148] Fix | Delete
[149] Fix | Delete
$snippet = $wordads->get_house_ad( $unit );
[150] Fix | Delete
} else {
[151] Fix | Delete
return $wordads->get_ad_snippet( $section_id, $height, $width, 'widget' );
[152] Fix | Delete
}
[153] Fix | Delete
[154] Fix | Delete
$about = __( 'Advertisements', 'jetpack' );
[155] Fix | Delete
$unit = esc_attr( $instance['unit'] );
[156] Fix | Delete
[157] Fix | Delete
return <<<HTML
[158] Fix | Delete
<div class="wpcnt">
[159] Fix | Delete
<div class="wpa">
[160] Fix | Delete
<span class="wpa-about">$about</span>
[161] Fix | Delete
<div class="u $unit">
[162] Fix | Delete
$snippet
[163] Fix | Delete
</div>
[164] Fix | Delete
</div>
[165] Fix | Delete
</div>
[166] Fix | Delete
HTML;
[167] Fix | Delete
}
[168] Fix | Delete
[169] Fix | Delete
/**
[170] Fix | Delete
* The widget settings form.
[171] Fix | Delete
*
[172] Fix | Delete
* @param array $instance Widget instance.
[173] Fix | Delete
*
[174] Fix | Delete
* @return string|void
[175] Fix | Delete
*/
[176] Fix | Delete
public function form( $instance ) {
[177] Fix | Delete
// ad unit type.
[178] Fix | Delete
if ( isset( $instance['unit'] ) ) {
[179] Fix | Delete
$unit = $instance['unit'];
[180] Fix | Delete
} else {
[181] Fix | Delete
$unit = 'mrec';
[182] Fix | Delete
}
[183] Fix | Delete
?>
[184] Fix | Delete
<p>
[185] Fix | Delete
<label for="<?php echo esc_attr( $this->get_field_id( 'unit' ) ); ?>"><?php esc_html_e( 'Tag Dimensions:', 'jetpack' ); ?></label>
[186] Fix | Delete
<select class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'unit' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'unit' ) ); ?>">
[187] Fix | Delete
<?php
[188] Fix | Delete
foreach ( WordAds::$ad_tag_ids as $ad_unit => $properties ) {
[189] Fix | Delete
if ( ! in_array( $ad_unit, self::$allowed_tags, true ) ) {
[190] Fix | Delete
continue;
[191] Fix | Delete
}
[192] Fix | Delete
[193] Fix | Delete
$splits = explode( '_', $properties['tag'] );
[194] Fix | Delete
$unit_pretty = "{$splits[0]} {$splits[1]}";
[195] Fix | Delete
$selected = selected( $ad_unit, $unit, false );
[196] Fix | Delete
echo "<option value='", esc_attr( $ad_unit ), "' ", esc_attr( $selected ), '>', esc_html( $unit_pretty ), '</option>';
[197] Fix | Delete
}
[198] Fix | Delete
?>
[199] Fix | Delete
</select>
[200] Fix | Delete
</p>
[201] Fix | Delete
<?php
[202] Fix | Delete
}
[203] Fix | Delete
[204] Fix | Delete
/**
[205] Fix | Delete
* The Widget updater.
[206] Fix | Delete
*
[207] Fix | Delete
* @param array $new_instance The revised instance.
[208] Fix | Delete
* @param array $old_instance Original instance.
[209] Fix | Delete
*
[210] Fix | Delete
* @return array
[211] Fix | Delete
*/
[212] Fix | Delete
public function update( $new_instance, $old_instance ) {
[213] Fix | Delete
$instance = $old_instance;
[214] Fix | Delete
[215] Fix | Delete
if ( in_array( $new_instance['unit'], self::$allowed_tags, true ) ) {
[216] Fix | Delete
$instance['unit'] = $new_instance['unit'];
[217] Fix | Delete
} else {
[218] Fix | Delete
$instance['unit'] = 'mrec';
[219] Fix | Delete
}
[220] Fix | Delete
[221] Fix | Delete
return $instance;
[222] Fix | Delete
}
[223] Fix | Delete
}
[224] Fix | Delete
[225] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function