PluginProbe ʕ •ᴥ•ʔ
Hustle – Email Marketing, Lead Generation, Optins, Popups / 4.4.4
Hustle – Email Marketing, Lead Generation, Optins, Popups v4.4.4
7.8.14.2 7.8.14 7.8.14.1 7.8.13 7.8.13.1 trunk 3.0 3.1 3.1.1 3.1.2 3.1.3 3.1.4 4.3.2 4.4.4 4.4.5 4.4.5.1 4.4.5.4 4.6 4.6.1.1 4.6.1.4 4.7.0.2 4.7.0.3 4.7.0.7 4.7.0.9 4.7.1.0 4.7.1.1 4.8.0.0 5.0.0 5.0.1 5.0.1.1 5.0.1.2 5.1 5.1.1 5.1.2 5.1.3 5.1.3.1 5.1.3.2 5.1.4 5.1.5 6.0 6.0.1 6.0.2 6.0.3 6.0.4.2 6.0.5 6.0.6.1 6.0.7 6.0.8.1 6.0.9 7.0.0.1 7.0.2 7.0.3 7.0.4 7.1.0 7.1.1 7.2.0 7.2.1 7.3.0 7.3.1 7.3.3 7.3.5 7.3.6 7.3.7 7.4.0 7.4.1 7.4.11 7.4.13 7.4.13.1 7.4.2 7.4.3 7.4.4 7.4.5 7.4.5.1 7.4.5.2 7.4.6 7.4.7 7.5.0 7.6.0 7.6.1 7.6.3 7.6.4 7.6.6 7.7.0 7.7.1 7.8.0 7.8.1 7.8.10 7.8.10.1 7.8.10.2 7.8.11 7.8.12 7.8.12.1 7.8.2 7.8.3 7.8.4 7.8.5 7.8.6 7.8.7 7.8.8 7.8.9 7.8.9.1 7.8.9.2 7.8.9.3
wordpress-popup / popoverincludes / classes / popoveradmin.php
wordpress-popup / popoverincludes / classes Last commit date
popover.help.php 13 years ago popoveradmin.php 13 years ago popoverajax.php 13 years ago popoverpublic.php 13 years ago
popoveradmin.php
1764 lines
1 <?php
2
3 if(!class_exists('popoveradmin')) {
4
5 class popoveradmin {
6
7 var $build = 5;
8
9 var $db;
10
11 var $tables = array( 'popover', 'popover_ip_cache' );
12 var $popover;
13 var $popover_ip_cache;
14
15 function __construct() {
16
17 global $wpdb;
18
19 $this->db =& $wpdb;
20
21 foreach($this->tables as $table) {
22 $this->$table = popover_db_prefix($this->db, $table);
23 }
24
25 add_action( 'admin_menu', array(&$this, 'add_menu_pages' ) );
26 add_action( 'network_admin_menu', array(&$this, 'add_menu_pages' ) );
27
28 add_action( 'plugins_loaded', array(&$this, 'load_textdomain'));
29
30 // Add header files
31 add_action('load-toplevel_page_popover', array(&$this, 'add_admin_header_popover_menu'));
32 add_action('load-pop-overs_page_popoveraddons', array(&$this, 'add_admin_header_popover_addons'));
33 add_action('load-pop-overs_page_popoversettings', array(&$this, 'add_admin_header_popover_settings'));
34
35 // Ajax calls
36 add_action( 'wp_ajax_popover_update_order', array(&$this, 'ajax_update_popover_order') );
37
38 $installed = get_option('popover_installed', false);
39
40 if($installed === false || $installed != $this->build) {
41 $this->install();
42
43 update_option('popover_installed', $this->build);
44 }
45
46 }
47
48 function popoveradmin() {
49 $this->__construct();
50 }
51
52 function install() {
53
54 if($this->db->get_var( "SHOW TABLES LIKE '" . $this->popover . "' ") != $this->popover) {
55 $sql = "CREATE TABLE `" . $this->popover . "` (
56 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
57 `popover_title` varchar(250) DEFAULT NULL,
58 `popover_content` text,
59 `popover_settings` text,
60 `popover_order` bigint(20) DEFAULT '0',
61 `popover_active` int(11) DEFAULT '0',
62 PRIMARY KEY (`id`)
63 )";
64
65 $this->db->query($sql);
66
67 }
68
69 // Add in IP cache table
70 if($this->db->get_var( "SHOW TABLES LIKE '" . $this->popover_ip_cache . "' ") != $this->popover_ip_cache) {
71 $sql = "CREATE TABLE `" . $this->popover_ip_cache . "` (
72 `IP` varchar(12) NOT NULL DEFAULT '',
73 `country` varchar(2) DEFAULT NULL,
74 `cached` bigint(20) DEFAULT NULL,
75 PRIMARY KEY (`IP`),
76 KEY `cached` (`cached`)
77 )";
78
79 $this->db->query($sql);
80
81 }
82
83 }
84
85 function load_textdomain() {
86
87 $locale = apply_filters( 'popover_locale', get_locale() );
88 $mofile = popover_dir( "popoverincludes/languages/popover-$locale.mo" );
89
90 if ( file_exists( $mofile ) )
91 load_textdomain( 'popover', $mofile );
92
93 }
94
95 function add_menu_pages() {
96
97 global $submenu;
98
99 if(is_multisite() && (defined('PO_GLOBAL') && PO_GLOBAL == true)) {
100 if(function_exists('is_network_admin') && is_network_admin()) {
101 add_menu_page(__('Pop Overs','popover'), __('Pop Overs','popover'), 'manage_options', 'popover', array(&$this,'handle_popover_admin'), popover_url('popoverincludes/images/window.png'));
102 }
103 } else {
104 if(!function_exists('is_network_admin') || !is_network_admin()) {
105 add_menu_page(__('Pop Overs','popover'), __('Pop Overs','popover'), 'manage_options', 'popover', array(&$this,'handle_popover_admin'), popover_url('popoverincludes/images/window.png'));
106 }
107 }
108
109 $addnew = add_submenu_page('popover', __('Create New Pop Over','popover'), __('Create New','popover'), 'manage_options', "popover&amp;action=add", array(&$this,'handle_addnewpopover_panel'));
110 add_submenu_page('popover', __('Manage Add-ons Plugins','popover'), __('Add-ons','popover'), 'manage_options', "popoveraddons", array(&$this,'handle_addons_panel'));
111
112 add_submenu_page('popover', __('Settings','popover'), __('Settings','popover'), 'manage_options', "popoversettings", array(&$this,'handle_settings_page'));
113
114 }
115
116 function sanitise_array($arrayin) {
117
118 foreach( (array) $arrayin as $key => $value) {
119 $arrayin[$key] = htmlentities(stripslashes($value) ,ENT_QUOTES, 'UTF-8');
120 }
121
122 return $arrayin;
123 }
124
125 function ajax_update_popover_order() {
126
127 if(check_ajax_referer( 'popover_order', '_ajax_nonce', false )) {
128 $newnonce = wp_create_nonce('popover_order');
129
130 $data = $_POST['data'];
131 parse_str($data);
132 foreach($dragbody as $key => $value) {
133 $this->reorder_popovers( $value, $key );
134 }
135 die($newnonce);
136 } else {
137 die('fail');
138 }
139
140 }
141
142 function update_admin_header_popover() {
143
144 global $action, $page, $allowedposttags;
145
146 wp_reset_vars( array('action', 'page') );
147
148 if($action == 'updated') {
149 check_admin_referer('update-popover');
150
151 $usemsg = 1;
152
153 if(function_exists('get_site_option') && defined('PO_GLOBAL') && PO_GLOBAL == true) {
154 $updateoption = 'update_site_option';
155 $getoption = 'get_site_option';
156 } else {
157 $updateoption = 'update_option';
158 $getoption = 'get_option';
159 }
160
161 if(isset($_POST['popovercontent'])) {
162 if ( !current_user_can('unfiltered_html') ) {
163 if(wp_kses($_POST['popovercontent'], $allowedposttags) != $_POST['popovercontent']) {
164 $usemsg = 2;
165 }
166 $updateoption('popover_content', wp_kses($_POST['popovercontent'], $allowedposttags));
167 } else {
168 $updateoption('popover_content', $_POST['popovercontent']);
169 }
170
171 }
172
173 if(isset($_POST['popoverwidth']) || isset($_POST['popoverheight'])) {
174
175 $width = $_POST['popoverwidth'];
176 $height = $_POST['popoverheight'];
177
178 if($width == '') $width = '500px';
179 if($height == '') $height = '200px';
180
181 $updateoption('popover_size', array("width" => $width, "height" => $height));
182 }
183
184 if(isset($_POST['popoverleft']) || isset($_POST['popovertop'])) {
185
186 $left = $_POST['popoverleft'];
187 $top = $_POST['popovertop'];
188
189 if($left == '') $left = '100px';
190 if($top == '') $top = '100px';
191
192 $updateoption('popover_location', array("left" => $left, "top" => $top));
193 }
194
195 if(isset($_POST['popovermargintop']) || isset($_POST['popovermarginleft']) || isset($_POST['popovermarginright']) || isset($_POST['popovermarginbottom'])) {
196
197 $mleft = $_POST['popovermarginleft'];
198 $mtop = $_POST['popovermargintop'];
199 $mright = $_POST['popovermarginright'];
200 $mbottom = $_POST['popovermarginbottom'];
201
202 if($mleft == '') $mleft = '0px';
203 if($mtop == '') $mtop = '0px';
204 if($mright == '') $mright = '0px';
205 if($mbottom == '') $mbottom = '0px';
206
207 $updateoption('popover_margin', array('left' => $mleft, 'top' => $mtop, 'right' => $mright, 'bottom' => $mbottom));
208
209 }
210
211 if(isset($_POST['popoverbackground']) || isset($_POST['popoverforeground'])) {
212
213 $back = $_POST['popoverbackground'];
214 $fore = $_POST['popoverforeground'];
215
216 if($back == '') $back = 'FFFFFF';
217 if($fore == '') $fore = '000000';
218
219 $updateoption('popover_colour', array("back" => $back, "fore" => $fore));
220 }
221
222 if(isset($_POST['popovercheck'])) {
223
224 $updateoption('popover_check', $_POST['popovercheck']);
225
226 if(isset($_POST['popoverereg'])) {
227 $updateoption('popover_ereg', $_POST['popoverereg']);
228 }
229
230 if(isset($_POST['popovercount'])) {
231 $updateoption('popover_count', intval($_POST['popovercount']) );
232 }
233
234 }
235
236 if(isset($_POST['popoverusejs'])) {
237 $updateoption('popover_usejs', 'yes' );
238 } else {
239 $updateoption('popover_usejs', 'no' );
240 }
241
242 wp_safe_redirect( add_query_arg( array('msg' => $usemsg), wp_get_referer() ) );
243
244 }
245
246 }
247
248 function add_admin_header_popover_menu() {
249
250 $this->add_admin_header_core();
251
252 if(isset($_GET['action']) && in_array($_GET['action'], array('edit', 'add'))) {
253 $this->add_admin_header_popover();
254 } else {
255 wp_enqueue_script('popoverdragadminjs', popover_url('popoverincludes/js/jquery.tablednd_0_5.js'), array('jquery'), $this->build);
256 wp_enqueue_script('popoveradminjs', popover_url('popoverincludes/js/popovermenu.js'), array('jquery', 'popoverdragadminjs' ), $this->build);
257
258 wp_localize_script('popoveradminjs', 'popover', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ),
259 'ordernonce' => wp_create_nonce('popover_order'),
260 'dragerror' => __('An error occured updating the Pop Over order.','popover'),
261 'deletepopover' => __('Are you sure you want to delete this Pop Over?','popover')
262 ));
263
264 wp_enqueue_style('popoveradmincss', popover_url('popoverincludes/css/popovermenu.css'), array(), $this->build);
265
266 // Check for transfer
267 if(isset($_GET['transfer'])) {
268 $this->handle_popover_transfer();
269 }
270
271 // Check for existing popovers
272 if($this->has_existing_popover()) {
273 add_action('all_admin_notices', array(&$this, 'show_popover_transfer_offer'));
274 }
275
276 $this->update_popover_admin();
277 }
278
279 }
280
281 function add_admin_header_popover_settings() {
282
283 global $action, $page;
284
285 wp_reset_vars( array('action', 'page') );
286
287 $this->update_settings_page();
288
289 }
290
291 function has_existing_popover() {
292
293 if(function_exists('get_site_option') && defined('PO_GLOBAL') && PO_GLOBAL == true) {
294 $getoption = 'get_site_option';
295 } else {
296 $getoption = 'get_option';
297 }
298
299 $popsexist = $this->db->get_var( "SELECT COUNT(*) FROM {$this->popover}");
300
301 if($popsexist == 0 && $getoption('popover_content','no') != 'no' && $getoption('popover_notranfers', 'no') == 'no') {
302 // No pops - and one set in the options
303 return true;
304 } else {
305 return false;
306 }
307 }
308
309 function show_popover_transfer_offer() {
310
311 echo '<div class="updated fade below-h2"><p>' . sprintf(__("Welcome to Popover, would you like to transfer your existing Popover to the new format? <a href='%s'>Yes please transfer it</a> / <a href='%s'>No thanks, I'll create a new one myself.</a>", 'popover'), wp_nonce_url('admin.php?page=popover&amp;transfer=yes', 'transferpopover'), wp_nonce_url('admin.php?page=popover&amp;transfer=no','notransferpopover') ) . '</p></div>';
312
313 }
314
315 function handle_popover_transfer() {
316
317 if(function_exists('get_site_option') && defined('PO_GLOBAL') && PO_GLOBAL == true) {
318 $updateoption = 'update_site_option';
319 $getoption = 'get_site_option';
320 } else {
321 $updateoption = 'update_option';
322 $getoption = 'get_option';
323 }
324
325 switch($_GET['transfer']) {
326
327 case 'yes': check_admin_referer('transferpopover');
328 $popover = array();
329
330 $popover['popover_title'] = __('Transferred Popover', 'popover');
331 $popover['popover_content'] = $getoption('popover_content');
332
333 $popover['popover_settings'] = array();
334 $popover['popover_settings']['popover_size'] = $getoption('popover_size');
335 $popover['popover_settings']['popover_location'] = $getoption('popover_location');;
336 $popover['popover_settings']['popover_colour'] = $getoption('popover_colour');
337 $popover['popover_settings']['popover_margin'] = $getoption('popover_margin');
338 $popover['popover_settings']['popover_check'] = $getoption('popover_check');
339
340 $popover['popover_settings']['popover_count'] = $getoption('popover_count');
341 $popover['popover_settings']['popover_usejs'] = $getoption('popover_usejs');
342
343 $popover['popover_settings']['popover_style'] = 'Default';
344
345 $popover['popover_settings'] = serialize($popover['popover_settings']);
346
347 $popover['popover_active'] = 1;
348
349 $this->db->insert( $this->popover, $popover );
350 wp_safe_redirect( remove_query_arg( 'transfer', remove_query_arg( '_wpnonce' ) ) );
351 break;
352
353 case 'no': check_admin_referer('notransferpopover');
354 $updateoption('popover_notranfers', 'yes');
355 wp_safe_redirect( remove_query_arg( 'transfer', remove_query_arg( '_wpnonce' ) ) );
356 break;
357 }
358
359 }
360
361 function add_admin_header_core() {
362 // Add in help pages
363 $screen = get_current_screen();
364 $help = new Popover_Help( $screen );
365 $help->attach();
366
367 }
368
369 function add_admin_header_popover() {
370
371 global $wp_version;
372
373 wp_enqueue_script('popoveradminjs', popover_url('popoverincludes/js/popoveradmin.js'), array( 'jquery-ui-sortable', 'jquery-ui-draggable', 'jquery-ui-droppable' ), $this->build);
374
375 if(version_compare( preg_replace('/-.*$/', '', $wp_version), "3.3", '<')) {
376 wp_enqueue_style('popoveradmincss', popover_url('popoverincludes/css/popoveradmin.css'), array('widgets'), $this->build);
377 } else {
378 wp_enqueue_style('popoveradmincss', popover_url('popoverincludes/css/popoveradmin.css'), array(), $this->build);
379 }
380
381 $this->update_admin_header_popover();
382 }
383
384 function add_admin_header_popover_addons() {
385
386 $this->add_admin_header_core();
387
388 $this->handle_addons_panel_updates();
389 }
390
391 function reorder_popovers( $popover_id, $order ) {
392
393 $this->db->update( $this->popover, array( 'popover_order' => $order ), array( 'id' => $popover_id) );
394
395 }
396
397 function get_popovers() {
398
399 $sql = "SELECT * FROM {$this->popover} ORDER BY popover_order ASC";
400
401 return $this->db->get_results( $sql );
402
403 }
404
405 function get_popover( $id ) {
406 return $this->db->get_row( $this->db->prepare("SELECT * FROM {$this->popover} WHERE id = %d", $id) );
407 }
408
409 function activate_popover( $id ) {
410 return $this->db->update( $this->popover, array( 'popover_active' => 1 ), array( 'id' => $id) );
411 }
412
413 function deactivate_popover( $id ) {
414 return $this->db->update( $this->popover, array( 'popover_active' => 0 ), array( 'id' => $id) );
415 }
416
417 function toggle_popover( $id ) {
418
419 $sql = $this->db->prepare( "UPDATE {$this->popover} SET popover_active = NOT popover_active WHERE id = %d", $id );
420
421 return $this->db->query( $sql );
422
423 }
424
425 function delete_popover( $id ) {
426
427 return $this->db->query( $this->db->prepare( "DELETE FROM {$this->popover} WHERE id = %d", $id ) );
428
429 }
430
431 function add_popover( $data ) {
432
433 global $action, $page, $allowedposttags;
434
435 $popover = array();
436
437 $popover['popover_title'] = $_POST['popover_title'];
438
439 if ( !current_user_can('unfiltered_html') ) {
440 $popover['popover_content'] = wp_kses($_POST['popover_content'], $allowedposttags);
441 } else {
442 $popover['popover_content'] = $_POST['popover_content'];
443 }
444
445 $popover['popover_settings'] = array();
446 $popover['popover_settings']['popover_size'] = array( 'width' => $_POST['popoverwidth'], 'height' => $_POST['popoverheight'] );
447 $popover['popover_settings']['popover_location'] = array( 'left' => $_POST['popoverleft'], 'top' => $_POST['popovertop'] );
448 $popover['popover_settings']['popover_colour'] = array( 'back' => $_POST['popoverbackground'], 'fore' => $_POST['popoverforeground'] );
449 $popover['popover_settings']['popover_margin'] = array( 'left' => $_POST['popovermarginleft'], 'top' => $_POST['popovermargintop'], 'right' => $_POST['popovermarginright'], 'bottom' => $_POST['popovermarginbottom'] );
450 $popover['popover_settings']['popover_check'] = $_POST['popovercheck'];
451
452 if(isset($_POST['popoverereg'])) {
453 $popover['popover_settings']['popover_ereg'] = $_POST['popoverereg'];
454 } else {
455 $popover['popover_settings']['popover_ereg'] = '';
456 }
457
458 if(isset($_POST['popovercount'])) {
459 $popover['popover_settings']['popover_count'] = $_POST['popovercount'];
460 } else {
461 $popover['popover_settings']['popover_count'] = 3;
462 }
463
464 if($_POST['popoverusejs'] == 'yes') {
465 $popover['popover_settings']['popover_usejs'] = 'yes';
466 } else {
467 $popover['popover_settings']['popover_usejs'] = 'no';
468 }
469
470 $popover['popover_settings']['popover_style'] = $_POST['popoverstyle'];
471
472 if(isset($_POST['popoverhideforeverlink']) && $_POST['popoverhideforeverlink'] == 'yes') {
473 $popover['popover_settings']['popoverhideforeverlink'] = 'yes';
474 } else {
475 $popover['popover_settings']['popoverhideforeverlink'] = 'no';
476 }
477
478 if(isset($_POST['popoverdelay'])) {
479 $popover['popover_settings']['popoverdelay'] = $_POST['popoverdelay'];
480 }
481
482 if(isset($_POST['popoveronurl'])) {
483 $popover['popover_settings']['onurl'] = explode("\n", $_POST['popoveronurl']);
484 }
485
486 if(isset($_POST['popovernotonurl'])) {
487 $popover['popover_settings']['notonurl'] = explode("\n", $_POST['popovernotonurl']);
488 }
489
490 if(isset($_POST['popoverincountry'])) {
491 $popover['popover_settings']['incountry'] = $_POST['popoverincountry'];
492 }
493
494 if(isset($_POST['popovernotincountry'])) {
495 $popover['popover_settings']['notincountry'] = $_POST['popovernotincountry'];
496 }
497
498 $popover['popover_settings'] = serialize($popover['popover_settings']);
499
500 if(isset($_POST['addandactivate'])) {
501 $popover['popover_active'] = 1;
502 }
503
504 return $this->db->insert( $this->popover, $popover );
505
506 }
507
508 function update_popover( $id, $data ) {
509
510 global $action, $page, $allowedposttags;
511
512 $popover = array();
513
514 $popover['popover_title'] = $_POST['popover_title'];
515
516 if ( !current_user_can('unfiltered_html') ) {
517 $popover['popover_content'] = wp_kses($_POST['popover_content'], $allowedposttags);
518 } else {
519 $popover['popover_content'] = $_POST['popover_content'];
520 }
521
522 $popover['popover_settings'] = array();
523 $popover['popover_settings']['popover_size'] = array( 'width' => $_POST['popoverwidth'], 'height' => $_POST['popoverheight'] );
524 $popover['popover_settings']['popover_location'] = array( 'left' => $_POST['popoverleft'], 'top' => $_POST['popovertop'] );
525 $popover['popover_settings']['popover_colour'] = array( 'back' => $_POST['popoverbackground'], 'fore' => $_POST['popoverforeground'] );
526 $popover['popover_settings']['popover_margin'] = array( 'left' => $_POST['popovermarginleft'], 'top' => $_POST['popovermargintop'], 'right' => $_POST['popovermarginright'], 'bottom' => $_POST['popovermarginbottom'] );
527 $popover['popover_settings']['popover_check'] = $_POST['popovercheck'];
528
529 if(isset($_POST['popoverereg'])) {
530 $popover['popover_settings']['popover_ereg'] = $_POST['popoverereg'];
531 } else {
532 $popover['popover_settings']['popover_ereg'] = '';
533 }
534
535 if(isset($_POST['popovercount'])) {
536 $popover['popover_settings']['popover_count'] = $_POST['popovercount'];
537 } else {
538 $popover['popover_settings']['popover_count'] = 3;
539 }
540
541 if($_POST['popoverusejs'] == 'yes') {
542 $popover['popover_settings']['popover_usejs'] = 'yes';
543 } else {
544 $popover['popover_settings']['popover_usejs'] = 'no';
545 }
546
547 $popover['popover_settings']['popover_style'] = $_POST['popoverstyle'];
548
549 if(isset($_POST['popoverhideforeverlink']) && $_POST['popoverhideforeverlink'] == 'yes') {
550 $popover['popover_settings']['popoverhideforeverlink'] = 'yes';
551 } else {
552 $popover['popover_settings']['popoverhideforeverlink'] = 'no';
553 }
554
555 if(isset($_POST['popoverdelay'])) {
556 $popover['popover_settings']['popoverdelay'] = $_POST['popoverdelay'];
557 }
558
559 if(isset($_POST['popoveronurl'])) {
560 $popover['popover_settings']['onurl'] = explode("\n", $_POST['popoveronurl']);
561 }
562
563 if(isset($_POST['popovernotonurl'])) {
564 $popover['popover_settings']['notonurl'] = explode("\n", $_POST['popovernotonurl']);
565 }
566
567 if(isset($_POST['popoverincountry'])) {
568 $popover['popover_settings']['incountry'] = $_POST['popoverincountry'];
569 }
570
571 if(isset($_POST['popovernotincountry'])) {
572 $popover['popover_settings']['notincountry'] = $_POST['popovernotincountry'];
573 }
574
575 $popover['popover_settings'] = serialize($popover['popover_settings']);
576
577 return $this->db->update( $this->popover, $popover, array( 'id' => $id ) );
578
579 }
580
581 function update_popover_admin() {
582 global $action, $page;
583
584 wp_reset_vars( array('action', 'page') );
585
586 if(isset($_REQUEST['action']) || isset($_REQUEST['action2'])) {
587
588 if(!empty($_REQUEST['action2'])) {
589 $_REQUEST['action'] = $_REQUEST['action2'];
590 }
591
592 switch($_REQUEST['action']) {
593
594
595 case 'activate': $id = (int) $_GET['popover'];
596 if(!empty($id)) {
597 check_admin_referer('toggle-popover-' . $id);
598
599 if( $this->activate_popover( $id ) ) {
600 wp_safe_redirect( add_query_arg( 'msg', 3, wp_get_referer() ) );
601 } else {
602 wp_safe_redirect( add_query_arg( 'msg', 4, wp_get_referer() ) );
603 }
604
605 }
606 break;
607
608
609 case 'deactivate': $id = (int) $_GET['popover'];
610 if(!empty($id)) {
611 check_admin_referer('toggle-popover-' . $id);
612
613 if( $this->deactivate_popover( $id ) ) {
614 wp_safe_redirect( add_query_arg( 'msg', 5, wp_get_referer() ) );
615 } else {
616 wp_safe_redirect( add_query_arg( 'msg', 6, wp_get_referer() ) );
617 }
618
619 }
620 break;
621
622 case 'toggle': $ids = $_REQUEST['popovercheck'];
623
624 if(!empty($ids)) {
625 check_admin_referer('bulk-popovers');
626 foreach( (array) $ids as $id ) {
627 $this->toggle_popover( $id );
628 }
629 wp_safe_redirect( add_query_arg( 'msg', 7, wp_get_referer() ) );
630 }
631 break;
632
633 case 'delete': $id = (int) $_GET['popover'];
634
635 if(!empty($id)) {
636 check_admin_referer('delete-popover-' . $id);
637
638 if( $this->delete_popover( $id ) ) {
639 wp_safe_redirect( add_query_arg( 'msg', 8, wp_get_referer() ) );
640 } else {
641 wp_safe_redirect( add_query_arg( 'msg', 9, wp_get_referer() ) );
642 }
643 }
644 break;
645
646 case 'added': $id = (int) $_POST['id'];
647 if(empty($id)) {
648 check_admin_referer('update-popover');
649 if($this->add_popover( $_POST )) {
650 wp_safe_redirect( add_query_arg( 'msg', 10, 'admin.php?page=popover' ) );
651 } else {
652 wp_safe_redirect( add_query_arg( 'msg', 11, 'admin.php?page=popover' ) );
653 }
654 }
655 break;
656
657 case 'updated': $id = (int) $_POST['id'];
658 if(!empty($id)) {
659 check_admin_referer('update-popover');
660 if($this->update_popover( $id, $_POST )) {
661 wp_safe_redirect( add_query_arg( 'msg', 1, 'admin.php?page=popover' ) );
662 } else {
663 wp_safe_redirect( add_query_arg( 'msg', 2, 'admin.php?page=popover' ) );
664 }
665 }
666 break;
667
668 }
669
670
671 }
672
673 }
674
675 function handle_popover_admin() {
676 global $action, $page;
677
678 if($action == 'edit') {
679 if(isset($_GET['popover'])) {
680 $id = (int) $_GET['popover'];
681 $this->handle_popover_edit_panel( $id );
682 return; // So we don't see the rest of this page
683 }
684 }
685
686 if($action == 'add') {
687 $this->handle_popover_edit_panel( false );
688 return; // So we don't see the rest of this page
689 }
690
691 $messages = array();
692 $messages[1] = __('Pop Over updated.','popover');
693 $messages[2] = __('Pop Over not updated.','popover');
694
695 $messages[3] = __('Pop Over activated.','popover');
696 $messages[4] = __('Pop Over not activated.','popover');
697
698 $messages[5] = __('Pop Over deactivated.','popover');
699 $messages[6] = __('Pop Over not deactivated.','popover');
700
701 $messages[7] = __('Pop Over activation toggled.','popover');
702
703 $messages[8] = __('Pop Over deleted.','popover');
704 $messages[9] = __('Pop Over not deleted.','popover');
705
706 $messages[10] = __('Pop Over added.','popover');
707 $messages[11] = __('Pop Over not added.','popover');
708 ?>
709 <div class='wrap'>
710 <div class="icon32" id="icon-themes"><br></div>
711 <h2><?php _e('Edit Pop Overs','popover'); ?><a class="add-new-h2" href="admin.php?page=<?php echo $page; ?>&action=add"><?php _e('Add New','membership'); ?></a></h2>
712
713 <?php
714 if ( isset($_GET['msg']) ) {
715 echo '<div id="message" class="updated fade"><p>' . $messages[(int) $_GET['msg']] . '</p></div>';
716 $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
717 }
718
719 ?>
720
721 <form method="get" action="?page=<?php echo esc_attr($page); ?>" id="posts-filter">
722
723 <input type='hidden' name='page' value='<?php echo esc_attr($page); ?>' />
724
725 <div class="tablenav">
726
727 <div class="alignleft actions">
728 <select name="action">
729 <option selected="selected" value=""><?php _e('Bulk Actions', 'popover'); ?></option>
730 <option value="toggle"><?php _e('Toggle activation', 'popover'); ?></option>
731 </select>
732 <input type="submit" class="button-secondary action" id="doaction" name="doaction" value="<?php _e('Apply', 'popover'); ?>">
733
734 </div>
735
736 <div class="alignright actions"></div>
737
738 <br class="clear">
739 </div>
740
741 <div class="clear"></div>
742
743 <?php
744 wp_original_referer_field(true, 'previous'); wp_nonce_field('bulk-popovers');
745
746 $columns = array( "name" => __('Pop Over Name', 'popover'),
747 "rules" => __('Conditions','popover'),
748 "active" => __('Active','popover')
749 );
750
751 $columns = apply_filters('popover_columns', $columns);
752
753 $popovers = $this->get_popovers();
754
755 ?>
756
757 <table cellspacing="0" class="widefat fixed" id="dragtable">
758 <thead>
759 <tr>
760
761 <th style="width: 20px;" class="manage-column column-drag" id="cb" scope="col"></th>
762 <th style="" class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"></th>
763
764 <?php
765 foreach($columns as $key => $col) {
766 ?>
767 <th style="" class="manage-column column-<?php echo $key; ?>" id="<?php echo $key; ?>" scope="col"><?php echo $col; ?></th>
768 <?php
769 }
770 ?>
771 </tr>
772 </thead>
773
774 <tfoot>
775 <tr>
776
777 <th style="" class="manage-column column-drag" scope="col"></th>
778 <th style="" class="manage-column column-cb check-column" scope="col"><input type="checkbox"></th>
779
780 <?php
781 reset($columns);
782 foreach($columns as $key => $col) {
783 ?>
784 <th style="" class="manage-column column-<?php echo $key; ?>" id="<?php echo $key; ?>" scope="col"><?php echo $col; ?></th>
785 <?php
786 }
787 ?>
788 </tr>
789 </tfoot>
790
791 <tbody id='dragbody'>
792 <?php
793 if($popovers) {
794 $popovercount = 0;
795 foreach($popovers as $key => $popover) {
796 ?>
797 <tr valign="middle" class="alternate draghandle" id="<?php echo $popover->id; ?>">
798
799 <td class="check-drag" scope="row">
800 &nbsp;
801 </td>
802 <td class="check-column" scope="row"><input type="checkbox" value="<?php echo $popover->id; ?>" name="popovercheck[]"></td>
803
804 <td class="column-name">
805 <strong><a href='<?php echo "?page=" . $page . "&amp;action=edit&amp;popover=" . $popover->id . ""; ?>'><?php echo esc_html($popover->popover_title); ?></a></strong>
806 <?php
807 $actions = array();
808
809 $actions['edit'] = "<span class='edit'><a href='?page=" . $page . "&amp;action=edit&amp;popover=" . $popover->id . "'>" . __('Edit', 'popover') . "</a></span>";
810
811 if($popover->popover_active) {
812 $actions['toggle'] = "<span class='edit activate'><a href='" . wp_nonce_url("?page=" . $page. "&amp;action=deactivate&amp;popover=" . $popover->id . "", 'toggle-popover-' . $popover->id) . "'>" . __('Deactivate', 'popover') . "</a></span>";
813 } else {
814 $actions['toggle'] = "<span class='edit deactivate'><a href='" . wp_nonce_url("?page=" . $page. "&amp;action=activate&amp;popover=" . $popover->id . "", 'toggle-popover-' . $popover->id) . "'>" . __('Activate', 'popover') . "</a></span>";
815 }
816
817 $actions['delete'] = "<span class='delete'><a href='" . wp_nonce_url("?page=" . $page. "&amp;action=delete&amp;popover=" . $popover->id . "", 'delete-popover-' . $popover->id) . "'>" . __('Delete', 'popover') . "</a></span>";
818 ?>
819 <br><div class="row-actions"><?php echo implode(" | ", $actions); ?></div>
820 </td>
821
822 <td class="column-name">
823 <?php
824 $p = maybe_unserialize($popover->popover_settings);
825 $rules = $p['popover_check'];
826 foreach( (array) $rules as $key => $value ) {
827 if($key == 'order') {
828 continue;
829 }
830 switch($key) {
831
832 case 'supporter': _e('Site is not a Pro-site', 'popover');
833 break;
834
835 case 'isloggedin': _e('Visitor is logged in', 'popover');
836 break;
837
838 case 'loggedin': _e('Visitor is not logged in', 'popover');
839 break;
840
841 case 'commented': _e('Visitor has never commented', 'popover');
842 break;
843
844 case 'searchengine': _e('Visit via a search engine', 'popover');
845 break;
846
847 case 'internal': _e('Visit not via an Internal link', 'popover');
848 break;
849
850 case 'referrer': _e('Visit via specific referer', 'popover');
851 break;
852
853 case 'count': _e('Popover shown less than x times', 'popover');
854 break;
855
856 case 'onurl': _e('On specific URL', 'popover');
857 break;
858
859 case 'notonurl': _e('Not on specific URL', 'popover');
860 break;
861
862 case 'incountry': _e('In a specific country', 'popover');
863 break;
864
865 case 'notincountry': _e('Not in a specific country', 'popover');
866 break;
867
868 default: echo apply_filters('popover_nice_rule_name', $key);
869 break;
870 }
871 echo "<br/>";
872 }
873 ?>
874 </td>
875 <td class="column-active">
876 <?php
877 if($popover->popover_active) {
878 echo "<strong>" . __('Active', 'popover') . "</strong>";
879 } else {
880 echo __('Inactive', 'popover');
881 }
882 ?>
883 </td>
884 </tr>
885 <?php
886 }
887 } else {
888 $columncount = count($columns) + 2;
889 ?>
890 <tr valign="middle" class="alternate" >
891 <td colspan="<?php echo $columncount; ?>" scope="row"><?php _e('No Pop Overs were found.','popover'); ?></td>
892 </tr>
893 <?php
894 }
895 ?>
896
897 </tbody>
898 </table>
899
900
901 <div class="tablenav">
902
903 <div class="alignleft actions">
904 <select name="action2">
905 <option selected="selected" value=""><?php _e('Bulk Actions', 'popover'); ?></option>
906 <option value="toggle"><?php _e('Toggle activation', 'popover'); ?></option>
907 </select>
908 <input type="submit" class="button-secondary action" id="doaction2" name="doaction2" value="<?php _e('Apply', 'popover'); ?>">
909 </div>
910 <div class="alignright actions"></div>
911 <br class="clear">
912 </div>
913
914 </form>
915
916 </div> <!-- wrap -->
917 <?php
918 }
919
920
921 function handle_popover_edit_panel( $id = false ) {
922
923 global $page;
924
925 if(function_exists('get_site_option') && defined('PO_GLOBAL') && PO_GLOBAL == true) {
926 $updateoption = 'update_site_option';
927 $getoption = 'get_site_option';
928 } else {
929 $updateoption = 'update_option';
930 $getoption = 'get_option';
931 }
932
933
934 if($id !== false) {
935 $popover = $this->get_popover( $id );
936
937 $popover->popover_settings = unserialize($popover->popover_settings);
938 } else {
939 $popover = new stdClass;
940 $popover->popover_title = __('New Pop Over','popover');
941 $popover->popover_content = "";
942 }
943
944 $popover_title = stripslashes($popover->popover_title);
945
946 $popover_content = stripslashes($popover->popover_content);
947
948 if(empty($popover->popover_settings)) {
949 $popover->popover_settings = array( 'popover_size' => array('width' => '500px', 'height' => '200px'),
950 'popover_location' => array('left' => '100px', 'top' => '100px'),
951 'popover_colour' => array('back' => 'FFFFFF', 'fore' => '000000'),
952 'popover_margin' => array('left' => '0px', 'top' => '0px', 'right' => '0px', 'bottom' => '0px'),
953 'popover_check' => array(),
954 'popover_ereg' => '',
955 'popover_count' => 3,
956 'popover_usejs' => 'no'
957 );
958 }
959
960 $popover_size = $popover->popover_settings['popover_size'];
961 $popover_location = $popover->popover_settings['popover_location'];
962 $popover_colour = $popover->popover_settings['popover_colour'];
963 $popover_margin = $popover->popover_settings['popover_margin'];
964
965 $popover_size = $this->sanitise_array($popover_size);
966 $popover_location = $this->sanitise_array($popover_location);
967 $popover_colour = $this->sanitise_array($popover_colour);
968 $popover_margin = $this->sanitise_array($popover_margin);
969
970 $popover_check = $popover->popover_settings['popover_check'];
971 $popover_ereg = $popover->popover_settings['popover_ereg'];
972 $popover_count = $popover->popover_settings['popover_count'];
973
974 $popover_usejs = $popover->popover_settings['popover_usejs'];
975
976 $popoverstyle = (isset($popover->popover_settings['popover_style'])) ? $popover->popover_settings['popover_style'] : '';
977
978 $popover_hideforever = (isset($popover->popover_settings['popoverhideforeverlink'])) ? $popover->popover_settings['popoverhideforeverlink'] : '';
979
980 $popover_delay = (isset($popover->popover_settings['popoverdelay'])) ? $popover->popover_settings['popoverdelay'] : '';
981
982 $popover_onurl = (isset($popover->popover_settings['onurl'])) ? $popover->popover_settings['onurl'] : '';
983 $popover_notonurl = (isset($popover->popover_settings['notonurl'])) ? $popover->popover_settings['notonurl'] : '';
984
985 $popover_incountry = (isset($popover->popover_settings['incountry'])) ? $popover->popover_settings['incountry'] : '';
986 $popover_notincountry = (isset($popover->popover_settings['notincountry'])) ? $popover->popover_settings['notincountry'] : '';
987
988 $popover_onurl = $this->sanitise_array($popover_onurl);
989 $popover_notonurl = $this->sanitise_array($popover_notonurl);
990
991 ?>
992 <div class='wrap nosubsub'>
993 <div class="icon32" id="icon-themes"><br></div>
994 <?php if($id !== false) { ?>
995 <h2><?php echo __('Edit Pop Over','popover'); ?></h2>
996 <?php } else { ?>
997 <h2><?php echo __('Add Pop Over','popover'); ?></h2>
998 <?php } ?>
999 <div class='popover-liquid-left'>
1000
1001 <div id='popover-left'>
1002 <form action='?page=<?php echo $page; ?>' name='popoveredit' method='post'>
1003
1004 <input type='hidden' name='id' id='id' value='<?php echo $id; ?>' />
1005 <input type='hidden' name='beingdragged' id='beingdragged' value='' />
1006 <input type='hidden' name='popovercheck[order]' id='in-positive-rules' value='<?php echo esc_attr($popover_check['order']); ?>' />
1007
1008 <div id='edit-popover' class='popover-holder-wrap'>
1009 <div class='sidebar-name no-movecursor'>
1010 <h3><?php echo __('Pop Over Settings','popover'); ?></h3>
1011 </div>
1012 <div class='popover-holder'>
1013
1014 <div class='popover-details'>
1015
1016 <label for='popover_title'><?php _e('Popover title','popover'); ?></label><br/>
1017 <input name='popover_title' id='popover_title' style='width: 97%; border: 1px solid; border-color: #DFDFDF;' value='<?php echo stripslashes($popover_title); ?>' /><br/><br/>
1018
1019 <label for='popovercontent'><?php _e('Popover content','popover'); ?></label><br/>
1020 <?php
1021 $args = array("textarea_name" => "popover_content", "textarea_rows" => 5);
1022 wp_editor( stripslashes($popover_content), "popover_content", $args );
1023 /*
1024 ?>
1025 <textarea name='popover_content' id='popover_content' style='width: 98%' rows='5' cols='10'><?php echo stripslashes($popover_content); ?></textarea>
1026 <?php
1027 */
1028 ?>
1029 </div>
1030
1031 <h3><?php _e('Active conditions','popover'); ?></h3>
1032 <p class='description'><?php _e('These are the rules that will determine if a popover should show when a visitor arrives at your website ALL rules must be true for the popover to show.','popover'); ?></p>
1033 <div id='positive-rules-holder'>
1034 <?php
1035
1036 if(!empty($popover_check['order'])) {
1037 $order = explode(',', $popover_check['order']);
1038 } else {
1039 $order = array();
1040 }
1041
1042 foreach($order as $key) {
1043
1044 switch($key) {
1045
1046 case 'isloggedin': $this->admin_main('isloggedin','Visitor is logged in', 'Shows the popover if the user is logged in to your site.', true);
1047 break;
1048 case 'loggedin': $this->admin_main('loggedin','Visitor is not logged in', 'Shows the popover if the user is <strong>not</strong> logged in to your site.', true);
1049 break;
1050 case 'commented': $this->admin_main('commented','Visitor has never commented', 'Shows the popover if the user has never left a comment.', true);
1051 break;
1052 case 'searchengine': $this->admin_main('searchengine','Visit via a search engine', 'Shows the popover if the user arrived via a search engine.', true);
1053 break;
1054 case 'internal': $this->admin_main('internal','Visit not via an Internal link', 'Shows the popover if the user did not arrive on this page via another page on your site.', true);
1055 break;
1056 case 'referrer': $this->admin_referer('referrer','Visit via specific referer', 'Shows the popover if the user arrived via the following referrer:', $popover_ereg);
1057 break;
1058 case 'count': $this->admin_viewcount('count','Popover shown less than', 'Shows the popover if the user has only seen it less than the following number of times:', $popover_count);
1059 break;
1060 case 'onurl': $this->admin_urllist('onurl','On specific URL', 'Shows the popover if the user is on a certain URL (enter one URL per line)', $popover_onurl);
1061 break;
1062 case 'notonurl': $this->admin_urllist('notonurl','Not on specific URL', 'Shows the popover if the user is not on a certain URL (enter one URL per line)', $popover_notonurl);
1063 break;
1064
1065 default: do_action('popover_active_rule_' . $key);
1066 do_action('popover_active_rule', $key);
1067 break;
1068
1069 }
1070
1071 }
1072
1073
1074 ?>
1075 </div>
1076 <div id='positive-rules' class='droppable-rules popovers-sortable'>
1077 <?php _e('Drop here','membership'); ?>
1078 </div>
1079
1080 <h3><?php _e('Appearance settings','popover'); ?></h3>
1081 <table class='form-table' style=''>
1082 <tr>
1083 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Pop Over Size','popover'); ?></strong></th>
1084 <td valign='top'>
1085 <?php _e('Width:','popover'); ?>&nbsp;
1086 <input type='text' name='popoverwidth' id='popoverwidth' style='width: 5em;' value='<?php echo $popover_size['width']; ?>' />&nbsp;
1087 <?php _e('Height:','popover'); ?>&nbsp;
1088 <input type='text' name='popoverheight' id='popoverheight' style='width: 5em;' value='<?php echo $popover_size['height']; ?>' />
1089 </td>
1090 </tr>
1091
1092 <tr>
1093 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Pop Over Position','popover'); ?></strong></th>
1094 <td valign='top'>
1095 <?php _e('Left:','popover'); ?>&nbsp;
1096 <input type='text' name='popoverleft' id='popoverleft' style='width: 5em;' value='<?php echo $popover_location['left']; ?>' />&nbsp;
1097 <?php _e('Top:','popover'); ?>&nbsp;
1098 <input type='text' name='popovertop' id='popovertop' style='width: 5em;' value='<?php echo $popover_location['top']; ?>' />
1099 </td>
1100 </tr>
1101
1102 <tr>
1103 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Pop Over Margins','popover'); ?></strong></th>
1104 <td valign='top'>
1105 <?php _e('Left:','popover'); ?>&nbsp;
1106 <input type='text' name='popovermarginleft' style='width: 5em;' value='<?php echo $popover_margin['left']; ?>' />&nbsp;
1107 <?php _e('Right:','popover'); ?>&nbsp;
1108 <input type='text' name='popovermarginright' style='width: 5em;' value='<?php echo $popover_margin['right']; ?>' /><br/>
1109 <?php _e('Top:','popover'); ?>&nbsp;
1110 <input type='text' name='popovermargintop' style='width: 5em;' value='<?php echo $popover_margin['top']; ?>' />&nbsp;
1111 <?php _e('Bottom:','popover'); ?>&nbsp;
1112 <input type='text' name='popovermarginbottom' style='width: 5em;' value='<?php echo $popover_margin['bottom']; ?>' />
1113 </td>
1114 </tr>
1115
1116 <tr>
1117 <th valign='top' scope='row' style='width: 25%;'>&nbsp;</th>
1118 <td valign='top'>
1119 <?php _e('or use Javascript to resize and center the popover','popover'); ?>&nbsp;<input type='checkbox' name='popoverusejs' id='popoverusejs' value='yes' <?php if($popover_usejs == 'yes') echo "checked='checked'"; ?> />
1120 </td>
1121 </tr>
1122
1123 </table>
1124 <table class='form-table'>
1125
1126 <tr>
1127 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Background Color','popover'); ?></strong></th>
1128 <td valign='top'>
1129 <?php _e('Hex:','popover'); ?>&nbsp;#
1130 <input type='text' name='popoverbackground' id='popoverbackground' style='width: 10em;' value='<?php echo $popover_colour['back']; ?>' />
1131 </td>
1132 </tr>
1133
1134 <tr>
1135 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Font Color','popover'); ?></strong></th>
1136 <td valign='top'>
1137 <?php _e('Hex:','popover'); ?>&nbsp;#
1138 <input type='text' name='popoverforeground' id='popoverforeground' style='width: 10em;' value='<?php echo $popover_colour['fore']; ?>' />
1139 </td>
1140 </tr>
1141
1142 </table>
1143
1144 <?php
1145 $availablestyles = apply_filters( 'popover_available_styles_directory', array() );
1146
1147 if(count($availablestyles) > 1) {
1148 ?>
1149 <h3><?php _e('Pop Over Style','popover'); ?></h3>
1150 <table class='form-table'>
1151
1152 <tr>
1153 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Use Style','popover'); ?></strong></th>
1154 <td valign='top'>
1155 <select name='popoverstyle'>
1156 <?php
1157 foreach( (array) $availablestyles as $key => $location ) {
1158 ?>
1159 <option value='<?php echo $key; ?>' <?php selected($key, $popoverstyle); ?>><?php echo $key; ?></option>
1160 <?php
1161 }
1162 ?>
1163 </select>
1164
1165 </td>
1166 </tr>
1167
1168 </table>
1169 <?php
1170 } else {
1171 foreach( (array) $availablestyles as $key => $location ) {
1172 // There's only one - but it's easy to get the key this way :)
1173 ?>
1174 <input type='hidden' name='popoverstyle' value='<?php echo $key; ?>' />
1175 <?php
1176 }
1177 }
1178 ?>
1179
1180 <h3><?php _e('Remove Hide Forever Link','popover'); ?></h3>
1181 <table class='form-table' style=''>
1182 <tr>
1183 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Remove the "Never see this message again" link','popover'); ?></strong></th>
1184 <td valign='top'>
1185 <input type='checkbox' name='popoverhideforeverlink' id='popoverhideforeverlink' value='yes' <?php if($popover_hideforever == 'yes') { echo "checked='checked'"; } ?> />
1186 </td>
1187 </tr>
1188 </table>
1189
1190 <h3><?php _e('Pop over appearance delays','popover'); ?></h3>
1191 <table class='form-table' style=''>
1192 <tr>
1193 <th valign='top' scope='row' style='width: 25%;'><strong><?php _e('Show Pop Over','popover'); ?></strong></th>
1194 <td valign='top'>
1195 <select name='popoverdelay'>
1196 <option value='immediate' <?php selected('immediate', $popover_delay); ?>><?php _e('immediately','popover'); ?></option>
1197 <?php
1198 for($n=1; $n <= 120; $n++) {
1199 ?>
1200 <option value='<?php echo $n; ?>' <?php selected($n, $popover_delay); ?>><?php echo __('after','popover') . ' ' . $n . ' ' . __('seconds', 'popover') ; ?></option>
1201 <?php
1202 }
1203 ?>
1204 </select>
1205 </td>
1206 </tr>
1207 </table>
1208
1209 <div class='buttons'>
1210 <?php
1211 wp_original_referer_field(true, 'previous'); wp_nonce_field('update-popover');
1212 ?>
1213 <?php if($id !== false) { ?>
1214 <input type='submit' value='<?php _e('Update', 'popover'); ?>' class='button-primary' />
1215 <input type='hidden' name='action' value='updated' />
1216 <?php } else { ?>
1217 <input type='submit' value='<?php _e('Add', 'popover'); ?>' class='button' name='add' />&nbsp;<input type='submit' value='<?php _e('Add and Activate', 'popover'); ?>' class='button-primary' name='addandactivate' />
1218 <input type='hidden' name='action' value='added' />
1219 <?php } ?>
1220
1221 </div>
1222
1223 </div>
1224 </div>
1225 </form>
1226 </div>
1227
1228
1229 <div id='hiden-actions'>
1230 <?php
1231 if(!isset($popover_check['isloggedin'])) {
1232 $this->admin_main('isloggedin','Visitor is logged in', 'Shows the popover if the user is logged in to your site.', true);
1233 }
1234
1235 if(!isset($popover_check['loggedin'])) {
1236 $this->admin_main('loggedin','Visitor is not logged in', 'Shows the popover if the user is <strong>not</strong> logged in to your site.', true);
1237 }
1238
1239 if(!isset($popover_check['commented'])) {
1240 $this->admin_main('commented','Visitor has never commented', 'Shows the popover if the user has never left a comment.', true);
1241 }
1242
1243 if(!isset($popover_check['searchengine'])) {
1244 $this->admin_main('searchengine','Visit via a search engine', 'Shows the popover if the user arrived via a search engine.', true);
1245 }
1246
1247 if(!isset($popover_check['internal'])) {
1248 $this->admin_main('internal','Visit not via an Internal link', 'Shows the popover if the user did not arrive on this page via another page on your site.', true);
1249 }
1250
1251 if(!isset($popover_check['referrer'])) {
1252 $this->admin_referer('referrer','Visit via specific referer', 'Shows the popover if the user arrived via the following referrer:', $popover_ereg);
1253 }
1254
1255 if(!isset($popover_check['onurl'])) {
1256 $this->admin_urllist('onurl','On specific URL', 'Shows the popover if the user is on a certain URL (enter one URL per line)', $popover_onurl);
1257 }
1258
1259 if(!isset($popover_check['notonurl'])) {
1260 $this->admin_urllist('notonurl','Not on specific URL', 'Shows the popover if the user is not on a certain URL (enter one URL per line)', $popover_notonurl);
1261 }
1262
1263 //$popover_count
1264 if(!isset($popover_check['count'])) {
1265 $this->admin_viewcount('count','Popover shown less than', 'Shows the popover if the user has only seen it less than the following number of times:', $popover_count);
1266 }
1267
1268 do_action('popover_additional_rules_main');
1269
1270 ?>
1271 </div> <!-- hidden-actions -->
1272
1273 </div> <!-- popover-liquid-left -->
1274
1275 <div class='popover-liquid-right'>
1276 <div class="popover-holder-wrap">
1277
1278 <div class="sidebar-name no-movecursor">
1279 <h3><?php _e('Conditions', 'popover'); ?></h3>
1280 </div>
1281 <div class="section-holder" id="sidebar-rules" style="min-height: 98px;">
1282 <ul class='popovers popovers-draggable'>
1283 <?php
1284
1285 if(isset($popover_check['isloggedin'])) {
1286 $this->admin_sidebar('isloggedin','Visitor is logged in', 'Shows the popover if the user is logged in to your site.', true);
1287 } else {
1288 $this->admin_sidebar('isloggedin','Visitor is logged in', 'Shows the popover if the user is logged in to your site.', false);
1289 }
1290
1291 if(isset($popover_check['loggedin'])) {
1292 $this->admin_sidebar('loggedin','Visitor is not logged in', 'Shows the popover if the user is <strong>not</strong> logged in to your site.', true);
1293 } else {
1294 $this->admin_sidebar('loggedin','Visitor is not logged in', 'Shows the popover if the user is <strong>not</strong> logged in to your site.', false);
1295 }
1296
1297 if(isset($popover_check['commented'])) {
1298 $this->admin_sidebar('commented','Visitor has never commented', 'Shows the popover if the user has never left a comment.', true);
1299 } else {
1300 $this->admin_sidebar('commented','Visitor has never commented', 'Shows the popover if the user has never left a comment.', false);
1301 }
1302
1303 if(isset($popover_check['searchengine'])) {
1304 $this->admin_sidebar('searchengine','Visit via a search engine', 'Shows the popover if the user arrived via a search engine.', true);
1305 } else {
1306 $this->admin_sidebar('searchengine','Visit via a search engine', 'Shows the popover if the user arrived via a search engine.', false);
1307 }
1308
1309 if(isset($popover_check['internal'])) {
1310 $this->admin_sidebar('internal','Visit not via an Internal link', 'Shows the popover if the user did not arrive on this page via another page on your site.', true);
1311 } else {
1312 $this->admin_sidebar('internal','Visit not via an Internal link', 'Shows the popover if the user did not arrive on this page via another page on your site.', false);
1313 }
1314
1315 if(isset($popover_check['referrer'])) {
1316 $this->admin_sidebar('referrer','Visit via specific referer', 'Shows the popover if the user arrived via a specific referrer.', true);
1317 } else {
1318 $this->admin_sidebar('referrer','Visit via specific referer', 'Shows the popover if the user arrived via a specific referrer.', false);
1319 }
1320
1321 if(isset($popover_check['count'])) {
1322 $this->admin_sidebar('count','Popover shown less than', 'Shows the popover if the user has only seen it less than a specific number of times.', true);
1323 } else {
1324 $this->admin_sidebar('count','Popover shown less than', 'Shows the popover if the user has only seen it less than a specific number of times.', false);
1325 }
1326
1327 if(isset($popover_check['onurl'])) {
1328 $this->admin_sidebar('onurl','On specific URL', 'Shows the popover if the user is on a certain URL.', true);
1329 } else {
1330 $this->admin_sidebar('onurl','On specific URL', 'Shows the popover if the user is on a certain URL.', false);
1331 }
1332
1333 if(isset($popover_check['notonurl'])) {
1334 $this->admin_sidebar('notonurl','Not on specific URL', 'Shows the popover if the user is not on a certain URL.', true);
1335 } else {
1336 $this->admin_sidebar('notonurl','Not on specific URL', 'Shows the popover if the user is not on a certain URL.', false);
1337 }
1338
1339 do_action('popover_additional_rules_sidebar');
1340 ?>
1341 </ul>
1342 </div>
1343
1344 </div> <!-- popover-holder-wrap -->
1345
1346 </div> <!-- popover-liquid-left -->
1347
1348 </div> <!-- wrap -->
1349
1350 <?php
1351 }
1352
1353 function admin_sidebar($id, $title, $message, $data = false) {
1354 ?>
1355 <li class='popover-draggable' id='<?php echo $id; ?>' <?php if($data === true) echo "style='display:none;'"; ?>>
1356
1357 <div class='action action-draggable'>
1358 <div class='action-top closed'>
1359 <a href="#available-actions" class="action-button hide-if-no-js"></a>
1360 <?php _e($title,'popover'); ?>
1361 </div>
1362 <div class='action-body closed'>
1363 <?php if(!empty($message)) { ?>
1364 <p>
1365 <?php _e($message, 'popover'); ?>
1366 </p>
1367 <?php } ?>
1368 <p>
1369 <a href='#addtopopover' class='action-to-popover' title='<?php _e('Add this rule to the popover.','popover'); ?>'><?php _e('Add this rule to the popover.','popover'); ?></a>
1370 </p>
1371 </div>
1372 </div>
1373
1374 </li>
1375 <?php
1376 }
1377
1378 function admin_main($id, $title, $message, $data = false) {
1379 if(!$data) $data = array();
1380 ?>
1381 <div class='popover-operation' id='main-<?php echo $id; ?>'>
1382 <h2 class='sidebar-name'><?php _e($title, 'popover');?><span><a href='#remove' class='removelink' id='remove-<?php echo $id; ?>' title='<?php _e("Remove $title tag from this rules area.",'popover'); ?>'><?php _e('Remove','popover'); ?></a></span></h2>
1383 <div class='inner-operation'>
1384 <p><?php _e($message, 'popover'); ?></p>
1385 <input type='hidden' name='popovercheck[<?php echo $id; ?>]' value='yes' />
1386 </div>
1387 </div>
1388 <?php
1389 }
1390
1391 function admin_referer($id, $title, $message, $data = false) {
1392 if(!$data) $data = ''
1393 ?>
1394 <div class='popover-operation' id='main-<?php echo $id; ?>'>
1395 <h2 class='sidebar-name'><?php _e($title, 'popover');?><span><a href='#remove' class='removelink' id='remove-<?php echo $id; ?>' title='<?php _e("Remove $title tag from this rules area.",'popover'); ?>'><?php _e('Remove','popover'); ?></a></span></h2>
1396 <div class='inner-operation'>
1397 <p><?php _e($message, 'popover'); ?></p>
1398 <input type='text' name='popoverereg' id='popoverereg' style='width: 10em;' value='<?php echo esc_html($data); ?>' />
1399 <input type='hidden' name='popovercheck[<?php echo $id; ?>]' value='yes' />
1400 </div>
1401 </div>
1402 <?php
1403 }
1404
1405 function admin_viewcount($id, $title, $message, $data = false) {
1406 if(!$data) $data = '';
1407 ?>
1408 <div class='popover-operation' id='main-<?php echo $id; ?>'>
1409 <h2 class='sidebar-name'><?php _e($title, 'popover');?><span><a href='#remove' class='removelink' id='remove-<?php echo $id; ?>' title='<?php _e("Remove $title tag from this rules area.",'popover'); ?>'><?php _e('Remove','popover'); ?></a></span></h2>
1410 <div class='inner-operation'>
1411 <p><?php _e($message, 'popover'); ?></p>
1412 <input type='text' name='popovercount' id='popovercount' style='width: 5em;' value='<?php echo esc_html($data); ?>' />&nbsp;
1413 <?php _e('times','popover'); ?>
1414 <input type='hidden' name='popovercheck[<?php echo $id; ?>]' value='yes' />
1415 </div>
1416 </div>
1417 <?php
1418 }
1419
1420 function admin_urllist($id, $title, $message, $data = false) {
1421 if(!$data) $data = array();
1422
1423 $data = implode("\n", $data);
1424
1425 ?>
1426 <div class='popover-operation' id='main-<?php echo $id; ?>'>
1427 <h2 class='sidebar-name'><?php _e($title, 'popover');?><span><a href='#remove' class='removelink' id='remove-<?php echo $id; ?>' title='<?php _e("Remove $title tag from this rules area.",'popover'); ?>'><?php _e('Remove','popover'); ?></a></span></h2>
1428 <div class='inner-operation'>
1429 <p><?php _e($message, 'popover'); ?></p>
1430 <textarea name='popover<?php echo $id; ?>' id='popover<?php echo $id; ?>' style=''><?php echo esc_html($data); ?></textarea>
1431 <input type='hidden' name='popovercheck[<?php echo $id; ?>]' value='yes' />
1432 </div>
1433 </div>
1434 <?php
1435 }
1436
1437 function handle_addons_panel_updates() {
1438 global $action, $page;
1439
1440 wp_reset_vars( array('action', 'page') );
1441
1442 if(isset($_GET['doaction']) || isset($_GET['doaction2'])) {
1443 if(addslashes($_GET['action']) == 'toggle' || addslashes($_GET['action2']) == 'toggle') {
1444 $action = 'bulk-toggle';
1445 }
1446 }
1447
1448 $active = get_option('popover_activated_addons', array());
1449
1450 switch(addslashes($action)) {
1451
1452 case 'deactivate': $key = addslashes($_GET['addon']);
1453 if(!empty($key)) {
1454 check_admin_referer('toggle-addon-' . $key);
1455
1456 $found = array_search($key, $active);
1457 if($found !== false) {
1458 unset($active[$found]);
1459 update_option('popover_activated_addons', array_unique($active));
1460 wp_safe_redirect( add_query_arg( 'msg', 5, wp_get_referer() ) );
1461 } else {
1462 wp_safe_redirect( add_query_arg( 'msg', 6, wp_get_referer() ) );
1463 }
1464 }
1465 break;
1466
1467 case 'activate': $key = addslashes($_GET['addon']);
1468 if(!empty($key)) {
1469 check_admin_referer('toggle-addon-' . $key);
1470
1471 if(!in_array($key, $active)) {
1472 $active[] = $key;
1473 update_option('popover_activated_addons', array_unique($active));
1474 wp_safe_redirect( add_query_arg( 'msg', 3, wp_get_referer() ) );
1475 } else {
1476 wp_safe_redirect( add_query_arg( 'msg', 4, wp_get_referer() ) );
1477 }
1478 }
1479 break;
1480
1481 case 'bulk-toggle':
1482 check_admin_referer('bulk-addons');
1483 foreach($_GET['addoncheck'] AS $key) {
1484 $found = array_search($key, $active);
1485 if($found !== false) {
1486 unset($active[$found]);
1487 } else {
1488 $active[] = $key;
1489 }
1490 }
1491 update_option('popover_activated_addons', array_unique($active));
1492 wp_safe_redirect( add_query_arg( 'msg', 7, wp_get_referer() ) );
1493 break;
1494
1495 }
1496 }
1497
1498 function handle_addons_panel() {
1499 global $action, $page;
1500
1501 wp_reset_vars( array('action', 'page') );
1502
1503 $messages = array();
1504 $messages[1] = __('Add-on updated.','popover');
1505 $messages[2] = __('Add-on not updated.','popover');
1506
1507 $messages[3] = __('Add-on activated.','popover');
1508 $messages[4] = __('Add-on not activated.','popover');
1509
1510 $messages[5] = __('Add-on deactivated.','popover');
1511 $messages[6] = __('Add-on not deactivated.','popover');
1512
1513 $messages[7] = __('Add-on activation toggled.','popover');
1514
1515 ?>
1516 <div class='wrap'>
1517 <div class="icon32" id="icon-plugins"><br></div>
1518 <h2><?php _e('Edit Add-ons','popover'); ?></h2>
1519
1520 <?php
1521 if ( isset($_GET['msg']) ) {
1522 echo '<div id="message" class="updated fade"><p>' . $messages[(int) $_GET['msg']] . '</p></div>';
1523 $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
1524 }
1525
1526 ?>
1527
1528 <form method="get" action="?page=<?php echo esc_attr($page); ?>" id="posts-filter">
1529
1530 <input type='hidden' name='page' value='<?php echo esc_attr($page); ?>' />
1531
1532 <div class="tablenav">
1533
1534 <div class="alignleft actions">
1535 <select name="action">
1536 <option selected="selected" value=""><?php _e('Bulk Actions', 'popover'); ?></option>
1537 <option value="toggle"><?php _e('Toggle activation', 'popover'); ?></option>
1538 </select>
1539 <input type="submit" class="button-secondary action" id="doaction" name="doaction" value="<?php _e('Apply', 'popover'); ?>">
1540
1541 </div>
1542
1543 <div class="alignright actions"></div>
1544
1545 <br class="clear">
1546 </div>
1547
1548 <div class="clear"></div>
1549
1550 <?php
1551 wp_original_referer_field(true, 'previous'); wp_nonce_field('bulk-addons');
1552
1553 $columns = array( "name" => __('Add-on Name', 'popover'),
1554 "file" => __('Add-on File','popover'),
1555 "active" => __('Active','popover')
1556 );
1557
1558 $columns = apply_filters('popover_addoncolumns', $columns);
1559
1560 $addons = get_popover_addons();
1561
1562 $active = get_option('popover_activated_addons', array());
1563
1564 ?>
1565
1566 <table cellspacing="0" class="widefat fixed">
1567 <thead>
1568 <tr>
1569 <th style="" class="manage-column column-cb check-column" id="cb" scope="col"><input type="checkbox"></th>
1570 <?php
1571 foreach($columns as $key => $col) {
1572 ?>
1573 <th style="" class="manage-column column-<?php echo $key; ?>" id="<?php echo $key; ?>" scope="col"><?php echo $col; ?></th>
1574 <?php
1575 }
1576 ?>
1577 </tr>
1578 </thead>
1579
1580 <tfoot>
1581 <tr>
1582 <th style="" class="manage-column column-cb check-column" scope="col"><input type="checkbox"></th>
1583 <?php
1584 reset($columns);
1585 foreach($columns as $key => $col) {
1586 ?>
1587 <th style="" class="manage-column column-<?php echo $key; ?>" id="<?php echo $key; ?>" scope="col"><?php echo $col; ?></th>
1588 <?php
1589 }
1590 ?>
1591 </tr>
1592 </tfoot>
1593
1594 <tbody>
1595 <?php
1596 if($addons) {
1597 foreach($addons as $key => $addon) {
1598 $default_headers = array(
1599 'Name' => 'Addon Name',
1600 'Author' => 'Author',
1601 'Description' => 'Description',
1602 'AuthorURI' => 'Author URI'
1603 );
1604
1605 $addon_data = get_file_data( popover_dir('popoverincludes/addons/' . $addon), $default_headers, 'plugin' );
1606
1607 if(empty($addon_data['Name'])) {
1608 continue;
1609 }
1610
1611 ?>
1612 <tr valign="middle" class="alternate" id="addon-<?php echo $addon; ?>">
1613 <th class="check-column" scope="row"><input type="checkbox" value="<?php echo esc_attr($addon); ?>" name="addoncheck[]"></th>
1614 <td class="column-name">
1615 <strong><?php echo esc_html($addon_data['Name']) . "</strong>" . __(' by ', 'popover') . "<a href='" . esc_attr($addon_data['AuthorURI']) . "'>" . esc_html($addon_data['Author']) . "</a>"; ?>
1616 <?php if(!empty($addon_data['Description'])) {
1617 ?><br/><?php echo esc_html($addon_data['Description']);
1618 }
1619
1620 $actions = array();
1621
1622 if(in_array($addon, $active)) {
1623 $actions['toggle'] = "<span class='edit activate'><a href='" . wp_nonce_url("?page=" . $page. "&amp;action=deactivate&amp;addon=" . $addon . "", 'toggle-addon-' . $addon) . "'>" . __('Deactivate', 'popover') . "</a></span>";
1624 } else {
1625 $actions['toggle'] = "<span class='edit deactivate'><a href='" . wp_nonce_url("?page=" . $page. "&amp;action=activate&amp;addon=" . $addon . "", 'toggle-addon-' . $addon) . "'>" . __('Activate', 'popover') . "</a></span>";
1626 }
1627 ?>
1628 <br><div class="row-actions"><?php echo implode(" | ", $actions); ?></div>
1629 </td>
1630
1631 <td class="column-name">
1632 <?php echo esc_html($addon); ?>
1633 </td>
1634 <td class="column-active">
1635 <?php
1636 if(in_array($addon, $active)) {
1637 echo "<strong>" . __('Active', 'popover') . "</strong>";
1638 } else {
1639 echo __('Inactive', 'popover');
1640 }
1641 ?>
1642 </td>
1643 </tr>
1644 <?php
1645 }
1646 } else {
1647 $columncount = count($columns) + 1;
1648 ?>
1649 <tr valign="middle" class="alternate" >
1650 <td colspan="<?php echo $columncount; ?>" scope="row"><?php _e('No Add-ons where found for this install.','popover'); ?></td>
1651 </tr>
1652 <?php
1653 }
1654 ?>
1655
1656 </tbody>
1657 </table>
1658
1659
1660 <div class="tablenav">
1661
1662 <div class="alignleft actions">
1663 <select name="action2">
1664 <option selected="selected" value=""><?php _e('Bulk Actions', 'popover'); ?></option>
1665 <option value="toggle"><?php _e('Toggle activation', 'popover'); ?></option>
1666 </select>
1667 <input type="submit" class="button-secondary action" id="doaction2" name="doaction2" value="<?php _e('Apply', 'popover'); ?>">
1668 </div>
1669 <div class="alignright actions"></div>
1670 <br class="clear">
1671 </div>
1672
1673 </form>
1674
1675 </div> <!-- wrap -->
1676 <?php
1677 }
1678
1679
1680 function handle_settings_page() {
1681
1682 global $action, $page;
1683
1684 $messages = array();
1685 $messages[1] = __('Your settings have been updated.','popover');
1686
1687 ?>
1688 <div class='wrap nosubsub'>
1689
1690 <div class="icon32" id="icon-options-general"><br></div>
1691 <h2><?php _e('Pop Over Settings','popover'); ?></h2>
1692
1693 <?php
1694 if ( isset($_GET['msg']) ) {
1695 echo '<div id="message" class="updated fade"><p>' . $messages[(int) $_GET['msg']] . '</p></div>';
1696 $_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
1697 }
1698 ?>
1699 <div id="poststuff" class="metabox-holder m-settings">
1700 <form action='?page=<?php echo $page; ?>' method='post'>
1701
1702 <input type='hidden' name='page' value='<?php echo $page; ?>' />
1703 <input type='hidden' name='action' value='updatesettings' />
1704
1705 <?php
1706 wp_nonce_field('update-popover-settings');
1707 ?>
1708
1709 <div class="postbox">
1710 <h3 class="hndle" style='cursor:auto;'><span><?php _e('Pop Over loading method','popover'); ?></span></h3>
1711 <div class="inside">
1712 <p><?php _e('Select the loading method you want to use for your Pop Overs.','popover'); ?></p>
1713 <ul>
1714 <li><em><?php _e('- Page Footer : The pop over is included as part of the page html.','popover'); ?></em></li>
1715 <li><em><?php _e('- External Load : The pop over is loaded separately from the page, this is the best option if you are running a caching system.','popover'); ?></em></li>
1716 </ul>
1717
1718 <table class="form-table">
1719 <tbody>
1720 <tr valign="top">
1721 <th scope="row"><?php _e('Pop Over loaded using','popover'); ?></th>
1722 <td>
1723 <?php
1724 $settings = get_popover_option('popover-settings', array( 'loadingmethod' => 'external'));
1725 ?>
1726 <select name='loadingmethod' id='loadingmethod'>
1727 <option value="footer" <?php if($settings['loadingmethod'] == 'footer') echo "selected='selected'"; ?>><?php _e('Page Footer','popover'); ?></option>
1728 <option value="external" <?php if($settings['loadingmethod'] == 'external') echo "selected='selected'"; ?>><?php _e('External Load','popover'); ?></option>
1729 </select>
1730 </td>
1731 </tr>
1732 </tbody>
1733 </table>
1734 </div>
1735 </div>
1736
1737 <p class="submit">
1738 <input type="submit" name="Submit" class="button-primary" value="<?php esc_attr_e('Save Changes', 'popover') ?>" />
1739 </p>
1740
1741 </form>
1742 </div>
1743 </div> <!-- wrap -->
1744 <?php
1745 }
1746
1747 function update_settings_page() {
1748
1749 if(isset($_POST['action']) && $_POST['action'] == 'updatesettings') {
1750
1751 check_admin_referer('update-popover-settings');
1752
1753 update_popover_option( 'popover-settings', $_POST );
1754
1755 wp_safe_redirect( add_query_arg('msg', 1, wp_get_referer()) );
1756 }
1757
1758 }
1759
1760 }
1761
1762 }
1763
1764 ?>