PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.31
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.31
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
formidable / classes / helpers / FrmTipsHelper.php

FrmTipsHelper.php in Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More 6.31, at classes/helpers/FrmTipsHelper.php

440 lines 10.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 die( 'You are not allowed to call this page directly.' );
4 }
5
6 class FrmTipsHelper {
7
8 /**
9 * @param string $callback
10 * @param string $html
11 *
12 * @return void
13 */
14 public static function pro_tip( $callback, $html = '' ) {
15 if ( FrmAppHelper::pro_is_installed() ) {
16 return;
17 }
18
19 $tips = self::$callback();
20 $tip = self::get_random_tip( $tips );
21
22 self::show_tip( $tip, $html );
23 }
24
25 /**
26 * Shows tip.
27 *
28 * @since 6.0
29 *
30 * @param array $tip {
31 * Tip args.
32 *
33 * @type array $link Tip link data. See the first parameter of {@see FrmAppHelper::admin_upgrade_link()} for more details.
34 * @type string $page The based link of the tip. If this is empty, `https://formidableforms.com/lite-upgrade/` will
35 * be used. Otherwise, `https://formidableforms.com/{$page}` will be used.
36 * @type string $tip Tip text.
37 * @type string $call Call to action text.
38 * }
39 *
40 * @param string $html
41 *
42 * @return void
43 */
44 public static function show_tip( $tip, $html = '' ) {
45 $defaults = array(
46 'page' => '',
47 'class' => 'frm-mt-0',
48 );
49 $tip = array_merge( $defaults, $tip );
50
51 if ( isset( $tip['link'] ) && ! isset( $tip['link']['medium'] ) && ! isset( $tip['link']['campaign'] ) ) {
52 $tip['link']['campaign'] = 'tip';
53 }
54
55 if ( 'p' === $html ) {
56 echo '<p class="frmcenter ' . esc_attr( $tip['class'] ) . '">';
57 }
58
59 $link = self::get_tip_link( $tip );
60 // phpcs:disable Generic.WhiteSpace.ScopeIndent
61 ?>
62 <a href="<?php echo esc_url( $link ); ?>" <?php echo ! empty( $tip['link'] ) ? 'target="_blank"' : ''; ?> class="frm_pro_tip frm-gradient">
63 <span class="frm-tip-badge"><?php esc_html_e( 'PRO TIP', 'formidable' ); ?></span>
64
65 <?php if ( isset( $tip['call'] ) ) { ?>
66 <span class="frm-tip-info">
67 <?php echo esc_html( $tip['tip'] ); ?>
68 </span>
69 <?php } ?>
70 <span class="frm-tip-cta">
71 <?php echo esc_html( $tip['call'] ? $tip['call'] : $tip['tip'] ); ?>
72 </span>
73 </a>
74 <?php
75 // phpcs:enable Generic.WhiteSpace.ScopeIndent
76
77 if ( 'p' === $html ) {
78 echo '</p>';
79 }
80 }
81
82 /**
83 * @since 6.21
84 *
85 * @param array $tip
86 *
87 * @return string
88 */
89 private static function get_tip_link( $tip ) {
90 if ( empty( $tip['tip'] ) ) {
91 return $tip['page'];
92 }
93
94 $cta_link = FrmSalesApi::get_best_sale_value( 'pro_tip_cta_link' );
95
96 if ( $cta_link ) {
97 if ( is_array( $tip['link'] ) ) {
98 return FrmAppHelper::maybe_add_missing_utm( $cta_link, $tip['link'] );
99 }
100
101 return $cta_link;
102 }
103
104 return FrmAppHelper::admin_upgrade_link( $tip['link'], $tip['page'] );
105 }
106
107 /**
108 * Use the correct label for the license.
109 *
110 * @since 6.5.1
111 *
112 * @return string
113 */
114 private static function cta_label() {
115 $cta_text = FrmSalesApi::get_best_sale_value( 'pro_tip_cta_text' );
116
117 if ( $cta_text ) {
118 return $cta_text;
119 }
120
121 return FrmAddonsController::is_license_expired() ? __( 'Renew', 'formidable' ) : __( 'Upgrade to Pro.', 'formidable' );
122 }
123
124 /**
125 * @return array
126 */
127 public static function get_builder_tip() {
128 return array(
129 array(
130 'link' => array(
131 'content' => 'conditional-logic',
132 'param' => 'conditional-logic-wordpress-forms',
133 ),
134 'tip' => __( 'Use conditional logic to shorten your forms and increase conversions.', 'formidable' ),
135 'call' => self::cta_label(),
136 ),
137 array(
138 'link' => array(
139 'content' => 'confirmation-fields',
140 'param' => 'confirmation-fields-wordpress-forms',
141 ),
142 'tip' => __( 'Eliminate input errors with email confirmation fields.', 'formidable' ),
143 'call' => self::cta_label(),
144 ),
145 array(
146 'link' => array(
147 'content' => 'page-breaks',
148 'param' => 'wordpress-multi-page-forms',
149 ),
150 'tip' => __( 'Use page breaks for easier forms.', 'formidable' ),
151 'call' => self::cta_label(),
152 ),
153 array(
154 'link' => array(
155 'content' => 'file-uploads',
156 'param' => 'wordpress-multi-file-upload-fields',
157 ),
158 'tip' => __( 'Skip the follow-ups. Let users upload files.', 'formidable' ),
159 'call' => self::cta_label(),
160 ),
161 array(
162 'link' => array(
163 'content' => 'prefill-fields',
164 'param' => 'auto-fill-forms',
165 ),
166 'tip' => __( 'Save time with autofill forms.', 'formidable' ),
167 'call' => self::cta_label(),
168 ),
169 );
170 }
171
172 /**
173 * @return array
174 */
175 public static function get_form_settings_tip() {
176 return array(
177 array(
178 'link' => array(
179 'content' => 'front-edit-b',
180 'param' => 'wordpress-front-end-editing',
181 ),
182 'tip' => __( 'Make your site dynamic. Enable front-end editing.', 'formidable' ),
183 'call' => self::cta_label(),
184 ),
185 array(
186 'link' => array(
187 'content' => 'save-drafts',
188 'param' => 'save-drafts-wordpress-form',
189 ),
190 'tip' => __( 'Long form? Let users save and finish later', 'formidable' ),
191 'call' => self::cta_label(),
192 ),
193 array(
194 'link' => array(
195 'content' => 'form-scheduling',
196 'param' => 'schedule-forms-wordpress',
197 ),
198 'tip' => __( 'Limit form access with built-in scheduling.', 'formidable' ),
199 'call' => self::cta_label(),
200 ),
201 );
202 }
203
204 /**
205 * @return array
206 */
207 public static function get_form_action_tip() {
208 return array(
209 array(
210 'link' => array(
211 'content' => 'email-routing',
212 'param' => 'virtually-unlimited-emails',
213 ),
214 'tip' => __( 'Save time — route emails to the right person automatically.', 'formidable' ),
215 'call' => self::cta_label(),
216 ),
217 array(
218 'link' => array(
219 'content' => 'create-posts',
220 'param' => 'create-posts-pages-wordpress-forms',
221 ),
222 'tip' => __( 'Create blog posts or pages from the front-end.', 'formidable' ),
223 'call' => self::cta_label(),
224 ),
225 array(
226 'link' => array(
227 'content' => 'user-submit',
228 'param' => 'create-posts-pages-wordpress-forms',
229 ),
230 'tip' => __( 'Let your users submit posts on the front-end.', 'formidable' ),
231 'call' => self::cta_label(),
232 ),
233 array(
234 'link' => array(
235 'content' => 'mailchimp',
236 'page' => 'mailchimp-tip',
237 ),
238 'tip' => __( 'Send leads to Mailchimp for instant email follow-up.', 'formidable' ),
239 'call' => self::cta_label(),
240 ),
241 array(
242 'link' => array(
243 'content' => 'registration',
244 'page' => 'registration-tip',
245 ),
246 'tip' => __( 'Automatically create user accounts.', 'formidable' ),
247 'call' => __( 'Upgrade to boost your site membership.', 'formidable' ),
248 ),
249 array(
250 'link' => array(
251 'content' => 'profile',
252 'page' => 'registration-profile-editing-tip',
253 ),
254 'tip' => __( 'Enable front-end profile editing with User Registration.', 'formidable' ),
255 'call' => self::cta_label(),
256 ),
257 array(
258 'link' => array(
259 'content' => 'twilio-payment',
260 'page' => 'twilio-tip',
261 ),
262 'tip' => __( 'Get SMS alerts for form submissions and payments—just add Twilio.', 'formidable' ),
263 'call' => self::cta_label(),
264 ),
265 array(
266 'link' => array(
267 'content' => 'twilio',
268 'page' => 'twilio-send-tip',
269 ),
270 'tip' => __( 'Use Twilio to send SMS when forms are submitted.', 'formidable' ),
271 'call' => self::cta_label(),
272 ),
273 array(
274 'link' => array(
275 'content' => 'acf-tip',
276 'param' => 'acf-tip',
277 ),
278 'tip' => __( 'Fill Advanced Custom Fields automatically with form entries.', 'formidable' ),
279 'call' => self::cta_label(),
280 ),
281 );
282 }
283
284 /**
285 * @return array
286 */
287 public static function get_styling_tip() {
288 return array(
289 array(
290 'link' => array(
291 'content' => 'style',
292 'param' => 'wordpress-visual-form-styler',
293 ),
294 'tip' => __( 'Make your forms stand out with multiple style templates.', 'formidable' ),
295 'call' => self::cta_label(),
296 ),
297 array(
298 'link' => array(
299 'content' => 'style',
300 'param' => 'bg-image-style-settings',
301 ),
302 'tip' => __( 'Want to add a background image?', 'formidable' ),
303 'call' => self::cta_label(),
304 ),
305 array(
306 'link' => array(
307 'content' => 'style',
308 'param' => 'duplicate-style',
309 ),
310 'tip' => __( 'Want to duplicate a style?', 'formidable' ),
311 'call' => self::cta_label(),
312 ),
313 );
314 }
315
316 /**
317 * @return array
318 */
319 public static function get_entries_tip() {
320 $tips = array(
321 array(
322 'link' => array(
323 'content' => 'entries',
324 'param' => 'form-entry-management-wordpress',
325 ),
326 'tip' => __( 'Edit form entries anytime with entry management.', 'formidable' ),
327 'call' => self::cta_label(),
328 ),
329 array(
330 'link' => array(
331 'content' => 'entries-search',
332 'param' => 'form-entry-management-wordpress',
333 ),
334 'tip' => __( 'Want to search submitted entries?', 'formidable' ),
335 'call' => self::cta_label(),
336 ),
337 array(
338 'link' => array(
339 'content' => 'views',
340 'param' => 'views-display-form-data',
341 ),
342 'tip' => __( 'Turn entries into dynamic content — no code needed.', 'formidable' ),
343 'call' => self::cta_label(),
344 ),
345 );
346
347 return array_merge( $tips, self::get_import_tip() );
348 }
349
350 /**
351 * @return array
352 */
353 public static function get_import_tip() {
354 return array(
355 array(
356 'link' => array(
357 'content' => 'import',
358 'param' => 'importing-exporting-wordpress-forms',
359 ),
360 'tip' => __( 'Want to import entries into your forms?', 'formidable' ),
361 'call' => self::cta_label(),
362 ),
363 );
364 }
365
366 /**
367 * @param array $tips
368 *
369 * @return array
370 */
371 public static function get_random_tip( $tips ) {
372 $count = count( $tips );
373
374 if ( $count === 0 ) {
375 return array();
376 }
377
378 $random = random_int( 0, $count - 1 );
379 return $tips[ $random ];
380 }
381
382 /**
383 * Displays a call-to-action section in the admin area.
384 *
385 * @since 6.7
386 *
387 * @param array $args {
388 * An array of arguments to configure the call-to-action section.
389 *
390 * @type string $title The title of the section.
391 * @type string $description The description of the section.
392 * @type string $link_text The text for the link.
393 * @type string $link_url The URL for the link.
394 * @type string $role The required user role to view the section. Default 'administrator'.
395 * }
396 *
397 * @return void
398 */
399 public static function show_admin_cta( $args ) {
400 $role = ! empty( $args['role'] ) ? $args['role'] : 'administrator';
401
402 if ( ! current_user_can( $role ) ) {
403 // Return early if the user doesn't have the required capability.
404 return;
405 }
406
407 $defaults = array(
408 'title' => '',
409 'description' => '',
410 'link_text' => '',
411 'link_url' => '#',
412 'class' => '',
413 'id' => '',
414 'target' => '_blank',
415 );
416
417 $args = wp_parse_args( $args, $defaults );
418
419 $attributes = array(
420 'class' => trim( 'frm-cta frm-flex frm-p-sm ' . $args['class'] ),
421 );
422
423 if ( $args['id'] ) {
424 $attributes['id'] = $args['id'];
425 }
426
427 require FrmAppHelper::plugin_path() . '/classes/views/shared/admin-cta.php';
428 }
429
430 /**
431 * @deprecated 6.21
432 *
433 * @return array
434 */
435 public static function get_banner_tip() {
436 _deprecated_function( __METHOD__, '6.21' );
437 return array();
438 }
439 }
440