PluginProbe
Boxzilla – WordPress Popup Builder / 3.2.4
Boxzilla – WordPress Popup Builder v3.2.4
3.4.11 3.4.10 3.4.9 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 trunk 3.0 3.0.1 3.0.2 3.0.3 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 All 72 releases
← All changes | src/admin/class-admin.php +52 -26 3.0.23.2.4 View file →
@@ -20,8 +20,13 @@
20 20 */
21 21 protected $boxzilla;
22 22
23 23 /**
24 + * @var ReviewNotice
25 + */
26 + protected $review_notice;
27 +
28 + /**
24 29 * @param Plugin $plugin
25 30 * @param Boxzilla $boxzilla
26 31 */
27 32 public function __construct( Plugin $plugin, Boxzilla $boxzilla ) {
@@ -26,8 +31,9 @@
26 31 */
27 32 public function __construct( Plugin $plugin, Boxzilla $boxzilla ) {
28 33 $this->plugin = $plugin;
29 34 $this->boxzilla = $boxzilla;
35 + $this->review_notice = new ReviewNotice();
30 36 }
31 37
32 38 /**
33 39 * Initialise the all admin related stuff
@@ -47,16 +53,42 @@
47 53 */
48 54 protected function add_hooks() {
49 55 add_action( 'admin_init', array( $this, 'lazy_add_hooks' ) );
50 56 add_action( 'admin_init', array( $this, 'register' ) );
57 + add_action( 'init', array( $this, 'listen_for_actions' ) );
51 58 add_action( 'admin_menu', array( $this, 'menu' ) );
52 59 add_action( 'admin_notices', array( $this, 'notices' ) );
53 60 add_action( 'save_post_boxzilla-box', array( $this, 'save_box_options' ), 20, 2 );
54 61 add_action( 'trashed_post', array( $this, 'flush_rules' ) );
55 62 add_action( 'untrashed_post', array( $this, 'flush_rules' ) );
63 +
64 + $this->review_notice->add_hooks();
56 65 }
57 66
58 67 /**
68 + * Listen for admin actions.
69 + */
70 + public function listen_for_actions() {
71 +
72 + // triggered?
73 + $vars = array_merge( $_POST, $_GET );
74 + if( empty( $vars['_boxzilla_admin_action'] ) ) {
75 + return false;
76 + }
77 +
78 + // authorized?
79 + if( ! current_user_can( 'edit_posts' ) ) {
80 + return false;
81 + }
82 +
83 + // fire action
84 + $action = $vars['_boxzilla_admin_action'];
85 + do_action( 'boxzilla_admin_' . $action );
86 +
87 + return true;
88 + }
89 +
90 + /**
59 91 * All logic for admin notices lives here.
60 92 */
61 93 public function notices() {
62 94 global $pagenow,
@@ -102,15 +134,11 @@
102 134 add_action( 'admin_enqueue_scripts', array( $this, 'load_assets' ) );
103 135 add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );
104 136 add_filter( 'tiny_mce_before_init', array( $this, 'tinymce_init' ) );
105 137 add_filter( 'manage_edit-boxzilla-box_columns', array( $this, 'post_type_column_titles' ) );
106 - add_action( 'manage_boxzilla-box_posts_custom_column', array(
107 - $this,
108 - 'post_type_column_content'
109 - ), 10, 2 );
138 + add_action( 'manage_boxzilla-box_posts_custom_column', array( $this, 'post_type_column_content' ), 10, 2 );
110 139 add_filter( 'admin_footer_text', array( $this, 'admin_footer_text' ) );
111 140
112 -
113 141 if ( $pagenow === 'plugins.php' ) {
114 142 add_filter( 'plugin_action_links', array( $this, 'add_plugin_settings_link' ), 10, 2 );
115 143 add_filter( 'plugin_row_meta', array( $this, 'add_plugin_meta_links' ), 10, 2 );
116 144 }
@@ -127,10 +155,11 @@
127 155 * @param $column
128 156 * @param $post_id
129 157 */
130 158 public function post_type_column_content( $column, $post_id ) {
131 - if ( method_exists( $this, 'post_type_column_' . $column . '_content' ) ) {
132 - call_user_func( array( $this, 'post_type_column_' . $column . '_content' ), $post_id );
159 + $method_name = 'post_type_column_' . $column . '_content';
160 + if ( method_exists( $this, $method_name ) ) {
161 + call_user_func( array( $this, $method_name ), $post_id );
133 162 }
134 163 }
135 164
136 165 /**
@@ -208,9 +237,9 @@
208 237 /**
209 238 * Shows the extensions page
210 239 */
211 240 public function show_extensions_page() {
212 - $extensions = $this->fetch_extensions();
241 + $extensions = $this->fetch_extensions();
213 242 require __DIR__ . '/views/extensions.php';
214 243 }
215 244
216 245 /**
@@ -264,9 +293,8 @@
264 293 return false;
265 294 }
266 295
267 296 if ( $screen->base === 'edit' && $screen->post_type === 'boxzilla-box' ) {
268 - // load stylesheets
269 297 wp_enqueue_style( 'boxzilla-admin' );
270 298 }
271 299
272 300 if ( $screen->base === 'post' && $screen->post_type === 'boxzilla-box' ) {
@@ -275,16 +303,16 @@
275 303
276 304 // load scripts
277 305 wp_enqueue_script( 'boxzilla-admin' );
278 306
279 - wp_localize_script( 'boxzilla-admin' ,'boxzilla_i18n', array(
280 - 'enterCommaSeparatedValues' => __( 'Enter a comma-separated list of values.', 'boxzilla' ),
281 - 'enterCommaSeparatedPosts' => __( "Enter a comma-separated list of post slugs or post ID's..", 'boxzilla' ),
282 - 'enterCommaSeparatedPages' => __( "Enter a comma-separated list of page slugs or page ID's..", 'boxzilla' ),
283 - 'enterCommaSeparatedPostTypes' => __( "Enter a comma-separated list of post types..", 'boxzilla' ),
284 - 'enterCommaSeparatedRelativeUrls' => __( "Enter a comma-separated list of relative URL's, eg /contact/", 'boxzilla' ),
285 - )
307 + $data = array(
308 + 'enterCommaSeparatedValues' => __( 'Enter a comma-separated list of values.', 'boxzilla' ),
309 + 'enterCommaSeparatedPosts' => __( "Enter a comma-separated list of post slugs or post ID's..", 'boxzilla' ),
310 + 'enterCommaSeparatedPages' => __( "Enter a comma-separated list of page slugs or page ID's..", 'boxzilla' ),
311 + 'enterCommaSeparatedPostTypes' => __( "Enter a comma-separated list of post types..", 'boxzilla' ),
312 + 'enterCommaSeparatedRelativeUrls' => __( "Enter a comma-separated list of relative URL's, eg /contact/", 'boxzilla' ),
286 313 );
314 + wp_localize_script( 'boxzilla-admin' ,'boxzilla_i18n', $data );
287 315
288 316 // load stylesheets
289 317 wp_enqueue_style( 'boxzilla-admin' );
290 318
@@ -292,9 +320,8 @@
292 320 do_action( 'boxzilla_load_admin_assets' );
293 321 }
294 322
295 323 if ( isset( $_GET['page'] ) && $_GET['page'] === 'boxzilla-settings' ) {
296 - // load stylesheets
297 324 wp_enqueue_style( 'boxzilla-admin' );
298 325 }
299 326
300 327 }
@@ -481,9 +508,9 @@
481 508 $url_string = parse_url( $url_string, PHP_URL_PATH );
482 509 }
483 510
484 511 // leading slash it
485 - return '/' . ltrim( $url_string, '/' );
512 + return $url_string;
486 513 }
487 514
488 515 /**
489 516 * @param array $rule
@@ -513,10 +540,8 @@
513 540 if ( is_array( $rule['value'] ) ) {
514 541 $rule['value'] = join( ',', $rule['value'] );
515 542 }
516 543
517 - $rule['qualifier'] = isset( $rule['qualifier'] ) && ! $rule['qualifier'] ? 0 : 1;
518 -
519 544 return $rule;
520 545 }
521 546
522 547 /**
@@ -567,12 +592,14 @@
567 592 $opts = array_replace_recursive( $defaults, $opts );
568 593
569 594 $opts['rules'] = array_map( array( $this, 'sanitize_box_rule' ), $opts['rules'] );
570 595 $opts['css'] = $this->sanitize_box_css( $opts['css'] );
571 - $opts['cookie'] = absint( $opts['cookie'] );
596 + $opts['cookie']['triggered'] = absint( $opts['cookie']['triggered'] );
597 + $opts['cookie']['dismissed'] = absint( $opts['cookie']['dismissed'] );
572 598 $opts['trigger'] = sanitize_text_field( $opts['trigger'] );
573 599 $opts['trigger_percentage'] = absint( $opts['trigger_percentage'] );
574 600 $opts['trigger_element'] = sanitize_text_field( $opts['trigger_element'] );
601 + $opts['screen_size_condition']['value'] = intval( $opts['screen_size_condition']['value'] );
575 602
576 603 return $opts;
577 604 }
578 605
@@ -584,9 +611,9 @@
584 611 *
585 612 * @return array
586 613 */
587 614 public function add_plugin_settings_link( $links, $slug ) {
588 - if ( $slug !== $this->plugin->slug() ) {
615 + if ( $slug !== $this->plugin->slug() || ! is_array( $links ) ) {
589 616 return $links;
590 617 }
591 618
592 619 $settings_link = '<a href="' . admin_url( 'edit.php?post_type=boxzilla-box' ) . '">' . __( 'Boxes' ) . '</a>';
@@ -624,9 +651,9 @@
624 651 public function flush_rules( $post_id ) {
625 652
626 653 // only act on our own post type
627 654 $post = get_post( $post_id );
628 - if ( $post instanceof WP_Post && $post->post_type !== 'boxzilla-box' ) {
655 + if ( ! $post instanceof WP_Post || $post->post_type !== 'boxzilla-box' ) {
629 656 return;
630 657 }
631 658
632 659 // get all published boxes
@@ -664,14 +691,13 @@
664 691 *
665 692 * @return array
666 693 */
667 694 protected function fetch_extensions() {
668 -
695 +
669 696 $extensions = get_transient( 'boxzilla_remote_extensions' );
670 697 if ( $extensions ) {
671 698 return $extensions;
672 699 }
673 -
674 700 $request = wp_remote_get( 'https://api.boxzillaplugin.com/v1/plugins' );
675 701
676 702 if ( is_wp_error( $request ) ) {
677 703 return array();
@@ -680,9 +706,9 @@
680 706 $response = wp_remote_retrieve_body( $request );
681 707 $response = json_decode( $response );
682 708
683 709 if ( is_array( $response->data ) ) {
684 - set_transient( 'boxzilla_remote_extensions', $response->data, HOUR_IN_SECONDS );
710 + set_transient( 'boxzilla_remote_extensions', $response->data, 24 * HOUR_IN_SECONDS );
685 711
686 712 return $response->data;
687 713 }
688 714