PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.28
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.28
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.28, at classes/helpers/FrmShortcodeHelper.php

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