PluginProbe
AdRotate Banner Manager / 5.19
AdRotate Banner Manager v5.19
5.19.2 5.19.1 5.19 5.18 5.17.8 5.17.7 trunk 4.0 4.1 4.10 4.11 4.11.1 4.11.2 4.12 4.12.1 4.12.2 4.12.3 4.13 4.13.1 4.13.2 4.13.3 4.13.4 4.13.5 4.14 4.15 All 133 releases
adrotate / adrotate.php

adrotate.php in AdRotate Banner Manager 5.19, at adrotate.php

482 lines 18.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: AdRotate Banner Manager
4 Plugin URI: https://ajdg.solutions/product/adrotate-banner-manager/
5 Author: Arnan de Gans
6 Author URI: https://www.arnan.me/
7 Description: Everything you need to manage all your ads, banners and affiliate links while keeping things simple.
8 Version: 5.19
9 License: GPLv3
10
11 Text Domain: adrotate
12 Domain Path: /languages
13
14 Requires at least: 4.9
15 Requires PHP: 8.0
16 GooseUp: compatible
17 */
18
19 /* ------------------------------------------------------------------------------------
20 * COPYRIGHT AND TRADEMARK NOTICE
21 * Copyright 2008-2026 Arnan de Gans. All Rights Reserved.
22 * ADROTATE is a registered trademark of Arnan de Gans.
23
24 * COPYRIGHT NOTICES AND ALL THE COMMENTS SHOULD REMAIN INTACT.
25 * By using this code you agree to indemnify Arnan de Gans from any
26 * liability that might arise from its use.
27 ------------------------------------------------------------------------------------ */
28
29 /*--- AdRotate values ---------------------------------------*/
30 define('ADROTATE_VERSION', 408);
31 define('ADROTATE_DB_VERSION', 76);
32 $adrotate_path = plugin_dir_path(__FILE__);
33 /*-----------------------------------------------------------*/
34
35 /*--- Load Files --------------------------------------------*/
36 include_once($adrotate_path.'/adrotate-functions.php');
37 include_once($adrotate_path.'/adrotate-statistics.php');
38 include_once($adrotate_path.'/adrotate-output.php');
39 include_once($adrotate_path.'/adrotate-widget.php');
40 if(function_exists('register_block_type')) include_once($adrotate_path.'/adrotate-block.php');
41 /*-----------------------------------------------------------*/
42
43 /*--- Setup -------------------------------------------------*/
44 register_activation_hook(__FILE__, 'adrotate_activate');
45 register_deactivation_hook(__FILE__, 'adrotate_deactivate');
46 register_uninstall_hook(__FILE__, 'adrotate_uninstall');
47 /*-----------------------------------------------------------*/
48
49 /*--- Check and Load config ---------------------------------*/
50 load_plugin_textdomain('adrotate', false, 'adrotate/languages');
51 $adrotate_config = get_option("adrotate_config");
52 $adrotate_crawlers = get_option("adrotate_crawlers");
53 $adrotate_version = get_option("adrotate_version");
54 $adrotate_db_version = get_option("adrotate_db_version");
55 /*-----------------------------------------------------------*/
56
57 /*--- Core --------------------------------------------------*/
58 add_action('adrotate_empty_trackerdata', 'adrotate_empty_trackerdata');
59 add_action('widgets_init', 'adrotate_widget');
60 add_filter('adrotate_apply_photon','adrotate_apply_jetpack_photon');
61 /*-----------------------------------------------------------*/
62
63 /*--- Front end ---------------------------------------------*/
64 if(!is_admin()) {
65 add_action('wp_head', 'adrotate_header');
66 add_action('wp_enqueue_scripts', 'adrotate_scripts');
67 add_shortcode('adrotate', 'adrotate_shortcode');
68 add_filter('the_content', 'adrotate_inject_posts', 12);
69 }
70
71 if(is_array($adrotate_config) AND $adrotate_config['stats'] == 1){
72 add_action('wp_ajax_adrotate_impression', 'adrotate_impression_callback');
73 add_action('wp_ajax_nopriv_adrotate_impression', 'adrotate_impression_callback');
74 add_action('wp_ajax_adrotate_click', 'adrotate_click_callback');
75 add_action('wp_ajax_nopriv_adrotate_click', 'adrotate_click_callback');
76 }
77 if(is_array($adrotate_config) AND $adrotate_config['w3caching'] == "Y") {
78 add_filter('w3tc_dynamic_callbacks', function ( $callbacks ) {
79 $callbacks['adrotate_inject_post'] = function ( $args, $kind ) {
80 return adrotate_group($args["group_id"]);
81 };
82
83 $callbacks['adrotate_block'] = function ( $args, $kind ) {
84 if($args["banner_id"] > 0 AND !isset($args["group_id"])) { // Show one Ad
85 return adrotate_ad($args['banner_id']);
86 }
87
88 if($args["group_id"] > 0 AND !isset($args["banner_id"])) { // Show group
89 return adrotate_group($args['group_id']);
90 }
91 };
92
93 return $callbacks;
94 });
95 }
96 /*-----------------------------------------------------------*/
97
98 /*--- Back End ----------------------------------------------*/
99 if(is_admin()) {
100 include_once($adrotate_path.'/adrotate-setup.php');
101 include_once($adrotate_path.'/adrotate-admin-functions.php');
102 include_once($adrotate_path.'/adrotate-admin-manage.php');
103 include_once($adrotate_path.'/adrotate-admin-statistics.php');
104 include_once($adrotate_path.'/adrotate-admin-portability.php');
105
106 /*--- Dashboard hooks ---------------------------------------*/
107 add_action('admin_menu', 'adrotate_dashboard');
108 add_action('admin_enqueue_scripts', 'adrotate_dashboard_scripts');
109 add_action('admin_notices','adrotate_notifications_dashboard');
110 add_filter('plugin_row_meta', 'adrotate_meta_links', 10, 2);
111 add_filter('plugin_action_links_' . plugin_basename( __FILE__ ), 'adrotate_action_links');
112
113 /*--- Internal redirects ------------------------------------*/
114 if(isset($_POST['adrotate_generate_submit'])) add_action('init', 'adrotate_generate_input');
115 if(isset($_POST['adrotate_advert_submit'])) add_action('init', 'adrotate_insert_advert');
116 if(isset($_POST['adrotate_group_submit'])) add_action('init', 'adrotate_insert_group');
117 if(isset($_POST['adrotate_upload_media'])) add_action('init', 'adrotate_insert_media');
118 if(isset($_POST['adrotate_create_folder'])) add_action('init', 'adrotate_insert_folder');
119 if(isset($_POST['adrotate_action_submit'])) add_action('init', 'adrotate_request_action');
120 if(isset($_POST['adrotate_save_options'])) add_action('init', 'adrotate_save_options');
121 }
122
123 /*-------------------------------------------------------------
124 Name: adrotate_dashboard
125 Purpose: Add pages to admin menus
126 -------------------------------------------------------------*/
127 function adrotate_dashboard() {
128 add_menu_page('AdRotate', 'AdRotate', 'adrotate_ad_manage', 'adrotate', 'adrotate_manage', plugins_url('/images/icon-menu.png', __FILE__), '25.8');
129 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Adverts", 'adrotate'), __("Manage Adverts", 'adrotate'), 'adrotate_ad_manage', 'adrotate', 'adrotate_manage');
130 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Groups", 'adrotate'), __("Manage Groups", 'adrotate'), 'adrotate_group_manage', 'adrotate-groups', 'adrotate_manage_group');
131 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Schedules", 'adrotate'), __("Manage Schedules", 'adrotate'), 'adrotate_ad_manage', 'adrotate-schedules', 'adrotate_manage_schedules');
132 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Media", 'adrotate'), __("Manage Media", 'adrotate'), 'adrotate_ad_manage', 'adrotate-media', 'adrotate_manage_media');
133 add_submenu_page('adrotate', 'AdRotate · '.__("Statistics", 'adrotate'), __("Statistics", 'adrotate'), 'adrotate_ad_manage', 'adrotate-statistics', 'adrotate_statistics');
134 add_submenu_page('adrotate', 'AdRotate · '.__("Get AdRotate Pro", 'adrotate'), __("Get AdRotate Pro", 'adrotate'), 'adrotate_ad_manage', 'adrotate-pro', 'adrotate_pro');
135 add_submenu_page('adrotate', 'AdRotate · '.__("Support", 'adrotate'), __("Support", 'adrotate'), 'manage_options', 'adrotate-support', 'adrotate_support');
136 add_submenu_page('adrotate', 'AdRotate · '.__("Settings", 'adrotate'), __("Settings", 'adrotate'), 'manage_options', 'adrotate-settings', 'adrotate_options');
137 }
138
139 /*-------------------------------------------------------------
140 Name: adrotate_pro
141 Purpose: AdRotate Pro Sales
142 -------------------------------------------------------------*/
143 function adrotate_pro() {
144 ?>
145 <div class="wrap">
146 <h1><?php _e("Get AdRotate Professional", 'adrotate'); ?></h1>
147
148 <?php include('dashboard/adrotatepro.php'); ?>
149
150 <br class="clear" />
151 </div>
152 <?php
153 }
154
155 /*-------------------------------------------------------------
156 Name: adrotate_manage
157 Purpose: Admin management page
158 -------------------------------------------------------------*/
159 function adrotate_manage() {
160 global $wpdb, $userdata, $adrotate_config;
161
162 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
163 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
164 $ad_edit_id =(isset($_GET['ad'])) ? sanitize_key($_GET['ad']) : '';
165 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
166
167 if(!is_numeric($status)) $status = 0;
168 if(!is_numeric($ad_edit_id)) $ad_edit_id = 0;
169
170 $now = current_time('timestamp');
171 $today = adrotate_date_start('day');
172 $in2days = $now + 172800;
173 $in7days = $now + 604800;
174 $in84days = $now + 7257600;
175
176 if(isset($_GET['month']) AND isset($_GET['year'])) {
177 $month = sanitize_key($_GET['month']);
178 $year = sanitize_key($_GET['year']);
179 } else {
180 $month = date('m');
181 $year = date('Y');
182 }
183 $monthstart = mktime(0, 0, 0, $month, 1, $year);
184 $monthend = mktime(0, 0, 0, $month+1, 0, $year);
185 ?>
186 <div class="wrap">
187 <h1><?php _e("Manage Adverts", 'adrotate'); ?></h1>
188
189 <?php
190 if($status > 0) adrotate_status($status, array('file' => $file));
191 ?>
192
193 <div class="tablenav">
194 <div class="alignleft actions">
195 <a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate');?>"><?php _e("Manage", 'adrotate'); ?></a>
196 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate&view=generator');?>"><?php _e("Advert Generator", 'adrotate'); ?></a>
197 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate&view=addnew');?>"><?php _e("New Advert", 'adrotate'); ?></a>
198 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-pro');?>"><?php _e("Get AdRotate Pro", 'adrotate'); ?></a>
199 </div>
200 </div>
201
202 <?php
203
204 if(empty($view) OR $view == 'manage') {
205 include('dashboard/publisher/manage-adverts.php');
206 } else if($view == 'addnew' OR $view == 'edit') {
207 include('dashboard/publisher/manage-adverts-edit.php');
208 } else if($view == 'generator') {
209 include('dashboard/publisher/manage-adverts-generator.php');
210 }
211 ?>
212 </div>
213 <?php
214 }
215
216 /*-------------------------------------------------------------
217 Name: adrotate_manage_group
218 Purpose: Manage groups
219 -------------------------------------------------------------*/
220 function adrotate_manage_group() {
221 global $wpdb, $adrotate_config;
222
223 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
224 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
225 $group_edit_id =(isset($_GET['group'])) ? sanitize_key($_GET['group']) : '';
226
227 if(!is_numeric($status)) $status = 0;
228 if(!is_numeric($group_edit_id)) $group_edit_id = 0;
229
230 if(isset($_GET['month']) AND isset($_GET['year'])) {
231 $month = sanitize_key($_GET['month']);
232 $year = sanitize_key($_GET['year']);
233 } else {
234 $month = date('m');
235 $year = date('Y');
236 }
237 $monthstart = mktime(0, 0, 0, $month, 1, $year);
238 $monthend = mktime(0, 0, 0, $month+1, 0, $year);
239
240 $today = adrotate_date_start('day');
241 $now = current_time('timestamp');
242 $today = adrotate_date_start('day');
243 $in2days = $now + 172800;
244 $in7days = $now + 604800;
245 ?>
246 <div class="wrap">
247 <h1><?php _e("Manage Groups", 'adrotate'); ?></h1>
248
249 <?php if($status > 0) adrotate_status($status); ?>
250
251 <div class="tablenav">
252 <div class="alignleft actions">
253 <a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-groups&view=manage');?>"><?php _e("Manage", 'adrotate'); ?></a>
254 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-groups&view=addnew');?>"><?php _e("Add New", 'adrotate'); ?></a>
255 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-pro');?>"><?php _e("Get AdRotate Pro", 'adrotate'); ?></a>
256 </div>
257 </div>
258
259 <?php
260 if (empty($view) OR $view == 'manage') {
261 include('dashboard/publisher/manage-groups.php');
262 } else if($view == 'addnew' OR $view == 'edit') {
263 include('dashboard/publisher/manage-groups-edit.php');
264 }
265 ?>
266 </div>
267 <?php
268 }
269
270 /*-------------------------------------------------------------
271 Name: adrotate_manage_schedules
272 Purpose: Manage schedules for ads
273 -------------------------------------------------------------*/
274 function adrotate_manage_schedules() {
275 global $wpdb, $adrotate_config;
276
277 $now = current_time('timestamp');
278 $in2days = $now + 172800;
279 ?>
280 <div class="wrap">
281 <h1><?php _e("Manage Schedules", 'adrotate'); ?></h1>
282
283 <?php
284 include('dashboard/publisher/manage-schedules.php');
285 ?>
286 </div>
287 <?php
288 }
289
290 /*-------------------------------------------------------------
291 Name: adrotate_manage_media
292 Purpose: Manage banner images for ads
293 -------------------------------------------------------------*/
294 function adrotate_manage_media() {
295 global $wpdb, $adrotate_config;
296
297 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
298 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
299
300 if(!is_numeric($status)) $status = 0;
301
302 if(strlen($file) > 0 AND wp_verify_nonce($_REQUEST['_wpnonce'], 'adrotate_delete_media_'.$file)) {
303 if(adrotate_unlink($file)) {
304 $status = 206;
305 } else {
306 $status = 207;
307 }
308 }
309 ?>
310
311 <div class="wrap">
312 <h1><?php _e("Manage Media and Assets", 'adrotate'); ?></h1>
313
314 <?php if($status > 0) adrotate_status($status); ?>
315
316 <p><?php _e("Upload images to the AdRotate Pro banners folder from here. This is useful if you have HTML5 adverts containing multiple files.", 'adrotate'); ?></p>
317
318 <?php
319 include('dashboard/publisher/media.php');
320 ?>
321 </div>
322 <?php
323 }
324
325 /*-------------------------------------------------------------
326 Name: adrotate_statistics
327 Purpose: Advert and Group stats
328 -------------------------------------------------------------*/
329 function adrotate_statistics() {
330 global $wpdb, $adrotate_config;
331
332 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
333 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
334 $id =(isset($_GET['id'])) ? sanitize_key($_GET['id']) : '';
335 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
336
337 if(!is_numeric($status)) $status = 0;
338 if(!is_numeric($id)) $id = 0;
339
340 if(isset($_GET['month']) AND isset($_GET['year'])) {
341 $month = sanitize_key($_GET['month']);
342 $year = sanitize_key($_GET['year']);
343 } else {
344 $month = date('m');
345 $year = date('Y');
346 }
347 $monthstart = gmmktime(0, 0, 0, $month, 1, $year);
348 $monthend = gmmktime(0, 0, 0, $month+1, 0, $year);
349 $today = adrotate_date_start('day');
350 ?>
351 <div class="wrap">
352 <h2><?php _e("Advert Statistics", 'adrotate'); ?></h2>
353
354 <?php
355 if($status > 0) adrotate_status($status, array('file' => $file));
356
357 if(empty($view)) {
358 include('dashboard/publisher/statistics-main.php');
359 } else if($view == 'advert') {
360 include('dashboard/publisher/statistics-advert.php');
361 } else if($view == 'group') {
362 include('dashboard/publisher/statistics-group.php');
363 }
364 ?>
365 </div>
366 <?php
367 }
368
369 /*-------------------------------------------------------------
370 Name: adrotate_support
371 Purpose: Get help
372 -------------------------------------------------------------*/
373 function adrotate_support() {
374 global $wpdb, $adrotate_config;
375
376 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
377 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
378 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
379
380 if(!is_numeric($status)) $status = 0;
381
382 $current_user = wp_get_current_user();
383 ?>
384
385 <div class="wrap">
386 <h1><?php _e("AdRotate Support", 'adrotate'); ?></h1>
387
388 <?php
389 if($status > 0) adrotate_status($status);
390
391 include('dashboard/support.php');
392 ?>
393
394 </div>
395 <?php
396 }
397
398 /*-------------------------------------------------------------
399 Name: adrotate_options
400 Purpose: Admin options page
401 -------------------------------------------------------------*/
402 function adrotate_options() {
403 global $wpdb, $wp_roles;
404
405 $active_tab = (isset($_GET['tab'])) ? sanitize_key($_GET['tab']) : 'general';
406 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
407 $action =(isset($_GET['action'])) ? sanitize_key($_GET['action']) : '';
408
409 if(!is_numeric($status)) $status = 0;
410
411 if(isset($_GET['adrotate-nonce']) AND wp_verify_nonce($_GET['adrotate-nonce'], 'maintenance')) {
412 if($action == 'check-all-ads') {
413 adrotate_evaluate_ads();
414 $status = 405;
415 }
416
417 if($action == 'update-db') {
418 adrotate_finish_upgrade();
419 $status = 409;
420 }
421
422 if($action == 'reset-tasks') {
423 adrotate_check_schedules();
424 $status = 407;
425 }
426 }
427 ?>
428
429 <div class="wrap">
430 <h1><?php _e("AdRotate Settings", 'adrotate'); ?></h1>
431
432 <?php if($status > 0) adrotate_status($status); ?>
433
434 <h2 class="nav-tab-wrapper">
435 <a href="?page=adrotate-settings&tab=general" class="nav-tab <?php echo $active_tab == 'general' ? 'nav-tab-active' : ''; ?>"><?php _e("General", 'adrotate'); ?></a>
436 <a href="?page=adrotate-settings&tab=notifications" class="nav-tab <?php echo $active_tab == 'notifications' ? 'nav-tab-active' : ''; ?>"><?php _e("Notifications", 'adrotate'); ?></a>
437 <a href="?page=adrotate-settings&tab=stats" class="nav-tab <?php echo $active_tab == 'stats' ? 'nav-tab-active' : ''; ?>"><?php _e("Statistics", 'adrotate'); ?></a>
438 <a href="?page=adrotate-settings&tab=geo" class="nav-tab <?php echo $active_tab == 'geo' ? 'nav-tab-active' : ''; ?>"><?php _e("Geo Targeting", 'adrotate'); ?></a>
439 <a href="?page=adrotate-settings&tab=roles" class="nav-tab <?php echo $active_tab == 'roles' ? 'nav-tab-active' : ''; ?>"><?php _e("Access Roles", 'adrotate'); ?></a>
440 <a href="?page=adrotate-settings&tab=misc" class="nav-tab <?php echo $active_tab == 'misc' ? 'nav-tab-active' : ''; ?>"><?php _e("Miscellaneous", 'adrotate'); ?></a>
441 <a href="?page=adrotate-settings&tab=maintenance" class="nav-tab <?php echo $active_tab == 'maintenance' ? 'nav-tab-active' : ''; ?>"><?php _e("Maintenance", 'adrotate'); ?></a>
442 </h2>
443
444 <?php
445 $adrotate_config = get_option('adrotate_config');
446
447 if($active_tab == 'general') {
448 $adrotate_crawlers = get_option('adrotate_crawlers');
449
450 $crawlers = '';
451 if(is_array($adrotate_crawlers)) {
452 $crawlers = implode(', ', $adrotate_crawlers);
453 }
454
455 include('dashboard/settings/general.php');
456 } elseif($active_tab == 'notifications') {
457 $adrotate_notifications = get_option('adrotate_notifications');
458
459 include('dashboard/settings/notifications.php');
460 } elseif($active_tab == 'stats') {
461 include('dashboard/settings/statistics.php');
462 } elseif($active_tab == 'geo') {
463 include('dashboard/settings/geotargeting.php');
464 } elseif($active_tab == 'roles') {
465 include('dashboard/settings/roles.php');
466 } elseif($active_tab == 'misc') {
467 include('dashboard/settings/misc.php');
468 } elseif($active_tab == 'maintenance') {
469 $adrotate_version = get_option('adrotate_version');
470 $adrotate_db_version = get_option('adrotate_db_version');
471 $advert_status = get_option("adrotate_advert_status");
472
473 $tracker = wp_next_scheduled('adrotate_empty_trackerdata');
474
475 include('dashboard/settings/maintenance.php');
476 }
477 ?>
478 </div>
479 <?php
480 }
481 ?>
482