PluginProbe
AdRotate Banner Manager / trunk
AdRotate Banner Manager vtrunk
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 trunk, at adrotate.php

485 lines 18.6 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.2
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)) {
72 if($adrotate_config['stats'] == 1) {
73 add_action('wp_ajax_adrotate_impression', 'adrotate_impression_callback');
74 add_action('wp_ajax_nopriv_adrotate_impression', 'adrotate_impression_callback');
75 add_action('wp_ajax_adrotate_click', 'adrotate_click_callback');
76 add_action('wp_ajax_nopriv_adrotate_click', 'adrotate_click_callback');
77 }
78
79 if($adrotate_config['w3caching'] == "Y") {
80 add_filter('w3tc_dynamic_callbacks', function ( $callbacks ) {
81 $callbacks['adrotate_inject_post'] = function ( $args, $kind ) {
82 return adrotate_group($args["group_id"]);
83 };
84
85 $callbacks['adrotate_block'] = function ( $args, $kind ) {
86 if($args["banner_id"] > 0 AND !isset($args["group_id"])) { // Show one Ad
87 return adrotate_ad($args['banner_id']);
88 }
89
90 if($args["group_id"] > 0 AND !isset($args["banner_id"])) { // Show group
91 return adrotate_group($args['group_id']);
92 }
93 };
94
95 return $callbacks;
96 });
97 }
98 }
99 /*-----------------------------------------------------------*/
100
101 /*--- Back End ----------------------------------------------*/
102 if(is_admin() OR (defined('WP_CLI') AND WP_CLI)) {
103 include_once($adrotate_path.'/adrotate-setup.php');
104 include_once($adrotate_path.'/adrotate-admin-functions.php');
105 include_once($adrotate_path.'/adrotate-admin-manage.php');
106 include_once($adrotate_path.'/adrotate-admin-statistics.php');
107 include_once($adrotate_path.'/adrotate-admin-portability.php');
108
109 /*--- Dashboard hooks ---------------------------------------*/
110 add_action('admin_menu', 'adrotate_dashboard');
111 add_action('admin_enqueue_scripts', 'adrotate_dashboard_scripts');
112 add_action('admin_notices','adrotate_notifications_dashboard');
113 add_filter('plugin_row_meta', 'adrotate_meta_links', 10, 2);
114 add_filter('plugin_action_links_' . plugin_basename( __FILE__ ), 'adrotate_action_links');
115
116 /*--- Internal redirects ------------------------------------*/
117 if(isset($_POST['adrotate_generate_submit'])) add_action('init', 'adrotate_generate_input');
118 if(isset($_POST['adrotate_advert_submit'])) add_action('init', 'adrotate_insert_advert');
119 if(isset($_POST['adrotate_group_submit'])) add_action('init', 'adrotate_insert_group');
120 if(isset($_POST['adrotate_upload_media'])) add_action('init', 'adrotate_insert_media');
121 if(isset($_POST['adrotate_create_folder'])) add_action('init', 'adrotate_insert_folder');
122 if(isset($_POST['adrotate_action_submit'])) add_action('init', 'adrotate_request_action');
123 if(isset($_POST['adrotate_save_options'])) add_action('init', 'adrotate_save_options');
124 }
125
126 /*-------------------------------------------------------------
127 Name: adrotate_dashboard
128 Purpose: Add pages to admin menus
129 -------------------------------------------------------------*/
130 function adrotate_dashboard() {
131 add_menu_page('AdRotate', 'AdRotate', 'adrotate_ad_manage', 'adrotate', 'adrotate_manage', plugins_url('/images/icon-menu.png', __FILE__), '25.8');
132 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Adverts", 'adrotate'), __("Manage Adverts", 'adrotate'), 'adrotate_ad_manage', 'adrotate', 'adrotate_manage');
133 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Groups", 'adrotate'), __("Manage Groups", 'adrotate'), 'adrotate_group_manage', 'adrotate-groups', 'adrotate_manage_group');
134 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Schedules", 'adrotate'), __("Manage Schedules", 'adrotate'), 'adrotate_ad_manage', 'adrotate-schedules', 'adrotate_manage_schedules');
135 add_submenu_page('adrotate', 'AdRotate · '.__("Manage Media", 'adrotate'), __("Manage Media", 'adrotate'), 'adrotate_ad_manage', 'adrotate-media', 'adrotate_manage_media');
136 add_submenu_page('adrotate', 'AdRotate · '.__("Statistics", 'adrotate'), __("Statistics", 'adrotate'), 'adrotate_ad_manage', 'adrotate-statistics', 'adrotate_statistics');
137 add_submenu_page('adrotate', 'AdRotate · '.__("Get AdRotate Pro", 'adrotate'), __("Get AdRotate Pro", 'adrotate'), 'adrotate_ad_manage', 'adrotate-pro', 'adrotate_pro');
138 add_submenu_page('adrotate', 'AdRotate · '.__("Support", 'adrotate'), __("Support", 'adrotate'), 'manage_options', 'adrotate-support', 'adrotate_support');
139 add_submenu_page('adrotate', 'AdRotate · '.__("Settings", 'adrotate'), __("Settings", 'adrotate'), 'manage_options', 'adrotate-settings', 'adrotate_options');
140 }
141
142 /*-------------------------------------------------------------
143 Name: adrotate_pro
144 Purpose: AdRotate Pro Sales
145 -------------------------------------------------------------*/
146 function adrotate_pro() {
147 ?>
148 <div class="wrap">
149 <h1><?php _e("Get AdRotate Professional", 'adrotate'); ?></h1>
150
151 <?php include('dashboard/adrotatepro.php'); ?>
152
153 <br class="clear" />
154 </div>
155 <?php
156 }
157
158 /*-------------------------------------------------------------
159 Name: adrotate_manage
160 Purpose: Admin management page
161 -------------------------------------------------------------*/
162 function adrotate_manage() {
163 global $wpdb, $userdata, $adrotate_config;
164
165 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
166 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
167 $ad_edit_id =(isset($_GET['ad'])) ? sanitize_key($_GET['ad']) : '';
168 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
169
170 if(!is_numeric($status)) $status = 0;
171 if(!is_numeric($ad_edit_id)) $ad_edit_id = 0;
172
173 $now = current_time('timestamp');
174 $today = adrotate_date_start('day');
175 $in2days = $now + 172800;
176 $in7days = $now + 604800;
177 $in84days = $now + 7257600;
178
179 if(isset($_GET['month']) AND isset($_GET['year'])) {
180 $month = sanitize_key($_GET['month']);
181 $year = sanitize_key($_GET['year']);
182 } else {
183 $month = date('m');
184 $year = date('Y');
185 }
186 $monthstart = mktime(0, 0, 0, $month, 1, $year);
187 $monthend = mktime(0, 0, 0, $month+1, 0, $year);
188 ?>
189 <div class="wrap">
190 <h1><?php _e("Manage Adverts", 'adrotate'); ?></h1>
191
192 <?php
193 if($status > 0) adrotate_status($status, array('file' => $file));
194 ?>
195
196 <div class="tablenav">
197 <div class="alignleft actions">
198 <a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate');?>"><?php _e("Manage", 'adrotate'); ?></a>
199 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate&view=generator');?>"><?php _e("Advert Generator", 'adrotate'); ?></a>
200 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate&view=addnew');?>"><?php _e("New Advert", 'adrotate'); ?></a>
201 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-pro');?>"><?php _e("Get AdRotate Pro", 'adrotate'); ?></a>
202 </div>
203 </div>
204
205 <?php
206
207 if(empty($view) OR $view == 'manage') {
208 include('dashboard/publisher/manage-adverts.php');
209 } else if($view == 'addnew' OR $view == 'edit') {
210 include('dashboard/publisher/manage-adverts-edit.php');
211 } else if($view == 'generator') {
212 include('dashboard/publisher/manage-adverts-generator.php');
213 }
214 ?>
215 </div>
216 <?php
217 }
218
219 /*-------------------------------------------------------------
220 Name: adrotate_manage_group
221 Purpose: Manage groups
222 -------------------------------------------------------------*/
223 function adrotate_manage_group() {
224 global $wpdb, $adrotate_config;
225
226 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
227 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
228 $group_edit_id =(isset($_GET['group'])) ? sanitize_key($_GET['group']) : '';
229
230 if(!is_numeric($status)) $status = 0;
231 if(!is_numeric($group_edit_id)) $group_edit_id = 0;
232
233 if(isset($_GET['month']) AND isset($_GET['year'])) {
234 $month = sanitize_key($_GET['month']);
235 $year = sanitize_key($_GET['year']);
236 } else {
237 $month = date('m');
238 $year = date('Y');
239 }
240 $monthstart = mktime(0, 0, 0, $month, 1, $year);
241 $monthend = mktime(0, 0, 0, $month+1, 0, $year);
242
243 $today = adrotate_date_start('day');
244 $now = current_time('timestamp');
245 $today = adrotate_date_start('day');
246 $in2days = $now + 172800;
247 $in7days = $now + 604800;
248 ?>
249 <div class="wrap">
250 <h1><?php _e("Manage Groups", 'adrotate'); ?></h1>
251
252 <?php if($status > 0) adrotate_status($status); ?>
253
254 <div class="tablenav">
255 <div class="alignleft actions">
256 <a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-groups&view=manage');?>"><?php _e("Manage", 'adrotate'); ?></a>
257 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-groups&view=addnew');?>"><?php _e("Add New", 'adrotate'); ?></a>
258 &nbsp;|&nbsp;<a class="row-title" href="<?php echo admin_url('/admin.php?page=adrotate-pro');?>"><?php _e("Get AdRotate Pro", 'adrotate'); ?></a>
259 </div>
260 </div>
261
262 <?php
263 if (empty($view) OR $view == 'manage') {
264 include('dashboard/publisher/manage-groups.php');
265 } else if($view == 'addnew' OR $view == 'edit') {
266 include('dashboard/publisher/manage-groups-edit.php');
267 }
268 ?>
269 </div>
270 <?php
271 }
272
273 /*-------------------------------------------------------------
274 Name: adrotate_manage_schedules
275 Purpose: Manage schedules for ads
276 -------------------------------------------------------------*/
277 function adrotate_manage_schedules() {
278 global $wpdb, $adrotate_config;
279
280 $now = current_time('timestamp');
281 $in2days = $now + 172800;
282 ?>
283 <div class="wrap">
284 <h1><?php _e("Manage Schedules", 'adrotate'); ?></h1>
285
286 <?php
287 include('dashboard/publisher/manage-schedules.php');
288 ?>
289 </div>
290 <?php
291 }
292
293 /*-------------------------------------------------------------
294 Name: adrotate_manage_media
295 Purpose: Manage banner images for ads
296 -------------------------------------------------------------*/
297 function adrotate_manage_media() {
298 global $wpdb, $adrotate_config;
299
300 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
301 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
302
303 if(!is_numeric($status)) $status = 0;
304
305 if(strlen($file) > 0 AND wp_verify_nonce($_REQUEST['_wpnonce'], 'adrotate_delete_media_'.$file)) {
306 if(adrotate_unlink($file)) {
307 $status = 206;
308 } else {
309 $status = 207;
310 }
311 }
312 ?>
313
314 <div class="wrap">
315 <h1><?php _e("Manage Media and Assets", 'adrotate'); ?></h1>
316
317 <?php if($status > 0) adrotate_status($status); ?>
318
319 <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>
320
321 <?php
322 include('dashboard/publisher/media.php');
323 ?>
324 </div>
325 <?php
326 }
327
328 /*-------------------------------------------------------------
329 Name: adrotate_statistics
330 Purpose: Advert and Group stats
331 -------------------------------------------------------------*/
332 function adrotate_statistics() {
333 global $wpdb, $adrotate_config;
334
335 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
336 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
337 $id =(isset($_GET['id'])) ? sanitize_key($_GET['id']) : '';
338 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
339
340 if(!is_numeric($status)) $status = 0;
341 if(!is_numeric($id)) $id = 0;
342
343 if(isset($_GET['month']) AND isset($_GET['year'])) {
344 $month = sanitize_key($_GET['month']);
345 $year = sanitize_key($_GET['year']);
346 } else {
347 $month = date('m');
348 $year = date('Y');
349 }
350 $monthstart = gmmktime(0, 0, 0, $month, 1, $year);
351 $monthend = gmmktime(0, 0, 0, $month+1, 0, $year);
352 $today = adrotate_date_start('day');
353 ?>
354 <div class="wrap">
355 <h2><?php _e("Advert Statistics", 'adrotate'); ?></h2>
356
357 <?php
358 if($status > 0) adrotate_status($status, array('file' => $file));
359
360 if(empty($view)) {
361 include('dashboard/publisher/statistics-main.php');
362 } else if($view == 'advert') {
363 include('dashboard/publisher/statistics-advert.php');
364 } else if($view == 'group') {
365 include('dashboard/publisher/statistics-group.php');
366 }
367 ?>
368 </div>
369 <?php
370 }
371
372 /*-------------------------------------------------------------
373 Name: adrotate_support
374 Purpose: Get help
375 -------------------------------------------------------------*/
376 function adrotate_support() {
377 global $wpdb, $adrotate_config;
378
379 $view = (isset($_GET['view'])) ? sanitize_key($_GET['view']) : '';
380 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
381 $file = (isset($_GET['file'])) ? sanitize_file_name($_GET['file']) : '';
382
383 if(!is_numeric($status)) $status = 0;
384
385 $current_user = wp_get_current_user();
386 ?>
387
388 <div class="wrap">
389 <h1><?php _e("AdRotate Support", 'adrotate'); ?></h1>
390
391 <?php
392 if($status > 0) adrotate_status($status);
393
394 include('dashboard/support.php');
395 ?>
396
397 </div>
398 <?php
399 }
400
401 /*-------------------------------------------------------------
402 Name: adrotate_options
403 Purpose: Admin options page
404 -------------------------------------------------------------*/
405 function adrotate_options() {
406 global $wpdb, $wp_roles;
407
408 $active_tab = (isset($_GET['tab'])) ? sanitize_key($_GET['tab']) : 'general';
409 $status = (isset($_GET['status'])) ? sanitize_key($_GET['status']) : '';
410 $action =(isset($_GET['action'])) ? sanitize_key($_GET['action']) : '';
411
412 if(!is_numeric($status)) $status = 0;
413
414 if(isset($_GET['adrotate-nonce']) AND wp_verify_nonce($_GET['adrotate-nonce'], 'maintenance')) {
415 if($action == 'check-all-ads') {
416 adrotate_evaluate_ads();
417 $status = 405;
418 }
419
420 if($action == 'update-db') {
421 adrotate_finish_upgrade();
422 $status = 409;
423 }
424
425 if($action == 'reset-tasks') {
426 adrotate_check_schedules();
427 $status = 407;
428 }
429 }
430 ?>
431
432 <div class="wrap">
433 <h1><?php _e("AdRotate Settings", 'adrotate'); ?></h1>
434
435 <?php if($status > 0) adrotate_status($status); ?>
436
437 <h2 class="nav-tab-wrapper">
438 <a href="?page=adrotate-settings&tab=general" class="nav-tab <?php echo $active_tab == 'general' ? 'nav-tab-active' : ''; ?>"><?php _e("General", 'adrotate'); ?></a>
439 <a href="?page=adrotate-settings&tab=notifications" class="nav-tab <?php echo $active_tab == 'notifications' ? 'nav-tab-active' : ''; ?>"><?php _e("Notifications", 'adrotate'); ?></a>
440 <a href="?page=adrotate-settings&tab=stats" class="nav-tab <?php echo $active_tab == 'stats' ? 'nav-tab-active' : ''; ?>"><?php _e("Statistics", 'adrotate'); ?></a>
441 <a href="?page=adrotate-settings&tab=geo" class="nav-tab <?php echo $active_tab == 'geo' ? 'nav-tab-active' : ''; ?>"><?php _e("Geo Targeting", 'adrotate'); ?></a>
442 <a href="?page=adrotate-settings&tab=roles" class="nav-tab <?php echo $active_tab == 'roles' ? 'nav-tab-active' : ''; ?>"><?php _e("Access Roles", 'adrotate'); ?></a>
443 <a href="?page=adrotate-settings&tab=misc" class="nav-tab <?php echo $active_tab == 'misc' ? 'nav-tab-active' : ''; ?>"><?php _e("Miscellaneous", 'adrotate'); ?></a>
444 <a href="?page=adrotate-settings&tab=maintenance" class="nav-tab <?php echo $active_tab == 'maintenance' ? 'nav-tab-active' : ''; ?>"><?php _e("Maintenance", 'adrotate'); ?></a>
445 </h2>
446
447 <?php
448 $adrotate_config = get_option('adrotate_config');
449
450 if($active_tab == 'general') {
451 $adrotate_crawlers = get_option('adrotate_crawlers');
452
453 $crawlers = '';
454 if(is_array($adrotate_crawlers)) {
455 $crawlers = implode(', ', $adrotate_crawlers);
456 }
457
458 include('dashboard/settings/general.php');
459 } elseif($active_tab == 'notifications') {
460 $adrotate_notifications = get_option('adrotate_notifications');
461
462 include('dashboard/settings/notifications.php');
463 } elseif($active_tab == 'stats') {
464 include('dashboard/settings/statistics.php');
465 } elseif($active_tab == 'geo') {
466 include('dashboard/settings/geotargeting.php');
467 } elseif($active_tab == 'roles') {
468 include('dashboard/settings/roles.php');
469 } elseif($active_tab == 'misc') {
470 include('dashboard/settings/misc.php');
471 } elseif($active_tab == 'maintenance') {
472 $adrotate_version = get_option('adrotate_version');
473 $adrotate_db_version = get_option('adrotate_db_version');
474 $advert_status = get_option("adrotate_advert_status");
475
476 $tracker = wp_next_scheduled('adrotate_empty_trackerdata');
477
478 include('dashboard/settings/maintenance.php');
479 }
480 ?>
481 </div>
482 <?php
483 }
484 ?>
485