PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.8.25
Advanced Ads – Ad Manager & AdSense v1.8.25
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 8 years ago ad-ajax.php 9 years ago ad-debug.php 8 years ago ad-model.php 9 years ago ad-select.php 9 years ago ad.php 8 years ago ad_ajax_callbacks.php 8 years ago ad_group.php 8 years ago ad_placements.php 8 years ago ad_type_abstract.php 8 years ago ad_type_content.php 8 years ago ad_type_dummy.php 8 years ago ad_type_group.php 8 years ago ad_type_image.php 8 years ago ad_type_plain.php 8 years ago checks.php 8 years ago display-conditions.php 8 years ago filesystem.php 8 years ago frontend_checks.php 8 years ago plugin.php 8 years ago upgrades.php 9 years ago utils.php 8 years ago visitor-conditions.php 8 years ago widget.php 8 years ago
widget.php
250 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 return $instance;
64 }
65
66 function form($instance) {
67 $instance = wp_parse_args( (array) $instance, array('title' => '', 'item_id' => '') );
68 $title = strip_tags( $instance['title'] );
69 $elementid = $instance['item_id'];
70
71 ?><p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:', 'advanced-ads' ); ?></label>
72 <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
73
74 $items = array_merge( self::items_for_select(), self::widget_placements_for_select() );
75 ?>
76 <select id="<?php echo $this->get_field_id( 'item_id' ); ?>" name="<?php echo $this->get_field_name( 'item_id' ); ?>">
77 <option value=""><?php _e( '--empty--', 'advanced-ads' ); ?></option>
78 <?php if ( isset($items['placements']) ) : ?>
79 <optgroup label="<?php _e( 'Placements', 'advanced-ads' ); ?>">
80 <?php foreach ( $items['placements'] as $_item_id => $_item_title ) : ?>
81 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
82 <?php endforeach; ?>
83 </optgroup>
84 <?php endif; ?>
85 <?php if ( isset($items['groups']) ) : ?>
86 <optgroup label="<?php _e( 'Ad Groups', 'advanced-ads' ); ?>">
87 <?php foreach ( $items['groups'] as $_item_id => $_item_title ) : ?>
88 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
89 <?php endforeach; ?>
90 </optgroup>
91 <?php endif; ?>
92 <?php if ( isset($items['ads']) ) : ?>
93 <optgroup label="<?php _e( 'Ads', 'advanced-ads' ); ?>">
94 <?php foreach ( $items['ads'] as $_item_id => $_item_title ) : ?>
95 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
96 <?php endforeach; ?>
97 </optgroup>
98 <?php endif; ?>
99 </select><?php
100 }
101
102 /**
103 * get items for widget select field
104 *
105 * @since 1.2
106 * @return arr $select items for select field
107 */
108 static function items_for_select(){
109 $select = array();
110 $model = Advanced_Ads::get_instance()->get_model();
111
112 // load all ads
113 $ads = $model->get_ads( array('orderby' => 'title', 'order' => 'ASC') );
114 foreach ( $ads as $_ad ){
115 $select['ads']['ad_' . $_ad->ID] = $_ad->post_title;
116 }
117
118 // load all ad groups
119 $groups = $model->get_ad_groups();
120 foreach ( $groups as $_group ){
121 $select['groups']['group_' . $_group->term_id] = $_group->name;
122 }
123
124 return $select;
125 }
126
127 /**
128 * get widget placements for select field
129 *
130 * @since 1.6.11
131 * @return arr $items for select field
132 */
133 public static function widget_placements_for_select(){
134 $select = array();
135 $placements = Advanced_Ads::get_ad_placements_array();
136
137 foreach( $placements as $_placement_slug => $_placement ){
138 if( isset( $_placement['type'] ) && 'sidebar_widget' === $_placement['type'] ){
139 $select['placements']['placement_' . $_placement_slug ] = $_placement['name'];
140 }
141 }
142
143 return $select;
144 }
145
146 /**
147 * return content of an in a widget
148 *
149 * @since 1.2
150 * @param string $id slug of the display
151 */
152 static function output($id = ''){
153 // get placement data for the slug
154 if ( empty($id) ) { return; }
155
156 $item = explode( '_', $id, 2 );
157
158 if ( isset($item[1]) ) {
159 $item_id = $item[1];
160 } elseif (empty($item_id)) {
161 return;
162 }
163
164 // return either ad or group content
165 if ( $item[0] == 'ad' ){
166 return get_ad( absint( $item_id ) );
167 } elseif ( $item[0] == 'group' ){
168 return get_ad_group( absint( $item_id ) );
169 } elseif ( $item[0] == 'placement' ){
170 return get_ad_placement( $item_id );
171 }
172
173 return;
174 }
175
176 /**
177 * get the base id of the widget
178 *
179 * @return string
180 */
181 public static function get_base_id() {
182 $options = Advanced_Ads_Plugin::get_instance()->options();
183
184 // deprecated to keep previously changed prefixed working
185 $prefix2 = ( isset( $options['id-prefix'] ) && $options['id-prefix'] !== '' ) ? $options['id-prefix'] : 'advads_ad_';
186 return $prefix2 . 'widget';
187 }
188
189 /**
190 * Get frontend widget id.
191 *
192 * @param int $number Unique ID number of the current widget instance.
193 * @return str
194 */
195 private function get_frontend_id( $number ) {
196 $prefix = Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();
197 return $prefix . 'widget-' . $number;
198 }
199
200 /**
201 * Make it harder for ad blockers to block the widget.
202 *
203 * @param str $before_widget
204 * @param array $instance Settings for the current widget instance.
205 * @return str $before_widget
206 */
207 private function maybe_replace_frontend_id( $before_widget, $instance ) {
208 if ( ! empty( $instance['remove-widget-id'] ) ) {
209 $pattern = '#\sid=("|\')[^"\']+["\']#';
210 if ( ( defined( 'ADVANCED_ADS_SHOW_WIDGET_ID' ) && ADVANCED_ADS_SHOW_WIDGET_ID )
211 || ! empty( $instance['q2w3_fixed_widget'] )
212 ) {
213 // Replace id.
214 $number = ! empty( $this->number ) ? $this->number : '';
215 $before_widget = preg_replace( $pattern, ' id=$01' . $this->get_frontend_id( $number ) . '$01', $before_widget );
216 } else {
217 // Remove id.
218 $before_widget = preg_replace( $pattern, '', $before_widget );
219 }
220 }
221 return $before_widget;
222 }
223
224 /**
225 * Provide the 'Q2W3 Fixed Widget' plugin with the new frontend widget id.
226 *
227 * @param array $sidebars_widgets
228 * @return array $sidebars_widgets
229 */
230 public function q2w3_replace_frontend_id( $sidebars_widgets ) {
231 foreach ( $sidebars_widgets as $sidebar => $widgets ) {
232 foreach ( $widgets as $k => $widget ) {
233 $pos = strrpos( $widget, '-' );
234 $option_name = substr( $widget, 0, $pos );
235 $number = substr( $widget, $pos + 1 );
236
237 if ( $option_name === self::get_base_id() ) {
238 $widget_options = get_option('widget_' . $option_name);
239 if ( ! empty( $widget_options[ $number ]['remove-widget-id'] ) ) {
240 $sidebars_widgets[ $sidebar ][ $k ] = $this->get_frontend_id( $number );
241 }
242 }
243
244 }
245 }
246 return $sidebars_widgets;
247 }
248
249 }
250