PluginProbe
Advanced Ads – Ad Manager & AdSense / 1.7.2
Advanced Ads – Ad Manager & AdSense v1.7.2
2.0.26 2.0.25 2.0.24 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 All 348 releases
advanced-ads / classes / widget.php
widget.php
173 lines 5.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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
20 $options = Advanced_Ads_Plugin::get_instance()->options();
21
22 $prefix = Advanced_Ads_Plugin::get_instance()->get_frontend_prefix();
23 $classname = $prefix . 'widget';
24
25 $widget_ops = array('classname' => $classname, 'description' => __( 'Display Ads and Ad Groups.', 'advanced-ads' ));
26 $control_ops = array();
27
28 // deprecated to keep previously changed prefixed working
29 $prefix2 = ( isset( $options['id-prefix'] ) && $options['id-prefix'] !== '' ) ? $options['id-prefix'] : 'advads_ad_';
30 $base_id = $prefix2 . 'widget';
31
32 parent::__construct( $base_id,'Advanced Ads', $widget_ops, $control_ops );
33 }
34
35 function widget($args, $instance) {
36 /** This filter is documented in wp-includes/default-widgets.php */
37 $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
38
39 extract( $args );
40 $item_id = empty($instance['item_id']) ? '' : $instance['item_id'];
41
42 $output = self::output( $item_id );
43 if( $output == '' ){
44 return;
45 }
46
47 echo $before_widget;
48 if ( ! empty( $title ) ) {
49 echo $before_title . $title . $after_title;
50 }
51 echo $output;
52 echo $after_widget;
53 }
54
55 function update($new_instance, $old_instance) {
56 $instance = $old_instance;
57 $instance['title'] = $new_instance['title'];
58 $instance['item_id'] = $new_instance['item_id'];
59 return $instance;
60 }
61
62 function form($instance) {
63 $instance = wp_parse_args( (array) $instance, array('title' => '', 'item_id' => '') );
64 $title = strip_tags( $instance['title'] );
65 $elementid = $instance['item_id'];
66
67 ?><p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
68 <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
69
70 $items = array_merge( self::items_for_select(), self::widget_placements_for_select() );
71 ?>
72 <select id="<?php echo $this->get_field_id( 'item_id' ); ?>" name="<?php echo $this->get_field_name( 'item_id' ); ?>">
73 <option value=""><?php _e( '--empty--', 'advanced-ads' ); ?></option>
74 <?php if ( isset($items['placements']) ) : ?>
75 <optgroup label="<?php _e( 'Placements', 'advanced-ads' ); ?>">
76 <?php foreach ( $items['placements'] as $_item_id => $_item_title ) : ?>
77 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
78 <?php endforeach; ?>
79 </optgroup>
80 <?php endif; ?>
81 <?php if ( isset($items['groups']) ) : ?>
82 <optgroup label="<?php _e( 'Ad Groups', 'advanced-ads' ); ?>">
83 <?php foreach ( $items['groups'] as $_item_id => $_item_title ) : ?>
84 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
85 <?php endforeach; ?>
86 </optgroup>
87 <?php endif; ?>
88 <?php if ( isset($items['ads']) ) : ?>
89 <optgroup label="<?php _e( 'Ads', 'advanced-ads' ); ?>">
90 <?php foreach ( $items['ads'] as $_item_id => $_item_title ) : ?>
91 <option value="<?php echo $_item_id; ?>" <?php selected( $_item_id, $elementid ); ?>><?php echo $_item_title; ?></option>
92 <?php endforeach; ?>
93 </optgroup>
94 <?php endif; ?>
95 </select><?php
96 }
97
98 /**
99 * get items for widget select field
100 *
101 * @since 1.2
102 * @return arr $select items for select field
103 */
104 static function items_for_select(){
105 $select = array();
106 $model = Advanced_Ads::get_instance()->get_model();
107
108 // load all ads
109 $ads = $model->get_ads( array('orderby' => 'name', 'order' => 'ASC') );
110 foreach ( $ads as $_ad ){
111 $select['ads']['ad_' . $_ad->ID] = $_ad->post_title;
112 }
113
114 // load all ad groups
115 $groups = $model->get_ad_groups();
116 foreach ( $groups as $_group ){
117 $select['groups']['group_' . $_group->term_id] = $_group->name;
118 }
119
120 return $select;
121 }
122
123 /**
124 * get widget placements for select field
125 *
126 * @since 1.6.11
127 * @return arr $items for select field
128 */
129 public static function widget_placements_for_select(){
130 $select = array();
131 $placements = Advanced_Ads::get_ad_placements_array();
132
133 foreach( $placements as $_placement_slug => $_placement ){
134 if( isset( $_placement['type'] ) && 'sidebar_widget' === $_placement['type'] ){
135 $select['placements']['placement_' . $_placement_slug ] = $_placement['name'];
136 }
137 }
138
139 return $select;
140 }
141
142 /**
143 * return content of an in a widget
144 *
145 * @since 1.2
146 * @param string $id slug of the display
147 */
148 static function output($id = ''){
149 // get placement data for the slug
150 if ( empty($id) ) { return; }
151
152 $item = explode( '_', $id, 2 );
153
154 if ( isset($item[1]) ) {
155 $item_id = $item[1];
156 } elseif (empty($item_id)) {
157 return;
158 }
159
160 // return either ad or group content
161 if ( $item[0] == 'ad' ){
162 return get_ad( absint( $item_id ) );
163 } elseif ( $item[0] == 'group' ){
164 return get_ad_group( absint( $item_id ) );
165 } elseif ( $item[0] == 'placement' ){
166 return get_ad_placement( $item_id );
167 }
168
169 return;
170 }
171
172 }
173