Version Description
- Added hook: frm_check_blacklist for disabling the comment blacklist spam check
- Make nonce id unique per form
- Make sure there is at least one word before truncation
- Pro: Check conditional logic when importing dependent data from entries data
- Pro: Added number field min and max settings to php validation
- Pro: Added dynamic height to the chosen search field
- Pro: Allow HTML in the message for the frm-entry-update-field shortcode
- Pro: Added title parameter to frm-entry-update-field, frm-entry-edit-link, and frm-entry-delete-link
- Pro: Added end_date parameter to frm-stats shortcode
- Pro: Added hook: frm_display_value_atts
- Pro: Added hook: frm_after_duplicate_entry
- Pro: Added hook: frm_show_it
- Pro: Add nonce check for importing entries
- Pro: Fixed display of files with an icon when editing an entry
Download this release
Release Info
Developer | sswells |
Plugin | Formidable Forms – Form Builder for WordPress |
Version | 1.07.11 |
Comparing to | |
See all releases |
Code changes from version 2.0rc9 to 1.07.11
- classes/controllers/FrmAppController.php +370 -331
- classes/controllers/FrmEntriesController.php +368 -593
- classes/controllers/FrmFieldsController.php +382 -560
- classes/controllers/FrmFormActionsController.php +0 -353
- classes/controllers/FrmFormsController.php +580 -833
- classes/controllers/FrmHooksController.php +0 -200
- classes/controllers/FrmSettingsController.php +60 -41
- classes/controllers/FrmStatisticsController.php +27 -15
- classes/controllers/FrmStylesController.php +0 -434
- classes/controllers/FrmXMLController.php +220 -188
- classes/helpers/FrmAppHelper.php +602 -1473
- classes/helpers/FrmEntriesHelper.php +134 -664
- classes/helpers/FrmEntriesListHelper.php +0 -264
- classes/helpers/FrmFieldsHelper.php +333 -1001
- classes/helpers/FrmFormActionsHelper.php +0 -107
- classes/helpers/FrmFormsHelper.php +189 -475
- classes/helpers/FrmFormsListHelper.php +0 -370
- classes/helpers/FrmListHelper.php +206 -9
- classes/helpers/FrmStylesHelper.php +0 -193
- classes/helpers/FrmXMLHelper.php +118 -775
- classes/models/FrmDb.php +207 -537
- classes/models/FrmEntry.php +337 -565
- classes/models/FrmEntryMeta.php +180 -253
- classes/models/FrmField.php +175 -359
- classes/models/FrmForm.php +176 -392
- classes/models/FrmFormAction.php +0 -529
- classes/models/FrmNotification.php +92 -345
- classes/models/FrmSettings.php +94 -186
- classes/models/FrmStyle.php +0 -437
- classes/recaptchalib.php +274 -0
- classes/views/frm-entries/_sidebar-shared-pub.php +0 -21
- classes/views/frm-entries/direct.php +11 -7
- classes/views/frm-entries/errors.php +31 -42
- classes/views/frm-entries/form.php +33 -30
- classes/views/frm-entries/frm-entry.php +52 -0
- classes/views/frm-entries/list.php +26 -29
- classes/views/frm-entries/new.php +8 -8
- classes/views/frm-entries/no_entries.php +47 -17
- classes/views/frm-entries/show.php +0 -74
- classes/views/frm-entries/sidebar-shared.php +0 -84
- classes/views/frm-entries/sidebar-show.php +0 -38
- classes/views/frm-fields/import_choices.php +58 -30
- classes/views/frm-fields/input.php +65 -114
- classes/views/frm-fields/radio.php +9 -19
- classes/views/frm-fields/show-build.php +0 -64
- classes/views/frm-fields/show.php +1 -4
- classes/views/frm-fields/single-option.php +15 -11
- classes/views/frm-form-actions/_action_inside.php +0 -57
- classes/views/frm-form-actions/_email_settings.php +0 -64
- classes/views/frm-form-actions/default_actions.php +0 -65
- classes/views/frm-form-actions/email_action.php +0 -40
- classes/views/frm-form-actions/form_action.php +0 -40
- classes/views/frm-forms/_publish_box.php +0 -110
- classes/views/frm-forms/add_field.php +233 -252
- classes/views/frm-forms/add_field_links.php +104 -150
- classes/views/frm-forms/default-templates.php +47 -0
- classes/views/frm-forms/edit.php +31 -26
- classes/views/frm-forms/form.php +14 -42
- classes/views/frm-forms/insert_form_popup.php +66 -46
- classes/views/frm-forms/list.php +11 -18
- classes/views/frm-forms/mb_html_tab.php +31 -30
- classes/views/frm-forms/mb_insert_fields.php +20 -4
- classes/views/frm-forms/new-field-js.php +1 -1
- classes/views/frm-forms/new-selection.php +56 -0
- classes/views/frm-forms/new.php +35 -20
- classes/views/frm-forms/notification.php +94 -0
- classes/views/frm-forms/settings.php +129 -189
- classes/views/frm-forms/shortcode_opts.php +0 -41
- classes/views/frm-forms/sidebar-settings.php +31 -9
- classes/views/frm-settings/form.php +112 -121
- classes/views/frm-settings/license_box.php +6 -6
- classes/views/frm-settings/styling_tab.php +4 -0
- classes/views/frm-statistics/list.php +9 -11
- classes/views/frm-statistics/list_displays.php +8 -10
- classes/views/shared/errors.php +4 -16
- classes/views/shared/form-nav.php +1 -15
classes/controllers/FrmAppController.php
CHANGED
@@ -1,443 +1,482 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
}
|
14 |
-
|
15 |
-
$count = count(
|
16 |
-
$pos = (
|
17 |
-
$pos = apply_filters(
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
21 |
}
|
22 |
-
|
23 |
-
public static function load_wp_admin_style()
|
24 |
-
wp_enqueue_style( 'frm_fonts', FrmAppHelper::plugin_url() .'/css/frm_fonts.css', array(), FrmAppHelper::plugin_version()
|
25 |
}
|
26 |
-
|
27 |
-
public static function get_form_nav(
|
28 |
global $pagenow, $frm_vars;
|
29 |
-
|
30 |
-
$show_nav = FrmAppHelper::get_param(
|
31 |
-
if
|
32 |
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
34 |
-
|
35 |
-
$current_page = isset( $_GET['page'] ) ? FrmAppHelper::simple_get( 'page', 'sanitize_title' ) : ( isset( $_GET['post_type'] ) ? FrmAppHelper::simple_get( 'post_type', 'sanitize_title' ) : 'None' );
|
36 |
-
|
37 |
-
if ( $form ) {
|
38 |
-
FrmFormsHelper::maybe_get_form( $form );
|
39 |
-
|
40 |
-
if ( is_object( $form ) ) {
|
41 |
-
$id = $form->id;
|
42 |
-
}
|
43 |
-
}
|
44 |
-
|
45 |
-
if ( ! isset($id) ) {
|
46 |
-
$form = $id = false;
|
47 |
-
}
|
48 |
-
|
49 |
include(FrmAppHelper::plugin_path() .'/classes/views/shared/form-nav.php');
|
50 |
}
|
51 |
|
52 |
// Adds a settings link to the plugins page
|
53 |
-
public static function settings_link($links)
|
54 |
-
$settings = '<a href="'. admin_url(
|
55 |
-
array_unshift(
|
56 |
-
|
57 |
return $links;
|
58 |
}
|
59 |
-
|
60 |
public static function update_action_links( $actions, $plugin ) {
|
61 |
-
|
62 |
-
if (
|
63 |
return $actions;
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
$
|
68 |
-
|
|
|
69 |
if ( ( (int) $db_version < (int) FrmAppHelper::$db_version ) ||
|
70 |
-
(
|
71 |
-
|
72 |
-
return '<a href="'
|
73 |
-
|
|
|
|
|
74 |
}
|
75 |
-
|
76 |
-
return $actions;
|
77 |
}
|
78 |
|
79 |
-
public static function pro_get_started_headline()
|
80 |
-
|
81 |
self::install();
|
82 |
?>
|
83 |
-
<div id="message" class="frm_message updated"><?php _e(
|
84 |
<?php
|
85 |
return;
|
86 |
}
|
87 |
-
|
88 |
// Don't display this error as we're upgrading the thing... cmon
|
89 |
-
if
|
90 |
return;
|
91 |
-
|
92 |
-
|
93 |
-
if ( is_multisite() && ! current_user_can( 'administrator' ) ) {
|
94 |
return;
|
95 |
}
|
96 |
-
|
97 |
-
if
|
98 |
-
$
|
99 |
-
$
|
|
|
100 |
if ( ( (int) $db_version < (int) FrmAppHelper::$db_version ) ||
|
101 |
-
(
|
102 |
-
FrmAppHelper::load_admin_wide_js();
|
103 |
?>
|
104 |
-
<div class="error" id="frm_install_message"><?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
<?php
|
106 |
}
|
107 |
}
|
108 |
-
|
109 |
-
|
110 |
-
if ( $frm_vars['pro_is_authorized'] && ! file_exists( FrmAppHelper::plugin_path() . '/pro/formidable-pro.php' ) ) {
|
111 |
-
FrmAppHelper::load_admin_wide_js();
|
112 |
-
|
113 |
// user is authorized, but running free version
|
114 |
$inst_install_url = 'http://formidablepro.com/knowledgebase/manually-install-formidable-pro/';
|
115 |
?>
|
116 |
-
<div class="error" class="
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
|
|
|
|
127 |
}
|
128 |
}
|
129 |
-
|
130 |
-
public static function admin_js()
|
131 |
global $pagenow;
|
132 |
-
|
133 |
-
|
134 |
-
if ( 'admin-ajax.php' == $pagenow && $action != 'frm_import_choices' ) {
|
135 |
return;
|
136 |
}
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
add_filter( 'admin_body_class', 'FrmAppController::admin_body_class' );
|
158 |
-
|
159 |
-
wp_enqueue_script( 'admin-widgets' );
|
160 |
-
wp_enqueue_style( 'widgets' );
|
161 |
-
wp_enqueue_script( 'formidable' );
|
162 |
-
wp_enqueue_script( 'formidable_admin' );
|
163 |
-
self::localize_script( 'admin' );
|
164 |
-
|
165 |
-
wp_enqueue_style( 'formidable-admin' );
|
166 |
add_thickbox();
|
167 |
-
|
168 |
-
wp_register_script(
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
|
|
|
|
176 |
return;
|
177 |
-
}
|
178 |
$post_type = $post->post_type;
|
179 |
-
}
|
180 |
return;
|
181 |
}
|
182 |
-
|
183 |
-
if
|
184 |
-
|
185 |
-
wp_enqueue_script(
|
186 |
-
|
187 |
-
|
|
|
188 |
}
|
189 |
-
} else if ( $pagenow == 'widgets.php' ) {
|
190 |
-
FrmAppHelper::load_admin_wide_js();
|
191 |
}
|
192 |
}
|
193 |
-
|
194 |
-
public static function admin_body_class(
|
195 |
global $wp_version;
|
196 |
-
|
197 |
//we only need this class on Formidable pages
|
198 |
-
if
|
199 |
$classes .= ' frm_35_trigger';
|
200 |
-
|
201 |
-
|
202 |
return $classes;
|
203 |
}
|
204 |
-
|
205 |
-
public static function wp_admin_body_class(
|
206 |
global $wp_version;
|
207 |
//we need this class everywhere in the admin for the menu
|
208 |
-
if
|
209 |
$classes .= ' frm_38_trigger';
|
210 |
-
|
211 |
-
|
212 |
return $classes;
|
213 |
}
|
214 |
-
|
215 |
-
public static function load_lang()
|
216 |
-
load_plugin_textdomain(
|
217 |
-
}
|
218 |
-
|
219 |
-
/**
|
220 |
-
* Filter shortcodes in text widgets
|
221 |
-
*/
|
222 |
-
public static function widget_text_filter( $content ) {
|
223 |
-
$regex = '/\[\s*(formidable|display-frm-data|frm-stats|frm-graph|frm-entry-links|formresults|frm-search)\s+.*\]/';
|
224 |
-
return preg_replace_callback( $regex, 'FrmAppHelper::widget_text_filter_callback', $content );
|
225 |
-
}
|
226 |
-
|
227 |
-
public static function widget_text_filter_callback( $matches ) {
|
228 |
-
_deprecated_function( __FUNCTION__, '2.0', 'FrmAppHelper::widget_text_filter_callback' );
|
229 |
-
return FrmAppHelper::widget_text_filter_callback( $matches );
|
230 |
}
|
|
|
|
|
|
|
231 |
|
232 |
-
|
233 |
-
|
234 |
-
$old_db_version = get_option(
|
235 |
-
$pro_db_version =
|
236 |
if ( ( (int) $old_db_version < (int) FrmAppHelper::$db_version ) ||
|
237 |
-
(
|
238 |
-
self::install(
|
239 |
}
|
240 |
}
|
241 |
-
|
242 |
$version = FrmAppHelper::plugin_version();
|
243 |
-
wp_register_script(
|
244 |
-
wp_register_script(
|
245 |
-
|
246 |
-
|
|
|
247 |
// don't load this in back-end
|
248 |
return;
|
249 |
}
|
250 |
-
|
251 |
-
self::localize_script(
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
$style = apply_filters(
|
256 |
-
if
|
257 |
-
foreach
|
258 |
-
wp_register_style(
|
259 |
if ( 'all' == $frm_settings->load_style ) {
|
260 |
-
wp_enqueue_style(
|
261 |
}
|
262 |
-
unset(
|
263 |
}
|
264 |
}
|
265 |
-
unset(
|
266 |
-
|
267 |
-
if ( $frm_settings->load_style == 'all' ) {
|
268 |
global $frm_vars;
|
269 |
$frm_vars['css_loaded'] = true;
|
270 |
}
|
271 |
}
|
272 |
-
|
273 |
-
|
274 |
-
* @param string $location
|
275 |
-
*/
|
276 |
-
public static function localize_script($location) {
|
277 |
wp_localize_script('formidable', 'frm_js', array(
|
278 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
279 |
'images_url' => FrmAppHelper::plugin_url() .'/images',
|
280 |
-
'loading' => __(
|
281 |
-
'remove' => __(
|
282 |
-
'offset' => apply_filters(
|
283 |
-
'nonce' => wp_create_nonce( 'frm_ajax' ),
|
284 |
-
'id' => __( 'ID', 'formidable' ),
|
285 |
));
|
286 |
-
|
287 |
-
if
|
288 |
-
$frm_settings
|
289 |
wp_localize_script('formidable_admin', 'frm_admin_js', array(
|
290 |
-
'confirm_uninstall' => __(
|
291 |
-
'
|
292 |
-
'
|
293 |
-
'
|
294 |
-
'saving' => esc_attr(
|
295 |
-
'saved' => esc_attr(
|
296 |
-
'ok' => __(
|
297 |
-
'cancel' => __(
|
298 |
-
'
|
299 |
-
'
|
300 |
-
'
|
301 |
-
'
|
302 |
-
'
|
303 |
-
'confirm' => __(
|
304 |
-
'conf_delete' => __( 'Are you sure you want to delete this field and all data associated with it?', 'formidable' ),
|
305 |
-
'conf_delete_sec' => __( 'WARNING: This will delete all fields inside of the section as well.', 'formidable' ),
|
306 |
-
'conf_no_repeat' => __( 'Warning: If you have entries with multiple rows, all but the first row will be lost.', 'formidable' ),
|
307 |
'default_unique' => $frm_settings->unique_msg,
|
308 |
-
'
|
309 |
-
'
|
310 |
-
'
|
311 |
-
|
312 |
-
'confirm_password' => __( 'Confirm Password', 'formidable' ),
|
313 |
-
'import_complete' => __( 'Import Complete', 'formidable' ),
|
314 |
-
'updating' => __( 'Please wait while your site updates.', 'formidable' ),
|
315 |
-
'no_save_warning' => __( 'Warning: There is no way to retrieve unsaved entries.', 'formidable' ),
|
316 |
-
'jquery_ui_url' => FrmAppHelper::jquery_ui_base_url(),
|
317 |
-
) );
|
318 |
-
}
|
319 |
-
}
|
320 |
-
|
321 |
-
|
322 |
-
public static function custom_stylesheet() {
|
323 |
-
global $frm_vars;
|
324 |
-
$css_file = array();
|
325 |
-
|
326 |
-
if ( ! isset($frm_vars['css_loaded']) || ! $frm_vars['css_loaded'] ) {
|
327 |
-
//include css in head
|
328 |
-
$uploads = FrmStylesHelper::get_upload_base();
|
329 |
-
if ( is_readable( $uploads['basedir'] .'/formidable/css/formidablepro.css' ) ) {
|
330 |
-
$css_file['formidable'] = $uploads['baseurl'] .'/formidable/css/formidablepro.css';
|
331 |
-
} else {
|
332 |
-
$css_file['formidable'] = admin_url( 'admin-ajax.php' ) . '?action=frmpro_css';
|
333 |
-
}
|
334 |
-
}
|
335 |
-
|
336 |
-
if ( isset($frm_vars['datepicker_loaded']) && ! empty($frm_vars['datepicker_loaded']) ) {
|
337 |
-
FrmStylesHelper::enqueue_jquery_css();
|
338 |
}
|
339 |
-
|
340 |
-
return $css_file;
|
341 |
-
}
|
342 |
-
|
343 |
-
public static function load_css() {
|
344 |
-
$css = get_transient( 'frmpro_css' );
|
345 |
-
|
346 |
-
include(FrmAppHelper::plugin_path() .'/css/custom_theme.css.php');
|
347 |
-
wp_die();
|
348 |
}
|
349 |
-
|
350 |
-
public static function footer_js(
|
351 |
-
global $frm_vars;
|
352 |
-
|
353 |
-
$
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
|
|
|
|
|
|
|
|
|
|
361 |
}
|
|
|
|
|
|
|
362 |
}
|
363 |
-
unset( $css );
|
364 |
}
|
365 |
|
366 |
-
if
|
367 |
-
|
368 |
-
wp_enqueue_script( 'formidable' );
|
369 |
-
}
|
370 |
}
|
371 |
-
|
372 |
-
public static function
|
373 |
-
|
374 |
-
|
375 |
-
self::install();
|
376 |
}
|
377 |
-
|
378 |
-
public static function
|
379 |
-
$frmdb = new FrmDb();
|
380 |
-
$frmdb->upgrade( $old_db_version );
|
381 |
-
}
|
382 |
-
|
383 |
-
public static function uninstall() {
|
384 |
check_ajax_referer( 'frm_ajax', 'nonce' );
|
385 |
-
|
386 |
-
if ( current_user_can(
|
387 |
-
$frmdb
|
388 |
$frmdb->uninstall();
|
389 |
echo true;
|
390 |
} else {
|
391 |
-
$frm_settings
|
392 |
-
wp_die(
|
393 |
}
|
394 |
-
|
395 |
}
|
396 |
-
|
397 |
-
public static function drop_tables($tables) {
|
398 |
-
global $wpdb;
|
399 |
-
$tables[] = $wpdb->prefix .'frm_fields';
|
400 |
-
$tables[] = $wpdb->prefix .'frm_forms';
|
401 |
-
$tables[] = $wpdb->prefix .'frm_items';
|
402 |
-
$tables[] = $wpdb->prefix .'frm_item_metas';
|
403 |
-
return $tables;
|
404 |
-
}
|
405 |
-
|
406 |
// Routes for wordpress pages -- we're just replacing content here folks.
|
407 |
-
public static function page_route($content)
|
408 |
-
global $post;
|
409 |
|
410 |
-
$frm_settings
|
411 |
-
if ( $post && $post->ID == $frm_settings->preview_page_id && isset($_GET['form']) ) {
|
412 |
$content = FrmFormsController::page_preview();
|
413 |
}
|
414 |
|
415 |
return $content;
|
416 |
}
|
417 |
-
|
418 |
-
public static function
|
419 |
-
|
420 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
421 |
}
|
422 |
|
423 |
-
public static function
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
431 |
}
|
432 |
-
|
433 |
//formidable shortcode
|
434 |
-
public static function get_form_shortcode(
|
435 |
_deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form_shortcode()' );
|
436 |
-
return FrmFormsController::get_form_shortcode(
|
437 |
}
|
438 |
|
439 |
-
public static function
|
440 |
-
|
441 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
442 |
}
|
443 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package Formidable
|
4 |
+
*/
|
5 |
+
if(!defined('ABSPATH')) die('You are not allowed to call this page directly.');
|
6 |
+
|
7 |
+
if(class_exists('FrmAppController'))
|
8 |
+
return;
|
9 |
+
|
10 |
+
class FrmAppController{
|
11 |
+
public static function load_hooks(){
|
12 |
+
add_action('admin_menu', 'FrmAppController::menu', 1);
|
13 |
+
add_action( 'admin_enqueue_scripts', 'FrmAppController::load_wp_admin_style' );
|
14 |
+
add_filter('plugin_action_links_formidable/formidable.php', 'FrmAppController::settings_link', 10, 2 );
|
15 |
+
add_filter('update_plugin_complete_actions', 'FrmAppController::update_action_links', 10, 2 );
|
16 |
+
add_action('admin_notices', 'FrmAppController::pro_get_started_headline');
|
17 |
+
add_filter('the_content', 'FrmAppController::page_route', 10);
|
18 |
+
add_action('plugins_loaded', 'FrmAppController::load_lang');
|
19 |
+
add_action('init', 'FrmAppController::front_head');
|
20 |
+
add_action('wp_footer', 'FrmAppController::footer_js', 1, 0);
|
21 |
+
add_action('admin_init', 'FrmAppController::admin_js', 11);
|
22 |
+
register_activation_hook(FrmAppHelper::plugin_path().'/formidable.php', 'FrmAppController::install');
|
23 |
+
add_action('wp_ajax_frm_install', 'FrmAppController::install');
|
24 |
+
add_action('wp_ajax_frm_uninstall', 'FrmAppController::uninstall');
|
25 |
+
add_action('wp_ajax_frm_deauthorize', 'FrmAppController::deauthorize');
|
26 |
+
|
27 |
+
// Used to process standalone requests
|
28 |
+
add_action('init', 'FrmAppController::parse_standalone_request', 40);
|
29 |
+
// Update the session data
|
30 |
+
add_action('init', 'FrmAppController::referer_session', 1);
|
31 |
+
}
|
32 |
+
|
33 |
+
public static function menu(){
|
34 |
+
global $frm_vars, $frm_settings;
|
35 |
+
|
36 |
+
if ( current_user_can('administrator') && !current_user_can('frm_view_forms') ) {
|
37 |
+
global $current_user;
|
38 |
+
$frm_roles = FrmAppHelper::frm_capabilities();
|
39 |
+
foreach($frm_roles as $frm_role => $frm_role_description)
|
40 |
+
$current_user->add_cap( $frm_role );
|
41 |
+
unset($frm_roles);
|
42 |
+
unset($frm_role);
|
43 |
+
unset($frm_role_description);
|
44 |
}
|
45 |
+
|
46 |
+
$count = count(get_post_types( array( 'show_ui' => true, '_builtin' => false, 'show_in_menu' => true ) ));
|
47 |
+
$pos = ((int)$count > 0) ? '22.7' : '29.3';
|
48 |
+
$pos = apply_filters('frm_menu_position', $pos);
|
49 |
+
|
50 |
+
if(current_user_can('frm_view_forms')){
|
51 |
+
add_menu_page('Formidable', $frm_settings->menu, 'frm_view_forms', 'formidable', 'FrmFormsController::route', FrmAppHelper::plugin_url() .'/images/form_16.png', $pos);
|
52 |
+
}else if(current_user_can('frm_view_entries') and $frm_vars['pro_is_installed']){
|
53 |
+
add_menu_page('Formidable', $frm_settings->menu, 'frm_view_entries', 'formidable', 'FrmProEntriesController::route', FrmAppHelper::plugin_url() .'/images/form_16.png', $pos);
|
54 |
+
}
|
55 |
+
|
56 |
+
add_filter('admin_body_class', 'FrmAppController::wp_admin_body_class');
|
57 |
}
|
58 |
+
|
59 |
+
public static function load_wp_admin_style(){
|
60 |
+
wp_enqueue_style( 'frm_fonts', FrmAppHelper::plugin_url() .'/css/frm_fonts.css', array(), FrmAppHelper::plugin_version());
|
61 |
}
|
62 |
+
|
63 |
+
public static function get_form_nav($id, $show_nav=false){
|
64 |
global $pagenow, $frm_vars;
|
65 |
+
|
66 |
+
$show_nav = FrmAppHelper::get_param('show_nav', $show_nav);
|
67 |
+
if(!$show_nav)
|
68 |
return;
|
69 |
+
|
70 |
+
$current_page = (isset($_GET['page'])) ? $_GET['page'] : (isset($_GET['post_type']) ? $_GET['post_type'] : 'None');
|
71 |
+
if($id and is_numeric($id)){
|
72 |
+
$frm_form = new FrmForm();
|
73 |
+
$form = $frm_form->getOne($id);
|
74 |
+
unset($frm_form);
|
75 |
+
}else{
|
76 |
+
$form = false;
|
77 |
}
|
78 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
include(FrmAppHelper::plugin_path() .'/classes/views/shared/form-nav.php');
|
80 |
}
|
81 |
|
82 |
// Adds a settings link to the plugins page
|
83 |
+
public static function settings_link($links, $file){
|
84 |
+
$settings = '<a href="'. admin_url('admin.php?page=formidable-settings') .'">' . __('Settings', 'formidable') . '</a>';
|
85 |
+
array_unshift($links, $settings);
|
86 |
+
|
87 |
return $links;
|
88 |
}
|
89 |
+
|
90 |
public static function update_action_links( $actions, $plugin ) {
|
91 |
+
|
92 |
+
if ( 'formidable/formidable.php' != $plugin )
|
93 |
return $actions;
|
94 |
+
|
95 |
+
global $frm_vars;
|
96 |
+
|
97 |
+
$db_version = get_option('frm_db_version');
|
98 |
+
$pro_db_version = $frm_vars['pro_is_installed'] ? get_option('frmpro_db_version') : false;
|
99 |
+
|
100 |
if ( ( (int) $db_version < (int) FrmAppHelper::$db_version ) ||
|
101 |
+
( $frm_vars['pro_is_installed'] && (int) $pro_db_version < (int) FrmAppHelper::$pro_db_version ) ) {
|
102 |
+
|
103 |
+
return sprintf( '<a href="%s">%s</a>', add_query_arg(array('upgraded' => 'true'), menu_page_url( 'formidable', 0 )), __( 'Click here to complete the upgrade', 'formidable' ) );
|
104 |
+
|
105 |
+
} else {
|
106 |
+
return $actions;
|
107 |
}
|
|
|
|
|
108 |
}
|
109 |
|
110 |
+
public static function pro_get_started_headline(){
|
111 |
+
if ( isset($_GET['page']) && 'formidable' == $_GET['page'] && isset( $_REQUEST['upgraded'] ) && 'true' == $_REQUEST['upgraded'] ) {
|
112 |
self::install();
|
113 |
?>
|
114 |
+
<div id="message" class="frm_message updated"><?php _e('Congratulations! Formidable is ready to roll.', 'formidable') ?></div>
|
115 |
<?php
|
116 |
return;
|
117 |
}
|
118 |
+
|
119 |
// Don't display this error as we're upgrading the thing... cmon
|
120 |
+
if(isset($_GET['action']) and $_GET['action'] == 'upgrade-plugin')
|
121 |
return;
|
122 |
+
|
123 |
+
if ( is_multisite() && !current_user_can('administrator') ) {
|
|
|
124 |
return;
|
125 |
}
|
126 |
+
|
127 |
+
if(!isset($_GET['activate'])){
|
128 |
+
global $frm_vars;
|
129 |
+
$db_version = get_option('frm_db_version');
|
130 |
+
$pro_db_version = ($frm_vars['pro_is_installed']) ? get_option('frmpro_db_version') : false;
|
131 |
if ( ( (int) $db_version < (int) FrmAppHelper::$db_version ) ||
|
132 |
+
( $frm_vars['pro_is_installed'] && (int) $pro_db_version < (int) FrmAppHelper::$pro_db_version ) ) {
|
|
|
133 |
?>
|
134 |
+
<div class="error" id="frm_install_message" style="padding:7px;"><?php _e('Your update is not complete yet.<br/>Please deactivate and reactivate the plugin to complete the update or', 'formidable'); ?> <a id="frm_install_link" href="javascript:void(0)"><?php _e('Update Now', 'formidable') ?></a></div>
|
135 |
+
<script type="text/javascript">
|
136 |
+
jQuery(document).ready(function($){ $('#frm_install_link').click(frm_install_now); });
|
137 |
+
function frm_install_now(){
|
138 |
+
jQuery('#frm_install_message').html('<div style="line-height:24px;"><?php _e("Please wait while your site updates.", "formidable") ?><div class="spinner frm_spinner" style="float:left;display:block;"></div></div>');
|
139 |
+
jQuery.ajax({
|
140 |
+
type:"POST",url:ajaxurl,data:"action=frm_install",
|
141 |
+
success:function(msg){jQuery("#frm_install_message").fadeOut("slow");}
|
142 |
+
});
|
143 |
+
}
|
144 |
+
</script>
|
145 |
<?php
|
146 |
}
|
147 |
}
|
148 |
+
|
149 |
+
if ( self::pro_is_authorized() && !self::pro_is_installed()) {
|
|
|
|
|
|
|
150 |
// user is authorized, but running free version
|
151 |
$inst_install_url = 'http://formidablepro.com/knowledgebase/manually-install-formidable-pro/';
|
152 |
?>
|
153 |
+
<div class="error" style="padding:7px;"><?php echo apply_filters('frm_pro_update_msg', sprintf(__('This site has been previously authorized to run Formidable Pro.<br/>%1$sInstall the pro version%2$s or %3$sdeauthorize%4$s this site to continue running the free version and remove this message.', 'formidable'), '<a href="'. $inst_install_url .'" target="_blank">', '</a>', '<a href="javascript:void(0)" onclick="frm_deauthorize_now()" class="frm_deauthorize_link">', '</a>'), $inst_install_url); ?></div>
|
154 |
+
<script type="text/javascript">
|
155 |
+
function frm_deauthorize_now(){
|
156 |
+
if(!confirm("<?php esc_attr_e('Are you sure you want to deauthorize Formidable Pro on this site?', 'formidable') ?>"))
|
157 |
+
return false;
|
158 |
+
jQuery('.frm_deauthorize_link').html('<span class="spinner" style="display:inline-block;margin-top:0;float:none;"></span>');
|
159 |
+
jQuery.ajax({type:'POST',url:ajaxurl,data:'action=frm_deauthorize&nonce='+wp_create_nonce('frm_ajax'),
|
160 |
+
success:function(msg){jQuery('.error').fadeOut('slow');}
|
161 |
+
});
|
162 |
+
return false;
|
163 |
+
}
|
164 |
+
</script>
|
165 |
+
<?php
|
166 |
}
|
167 |
}
|
168 |
+
|
169 |
+
public static function admin_js(){
|
170 |
global $pagenow;
|
171 |
+
|
172 |
+
if ( 'admin-ajax.php' == $pagenow && isset($_GET['action']) && $_GET['action'] != 'frm_import_choices' ) {
|
|
|
173 |
return;
|
174 |
}
|
175 |
+
|
176 |
+
wp_enqueue_script('jquery');
|
177 |
+
wp_enqueue_script('jquery-ui-core');
|
178 |
+
wp_register_script('bootstrap_tooltip', FrmAppHelper::plugin_url() .'/js/bootstrap.min.js', array('jquery'), '3.0.3');
|
179 |
+
|
180 |
+
if ( isset($_GET) && ((isset($_GET['page']) && strpos($_GET['page'], 'formidable') === 0 ) ||
|
181 |
+
($pagenow == 'edit.php' && isset($_GET['post_type']) && $_GET['post_type'] == 'frm_display'))
|
182 |
+
) {
|
183 |
+
$version = FrmAppHelper::plugin_version();
|
184 |
+
add_filter('admin_body_class', 'FrmAppController::admin_body_class');
|
185 |
+
|
186 |
+
wp_enqueue_script('jquery-ui-sortable');
|
187 |
+
wp_enqueue_script('jquery-ui-draggable');
|
188 |
+
wp_enqueue_script('admin-widgets');
|
189 |
+
wp_enqueue_style('widgets');
|
190 |
+
wp_enqueue_script('formidable');
|
191 |
+
wp_enqueue_script('formidable_admin', FrmAppHelper::plugin_url() .'/js/formidable_admin.js', array('formidable', 'jquery', 'jquery-ui-draggable', 'bootstrap_tooltip'), $version, true);
|
192 |
+
self::localize_script('admin');
|
193 |
+
|
194 |
+
wp_enqueue_style('formidable-admin', FrmAppHelper::plugin_url() .'/css/frm_admin.css', array(), $version);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
add_thickbox();
|
196 |
+
|
197 |
+
wp_register_script('formidable-editinplace', FrmAppHelper::plugin_url() .'/js/jquery/jquery.editinplace.packed.js', array('jquery'), '2.3.0');
|
198 |
+
wp_register_script('jquery-frm-themepicker', FrmAppHelper::plugin_url() .'/js/jquery/jquery-ui-themepicker.js', array('jquery'), $version);
|
199 |
+
|
200 |
+
|
201 |
+
}else if($pagenow == 'post.php' or ($pagenow == 'post-new.php' and isset($_REQUEST['post_type']) and $_REQUEST['post_type'] == 'frm_display')){
|
202 |
+
if(isset($_REQUEST['post_type'])){
|
203 |
+
$post_type = $_REQUEST['post_type'];
|
204 |
+
}else if(isset($_REQUEST['post']) and !empty($_REQUEST['post'])){
|
205 |
+
$post = get_post($_REQUEST['post']);
|
206 |
+
if(!$post)
|
207 |
return;
|
|
|
208 |
$post_type = $post->post_type;
|
209 |
+
}else{
|
210 |
return;
|
211 |
}
|
212 |
+
|
213 |
+
if($post_type == 'frm_display'){
|
214 |
+
$version = FrmAppHelper::plugin_version();
|
215 |
+
wp_enqueue_script('jquery-ui-draggable');
|
216 |
+
wp_enqueue_script('formidable_admin', FrmAppHelper::plugin_url() . '/js/formidable_admin.js', array('formidable', 'jquery', 'jquery-ui-draggable', 'bootstrap_tooltip'), $version);
|
217 |
+
wp_enqueue_style('formidable-admin', FrmAppHelper::plugin_url(). '/css/frm_admin.css', array(), $version);
|
218 |
+
self::localize_script('admin');
|
219 |
}
|
|
|
|
|
220 |
}
|
221 |
}
|
222 |
+
|
223 |
+
public static function admin_body_class($classes){
|
224 |
global $wp_version;
|
225 |
+
|
226 |
//we only need this class on Formidable pages
|
227 |
+
if(version_compare( $wp_version, '3.4.9', '>'))
|
228 |
$classes .= ' frm_35_trigger';
|
229 |
+
|
|
|
230 |
return $classes;
|
231 |
}
|
232 |
+
|
233 |
+
public static function wp_admin_body_class($classes){
|
234 |
global $wp_version;
|
235 |
//we need this class everywhere in the admin for the menu
|
236 |
+
if(version_compare( $wp_version, '3.7.2', '>'))
|
237 |
$classes .= ' frm_38_trigger';
|
238 |
+
|
|
|
239 |
return $classes;
|
240 |
}
|
241 |
+
|
242 |
+
public static function load_lang(){
|
243 |
+
load_plugin_textdomain('formidable', false, 'formidable/languages/' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
}
|
245 |
+
|
246 |
+
public static function front_head(){
|
247 |
+
global $frm_settings;
|
248 |
|
249 |
+
if (is_multisite()){
|
250 |
+
global $frm_vars;
|
251 |
+
$old_db_version = get_option('frm_db_version');
|
252 |
+
$pro_db_version = ($frm_vars['pro_is_installed']) ? get_option('frmpro_db_version') : false;
|
253 |
if ( ( (int) $old_db_version < (int) FrmAppHelper::$db_version ) ||
|
254 |
+
( $frm_vars['pro_is_installed'] && (int) $pro_db_version < (int) FrmAppHelper::$pro_db_version ) ) {
|
255 |
+
self::install($old_db_version);
|
256 |
}
|
257 |
}
|
258 |
+
|
259 |
$version = FrmAppHelper::plugin_version();
|
260 |
+
wp_register_script('formidable', FrmAppHelper::plugin_url() . '/js/formidable.min.js', array('jquery'), $version, true);
|
261 |
+
wp_register_script('jquery-placeholder', FrmAppHelper::plugin_url() .'/js/jquery/jquery.placeholder.js', array('jquery'), '2.0.7', true);
|
262 |
+
wp_register_script('recaptcha-ajax', 'http'. (is_ssl() ? 's' : '').'://www.google.com/recaptcha/api/js/recaptcha_ajax.js', '', true);
|
263 |
+
|
264 |
+
if ( is_admin() && !defined('DOING_AJAX') ) {
|
265 |
// don't load this in back-end
|
266 |
return;
|
267 |
}
|
268 |
+
|
269 |
+
self::localize_script('front');
|
270 |
+
|
271 |
+
wp_enqueue_script('jquery');
|
272 |
+
|
273 |
+
$style = apply_filters('get_frm_stylesheet', array('frm-forms' => FrmAppHelper::plugin_url() .'/css/frm_display.css'));
|
274 |
+
if($style){
|
275 |
+
foreach((array)$style as $k => $file){
|
276 |
+
wp_register_style($k, $file, array(), $version);
|
277 |
if ( 'all' == $frm_settings->load_style ) {
|
278 |
+
wp_enqueue_style($k);
|
279 |
}
|
280 |
+
unset($k, $file);
|
281 |
}
|
282 |
}
|
283 |
+
unset($style);
|
284 |
+
|
285 |
+
if ( $frm_settings->load_style == 'all' ) {
|
286 |
global $frm_vars;
|
287 |
$frm_vars['css_loaded'] = true;
|
288 |
}
|
289 |
}
|
290 |
+
|
291 |
+
public static function localize_script($location){
|
|
|
|
|
|
|
292 |
wp_localize_script('formidable', 'frm_js', array(
|
293 |
'ajax_url' => admin_url( 'admin-ajax.php' ),
|
294 |
'images_url' => FrmAppHelper::plugin_url() .'/images',
|
295 |
+
'loading' => __('Loading…'),
|
296 |
+
'remove' => __('Remove', 'formidable'),
|
297 |
+
'offset' => apply_filters('frm_scroll_offset', 4),
|
|
|
|
|
298 |
));
|
299 |
+
|
300 |
+
if($location == 'admin'){
|
301 |
+
global $frm_settings;
|
302 |
wp_localize_script('formidable_admin', 'frm_admin_js', array(
|
303 |
+
'confirm_uninstall' => __('Are you sure you want to do this? Clicking OK will delete all forms, form data, and all other Formidable data. There is no Undo.', 'formidable'),
|
304 |
+
'get_page' => (isset($_GET) && isset($_GET['page'])) ? $_GET['page'] : '',
|
305 |
+
'desc' => __('(Click here to add a description or instructions)', 'formidable'),
|
306 |
+
'blank' => __('(Blank)', 'formidable'),
|
307 |
+
'saving' => esc_attr(__('Saving', 'formidable')),
|
308 |
+
'saved' => esc_attr(__('Saved', 'formidable')),
|
309 |
+
'ok' => __('OK'),
|
310 |
+
'cancel' => __('Cancel', 'formidable'),
|
311 |
+
'clear_default' => __('Clear default value when typing', 'formidable'),
|
312 |
+
'no_clear_default' => __('Do not clear default value when typing', 'formidable'),
|
313 |
+
'valid_default' => __('Default value will pass form validation', 'formidable'),
|
314 |
+
'no_valid_default' => __('Default value will NOT pass form validation', 'formidable'),
|
315 |
+
'deauthorize' => __('Are you sure you want to deactivate Formidable Pro on this site?', 'formidable'),
|
316 |
+
'confirm' => __('Are you sure?', 'formidable'),
|
|
|
|
|
|
|
317 |
'default_unique' => $frm_settings->unique_msg,
|
318 |
+
'import_complete' => __('Import Complete', 'formidable'),
|
319 |
+
'updating' => __('Please wait while your site updates.', 'formidable'),
|
320 |
+
'nonce' => wp_create_nonce('frm_ajax'),
|
321 |
+
));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
322 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
}
|
324 |
+
|
325 |
+
public static function footer_js($location='footer'){
|
326 |
+
global $frm_settings, $frm_vars;
|
327 |
+
|
328 |
+
if($frm_vars['load_css'] and (!is_admin() or defined('DOING_AJAX')) and ($frm_settings->load_style != 'none')){
|
329 |
+
if(isset($frm_vars['css_loaded']) && $frm_vars['css_loaded'])
|
330 |
+
$css = apply_filters('get_frm_stylesheet', array());
|
331 |
+
else
|
332 |
+
$css = apply_filters('get_frm_stylesheet', array('frm-forms' => FrmAppHelper::plugin_url() .'/css/frm_display.css'));
|
333 |
+
|
334 |
+
if(!empty($css)){
|
335 |
+
echo "\n".'<script type="text/javascript">';
|
336 |
+
foreach((array)$css as $css_key => $file){
|
337 |
+
echo 'jQuery("head").append(unescape("%3Clink rel=\'stylesheet\' id=\''. ($css_key + (isset($frm_vars['css_loaded']) ? $frm_vars['css_loaded'] : false)) .'-css\' href=\''. $file. '\' type=\'text/css\' media=\'all\' /%3E"));';
|
338 |
+
//wp_enqueue_style($css_key);
|
339 |
+
unset($css_key);
|
340 |
+
unset($file);
|
341 |
}
|
342 |
+
unset($css);
|
343 |
+
|
344 |
+
echo '</script>'."\n";
|
345 |
}
|
|
|
346 |
}
|
347 |
|
348 |
+
if((!is_admin() or defined('DOING_AJAX')) and $location != 'header' and !empty($frm_vars['forms_loaded'])) //load formidable js
|
349 |
+
FrmAppHelper::load_scripts(array('formidable'));
|
|
|
|
|
350 |
}
|
351 |
+
|
352 |
+
public static function install($old_db_version=false){
|
353 |
+
global $frmdb;
|
354 |
+
$frmdb->upgrade($old_db_version);
|
|
|
355 |
}
|
356 |
+
|
357 |
+
public static function uninstall(){
|
|
|
|
|
|
|
|
|
|
|
358 |
check_ajax_referer( 'frm_ajax', 'nonce' );
|
359 |
+
|
360 |
+
if ( current_user_can('administrator') ) {
|
361 |
+
global $frmdb;
|
362 |
$frmdb->uninstall();
|
363 |
echo true;
|
364 |
} else {
|
365 |
+
global $frm_settings;
|
366 |
+
wp_die($frm_settings->admin_permission);
|
367 |
}
|
368 |
+
die();
|
369 |
}
|
370 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
371 |
// Routes for wordpress pages -- we're just replacing content here folks.
|
372 |
+
public static function page_route($content){
|
373 |
+
global $post, $frm_settings;
|
374 |
|
375 |
+
if( $post && $post->ID == $frm_settings->preview_page_id && isset($_GET['form'])){
|
|
|
376 |
$content = FrmFormsController::page_preview();
|
377 |
}
|
378 |
|
379 |
return $content;
|
380 |
}
|
381 |
+
|
382 |
+
public static function referer_session() {
|
383 |
+
global $frm_settings;
|
384 |
+
|
385 |
+
if ( !isset($frm_settings->track) || !$frm_settings->track || defined('WP_IMPORTING') ) {
|
386 |
+
return;
|
387 |
+
}
|
388 |
+
|
389 |
+
// keep the page history below 100
|
390 |
+
$max = 100;
|
391 |
+
|
392 |
+
if ( !isset($_SESSION) )
|
393 |
+
session_start();
|
394 |
+
|
395 |
+
if ( !isset($_SESSION['frm_http_pages']) or !is_array($_SESSION['frm_http_pages']) )
|
396 |
+
$_SESSION['frm_http_pages'] = array("http://". $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI']);
|
397 |
+
|
398 |
+
if ( !isset($_SESSION['frm_http_referer']) or !is_array($_SESSION['frm_http_referer']) )
|
399 |
+
$_SESSION['frm_http_referer'] = array();
|
400 |
+
|
401 |
+
if (!isset($_SERVER['HTTP_REFERER']) or (isset($_SERVER['HTTP_REFERER']) and (strpos($_SERVER['HTTP_REFERER'], FrmAppHelper::site_url()) === false) and ! (in_array($_SERVER['HTTP_REFERER'], $_SESSION['frm_http_referer'])) )) {
|
402 |
+
if (! isset($_SERVER['HTTP_REFERER'])){
|
403 |
+
$direct = __('Type-in or bookmark', 'formidable');
|
404 |
+
if(!in_array($direct, $_SESSION['frm_http_referer']))
|
405 |
+
$_SESSION['frm_http_referer'][] = $direct;
|
406 |
+
}else{
|
407 |
+
$_SESSION['frm_http_referer'][] = $_SERVER['HTTP_REFERER'];
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
+
if ($_SESSION['frm_http_pages'] and !empty($_SESSION['frm_http_pages']) and (end($_SESSION['frm_http_pages']) != "http://". $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI']))
|
412 |
+
$_SESSION['frm_http_pages'][] = "http://". $_SERVER['SERVER_NAME']. $_SERVER['REQUEST_URI'];
|
413 |
+
|
414 |
+
//keep the page history below the max
|
415 |
+
if(count($_SESSION['frm_http_pages']) > $max){
|
416 |
+
foreach($_SESSION['frm_http_pages'] as $pkey => $ppage){
|
417 |
+
if(count($_SESSION['frm_http_pages']) <= $max)
|
418 |
+
break;
|
419 |
+
|
420 |
+
unset($_SESSION['frm_http_pages'][$pkey]);
|
421 |
+
}
|
422 |
+
}
|
423 |
}
|
424 |
|
425 |
+
public static function parse_standalone_request(){
|
426 |
+
$plugin = FrmAppHelper::get_param('plugin');
|
427 |
+
$action = isset($_REQUEST['frm_action']) ? 'frm_action' : 'action';
|
428 |
+
$action = FrmAppHelper::get_param($action);
|
429 |
+
$controller = FrmAppHelper::get_param('controller');
|
430 |
+
|
431 |
+
if( !empty($plugin) and $plugin == 'formidable' and !empty($controller) ){
|
432 |
+
_deprecated_function( __FUNCTION__, '1.07.02', 'wp_ajax_nopriv()' );
|
433 |
+
|
434 |
+
if($controller == 'forms')
|
435 |
+
FrmFormsController::preview(FrmAppHelper::get_param('form'));
|
436 |
+
else
|
437 |
+
do_action('frm_standalone_route', $controller, $action);
|
438 |
+
|
439 |
+
do_action('frm_ajax_'. $controller .'_'. $action);
|
440 |
+
die();
|
441 |
+
}
|
442 |
}
|
443 |
+
|
444 |
//formidable shortcode
|
445 |
+
public static function get_form_shortcode($atts){
|
446 |
_deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form_shortcode()' );
|
447 |
+
return FrmFormsController::get_form_shortcode($atts);
|
448 |
}
|
449 |
|
450 |
+
public static function widget_text_filter_callback( $matches ) {
|
451 |
+
return do_shortcode( $matches[0] );
|
452 |
+
}
|
453 |
+
|
454 |
+
public static function update_message($features){
|
455 |
+
include(FrmAppHelper::plugin_path() .'/classes/views/shared/update_message.php');
|
456 |
+
}
|
457 |
+
|
458 |
+
public static function get_postbox_class(){
|
459 |
+
if(version_compare( $GLOBALS['wp_version'], '3.3.2', '>'))
|
460 |
+
return 'postbox-container';
|
461 |
+
else
|
462 |
+
return 'inner-sidebar';
|
463 |
+
}
|
464 |
+
|
465 |
+
public static function pro_is_installed(){
|
466 |
+
return file_exists(FrmAppHelper::plugin_path() . '/pro/formidable-pro.php');
|
467 |
+
}
|
468 |
+
|
469 |
+
public static function pro_is_authorized(){
|
470 |
+
return get_site_option('frmpro-authorized');
|
471 |
+
}
|
472 |
+
|
473 |
+
public static function deauthorize(){
|
474 |
+
check_ajax_referer( 'frm_ajax', 'nonce' );
|
475 |
+
|
476 |
+
delete_option('frmpro-credentials');
|
477 |
+
delete_option('frmpro-authorized');
|
478 |
+
delete_site_option('frmpro-credentials');
|
479 |
+
delete_site_option('frmpro-authorized');
|
480 |
+
die();
|
481 |
}
|
482 |
}
|
classes/controllers/FrmEntriesController.php
CHANGED
@@ -1,665 +1,440 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
}
|
21 |
-
|
22 |
-
/* Display in Back End */
|
23 |
-
public static function route() {
|
24 |
-
$action = FrmAppHelper::get_param('frm_action');
|
25 |
-
|
26 |
-
switch ( $action ) {
|
27 |
-
case 'show':
|
28 |
-
case 'destroy':
|
29 |
-
case 'destroy_all':
|
30 |
-
return self::$action();
|
31 |
-
|
32 |
-
default:
|
33 |
-
do_action( 'frm_entry_action_route', $action );
|
34 |
-
if ( apply_filters( 'frm_entry_stop_action_route', false, $action ) ) {
|
35 |
-
return;
|
36 |
-
}
|
37 |
-
|
38 |
-
return self::display_list();
|
39 |
-
}
|
40 |
-
}
|
41 |
-
|
42 |
-
public static function contextual_help($help, $screen_id, $screen) {
|
43 |
-
// Only add to certain screens. add_help_tab was introduced in WordPress 3.3
|
44 |
-
if ( $screen_id != 'formidable_page_formidable-entries' || ! method_exists( $screen, 'add_help_tab' ) ) {
|
45 |
-
return $help;
|
46 |
-
}
|
47 |
-
|
48 |
-
$action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' );
|
49 |
-
$page = FrmAppHelper::simple_get( 'page', 'sanitize_title' );
|
50 |
-
if ( $page != 'formidable-entries' || ( ! empty( $action ) && $action != 'list' ) ) {
|
51 |
-
return $help;
|
52 |
-
}
|
53 |
-
unset( $action, $page );
|
54 |
-
|
55 |
-
$screen->add_help_tab( array(
|
56 |
-
'id' => 'formidable-entries-tab',
|
57 |
-
'title' => __( 'Overview', 'formidable' ),
|
58 |
-
'content' => '<p>' . esc_html__( 'This screen provides access to all of your entries. You can customize the display of this screen to suit your workflow.', 'formidable' ) .'</p> <p>'. esc_html__( 'Hovering over a row in the entries list will display action links that allow you to manage your entry.', 'formidable' ) . '</p>',
|
59 |
-
));
|
60 |
-
|
61 |
-
$screen->set_help_sidebar(
|
62 |
-
'<p><strong>' . esc_html__( 'For more information:', 'formidable' ) . '</strong></p>' .
|
63 |
-
'<p><a href="http://formidablepro.com/knowledgebase/manage-entries-from-the-back-end/" target="_blank">' . esc_html__( 'Documentation on Entries', 'formidable' ) . '</a></p>' .
|
64 |
-
'<p><a href="http://formidablepro.com/help-topics/" target="_blank">' . esc_html__( 'Support', 'formidable' ) . '</a></p>'
|
65 |
-
);
|
66 |
-
|
67 |
-
return $help;
|
68 |
-
}
|
69 |
-
|
70 |
-
public static function manage_columns($columns) {
|
71 |
-
global $frm_vars, $wpdb;
|
72 |
-
$form_id = FrmEntriesHelper::get_current_form_id();
|
73 |
-
|
74 |
-
$columns[ $form_id .'_id' ] = 'ID';
|
75 |
-
$columns[ $form_id . '_item_key' ] = esc_html__( 'Entry Key', 'formidable' );
|
76 |
-
|
77 |
-
if ( ! $form_id ) {
|
78 |
-
return $columns;
|
79 |
-
}
|
80 |
-
|
81 |
-
$form_cols = FrmField::get_all_for_form($form_id, '', 'include');
|
82 |
-
|
83 |
-
foreach ( $form_cols as $form_col ) {
|
84 |
-
if ( FrmFieldsHelper::is_no_save_field($form_col->type) ) {
|
85 |
-
continue;
|
86 |
-
}
|
87 |
-
|
88 |
-
if ( $form_col->type == 'form' && isset( $form_col->field_options['form_select'] ) && ! empty( $form_col->field_options['form_select'] ) ) {
|
89 |
-
$sub_form_cols = FrmField::get_all_for_form( $form_col->field_options['form_select'] );
|
90 |
-
|
91 |
-
if ( $sub_form_cols ) {
|
92 |
-
foreach ( $sub_form_cols as $k => $sub_form_col ) {
|
93 |
-
if ( in_array( $sub_form_col->type, FrmFieldsHelper::no_save_fields() ) ) {
|
94 |
-
unset( $sub_form_cols[ $k ] );
|
95 |
-
continue;
|
96 |
-
}
|
97 |
-
$columns[ $form_id . '_' . $sub_form_col->field_key . '-_-' . $form_col->id ] = FrmAppHelper::truncate( $sub_form_col->name, 35 );
|
98 |
-
unset($sub_form_col);
|
99 |
-
}
|
100 |
-
}
|
101 |
-
unset($sub_form_cols);
|
102 |
-
} else {
|
103 |
-
$col_id = $form_col->field_key;
|
104 |
-
if ( $form_col->form_id != $form_id ) {
|
105 |
-
$col_id .= '-_-form'. $form_col->form_id;
|
106 |
-
}
|
107 |
-
|
108 |
-
if ( isset($form_col->field_options['separate_value']) && $form_col->field_options['separate_value'] ) {
|
109 |
-
$columns[ $form_id .'_frmsep_'. $col_id ] = FrmAppHelper::truncate( $form_col->name, 35 );
|
110 |
-
}
|
111 |
-
$columns[ $form_id .'_'. $col_id ] = FrmAppHelper::truncate( $form_col->name, 35 );
|
112 |
-
}
|
113 |
-
}
|
114 |
-
|
115 |
-
$columns[ $form_id .'_created_at' ] = __( 'Entry creation date', 'formidable' );
|
116 |
-
$columns[ $form_id .'_updated_at' ] = __( 'Entry update date', 'formidable' );
|
117 |
-
$columns[ $form_id .'_ip' ] = 'IP';
|
118 |
-
|
119 |
-
$frm_vars['cols'] = $columns;
|
120 |
-
|
121 |
-
$action = FrmAppHelper::simple_get( 'frm_action', 'sanitize_title' );
|
122 |
-
if ( FrmAppHelper::is_admin_page( 'formidable-entries' ) && ( $action == 'list' || $action == 'destroy' ) ) {
|
123 |
-
add_screen_option( 'per_page', array( 'label' => __( 'Entries', 'formidable' ), 'default' => 20, 'option' => 'formidable_page_formidable_entries_per_page' ) );
|
124 |
-
}
|
125 |
-
|
126 |
-
return $columns;
|
127 |
-
}
|
128 |
-
|
129 |
-
public static function check_hidden_cols($check, $object_id, $meta_key, $meta_value, $prev_value) {
|
130 |
-
$frm_settings = FrmAppHelper::get_settings();
|
131 |
-
if ( $meta_key != 'manage'. sanitize_title($frm_settings->menu) .'_page_formidable-entriescolumnshidden' || $meta_value == $prev_value ) {
|
132 |
-
return $check;
|
133 |
-
}
|
134 |
-
|
135 |
-
if ( empty($prev_value) ) {
|
136 |
-
$prev_value = get_metadata('user', $object_id, $meta_key, true);
|
137 |
-
}
|
138 |
-
|
139 |
-
global $frm_vars;
|
140 |
-
//add a check so we don't create a loop
|
141 |
-
$frm_vars['prev_hidden_cols'] = ( isset($frm_vars['prev_hidden_cols']) && $frm_vars['prev_hidden_cols'] ) ? false : $prev_value;
|
142 |
-
|
143 |
-
return $check;
|
144 |
-
}
|
145 |
-
|
146 |
-
//add hidden columns back from other forms
|
147 |
-
public static function update_hidden_cols($meta_id, $object_id, $meta_key, $meta_value ) {
|
148 |
-
$frm_settings = FrmAppHelper::get_settings();
|
149 |
-
|
150 |
-
$sanitized = sanitize_title($frm_settings->menu);
|
151 |
-
if ( $meta_key != 'manage'. $sanitized .'_page_formidable-entriescolumnshidden' ) {
|
152 |
-
return;
|
153 |
-
}
|
154 |
-
|
155 |
-
global $frm_vars;
|
156 |
-
if ( ! isset($frm_vars['prev_hidden_cols']) || ! $frm_vars['prev_hidden_cols'] ) {
|
157 |
-
return; //don't continue if there's no previous value
|
158 |
-
}
|
159 |
-
|
160 |
-
foreach ( $meta_value as $mk => $mv ) {
|
161 |
-
//remove blank values
|
162 |
-
if ( empty( $mv ) ) {
|
163 |
-
unset( $meta_value[ $mk ] );
|
164 |
-
}
|
165 |
-
}
|
166 |
-
|
167 |
-
$cur_form_prefix = reset($meta_value);
|
168 |
-
$cur_form_prefix = explode('_', $cur_form_prefix);
|
169 |
-
$cur_form_prefix = $cur_form_prefix[0];
|
170 |
-
$save = false;
|
171 |
-
|
172 |
-
foreach ( (array) $frm_vars['prev_hidden_cols'] as $prev_hidden ) {
|
173 |
-
if ( empty( $prev_hidden ) || in_array( $prev_hidden, $meta_value ) ) {
|
174 |
-
//don't add blank cols or process included cols
|
175 |
-
continue;
|
176 |
-
}
|
177 |
-
|
178 |
-
$form_prefix = explode( '_', $prev_hidden );
|
179 |
-
$form_prefix = $form_prefix[0];
|
180 |
-
if ( $form_prefix == $cur_form_prefix ) {
|
181 |
-
//don't add back columns that are meant to be hidden
|
182 |
-
continue;
|
183 |
-
}
|
184 |
-
|
185 |
-
$meta_value[] = $prev_hidden;
|
186 |
-
$save = true;
|
187 |
-
unset($form_prefix);
|
188 |
-
}
|
189 |
-
|
190 |
-
if ( $save ) {
|
191 |
-
$user = wp_get_current_user();
|
192 |
-
update_user_option( $user->ID, 'manage'. $sanitized .'_page_formidable-entriescolumnshidden', $meta_value, true );
|
193 |
-
}
|
194 |
-
}
|
195 |
-
|
196 |
-
public static function save_per_page($save, $option, $value) {
|
197 |
-
if ( $option == 'formidable_page_formidable_entries_per_page' ) {
|
198 |
-
$save = (int) $value;
|
199 |
-
}
|
200 |
-
return $save;
|
201 |
-
}
|
202 |
-
|
203 |
-
public static function sortable_columns() {
|
204 |
-
$form_id = FrmEntriesHelper::get_current_form_id();
|
205 |
-
|
206 |
-
$fields = FrmField::get_all_for_form( $form_id );
|
207 |
-
|
208 |
-
$columns = array(
|
209 |
-
$form_id .'_id' => 'id',
|
210 |
-
$form_id .'_created_at' => 'created_at',
|
211 |
-
$form_id .'_updated_at' => 'updated_at',
|
212 |
-
$form_id .'_ip' => 'ip',
|
213 |
-
$form_id .'_item_key' => 'item_key',
|
214 |
-
$form_id .'_is_draft' => 'is_draft',
|
215 |
-
);
|
216 |
-
|
217 |
-
foreach ( $fields as $field ) {
|
218 |
-
if ( $field->type != 'checkbox' && ( ! isset($field->field_options['post_field']) || $field->field_options['post_field'] == '' ) ) {
|
219 |
-
// Can't sort on checkboxes because they are stored serialized, or post fields
|
220 |
-
$columns[ $form_id .'_'. $field->field_key ] = 'meta_'. $field->id;
|
221 |
-
}
|
222 |
-
}
|
223 |
-
|
224 |
-
return $columns;
|
225 |
}
|
226 |
-
|
227 |
-
public static function
|
228 |
-
global $frm_vars;
|
229 |
-
|
230 |
-
$form_id = FrmEntriesHelper::get_current_form_id();
|
231 |
-
|
232 |
-
$return = false;
|
233 |
-
foreach ( (array) $result as $r ) {
|
234 |
-
if ( ! empty( $r ) ) {
|
235 |
-
$form_prefix = explode( '_', $r );
|
236 |
-
$form_prefix = $form_prefix[0];
|
237 |
-
|
238 |
-
if ( (int) $form_prefix == (int) $form_id ) {
|
239 |
-
$return = true;
|
240 |
-
break;
|
241 |
-
}
|
242 |
-
|
243 |
-
unset($form_prefix);
|
244 |
-
}
|
245 |
-
}
|
246 |
-
|
247 |
-
if ( $return ) {
|
248 |
-
return $result;
|
249 |
-
}
|
250 |
-
|
251 |
-
$i = isset($frm_vars['cols']) ? count($frm_vars['cols']) : 0;
|
252 |
-
$max_columns = 8;
|
253 |
-
if ( $i <= $max_columns ) {
|
254 |
-
return $result;
|
255 |
-
}
|
256 |
-
|
257 |
global $frm_vars;
|
258 |
-
if
|
259 |
-
|
260 |
-
}
|
261 |
-
|
262 |
-
if ( isset($frm_vars['current_form']) && $frm_vars['current_form'] && isset($frm_vars['current_form']->options['hidden_cols']) && ! empty($frm_vars['current_form']->options['hidden_cols']) ) {
|
263 |
-
$result = $frm_vars['current_form']->options['hidden_cols'];
|
264 |
-
} else {
|
265 |
-
$cols = $frm_vars['cols'];
|
266 |
-
$cols = array_reverse($cols, true);
|
267 |
-
|
268 |
-
$result[] = $form_id .'_id';
|
269 |
-
$i--;
|
270 |
-
|
271 |
-
$result[] = $form_id .'_item_key';
|
272 |
-
$i--;
|
273 |
-
|
274 |
-
foreach ( $cols as $col_key => $col ) {
|
275 |
-
if ( $i > $max_columns ) {
|
276 |
-
$result[] = $col_key;
|
277 |
-
}
|
278 |
-
//remove some columns by default
|
279 |
-
$i--;
|
280 |
-
unset($col_key, $col);
|
281 |
-
}
|
282 |
-
}
|
283 |
-
|
284 |
-
return $result;
|
285 |
-
}
|
286 |
-
|
287 |
-
public static function display_list( $message = '', $errors = array() ) {
|
288 |
-
global $wpdb, $frm_vars;
|
289 |
-
|
290 |
-
$form = FrmEntriesHelper::get_current_form();
|
291 |
-
$params = FrmEntriesHelper::get_admin_params( $form );
|
292 |
-
|
293 |
-
if ( $form ) {
|
294 |
-
$params['form'] = $form->id;
|
295 |
-
$frm_vars['current_form'] = $form;
|
296 |
-
|
297 |
-
if ( 'trash' == $form->status ) {
|
298 |
-
$delete_timestamp = time() - ( DAY_IN_SECONDS * EMPTY_TRASH_DAYS );
|
299 |
-
$time_to_delete = FrmAppHelper::human_time_diff( $delete_timestamp, ( isset( $form->options['trash_time'] ) ? ( $form->options['trash_time'] ) : time() ) );
|
300 |
-
$errors['trash'] = sprintf( __( 'This form is in the trash and is scheduled to be deleted permanently in %s along with any entries.', 'formidable' ), $time_to_delete );
|
301 |
-
unset( $time_to_delete, $delete_timestamp );
|
302 |
-
}
|
303 |
-
}
|
304 |
-
|
305 |
-
$table_class = apply_filters( 'frm_entries_list_class', 'FrmEntriesListHelper' );
|
306 |
-
|
307 |
-
$wp_list_table = new $table_class( array( 'params' => $params ) );
|
308 |
-
|
309 |
-
$pagenum = $wp_list_table->get_pagenum();
|
310 |
-
|
311 |
-
$wp_list_table->prepare_items();
|
312 |
-
|
313 |
-
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
|
314 |
-
if ( $pagenum > $total_pages && $total_pages > 0 ) {
|
315 |
-
$url = add_query_arg( 'paged', $total_pages );
|
316 |
-
if ( headers_sent() ) {
|
317 |
-
echo FrmAppHelper::js_redirect($url);
|
318 |
-
} else {
|
319 |
-
wp_redirect($url);
|
320 |
-
}
|
321 |
-
die();
|
322 |
-
}
|
323 |
-
|
324 |
-
if ( empty($message) && isset($_GET['import-message']) ) {
|
325 |
-
$message = __( 'Your import is complete', 'formidable' );
|
326 |
-
}
|
327 |
-
|
328 |
-
require(FrmAppHelper::plugin_path() .'/classes/views/frm-entries/list.php');
|
329 |
-
}
|
330 |
-
|
331 |
-
/* Back End CRUD */
|
332 |
-
public static function show($id = false) {
|
333 |
-
FrmAppHelper::permission_check('frm_view_entries');
|
334 |
-
|
335 |
-
if ( ! $id ) {
|
336 |
-
$id = FrmAppHelper::get_param('id');
|
337 |
-
|
338 |
-
if ( ! $id ) {
|
339 |
-
$id = FrmAppHelper::get_param('item_id');
|
340 |
-
}
|
341 |
}
|
342 |
-
|
343 |
-
$entry = FrmEntry::getOne($id, true);
|
344 |
-
|
345 |
-
$data = maybe_unserialize($entry->description);
|
346 |
-
if ( ! is_array( $data ) || ! isset( $data['referrer'] ) ) {
|
347 |
-
$data = array( 'referrer' => $data );
|
348 |
-
}
|
349 |
-
|
350 |
-
$fields = FrmField::get_all_for_form( $entry->form_id, '', 'include' );
|
351 |
-
$to_emails = array();
|
352 |
-
|
353 |
-
include(FrmAppHelper::plugin_path() .'/classes/views/frm-entries/show.php');
|
354 |
-
}
|
355 |
-
|
356 |
-
public static function destroy() {
|
357 |
-
FrmAppHelper::permission_check('frm_delete_entries');
|
358 |
-
|
359 |
-
$params = FrmEntriesHelper::get_admin_params();
|
360 |
-
|
361 |
-
if ( isset($params['keep_post']) && $params['keep_post'] ) {
|
362 |
-
//unlink entry from post
|
363 |
-
global $wpdb;
|
364 |
-
$wpdb->update( $wpdb->prefix .'frm_items', array( 'post_id' => '' ), array( 'id' => $params['id'] ) );
|
365 |
-
}
|
366 |
-
|
367 |
-
$message = '';
|
368 |
-
if ( FrmEntry::destroy( $params['id'] ) ) {
|
369 |
-
$message = __( 'Entry was Successfully Destroyed', 'formidable' );
|
370 |
-
}
|
371 |
-
|
372 |
-
self::display_list( $message );
|
373 |
}
|
374 |
-
|
375 |
-
public static function
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
$action = FrmFormActionsHelper::get_action_for_form( $form_id, 'wppost', 1 );
|
390 |
-
|
391 |
-
if ( $action ) {
|
392 |
-
// this action takes a while, so only trigger it if there are posts to delete
|
393 |
-
foreach ( $entry_ids as $entry_id ) {
|
394 |
-
do_action( 'frm_before_destroy_entry', $entry_id );
|
395 |
-
unset( $entry_id );
|
396 |
-
}
|
397 |
-
}
|
398 |
-
|
399 |
-
$wpdb->query( $wpdb->prepare( "DELETE em.* FROM {$wpdb->prefix}frm_item_metas as em INNER JOIN {$wpdb->prefix}frm_items as e on (em.item_id=e.id) and form_id=%d", $form_id ) );
|
400 |
-
$results = $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}frm_items WHERE form_id=%d", $form_id ) );
|
401 |
-
if ( $results ) {
|
402 |
-
$message = __( 'Entries were Successfully Destroyed', 'formidable' );
|
403 |
-
}
|
404 |
-
} else {
|
405 |
-
$errors = __( 'No entries were specified', 'formidable' );
|
406 |
-
}
|
407 |
-
|
408 |
-
self::display_list( $message, $errors );
|
409 |
}
|
410 |
-
|
411 |
-
public static function show_form(
|
412 |
_deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::show_form()' );
|
413 |
-
return FrmFormsController::show_form(
|
414 |
}
|
415 |
-
|
416 |
-
public static function get_form(
|
417 |
_deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form()' );
|
418 |
-
return FrmFormsController::get_form(
|
419 |
}
|
420 |
-
|
421 |
-
public static function process_entry(
|
422 |
-
|
423 |
-
if ( FrmAppHelper::is_admin() || empty( $_POST ) || empty( $form_id ) || ! isset( $_POST['item_key'] ) ) {
|
424 |
return;
|
425 |
-
}
|
426 |
-
|
427 |
-
global $frm_vars;
|
428 |
|
429 |
-
|
430 |
-
|
|
|
|
|
|
|
431 |
return;
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
if ( ! isset( $frm_vars['form_params'] ) ) {
|
437 |
$frm_vars['form_params'] = array();
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
if ( isset( $frm_vars['created_entries'][ $form_id ] ) ) {
|
442 |
return;
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
if ( empty( $errors ) ) {
|
451 |
$_POST['frm_skip_cookie'] = 1;
|
452 |
-
if
|
453 |
-
|
454 |
-
|
455 |
-
}
|
456 |
}
|
457 |
-
|
458 |
-
do_action(
|
459 |
-
unset(
|
460 |
}
|
461 |
}
|
462 |
-
|
463 |
-
public static function delete_entry_before_redirect(
|
464 |
-
self::_delete_entry(
|
465 |
return $url;
|
466 |
}
|
467 |
-
|
468 |
//Delete entry if not redirected
|
469 |
-
public static function delete_entry_after_save(
|
470 |
-
self::_delete_entry(
|
471 |
}
|
472 |
-
|
473 |
-
private static function _delete_entry(
|
474 |
-
if
|
475 |
return;
|
476 |
-
|
477 |
-
|
478 |
-
$form->options
|
479 |
-
|
480 |
-
|
481 |
}
|
482 |
}
|
483 |
-
|
484 |
-
public static function show_entry_shortcode(
|
485 |
-
$atts = shortcode_atts(
|
486 |
'id' => false, 'entry' => false, 'fields' => false, 'plain_text' => false,
|
487 |
'user_info' => false, 'include_blank' => false, 'default_email' => false,
|
488 |
'form_id' => false, 'format' => 'text', 'direction' => 'ltr',
|
489 |
'font_size' => '', 'text_color' => '',
|
490 |
'border_width' => '', 'border_color' => '',
|
491 |
-
'bg_color' => '', 'alt_bg_color' => '',
|
492 |
-
), $atts
|
493 |
-
|
494 |
-
|
|
|
495 |
//format options are text, array, or json
|
496 |
-
$
|
497 |
-
}
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
if ( ! $atts['entry'] || ! is_object( $atts['entry'] ) ) {
|
505 |
-
if ( ! $atts['id'] && ! $atts['default_email'] ) {
|
506 |
-
return;
|
507 |
}
|
508 |
-
|
509 |
-
if
|
510 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
511 |
}
|
512 |
-
}
|
513 |
-
|
514 |
-
if ( $atts['entry'] ) {
|
515 |
-
$atts['form_id'] = $atts['entry']->form_id;
|
516 |
-
$atts['id'] = $atts['entry']->id;
|
517 |
-
}
|
518 |
-
|
519 |
-
if ( ! $atts['fields'] || ! is_array($atts['fields']) ) {
|
520 |
-
$atts['fields'] = FrmField::get_all_for_form( $atts['form_id'], '', 'include' );
|
521 |
-
}
|
522 |
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
527 |
}
|
528 |
|
529 |
-
|
530 |
-
|
531 |
-
if ( $atts['format'] == 'json' ) {
|
532 |
-
return json_encode($values);
|
533 |
-
} else if ( $atts['format'] == 'array' ) {
|
534 |
-
return $values;
|
535 |
}
|
536 |
-
|
537 |
-
$
|
538 |
-
|
539 |
-
|
540 |
-
if ( 'text' == $atts['format'] ) {
|
541 |
-
$content = implode('', $content);
|
542 |
}
|
543 |
-
|
544 |
return $content;
|
545 |
}
|
546 |
-
|
547 |
-
public static function &filter_email_value(
|
548 |
-
$
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
$value = self::filter_display_value($value, $field, $atts);
|
554 |
return $value;
|
555 |
}
|
556 |
-
|
557 |
-
public static function &
|
558 |
-
$
|
559 |
-
|
560 |
-
|
561 |
-
if ( isset($
|
562 |
-
return $value;
|
563 |
-
}
|
564 |
-
|
565 |
-
return self::filter_display_value($value, $field, $atts);
|
566 |
-
}
|
567 |
-
|
568 |
-
public static function &filter_display_value( $value, $field, $atts = array() ) {
|
569 |
-
$saved_value = ( isset($atts['saved_value']) && $atts['saved_value'] ) ? true : false;
|
570 |
-
if ( ! in_array( $field->type, array( 'radio', 'checkbox', 'radio', 'select' ) ) || ! isset( $field->field_options['separate_value'] ) || ! $field->field_options['separate_value'] || $saved_value ) {
|
571 |
return $value;
|
572 |
-
|
573 |
-
|
574 |
-
$f_values =
|
575 |
-
|
576 |
-
foreach
|
577 |
-
if
|
578 |
continue;
|
|
|
|
|
|
|
|
|
|
|
|
|
579 |
}
|
580 |
-
|
581 |
-
|
582 |
-
$f_values[ $opt_key ] = isset( $opt['value'] ) ? $opt['value'] : $f_labels[ $opt_key ];
|
583 |
-
if ( $f_labels[ $opt_key ] == $f_values[ $opt_key ] ) {
|
584 |
-
unset( $f_values[ $opt_key ], $f_labels[ $opt_key ] );
|
585 |
-
}
|
586 |
-
unset($opt_key, $opt);
|
587 |
}
|
588 |
|
589 |
-
if
|
590 |
-
foreach
|
591 |
-
if
|
592 |
$opt = array_search($val, $f_values);
|
593 |
-
if
|
594 |
-
$value[
|
595 |
-
|
596 |
-
$value = $f_labels[
|
597 |
-
}
|
598 |
}
|
599 |
-
unset($v_key
|
|
|
600 |
}
|
601 |
}
|
602 |
-
|
603 |
return $value;
|
604 |
}
|
605 |
-
|
606 |
-
|
607 |
global $frm_vars;
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
if
|
616 |
-
return $frm_vars['form_params'][
|
617 |
-
|
618 |
-
|
619 |
$action_var = isset($_REQUEST['frm_action']) ? 'frm_action' : 'action';
|
620 |
$action = apply_filters('frm_show_new_entry_page', FrmAppHelper::get_param($action_var, 'new'), $form);
|
621 |
-
|
622 |
$default_values = array(
|
623 |
-
'id' => '', 'form_name' => '', 'paged' => 1, 'form' => $form->id, 'form_id' => $form->id,
|
624 |
-
'field_id' => '', 'search' => '', 'sort' => '', 'sdir' => '', 'action' => $action
|
625 |
);
|
626 |
-
|
627 |
-
$values = array();
|
628 |
$values['posted_form_id'] = FrmAppHelper::get_param('form_id');
|
629 |
-
if (
|
630 |
$values['posted_form_id'] = FrmAppHelper::get_param('form');
|
631 |
-
}
|
632 |
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
unset( $var, $default );
|
642 |
}
|
643 |
-
}
|
644 |
-
foreach (
|
645 |
-
$values[
|
646 |
-
unset(
|
|
|
647 |
}
|
648 |
}
|
649 |
|
650 |
-
|
651 |
$values['action'] = 'new';
|
652 |
-
}
|
653 |
|
654 |
return $values;
|
655 |
}
|
656 |
-
|
657 |
-
public static function entry_sidebar($entry) {
|
658 |
-
$data = maybe_unserialize($entry->description);
|
659 |
-
$date_format = get_option('date_format');
|
660 |
-
$time_format = get_option('time_format');
|
661 |
-
|
662 |
-
include(FrmAppHelper::plugin_path() .'/classes/views/frm-entries/sidebar-shared.php');
|
663 |
-
}
|
664 |
-
|
665 |
}
|
1 |
<?php
|
2 |
+
/**
|
3 |
+
* @package Formidable
|
4 |
+
*/
|
5 |
+
|
6 |
+
if(!defined('ABSPATH')) die('You are not allowed to call this page directly.');
|
7 |
+
|
8 |
+
if(class_exists('FrmEntriesController'))
|
9 |
+
return;
|
10 |
+
|
11 |
+
class FrmEntriesController{
|
12 |
+
|
13 |
+
public static function load_hooks(){
|
14 |
+
add_action('admin_menu', 'FrmEntriesController::menu', 11);
|
15 |
+
add_action('wp', 'FrmEntriesController::process_entry', 10, 0);
|
16 |
+
add_action('frm_wp', 'FrmEntriesController::process_entry', 10, 0);
|
17 |
+
add_filter('frm_redirect_url', 'FrmEntriesController::delete_entry_before_redirect', 50, 3);
|
18 |
+
add_action('frm_after_entry_processed', 'FrmEntriesController::delete_entry_after_save', 100);
|
19 |
+
add_filter('frm_email_value', 'FrmEntriesController::filter_email_value', 10, 3);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
}
|
21 |
+
|
22 |
+
public static function menu(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
global $frm_vars;
|
24 |
+
if(!$frm_vars['pro_is_installed']){
|
25 |
+
add_submenu_page('formidable', 'Formidable |'. __('Entries', 'formidable'), '<span style="opacity:.5;filter:alpha(opacity=50);">'. __('Entries', 'formidable') .'</span>', 'administrator', 'formidable-entries', 'FrmEntriesController::list_entries');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
}
|
28 |
+
|
29 |
+
public static function list_entries(){
|
30 |
+
global $frm_entry;
|
31 |
+
$frm_form = new FrmForm();
|
32 |
+
$form_select = $frm_form->getAll("is_template=0 AND (status is NULL OR status = '' OR status = 'published')", ' ORDER BY name');
|
33 |
+
$form_id = FrmAppHelper::get_param('form', false);
|
34 |
+
if($form_id)
|
35 |
+
$form = $frm_form->getOne($form_id);
|
36 |
+
else
|
37 |
+
$form = (isset($form_select[0])) ? $form_select[0] : 0;
|
38 |
+
|
39 |
+
if($form)
|
40 |
+
$entry_count = $frm_entry->getRecordCount($form->id);
|
41 |
+
|
42 |
+
include(FrmAppHelper::plugin_path() .'/classes/views/frm-entries/list.php');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
}
|
44 |
+
|
45 |
+
public static function show_form($id='', $key='', $title=false, $description=false){
|
46 |
_deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::show_form()' );
|
47 |
+
return FrmFormsController::show_form($id, $key, $title, $description);
|
48 |
}
|
49 |
+
|
50 |
+
public static function get_form($filename, $form, $title, $description) {
|
51 |
_deprecated_function( __FUNCTION__, '1.07.05', 'FrmFormsController::get_form()' );
|
52 |
+
return FrmFormsController::get_form($form, $title, $description);
|
53 |
}
|
54 |
+
|
55 |
+
public static function process_entry($errors='', $ajax=false){
|
56 |
+
if((is_admin() and !defined('DOING_AJAX')) or !isset($_POST) or !isset($_POST['form_id']) or !is_numeric($_POST['form_id']) or !isset($_POST['item_key']))
|
|
|
57 |
return;
|
|
|
|
|
|
|
58 |
|
59 |
+
global $frm_entry, $frm_vars;
|
60 |
+
|
61 |
+
$frm_form = new FrmForm();
|
62 |
+
$form = $frm_form->getOne($_POST['form_id']);
|
63 |
+
if(!$form)
|
64 |
return;
|
65 |
+
|
66 |
+
$params = FrmEntriesController::get_params($form);
|
67 |
+
|
68 |
+
if(!isset($frm_vars['form_params']))
|
|
|
69 |
$frm_vars['form_params'] = array();
|
70 |
+
$frm_vars['form_params'][$form->id] = $params;
|
71 |
+
|
72 |
+
if(isset($frm_vars['created_entries'][$_POST['form_id']]))
|
|
|
73 |
return;
|
74 |
+
|
75 |
+
if($errors == '')
|
76 |
+
$errors = $frm_entry->validate($_POST);
|
77 |
+
$frm_vars['created_entries'][$_POST['form_id']] = array('errors' => $errors);
|
78 |
+
|
79 |
+
if( empty($errors) ){
|
|
|
|
|
80 |
$_POST['frm_skip_cookie'] = 1;
|
81 |
+
if($params['action'] == 'create'){
|
82 |
+
if (apply_filters('frm_continue_to_create', true, $_POST['form_id']) and !isset($frm_vars['created_entries'][$_POST['form_id']]['entry_id']))
|
83 |
+
$frm_vars['created_entries'][$_POST['form_id']]['entry_id'] = $frm_entry->create( $_POST );
|
|
|
84 |
}
|
85 |
+
|
86 |
+
do_action('frm_process_entry', $params, $errors, $form, array('ajax' => $ajax));
|
87 |
+
unset($_POST['frm_skip_cookie']);
|
88 |
}
|
89 |
}
|
90 |
+
|
91 |
+
public static function delete_entry_before_redirect($url, $form, $atts){
|
92 |
+
self::_delete_entry($atts['id'], $form);
|
93 |
return $url;
|
94 |
}
|
95 |
+
|
96 |
//Delete entry if not redirected
|
97 |
+
public static function delete_entry_after_save($atts){
|
98 |
+
self::_delete_entry($atts['entry_id'], $atts['form']);
|
99 |
}
|
100 |
+
|
101 |
+
private static function _delete_entry($entry_id, $form){
|
102 |
+
if(!$form)
|
103 |
return;
|
104 |
+
|
105 |
+
$form->options = maybe_unserialize($form->options);
|
106 |
+
if(isset($form->options['no_save']) and $form->options['no_save']){
|
107 |
+
global $frm_entry;
|
108 |
+
$frm_entry->destroy( $entry_id );
|
109 |
}
|
110 |
}
|
111 |
+
|
112 |
+
public static function show_entry_shortcode($atts){
|
113 |
+
$atts = shortcode_atts(array(
|
114 |
'id' => false, 'entry' => false, 'fields' => false, 'plain_text' => false,
|
115 |
'user_info' => false, 'include_blank' => false, 'default_email' => false,
|
116 |
'form_id' => false, 'format' => 'text', 'direction' => 'ltr',
|
117 |
'font_size' => '', 'text_color' => '',
|
118 |
'border_width' => '', 'border_color' => '',
|
119 |
+
'bg_color' => '', 'alt_bg_color' => '',
|
120 |
+
), $atts);
|
121 |
+
extract($atts);
|
122 |
+
|
123 |
+
if ( $format != 'text' ) {
|
124 |
//format options are text, array, or json
|
125 |
+
$plain_text = true;
|
126 |
+
}
|
127 |
+
|
128 |
+
global $frm_entry;
|
129 |
+
|
130 |
+
if ( !$entry || !is_object($entry) ) {
|
131 |
+
if ( !$id && !$default_email ) {
|
132 |
+
return '';
|
|
|
|
|
|
|
133 |
}
|
134 |
+
|
135 |
+
if($id)
|
136 |
+
$entry = $frm_entry->getOne($id, true);
|
137 |
+
}
|
138 |
+
|
139 |
+
if ( $entry ) {
|
140 |
+
$form_id = $entry->form_id;
|
141 |
+
$id = $entry->id;
|
142 |
+
}
|
143 |
+
|
144 |
+
if ( !$fields || !i |