PluginProbe ʕ •ᴥ•ʔ
Conditional Fields for Contact Form 7 / trunk
Conditional Fields for Contact Form 7 vtrunk
2.7.8 2.7.7 2.7.6 2.7.5 2.7.4 2.7.3 2.7.2 0.2.4 0.2.5 0.2.6 0.2.7 0.2.8 0.2.9 1.0 1.1 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.4 1.4.1 1.4.2 1.4.3 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.6.1 1.6.2 1.6.3 1.6.5 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.8 1.7.9 1.8 1.8.1 1.8.2 1.8.3 1.8.5 1.8.6 1.8.7 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.15 1.9.16 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.2 2.2.1 2.2.10 2.2.11 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3 2.3.1 2.3.10 2.3.11 2.3.12 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4 2.4.1 2.4.10 2.4.11 2.4.12 2.4.13 2.4.14 2.4.15 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.7 2.7.1 trunk 0.1 0.1.1 0.1.2 0.1.3 0.1.4 0.1.5 0.1.6 0.1.7 0.2 0.2.1 0.2.2 0.2.3
cf7-conditional-fields / admin.php
cf7-conditional-fields Last commit date
js 1 week ago jsdoc-out 1 week ago test-results 2 months ago Wpcf7cfMailParser.php 1 month ago admin-style.css 2 years ago admin-style.css.map 2 years ago admin-style.scss 4 years ago admin.php 2 years ago cf7cf.php 1 week ago conditional-fields.php 1 week ago contact-form-7-conditional-fields.php 1 year ago init.php 1 week ago readme.txt 1 week ago style.css 2 months ago tg_pane_group.php 2 months ago wpcf7cf-options.php 2 months ago
admin.php
254 lines
1 <?php
2
3 add_action( 'admin_enqueue_scripts', 'wpcf7cf_admin_enqueue_scripts', 11 ); // set priority so scripts and styles get loaded later.
4
5 function wpcf7cf_admin_enqueue_scripts( $hook_suffix ) {
6
7 wp_enqueue_script('cf7cf-scripts-admin-all-pages', wpcf7cf_plugin_url( 'js/scripts_admin_all_pages.js' ),array( 'jquery' ), WPCF7CF_VERSION,true);
8
9
10 if ( isset($_GET['page']) && ( $_GET['page'] == 'wpcf7' && isset($_GET['post']) || $_GET['page'] == 'wpcf7-new' ) ) {
11 //only load styles and scripts if this is a CF7 detail page.
12 wpcf7cf_admin_enqueue_form_edit_scripts($hook_suffix);
13 }
14
15 }
16
17 /* fix for std post editor used in Smart Grid */
18 add_action('cf7sg_enqueue_admin_editor_scripts', 'wpcf7cf_admin_enqueue_form_edit_scripts');
19
20 function wpcf7cf_admin_enqueue_form_edit_scripts($hook_suffix){
21 wp_enqueue_script('cf7cf-scripts-admin', wpcf7cf_plugin_url( 'js/scripts_admin.js' ),array('jquery-ui-autocomplete', 'jquery-ui-sortable'), WPCF7CF_VERSION,true);
22 wp_localize_script('cf7cf-scripts-admin', 'wpcf7cf_options_0', wpcf7cf_get_settings());
23 //wp_localize_script('cf7cf-scripts-admin', 'wpcf7cf_newEntryHTML', );
24 }
25
26 add_filter('wpcf7_editor_panels', 'add_conditional_panel');
27
28 function add_conditional_panel($panels) {
29 if ( current_user_can( 'wpcf7_edit_contact_forms' ) ) {
30 $panels['wpcf7cf-conditional-panel'] = array(
31 'title' => __( 'Conditional fields', 'cf7-conditional-fields' ),
32 'callback' => 'wpcf7cf_editor_panel_conditional'
33 );
34 }
35 return $panels;
36 }
37
38 function wpcf7cf_all_field_options($post, $selected = '-1') {
39 $all_fields = $post->scan_form_tags();
40 ?>
41 <option value="-1" <?php echo $selected == '-1'?'selected':'' ?>><?php _e( '-- Select field --', 'cf7-conditional-fields' ); ?></option>
42 <?php
43 foreach ($all_fields as $tag) {
44 if ($tag['type'] == 'group' || $tag['name'] == '') continue;
45 ?>
46 <option value="<?php echo $tag['name']; ?>" <?php echo $selected == $tag['name']?'selected':'' ?>><?php echo $tag['name']; ?></option>
47 <?php
48 }
49 }
50
51 function wpcf7cf_all_group_options($post, $selected = '-1') {
52 $all_groups = $post->scan_form_tags(array('type'=>'group'));
53
54 ?>
55 <option value="-1" <?php echo $selected == '-1'?'selected':'' ?>><?php _e( '-- Select group --', 'cf7-conditional-fields' ); ?></option>
56 <?php
57 foreach ($all_groups as $tag) {
58 ?>
59 <option value="<?php echo $tag['name']; ?>" <?php echo $selected == $tag['name']?'selected':'' ?>><?php echo $tag['name']; ?></option>
60 <?php
61 }
62 }
63
64 if (!function_exists('all_operator_options')) {
65 function all_operator_options($selected = 'equals') {
66 $all_options = array('equals', 'not equals');
67 $all_options = apply_filters('wpcf7cf_get_operators', $all_options);
68 foreach($all_options as $option) {
69 // backwards compat
70 $selected = $selected == '' ? 'less than or equals' : $selected;
71 $selected = $selected == '' ? 'greater than or equals' : $selected;
72 $selected = $selected == '>' ? 'greater than' : $selected;
73 $selected = $selected == '<' ? 'less than' : $selected;
74
75 ?>
76 <option value="<?php echo htmlentities($option) ?>" <?php echo $selected == $option?'selected':'' ?>><?php echo htmlentities($option) ?></option>
77 <?php
78 }
79 }
80 }
81
82 function wpcf7cf_editor_panel_conditional($form) {
83
84 $settings = wpcf7cf_get_settings();
85 $is_text_only = $settings['conditions_ui'] === 'text_only';
86
87 // print_r($settings);
88
89 $form_id = isset($_GET['post']) ? $_GET['post'] : false;
90
91 if ($form_id !== false) {
92 $wpcf7cf_entries = CF7CF::getConditions($form_id);
93 $wpcf7cf_entries = array_values($wpcf7cf_entries);
94 } else {
95 $wpcf7cf_entries = [];
96 }
97
98 ?>
99 <div class="wpcf7cf-inner-container">
100
101 <label class="wpcf7cf-switch" id="wpcf7cf-text-only-switch">
102 <span class="label"><?php _e( 'Text mode', 'cf7-conditional-fields' ); ?></span>
103 <span class="switch">
104 <input type="checkbox" id="wpcf7cf-text-only-checkbox" name="wpcf7cf-text-only-checkbox" value="text_only" <?php echo $is_text_only ? 'checked':''; ?>>
105 <span class="slider round"></span>
106 </span>
107 </label>
108
109 <h2><?php _e( 'Conditional fields', 'cf7-conditional-fields' ); ?></h2>
110
111 <div id="wpcf7cf-entries-ui" style="display:none">
112 <div id="wpcf7cf-entries">
113 </div>
114
115 <span id="wpcf7cf-add-button" title="<?php _e( 'add new rule', 'cf7-conditional-fields' ); ?>"><?php _e( '+ add new conditional rule', 'cf7-conditional-fields'); ?></span>
116
117 <div id="wpcf7cf-a-lot-of-conditions" class="wpcf7cf-notice notice-warning" style="display:none;">
118 <p>
119 <strong><?php _e( 'Wow, That\'s a lot of conditions!', 'cf7-conditional-fields' ); ?></strong><br>
120 <?php
121 // translators: 1. max recommended conditions
122 echo sprintf( __( 'You can only add up to %d conditions using this interface.', 'cf7-conditional-fields' ), WPCF7CF_MAX_RECOMMENDED_CONDITIONS ) . ' ';
123 // translators: 1,2: strong tags, 3. max recommended conditions
124 printf( __( 'Please switch to %1$sText mode%2$s if you want to add more than %3$d conditions.', 'cf7-conditional-fields' ), '<a href="#" class="wpcf7cf-switch-to-txt-link">', '</a>', WPCF7CF_MAX_RECOMMENDED_CONDITIONS ); ?>
125 </p>
126 </div>
127
128 </div>
129
130 <div id="wpcf7cf-text-entries">
131 <div id="wpcf7cf-settings-text-wrap">
132 <textarea id="wpcf7cf-settings-text" name="wpcf7cf-settings-text"><?php echo CF7CF::serializeConditions($wpcf7cf_entries) ?></textarea>
133 <br>
134 </div>
135 </div>
136 </div>
137 <?php
138 }
139
140 // Save conditions and summary field
141 add_action( 'wpcf7_after_save', function($contact_form) {
142
143 if ( ! isset( $_POST ) || empty( $_POST ) || ! isset( $_POST['wpcf7cf-settings-text'] ) ) {
144 return;
145 }
146 $post_id = $contact_form->id();
147 if ( ! $post_id ) {
148 return;
149 }
150
151 // we intentionally don't use sanitize_textarea_field here,
152 // because basically any character is a valid character.
153 // To arm agains SQL injections and other funky junky, the CF7CF::parse_conditions function is used.
154 $conditions_string = stripslashes($_POST['wpcf7cf-settings-text']);
155 $conditions = CF7CF::parse_conditions($conditions_string);
156
157 CF7CF::setConditions($post_id, $conditions);
158
159 if (isset($_POST['wpcf7cf-summary-template'])) {
160 WPCF7CF_Summary::saveSummaryTemplate($_POST['wpcf7cf-summary-template'],$post_id);
161 }
162
163 }, 8, 1 );
164
165 // duplicate conditions on duplicate form part 1.
166 add_filter('wpcf7_copy','wpcf7cf_copy', 10, 2);
167 function wpcf7cf_copy($new_form,$current_form) {
168
169 $id = $current_form->id();
170 $props = $new_form->get_properties();
171 $props['messages']['wpcf7cf_copied'] = $id;
172 $new_form->set_properties($props);
173
174 return $new_form;
175 }
176
177 // duplicate conditions on duplicate form part 2.
178 add_action('wpcf7_after_save','wpcf7cf_after_save',10,1);
179 function wpcf7cf_after_save($contact_form) {
180 $props = $contact_form->get_properties();
181 $original_id = isset($props['messages']['wpcf7cf_copied']) ? $props['messages']['wpcf7cf_copied'] : 0;
182 if ($original_id !== 0) {
183 $post_id = $contact_form->id();
184 unset($props['messages']['wpcf7cf_copied']);
185 $contact_form->set_properties($props);
186 CF7CF::setConditions($post_id, CF7CF::getConditions($original_id));
187 return;
188 }
189 }
190
191 function wpcf7cf_sanitize_options($options) {
192 //$options = array_values($options);
193 $sanitized_options = [];
194 foreach ($options as $option_entry) {
195 $sanitized_option = [];
196 $sanitized_option['then_field'] = sanitize_text_field($option_entry['then_field']);
197 foreach ($option_entry['and_rules'] as $and_rule) {
198 $sanitized_option['and_rules'][] = [
199 'if_field' => sanitize_text_field($and_rule['if_field']),
200 'operator' => $and_rule['operator'],
201 'if_value' => sanitize_text_field($and_rule['if_value']),
202 ];
203 }
204
205 $sanitized_options[] = $sanitized_option;
206 }
207 return $sanitized_options;
208 }
209
210 add_action('admin_notices', function () {
211
212 $settings = wpcf7cf_get_settings();
213
214 $nid = 'install-cf7';
215 if ( !defined('WPCF7_VERSION') ) {
216 if ( current_user_can('update_plugins') ) {
217 ?>
218 <div class="wpcf7cf-admin-notice notice notice-warning" data-notice-id="<?php echo $nid ?>">
219 <p>
220 <strong>Conditional Fields for Contact Form 7</strong> depends on Contact Form 7. Please install <a target="_blank" href="https://downloads.wordpress.org/plugin/contact-form-7.<?php echo WPCF7CF_CF7_MAX_VERSION ?>.zip">Contact Form 7</a>.
221 </p>
222 </div>
223 <?php
224 }
225 return;
226 }
227
228 $nid = 'rollback-cf7-'.WPCF7CF_CF7_MAX_VERSION;
229 if ( version_compare( WPCF7CF_CF7_MAX_VERSION, WPCF7_VERSION, '<' ) && empty($settings['notice_dismissed_'.$nid]) && current_user_can('update_plugins') ) {
230 ?>
231 <div class="wpcf7cf-admin-notice notice notice-warning is-dismissible" data-notice-id="<?php echo $nid ?>" data-nonce="<?php echo wpcf7cf_get_dismiss_notice_nonce() ?>">
232 <p>
233 <strong>Conditional Fields for Contact Form 7</strong> is not yet tested with your current version of Contact Form 7.
234 <br>If you notice any problems with your forms, please roll back to Contact Form 7 <strong>version <?php echo WPCF7CF_CF7_MAX_VERSION ?></strong>.
235 <br>For a quick and safe rollback, we recommend <a href="https://wordpress.org/plugins/wp-rollback/" target="_blank">WP Rollback</a>.
236 </p>
237 </div>
238 <?php
239 }
240
241 $nid = 'update-cf7-'.WPCF7CF_CF7_MAX_VERSION;
242 if ( version_compare( WPCF7CF_CF7_MAX_VERSION, WPCF7_VERSION, '>' ) && empty($settings['notice_dismissed_'.$nid]) && current_user_can('update_plugins') ) {
243 ?>
244 <div class="wpcf7cf-admin-notice notice notice-warning is-dismissible" data-notice-id="<?php echo $nid ?>" data-nonce="<?php echo wpcf7cf_get_dismiss_notice_nonce() ?>">
245 <p>
246 <strong>Conditional Fields for Contact Form 7</strong> is fully compatible and tested with Contact Form 7 version <?php echo WPCF7CF_CF7_MAX_VERSION ?>.
247 <br>Compatibility with other versions of CF7 is not guaranteed, so please install <a target="_blank" href="https://downloads.wordpress.org/plugin/contact-form-7.<?php echo WPCF7CF_CF7_MAX_VERSION ?>.zip">CF7 version <?php echo WPCF7CF_CF7_MAX_VERSION ?></a>
248 </p>
249 </div>
250 <?php
251 }
252
253 });
254