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/class-box.php +205 -213 3.4.113.2 View file →
@@ -3,210 +3,203 @@
3 3 namespace Boxzilla;
4 4
5 5 use WP_Post;
6 6
7 -class Box
8 -{
9 - /**
10 - * @var int
11 - */
12 - public $ID;
7 +class Box {
13 8
14 - /**
15 - * @var array
16 - */
17 - public $options = [];
9 + /**
10 + * @var int
11 + */
12 + public $ID;
18 13
19 - /**
20 - * @var string
21 - */
22 - public $title = '';
14 + /**
15 + * @var array
16 + */
17 + public $options = array();
23 18
24 - /**
25 - * @var string
26 - */
27 - protected $content = '';
19 + /**
20 + * @var string
21 + */
22 + public $title = '';
28 23
29 - /**
30 - * @var bool
31 - */
32 - public $enabled = false;
24 + /**
25 + * @var string
26 + */
27 + protected $content = '';
33 28
29 + /**
30 + * @var bool
31 + */
32 + public $enabled = false;
33 +
34 34 /**
35 35 * @var WP_Post
36 36 */
37 37 private $post;
38 38
39 - /**
40 - * @param WP_Post|int $post
41 - */
42 - public function __construct($post)
43 - {
44 - // fetch post if it hasn't been fetched yet
45 - if (! $post instanceof WP_Post) {
46 - $post_id = $post;
47 - $post = get_post($post_id);
39 + /**
40 + * @param WP_Post|int $post
41 + */
42 + public function __construct( $post ) {
48 43
49 - if ($post === null) {
50 - throw new \InvalidArgumentException(sprintf('No post found with ID %d.', (int) $post_id));
51 - }
52 - }
44 + // fetch post if it hasn't been fetched yet
45 + if( ! $post instanceof WP_Post ) {
46 + $post = get_post( $post );
47 + }
53 48
54 - // store ref to post
55 - $this->post = $post;
49 + // store ref to post
50 + $this->post = $post;
56 51
57 - // store ID in property for quick access
58 - $this->ID = $post->ID;
52 + // store ID in property for quick access
53 + $this->ID = $post->ID;
59 54
60 - // store title in property
61 - $this->title = $post->post_title;
55 + // store title in property
56 + $this->title = $post->post_title;
62 57
63 - // store content in property
64 - $this->content = $post->post_content;
58 + // store content in property
59 + $this->content = $post->post_content;
65 60
66 - // is this box enabled?
67 - $this->enabled = $post->post_status === 'publish';
61 + // is this box enabled?
62 + $this->enabled = ( $post->post_status === 'publish' );
68 63
69 - // load and store options in property
70 - $this->options = $this->load_options();
71 - }
64 + // load and store options in property
65 + $this->options = $this->load_options();
66 + }
72 67
73 - /**
74 - * Get the options for this box.
75 - **
76 - * @return array Array of box options
77 - */
78 - protected function load_options()
79 - {
80 - $defaults = [
81 - 'css' => [
82 - 'background_color' => '',
83 - 'color' => '',
84 - 'width' => '',
85 - 'border_color' => '',
86 - 'border_width' => '',
87 - 'border_style' => '',
88 - 'position' => 'bottom-right',
89 - ],
90 - 'rules' => [
91 - 0 => [
92 - 'condition' => '',
93 - 'value' => '',
94 - ],
95 - ],
96 - 'rules_comparision' => 'any',
97 - 'cookie' => [
98 - 'triggered' => 0,
99 - 'dismissed' => 0,
100 - ],
101 - 'trigger' => 'percentage',
102 - 'trigger_percentage' => 65,
103 - 'trigger_element' => '',
104 - 'trigger_time_on_site' => 0,
105 - 'trigger_time_on_page' => 0,
106 - 'animation' => 'fade',
107 - 'auto_hide' => 0,
108 - 'screen_size_condition' => [
68 + /**
69 + * Get the options for this box.
70 + **
71 + * @return array Array of box options
72 + */
73 + protected function load_options() {
74 +
75 + static $defaults = array(
76 + 'css' => array(
77 + 'background_color' => '',
78 + 'color' => '',
79 + 'width' => '',
80 + 'border_color' => '',
81 + 'border_width' => '',
82 + 'border_style' => '',
83 + 'position' => 'bottom-right',
84 + ),
85 + 'rules' => array(
86 + 0 => array(
87 + 'condition' => '',
88 + 'value' => '',
89 + ),
90 + ),
91 + 'rules_comparision' => 'any',
92 + 'cookie' => array(
93 + 'triggered' => 0,
94 + 'dismissed' => 0,
95 + ),
96 + 'trigger' => 'percentage',
97 + 'trigger_percentage' => 65,
98 + 'trigger_element' => '',
99 + 'trigger_time_on_site' => 0,
100 + 'trigger_time_on_page' => 0,
101 + 'animation' => 'fade',
102 + 'auto_hide' => 0,
103 + 'screen_size_condition' => array(
109 104 'condition' => 'larger',
110 - 'value' => 0,
111 - ],
112 - 'closable' => 1,
113 - 'show_close_icon' => 1,
114 - ];
115 - $box = $this;
105 + 'value' => 0,
106 + ),
107 + 'closable' => 1,
108 + 'show_close_icon' => 1,
109 + );
110 + $box = $this;
116 111
117 - $options = get_post_meta($this->ID, 'boxzilla_options', true);
118 - $options = is_array($options) ? $options : [];
112 + $options = get_post_meta( $this->ID, 'boxzilla_options', true );
113 + $options = is_array( $options ) ? $options : array();
119 114
120 - // merge options with default options
121 - $options = array_replace_recursive($defaults, $options);
122 115
123 - // allow others to filter the final array of options
124 - /**
125 - * Filter the options for a given box
126 - *
127 - * @param array $options
128 - * @param Box $box
129 - */
130 - $options = apply_filters('boxzilla_box_options', $options, $box);
116 + // merge options with default options
117 + $options = array_replace_recursive( $defaults, $options );
131 118
132 - return $options;
133 - }
119 + // allow others to filter the final array of options
120 + /**
121 + * Filter the options for a given box
122 + *
123 + * @param array $options
124 + * @param Box $box
125 + */
126 + $options = apply_filters( 'boxzilla_box_options', $options, $box );
134 127
135 - /**
136 - * @return bool
137 - */
138 - public function is_enabled()
139 - {
140 - return $this->enabled;
141 - }
128 + return $options;
129 + }
142 130
143 - /**
144 - * Get the options for this box
145 - *
146 - * @return array
147 - */
148 - public function get_options()
149 - {
150 - return $this->options;
151 - }
131 + /**
132 + * @return bool
133 + */
134 + public function is_enabled() {
135 + return $this->enabled;
136 + }
152 137
153 - /**
154 - * Get the close / hide icon for this box
155 - *
156 - * @return string
157 - */
158 - public function get_close_icon()
159 - {
160 - if (! $this->options['show_close_icon']) {
161 - return '';
138 + /**
139 + * Get the options for this box
140 + *
141 + * @return array
142 + */
143 + public function get_options() {
144 + return $this->options;
145 + }
146 +
147 + /**
148 + * Get the close / hide icon for this box
149 + *
150 + * @return string
151 + */
152 + public function get_close_icon() {
153 +
154 + if( ! $this->options['show_close_icon'] ) {
155 + return '';
162 156 }
163 157
164 - $box = $this;
165 - $html = '×';
158 + $box = $this;
159 + $html = '×';
166 160
167 - /**
168 - * Filters the HTML for the close icon.
169 - *
170 - * @param string $html
171 - * @param Box $box
172 - */
173 - $close_icon = (string) apply_filters('boxzilla_box_close_icon', $html, $box);
161 + /**
162 + * Filters the HTML for the close icon.
163 + *
164 + * @param string $html
165 + * @param Box $box
166 + */
167 + $close_icon = (string) apply_filters( 'boxzilla_box_close_icon', $html, $box );
174 168
175 - return $close_icon;
176 - }
169 + return $close_icon;
170 + }
177 171
178 - /**
179 - * Get the content of this box
180 - *
181 - * @return string
182 - */
183 - public function get_content()
184 - {
185 - $content = $this->content;
186 - $box = $this;
172 + /**
173 + * Get the content of this box
174 + *
175 + * @return string
176 + */
177 + public function get_content() {
178 + $content = $this->content;
179 + $box = $this;
187 180
188 - // replace boxzilla specific shortcodes
189 - $close_link = "<a href=\"javascript:Boxzilla.dismiss({$this->ID});\">";
181 + // replace boxzilla specific shortcodes
182 + $close_link = sprintf('<a href="javascript:Boxzilla.dismiss(%d);">', $this->ID );
190 183
191 - $replacements = [
192 - '[boxzilla_close]' => $close_link, // accept underscore and dash here for consistency with other shortcode
193 - '[boxzilla-close]' => $close_link,
184 + $replacements = array(
185 + '[boxzilla_close]' => $close_link, // accept underscore and dash here for consistency with other shortcode
186 + '[boxzilla-close]' => $close_link,
194 187 '[/boxzilla_close]' => '</a>',
195 188 '[/boxzilla-close]' => '</a>',
196 - ];
189 + );
197 190
198 - $content = str_replace(array_keys($replacements), array_values($replacements), $content);
191 + $content = str_replace( array_keys( $replacements ), array_values( $replacements ), $content );
199 192
200 193 /**
201 - * Filters the HTML for the box content
202 - *
203 - * @param string $content
204 - * @param Box $box
205 - */
206 - $content = apply_filters('boxzilla_box_content', $content, $box);
207 - return $content;
208 - }
194 + * Filters the HTML for the box content
195 + *
196 + * @param string $content
197 + * @param Box $box
198 + */
199 + $content = apply_filters( 'boxzilla_box_content', $content, $box );
200 + return $content;
201 + }
209 202
210 203 /**
211 204 * Get options object for JS script.
212 205 *
@@ -211,62 +204,61 @@
211 204 * Get options object for JS script.
212 205 *
213 206 * @return array
214 207 */
215 - public function get_client_options()
216 - {
217 - $box = $this;
208 + public function get_client_options() {
209 + $box = $this;
218 210
219 - $trigger = false;
220 - if ($box->options['trigger']) {
221 - $trigger = [
222 - 'method' => $this->options['trigger'],
223 - ];
211 + $trigger = false;
212 + if( $box->options['trigger'] ) {
213 + $trigger = array(
214 + 'method' => $this->options['trigger']
215 + );
224 216
225 - if (isset($this->options[ 'trigger_' . $this->options['trigger'] ])) {
226 - $trigger['value'] = $this->options[ 'trigger_' . $this->options['trigger'] ];
227 - }
228 - }
217 + if( isset( $this->options[ 'trigger_' . $this->options['trigger'] ] ) ) {
218 + $trigger['value'] = $this->options[ 'trigger_' . $this->options['trigger'] ];
219 + }
220 + }
229 221
230 - // build screenWidthCondition object (or null)
231 - $screen_width_condition = null;
232 - if ($box->options['screen_size_condition']['value'] > 0) {
233 - $screen_width_condition = [
222 + // build screenWidthCondition object (or null)
223 + $screen_width_condition = null;
224 + if( $box->options['screen_size_condition']['value'] > 0 ) {
225 + $screen_width_condition = array(
234 226 'condition' => $box->options['screen_size_condition']['condition'],
235 - 'value' => (int) ($box->options['screen_size_condition']['value']),
236 - ];
227 + 'value' => intval( $box->options['screen_size_condition']['value'] ),
228 + );
237 229 }
238 230
239 - $post = $this->post;
240 - $client_options = [
241 - 'id' => $box->ID,
242 - 'icon' => $box->get_close_icon(),
243 - 'content' => '', // we grab this later from an HTML element
244 - 'css' => array_filter($box->options['css']),
245 - 'trigger' => $trigger,
246 - 'animation' => $box->options['animation'],
247 - 'cookie' => [
248 - 'triggered' => absint($box->options['cookie']['triggered']),
249 - 'dismissed' => absint($box->options['cookie']['dismissed']),
250 - ],
251 - 'rehide' => (bool) $box->options['auto_hide'],
252 - 'position' => $box->options['css']['position'],
231 + $client_options = array(
232 + 'id' => $box->ID,
233 + 'icon' => $box->get_close_icon(),
234 + 'content' => $box->get_content(),
235 + 'css' => array_filter( $box->options['css'] ),
236 + 'trigger' => $trigger,
237 + 'animation' => $box->options['animation'],
238 + 'cookie' => array(
239 + 'triggered' => absint( $box->options['cookie']['triggered'] ),
240 + 'dismissed' => absint( $box->options['cookie']['dismissed'] ),
241 + ),
242 + 'rehide' => (bool) $box->options['auto_hide'],
243 + 'position' => $box->options['css']['position'],
253 244 'screenWidthCondition' => $screen_width_condition,
254 - 'closable' => ! ! $box->options['closable'],
255 - 'post' => [
256 - 'id' => $post->ID,
257 - 'title' => $post->post_title,
258 - 'slug' => $post->post_name,
259 - ],
260 - ];
245 + 'closable' => !!$box->options['closable'],
246 + 'post' => array(
247 + 'id' => $this->post->ID,
248 + 'title' => $this->post->post_title,
249 + 'slug' => $this->post->post_name,
250 + ),
251 + );
261 252
262 - /**
263 - * Filter the final options for the JS Boxzilla client.
264 - *
265 - * @param array $client_options
266 - * @param Box $box
267 - */
268 - $client_options = apply_filters('boxzilla_box_client_options', $client_options, $box);
253 + /**
254 + * Filter the final options for the JS Boxzilla client.
255 + *
256 + * @param array $client_options
257 + * @param Box $box
258 + */
259 + $client_options = apply_filters( 'boxzilla_box_client_options', $client_options, $box );
269 260
270 - return $client_options;
271 - }
272 -}
261 + return $client_options;
262 + }
263 +
264 +}