PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.2.7
Advanced Ads – Ad Manager & AdSense v1.2.7
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 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 / ad_placements.php
advanced-ads / classes Last commit date
ad.php 11 years ago ad_ajax_callbacks.php 12 years ago ad_group.php 11 years ago ad_placements.php 11 years ago ad_type_abstract.php 12 years ago ad_type_content.php 11 years ago ad_type_plain.php 11 years ago widget.php 11 years ago
ad_placements.php
226 lines
1 <?php
2
3 /**
4 * Advanced Ads
5 *
6 * @package Advanced_Ads_Placements
7 * @author Thomas Maier <thomas.maier@webgilde.com>
8 * @license GPL-2.0+
9 * @link http://webgilde.com
10 * @copyright 2014 Thomas Maier, webgilde GmbH
11 */
12
13 /**
14 * grouping placements functions
15 *
16 * @since 1.1.0
17 * @package Advads_Placements
18 * @author Thomas Maier <thomas.maier@webgilde.com>
19 */
20 class Advads_Ad_Placements {
21
22 /**
23 * get placement types
24 *
25 * @since 1.2.1
26 * @return arr $types array with placement types
27 */
28 static function get_placement_types() {
29 $types = array(
30 'default' => array(
31 'title' => __('default', ADVADS_SLUG),
32 'description' => __('Manual placement.', ADVADS_SLUG),
33 ),
34 'header' => array(
35 'title' => __('header', ADVADS_SLUG),
36 'description' => __('Injected in Header (before closing </head> Tag, often not visible).', ADVADS_SLUG),
37 ),
38 'footer' => array(
39 'title' => __('footer', ADVADS_SLUG),
40 'description' => __('Injected in Footer (before closing </body> Tag).', ADVADS_SLUG),
41 ),
42 'post_top' => array(
43 'title' => __('before post', ADVADS_SLUG),
44 'description' => __('Injected before the post content.', ADVADS_SLUG),
45 ),
46 'post_bottom' => array(
47 'title' => __('after post', ADVADS_SLUG),
48 'description' => __('Injected after the post content.', ADVADS_SLUG),
49 ),
50 'post_content' => array(
51 'title' => __('post content', ADVADS_SLUG),
52 'description' => __('Injected into the post content. You can choose the paragraph after which the ad content is displayed.', ADVADS_SLUG),
53 ),
54 );
55 return apply_filters('advads-placement-types', $types);
56 }
57
58 /**
59 * save a new placement
60 *
61 * @since 1.1.0
62 * @param array $new_placement
63 * @return mixed true if saved; error message if not
64 */
65 static function save_new_placement($new_placement) {
66 // load placements
67 $placements = Advanced_Ads::get_ad_placements_array();
68
69 // escape slug as slug
70 $new_placement['slug'] = sanitize_title($new_placement['slug']);
71
72 // check if slug already exists
73 if ($new_placement['slug'] == '')
74 return __('Slug can\'t be empty.', ADVADS_SLUG);
75 if (isset($placements[$new_placement['slug']]))
76 return __('Slug already exists.', ADVADS_SLUG);
77
78 // make sure only allowed types are being saved
79 $placement_types = Advads_Ad_Placements::get_placement_types();
80 $new_placement['type'] = (isset($placement_types[$new_placement['type']])) ? $new_placement['type'] : 'default';
81 // escape name
82 $new_placement['name'] = esc_attr($new_placement['name']);
83
84 // add new place to all placements
85 $placements[$new_placement['slug']] = array(
86 'type' => $new_placement['type'],
87 'name' => $new_placement['name']
88 );
89
90 // save array
91 update_option('advads-ads-placements', $placements);
92
93 return true;
94 }
95
96 /**
97 * save placements
98 *
99 * @since 1.1.0
100 * @param array $placement_items
101 * @return mixed true if saved; error message if not
102 */
103 static function save_placements($placement_items) {
104
105 // load placements
106 $placements = Advanced_Ads::get_ad_placements_array();
107
108 foreach ($placement_items as $_placement_slug => $_placement) {
109 // remove the placement
110 if (isset($_placement['delete'])) {
111 unset($placements[$_placement_slug]);
112 continue;
113 }
114 // save item
115 if (isset($_placement['item']))
116 $placements[$_placement_slug]['item'] = $_placement['item'];
117 // save item options
118 if (isset($_placement['options'])){
119 $placements[$_placement_slug]['options'] = $_placement['options'];
120 if(isset($placements[$_placement_slug]['options']['index']))
121 $placements[$_placement_slug]['options']['index'] = absint($placements[$_placement_slug]['options']['index']);
122 }
123 }
124
125 // save array
126 update_option('advads-ads-placements', $placements);
127
128 return true;
129 }
130
131 /**
132 * get items for item select field
133 *
134 * @since 1.1
135 * @return arr $select items for select field
136 */
137 static function items_for_select() {
138 $select = array();
139
140 // load all ads
141 $ads = Advanced_Ads::get_ads();
142 foreach ($ads as $_ad) {
143 $select['ads']['ad_' . $_ad->ID] = $_ad->post_title;
144 }
145
146 // load all ad groups
147 $groups = Advanced_Ads::get_ad_groups();
148 foreach ($groups as $_group) {
149 $select['groups']['group_' . $_group->term_id] = $_group->name;
150 }
151
152 return $select;
153 }
154
155 /**
156 * return content of a placement
157 *
158 * @since 1.1.0
159 * @param string $id slug of the display
160 */
161 static function output($id = '') {
162 // get placement data for the slug
163 if ($id == '')
164 return;
165
166 $placements = get_option('advads-ads-placements', array());
167
168 if (isset($placements[$id]['item'])) {
169 $_item = explode('_', $placements[$id]['item']);
170
171 if (isset($_item[1]))
172 $_item_id = absint($_item[1]);
173 elseif (empty($_item_id))
174 return;
175
176 // return either ad or group content
177 if ($_item[0] == 'ad') {
178 return get_ad($_item_id);
179 } elseif ($_item[0] == 'group') {
180 return get_ad_group($_item_id);
181 }
182 } else {
183 return;
184 }
185
186 return;
187 }
188
189 /**
190 * inject ads directly into the content
191 *
192 * @since 1.2.1
193 * @param string $placement_id id of the placement
194 * @param arr $options placement options
195 * @param string $content
196 * @return type
197 * @link inspired by http://www.wpbeginner.com/wp-tutorials/how-to-insert-ads-within-your-post-content-in-wordpress/
198 */
199 static function inject_in_content($placement_id, $options, $content) {
200 $closing_p = '</p>';
201 $paragraph_id = isset($options['index']) ? $options['index'] : 1;
202 $ad_content = Advads_Ad_Placements::output($placement_id);
203
204 $paragraphs = explode($closing_p, $content);
205 $offset = 0;
206 $running = true;
207 foreach ($paragraphs as $index => $paragraph) {
208
209 // check if current paragraph is empty and if so, increate offset
210 if($running && $index > 0 && trim(str_replace(array('<p>', '&nbsp;'), '', $paragraph)) == '')
211 $offset++;
212
213 if (trim($paragraph)) {
214 $paragraphs[$index] .= $closing_p;
215 }
216
217 if ($paragraph_id + $offset == $index + 1) {
218 $paragraphs[$index] .= $ad_content;
219 $running = false;
220 }
221 }
222 return implode('', $paragraphs);
223 }
224
225 }
226