PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.10.1
Advanced Ads – Ad Manager & AdSense v1.10.1
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 8 years ago ad-debug.php 8 years ago ad-model.php 8 years ago ad-select.php 9 years ago ad.php 7 years ago ad_ajax_callbacks.php 7 years ago ad_group.php 7 years ago ad_placements.php 7 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 7 years ago ad_type_plain.php 8 years ago checks.php 7 years ago compatibility.php 7 years ago display-conditions.php 7 years ago filesystem.php 8 years ago frontend_checks.php 7 years ago plugin.php 7 years ago upgrades.php 9 years ago utils.php 7 years ago visitor-conditions.php 7 years ago widget.php 7 years ago
widget.php
254 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 if ( is_array( $placements ) ) {
138 ksort( $placements );
139 }
140
141 foreach( $placements as $_placement_slug => $_placement ){
142 if( isset( $_placement['type'] ) && 'sidebar_widget' === $_placement['type'] ){
143 $select['placements']['placement_' . $_placement_slug ] = $_placement['name'];
144 }
145 }
146
147 return $select;
148 }
149
150 /**
151 * return content of an in a widget
152 *
153 * @since 1.2
154 * @param string $id slug of the display
155 */
156 static function output($id = ''){
157 // get placement data for the slug
158 if ( empty($id) ) { return; }
159
160 $item = explode( '_', $id, 2 );
161
162 if ( isset($item[1]) ) {
163 $item_id = $item[1];
164 } elseif (empty($item_id)) {
165 return;
166 }
167
168 // return either ad or group content
169 if ( $item[0] == 'ad' ){
170 return get_ad( absint( $item_id ) );
171 } elseif ( $item[0] == 'group' ){
172 return get_ad_group( absint( $item_id ) );
173 } elseif ( $item[0] == 'placement' ){
174 return get_ad_placement( $item_id );
175 }
176
177 return;
178 }
179
180 /**
181 * get the base id of the widget
182 *
183 * @return string
184 */
185 public static function get_base_id() {
186 $options = Advanced_Ads_Plugin::get_instance()->options();
187
188 // deprecated to keep previously changed prefixed working
189 $prefix2 = ( isset( $options['id-prefix'] ) && $options['id-prefix'] !== '' ) ? $options['id-prefix'] : 'advads_ad_';
190 return $prefix2 . 'widget';
191 }
192
193 /**
194 * Get frontend widget id.
195 *
196 * @param int $number Unique ID number of the current widget instance.
197 * @return str
198 */
199 private function get_frontend_id( $number ) {
200 $prefix = Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();
201 return $prefix . 'widget-' . $number;
202 }
203
204 /**
205 * Make it harder for ad blockers to block the widget.
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 $pattern = '#\sid=("|\')[^"\']+["\']#';
214 if ( ( defined( 'ADVANCED_ADS_SHOW_WIDGET_ID' ) && ADVANCED_ADS_SHOW_WIDGET_ID )
215 || ! empty( $instance['q2w3_fixed_widget'] )
216 ) {
217 // Replace id.
218 $number = ! empty( $this->number ) ? $this->number : '';
219 $before_widget = preg_replace( $pattern, ' id=$01' . $this->get_frontend_id( $number ) . '$01', $before_widget );
220 } else {
221 // Remove id.
222 $before_widget = preg_replace( $pattern, '', $before_widget );
223 }
224 }
225 return $before_widget;
226 }
227
228 /**
229 * Provide the 'Q2W3 Fixed Widget' plugin with the new frontend widget id.
230 *
231 * @param array $sidebars_widgets
232 * @return array $sidebars_widgets
233 */
234 public function q2w3_replace_frontend_id( $sidebars_widgets ) {
235 foreach ( $sidebars_widgets as $sidebar => $widgets ) {
236 foreach ( $widgets as $k => $widget ) {
237 $pos = strrpos( $widget, '-' );
238 $option_name = substr( $widget, 0, $pos );
239 $number = substr( $widget, $pos + 1 );
240
241 if ( $option_name === self::get_base_id() ) {
242 $widget_options = get_option('widget_' . $option_name);
243 if ( ! empty( $widget_options[ $number ]['remove-widget-id'] ) ) {
244 $sidebars_widgets[ $sidebar ][ $k ] = $this->get_frontend_id( $number );
245 }
246 }
247
248 }
249 }
250 return $sidebars_widgets;
251 }
252
253 }
254