PluginProbe
Boxzilla – WordPress Popup Builder / 3.2
Boxzilla – WordPress Popup Builder v3.2
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 +51 -23 3.0.33.2 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 }
@@ -567,12 +594,14 @@
567 594 $opts = array_replace_recursive( $defaults, $opts );
568 595
569 596 $opts['rules'] = array_map( array( $this, 'sanitize_box_rule' ), $opts['rules'] );
570 597 $opts['css'] = $this->sanitize_box_css( $opts['css'] );
571 - $opts['cookie'] = absint( $opts['cookie'] );
598 + $opts['cookie']['triggered'] = absint( $opts['cookie']['triggered'] );
599 + $opts['cookie']['dismissed'] = absint( $opts['cookie']['dismissed'] );
572 600 $opts['trigger'] = sanitize_text_field( $opts['trigger'] );
573 601 $opts['trigger_percentage'] = absint( $opts['trigger_percentage'] );
574 602 $opts['trigger_element'] = sanitize_text_field( $opts['trigger_element'] );
603 + $opts['screen_size_condition']['value'] = intval( $opts['screen_size_condition']['value'] );
575 604
576 605 return $opts;
577 606 }
578 607
@@ -584,9 +613,9 @@
584 613 *
585 614 * @return array
586 615 */
587 616 public function add_plugin_settings_link( $links, $slug ) {
588 - if ( $slug !== $this->plugin->slug() ) {
617 + if ( $slug !== $this->plugin->slug() || ! is_array( $links ) ) {
589 618 return $links;
590 619 }
591 620
592 621 $settings_link = '<a href="' . admin_url( 'edit.php?post_type=boxzilla-box' ) . '">' . __( 'Boxes' ) . '</a>';
@@ -624,9 +653,9 @@
624 653 public function flush_rules( $post_id ) {
625 654
626 655 // only act on our own post type
627 656 $post = get_post( $post_id );
628 - if ( $post instanceof WP_Post && $post->post_type !== 'boxzilla-box' ) {
657 + if ( ! $post instanceof WP_Post || $post->post_type !== 'boxzilla-box' ) {
629 658 return;
630 659 }
631 660
632 661 // get all published boxes
@@ -664,14 +693,13 @@
664 693 *
665 694 * @return array
666 695 */
667 696 protected function fetch_extensions() {
668 -
697 +
669 698 $extensions = get_transient( 'boxzilla_remote_extensions' );
670 699 if ( $extensions ) {
671 700 return $extensions;
672 701 }
673 -
674 702 $request = wp_remote_get( 'https://api.boxzillaplugin.com/v1/plugins' );
675 703
676 704 if ( is_wp_error( $request ) ) {
677 705 return array();
@@ -680,9 +708,9 @@
680 708 $response = wp_remote_retrieve_body( $request );
681 709 $response = json_decode( $response );
682 710
683 711 if ( is_array( $response->data ) ) {
684 - set_transient( 'boxzilla_remote_extensions', $response->data, HOUR_IN_SECONDS );
712 + set_transient( 'boxzilla_remote_extensions', $response->data, 24 * HOUR_IN_SECONDS );
685 713
686 714 return $response->data;
687 715 }
688 716