PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.14.6
Advanced Ads – Ad Manager & AdSense v1.14.6
2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / classes / widget.php
advanced-ads / classes Last commit date
EDD_SL_Plugin_Updater.php 6 years ago ad-ajax.php 6 years ago ad-debug.php 8 years ago ad-health-notices.php 6 years ago ad-model.php 8 years ago ad-select.php 9 years ago ad.php 6 years ago ad_ajax_callbacks.php 6 years ago ad_group.php 6 years ago ad_placements.php 6 years ago ad_type_abstract.php 8 years ago ad_type_content.php 6 years ago ad_type_dummy.php 6 years ago ad_type_group.php 8 years ago ad_type_image.php 6 years ago ad_type_plain.php 6 years ago checks.php 6 years ago compatibility.php 6 years ago display-conditions.php 6 years ago filesystem.php 8 years ago frontend_checks.php 6 years ago plugin.php 6 years ago upgrades.php 6 years ago utils.php 6 years ago visitor-conditions.php 6 years ago widget.php 6 years ago
widget.php
256 lines
1 <?php
2 /**
3 * Advanced Ads Widget
4 *
5 * @package Advanced_Ads_Widget
6 * @author Thomas Maier <thomas.maier@webgilde.com>
7 * @license GPL-2.0+
8 * @link http://webgilde.com
9 * @copyright 2014 Thomas Maier, webgilde GmbH
10 */
11
12 /**
13 * Ad widget
14 *
15 */
16 class Advanced_Ads_Widget extends WP_Widget {
17
18 function __construct() {
19 $prefix = Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();
20 $classname = $prefix . 'widget';
21
22 $widget_ops = array('classname' => $classname, 'description' => __( 'Display Ads and Ad Groups.', 'advanced-ads' ));
23 $control_ops = array();
24 $base_id = Advanced_Ads_Widget::get_base_id();
25
26 parent::__construct( $base_id,'Advanced Ads', $widget_ops, $control_ops );
27
28 add_filter( 'q2w3-fixed-widgets', array( $this, 'q2w3_replace_frontend_id' ) );
29 }
30
31 function widget($args, $instance) {
32 /** This filter is documented in wp-includes/default-widgets.php */
33 $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
34
35 extract( $args );
36 $item_id = empty($instance['item_id']) ? '' : $instance['item_id'];
37
38 $output = self::output( $item_id );
39 if( $output == '' ){
40 return;
41 }
42
43 $before_widget = $this->maybe_replace_frontend_id( $before_widget, $instance );
44
45 echo $before_widget;
46 if ( ! empty( $title ) ) {
47 echo $before_title . $title . $after_title;
48 }
49 echo $output;
50 echo $after_widget;
51 }
52
53 function update($new_instance, $old_instance) {
54 $instance = $old_instance;
55 $instance['title'] = $new_instance['title'];
56 $instance['item_id'] = $new_instance['item_id'];
57
58 // Allow to remove/replace id for new widgets and if it was allowed earlier.
59 if ( $old_instance === array() || ! empty( $old_instance['remove-widget-id'] ) ) {
60 $instance['remove-widget-id'] = true;
61 }
62 return $instance;
63 }
64
65 function form($instance) {
66 $instance = wp_parse_args( (array) $instance, array('title' => '', 'item_id' => '') );
67 $title = strip_tags( $instance['title'] );
68 $elementid = $instance['item_id'];
69
70 ?><p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'advanced-ads' ); ?></label>
71 <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /></p><?php
72
73 $items = array_merge( self::items_for_select(), self::widget_placements_for_select() );
74 ?>
75 <select id="<?php echo $this->get_field_id( 'item_id' ); ?>" name="<?php echo $this->get_field_name( 'item_id' ); ?>">
76 <option value=""><?php _e( '--empty--', 'advanced-ads' ); ?></option>
77 <?php if ( isset($items['placements']) ) : ?>
78 <optgroup label="<?php _e( 'Placements', 'advanced-ads' ); ?>">
79 <?php foreach ( $items['placements'] as $_item_id => $_item_title ) : ?>
80 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
81 <?php endforeach; ?>
82 </optgroup>
83 <?php endif; ?>
84 <?php if ( isset($items['groups']) ) : ?>
85 <optgroup label="<?php _e( 'Ad Groups', 'advanced-ads' ); ?>">
86 <?php foreach ( $items['groups'] as $_item_id => $_item_title ) : ?>
87 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
88 <?php endforeach; ?>
89 </optgroup>
90 <?php endif; ?>
91 <?php if ( isset($items['ads']) ) : ?>
92 <optgroup label="<?php _e( 'Ads', 'advanced-ads' ); ?>">
93 <?php foreach ( $items['ads'] as $_item_id => $_item_title ) : ?>
94 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
95 <?php endforeach; ?>
96 </optgroup>
97 <?php endif; ?>
98 </select><?php
99 }
100
101 /**
102 * get items for widget select field
103 *
104 * @since 1.2
105 * @return arr $select items for select field
106 */
107 static function items_for_select(){
108 $select = array();
109 $model = Advanced_Ads::get_instance()->get_model();
110
111 // load all ads
112 $ads = $model->get_ads( array('orderby' => 'title', 'order' => 'ASC') );
113 foreach ( $ads as $_ad ){
114 $select['ads']['ad_' . $_ad->ID] = $_ad->post_title;
115 }
116
117 // load all ad groups
118 $groups = $model->get_ad_groups();
119 foreach ( $groups as $_group ){
120 $select['groups']['group_' . $_group->term_id] = $_group->name;
121 }
122
123 return $select;
124 }
125
126 /**
127 * get widget placements for select field
128 *
129 * @since 1.6.11
130 * @return arr $items for select field
131 */
132 public static function widget_placements_for_select(){
133 $select = array();
134 $placements = Advanced_Ads::get_ad_placements_array();
135
136 if ( is_array( $placements ) ) {
137 ksort( $placements );
138 }
139
140 foreach( $placements as $_placement_slug => $_placement ){
141 if( isset( $_placement['type'] ) && 'sidebar_widget' === $_placement['type'] ){
142 $select['placements']['placement_' . $_placement_slug ] = $_placement['name'];
143 }
144 }
145
146 return $select;
147 }
148
149 /**
150 * return content of an in a widget
151 *
152 * @since 1.2
153 * @param string $id slug of the display
154 */
155 static function output($id = ''){
156 // get placement data for the slug
157 if ( empty($id) ) { return; }
158
159 $item = explode( '_', $id, 2 );
160
161 if ( isset($item[1]) ) {
162 $item_id = $item[1];
163 } elseif (empty($item_id)) {
164 return;
165 }
166
167 // return either ad or group content
168 if ( $item[0] == 'ad' ){
169 return get_ad( absint( $item_id ) );
170 } elseif ( $item[0] == 'group' ){
171 return get_ad_group( absint( $item_id ) );
172 } elseif ( $item[0] == 'placement' ){
173 return get_ad_placement( $item_id );
174 }
175
176 return;
177 }
178
179 /**
180 * get the base id of the widget
181 *
182 * @return string
183 */
184 public static function get_base_id() {
185 $options = Advanced_Ads_Plugin::get_instance()->options();
186
187 // deprecated to keep previously changed prefixed working
188 $prefix2 = ( isset( $options['id-prefix'] ) && $options['id-prefix'] !== '' ) ? $options['id-prefix'] : 'advads_ad_';
189 return $prefix2 . 'widget';
190 }
191
192 /**
193 * Get frontend widget id.
194 *
195 * @param int $number Unique ID number of the current widget instance.
196 * @return str
197 */
198 private function get_frontend_id( $number ) {
199 $prefix = Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();
200 return $prefix . 'widget-' . $number;
201 }
202
203 /**
204 * Make it harder for ad blockers to block the widget.
205 * removes the pre-defined widget ID (e.g., advads_ad_widget-20) and replaces it with one that uses the individual frontend prefix
206 *
207 * @param str $before_widget
208 * @param array $instance Settings for the current widget instance.
209 * @return str $before_widget
210 */
211 private function maybe_replace_frontend_id( $before_widget, $instance ) {
212 if ( ! empty( $instance['remove-widget-id'] )
213 || defined( 'JNEWS_THEME_ID' ) // the JNews theme overrides the widget ID and resets it, so we target this specifically.
214 ) {
215 $pattern = '#\sid=("|\')[^"\']+["\']#';
216 if ( ( defined( 'ADVANCED_ADS_SHOW_WIDGET_ID' ) && ADVANCED_ADS_SHOW_WIDGET_ID )
217 || ! empty( $instance['q2w3_fixed_widget'] )
218 ) {
219 // Replace id.
220 $number = ! empty( $this->number ) ? $this->number : '';
221 $before_widget = preg_replace( $pattern, ' id=$01' . $this->get_frontend_id( $number ) . '$01', $before_widget );
222 } else {
223 // Remove id.
224 $before_widget = preg_replace( $pattern, '', $before_widget );
225 }
226 }
227 return $before_widget;
228 }
229
230 /**
231 * Provide the 'Q2W3 Fixed Widget' plugin with the new frontend widget id.
232 *
233 * @param array $sidebars_widgets
234 * @return array $sidebars_widgets
235 */
236 public function q2w3_replace_frontend_id( $sidebars_widgets ) {
237 foreach ( $sidebars_widgets as $sidebar => $widgets ) {
238 foreach ( $widgets as $k => $widget ) {
239 $pos = strrpos( $widget, '-' );
240 $option_name = substr( $widget, 0, $pos );
241 $number = substr( $widget, $pos + 1 );
242
243 if ( $option_name === self::get_base_id() ) {
244 $widget_options = get_option('widget_' . $option_name);
245 if ( ! empty( $widget_options[ $number ]['remove-widget-id'] ) ) {
246 $sidebars_widgets[ $sidebar ][ $k ] = $this->get_frontend_id( $number );
247 }
248 }
249
250 }
251 }
252 return $sidebars_widgets;
253 }
254
255 }
256