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