PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.35
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.35
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 / FrmShortcodeHelper.php

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

149 lines 3.5 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 /**
7 * @since 2.02.12
8 */
9 class FrmShortcodeHelper {
10
11 /**
12 * Get the shortcode attributes in key/value pairs from a string
13 *
14 * @since 2.02.12
15 *
16 * @param string $text
17 *
18 * @return array
19 */
20 public static function get_shortcode_attribute_array( $text ) {
21 $atts = array();
22
23 if ( $text !== '' ) {
24 $atts = shortcode_parse_atts( $text );
25 }
26
27 return is_array( $atts ) ? $atts : array();
28 }
29
30 /**
31 * Returns shortcodes that are shown/hidden based on the context.
32 *
33 * @since 6.16.3
34 *
35 * @return array
36 */
37 public static function get_contextual_shortcodes() {
38 return array(
39 'address' => array(
40 'admin_email' => __( 'Admin email', 'formidable' ),
41 'default-from-email' => __( 'Default from email', 'formidable' ),
42 'default-email' => __( 'Default email', 'formidable' ),
43 ),
44 'body' => array(
45 'default-message' => __( 'Default Msg', 'formidable' ),
46 'default-html' => __( 'Default HTML', 'formidable' ),
47 'default-plain' => __( 'Default Plain', 'formidable' ),
48 ),
49 );
50 }
51
52 /**
53 * Get contextual shortcodes.
54 *
55 * @since 6.16.3
56 *
57 * @return array
58 */
59 public static function get_contextual_shortcode_values() {
60 $contextual_shortcodes = self::get_contextual_shortcodes();
61 return array_merge( $contextual_shortcodes['address'], $contextual_shortcodes['body'] );
62 }
63
64 /**
65 * Get flattened format of contextual shortcodes.
66 *
67 * @since 6.16.3
68 *
69 * @return array
70 */
71 public static function get_contextual_codes() {
72 $result = array();
73
74 foreach ( self::get_contextual_shortcodes() as $type => $shortcodes ) {
75 $result[ $type ] = array_keys( $shortcodes );
76 }
77
78 return $result;
79 }
80
81 /**
82 * Get the name of the shortcode from the regEx
83 *
84 * @since 3.0
85 *
86 * @param array $shortcodes
87 * @param int $short_key The position in the shortcodes array.
88 * @param array $args
89 *
90 * @return string
91 */
92 public static function get_shortcode_tag( $shortcodes, $short_key, $args = array() ) {
93 $args = wp_parse_args(
94 $args,
95 array(
96 'conditional' => false,
97 'conditional_check' => false,
98 'foreach' => false,
99 )
100 );
101
102 if ( ( $args['conditional'] || $args['foreach'] ) && ! $args['conditional_check'] ) {
103 $args['conditional_check'] = true;
104 }
105
106 $prefix = '';
107
108 if ( $args['conditional_check'] ) {
109 if ( $args['conditional'] ) {
110 $prefix = 'if ';
111 } elseif ( $args['foreach'] ) {
112 $prefix = 'foreach ';
113 }
114 }
115
116 $with_tags = $args['conditional_check'] ? 3 : 2;
117
118 if ( empty( $shortcodes[ $with_tags ][ $short_key ] ) ) {
119 return $shortcodes[ $with_tags - 1 ][ $short_key ];
120 }
121
122 $tag = str_replace( '[' . $prefix, '', $shortcodes[0][ $short_key ] );
123 $tag = str_replace( ']', '', $tag );
124 $tag = str_replace( chr( 194 ) . chr( 160 ), ' ', $tag );
125 $tags = preg_split( '/\s+/', $tag, 2 );
126
127 return is_array( $tags ) ? $tags[0] : $tag;
128 }
129
130 /**
131 * @param bool $no_vars
132 * @param string $code
133 * @param string $replace_with
134 * @param string $html
135 *
136 * @return void
137 */
138 public static function remove_inline_conditions( $no_vars, $code, $replace_with, &$html ) {
139 if ( $no_vars ) {
140 $html = str_replace( '[if ' . $code . ']', '', $html );
141 $html = str_replace( '[/if ' . $code . ']', '', $html );
142 } else {
143 $html = preg_replace( '/(\[if\s+' . $code . '\])(.*?)(\[\/if\s+' . $code . '\])/mis', '', $html );
144 }
145
146 $html = str_replace( '[' . $code . ']', $replace_with, $html );
147 }
148 }
149