function allow_save_draft_entry()
 {
     $form = $this->form;
     $form->options['single_entry_type'] = 'user';
     $form->options['save_draft'] = 1;
     $form->editable = 0;
     $this->assertFalse(FrmProFormsHelper::user_can_submit_form($form));
 }
 function get_taxonomy_count($taxonomy, $post_categories, $tax_count = 0)
 {
     if (isset($post_categories[$taxonomy . $tax_count])) {
         $tax_count++;
         $tax_count = FrmProFormsHelper::get_taxonomy_count($taxonomy, $post_categories, $tax_count);
     }
     return $tax_count;
 }
 public static function get_shortcodes($content, $form_id)
 {
     if (empty($form_id) || strpos($content, '[') === false) {
         // don't continue if there are no shortcodes to check
         return array(array());
     }
     $tagregexp = array('deletelink', 'detaillink', 'evenodd', 'get', 'entry_count', 'event_date');
     $form_id = (int) $form_id;
     $form_ids = array($form_id);
     //get linked form ids
     $fields = FrmProFormsHelper::has_repeat_field($form_id, false);
     foreach ($fields as $field) {
         if (FrmField::is_option_true($field, 'form_select')) {
             $form_ids[] = $field->field_options['form_select'];
             $tagregexp[] = $field->id;
             $tagregexp[] = $field->field_key;
         }
         unset($field);
     }
     foreach ($form_ids as $form_id) {
         $fields = FrmField::get_all_for_form($form_id, '', 'include');
         foreach ($fields as $field) {
             $tagregexp[] = $field->id;
             $tagregexp[] = $field->field_key;
         }
     }
     $tagregexp = implode('|', $tagregexp) . '|';
     $tagregexp .= FrmFieldsHelper::allowed_shortcodes();
     if (!ini_get('safe_mode')) {
         // make sure the backtrack limit is as least at the default
         $backtrack_limit = ini_get('pcre.backtrack_limit');
         if ($backtrack_limit < 1000000) {
             ini_set('pcre.backtrack_limit', 1000000);
         }
     }
     preg_match_all("/\\[(if |foreach )?({$tagregexp})\\b(.*?)(?:(\\/))?\\](?:(.+?)\\[\\/\\])?/s", $content, $matches, PREG_PATTERN_ORDER);
     // run conditional and foreach first
     $new_order = $matches[0];
     $move_up = array();
     foreach ($new_order as $short_key => $tag) {
         $conditional = preg_match('/^\\[if/s', $matches[0][$short_key]) ? true : false;
         $foreach = preg_match('/^\\[foreach/s', $matches[0][$short_key]) ? true : false;
         if ($conditional || $foreach) {
             $move_up[$short_key] = $tag;
         }
     }
     if (!empty($move_up)) {
         $matches[0] = $move_up + $matches[0];
     }
     return $matches;
 }
 /**
  * @param integer $form_id
  */
 public static function include_new_field($field_type, $form_id)
 {
     $values = array();
     if (FrmAppHelper::pro_is_installed()) {
         $values['post_type'] = FrmProFormsHelper::post_type($form_id);
     }
     $field_values = apply_filters('frm_before_field_created', FrmFieldsHelper::setup_new_vars($field_type, $form_id));
     $field_id = FrmField::create($field_values);
     if (!$field_id) {
         return false;
     }
     $field = self::include_single_field($field_id, $values, $form_id);
     return $field;
 }
Beispiel #5
0
 function form($form_action, $args = array())
 {
     global $wpdb;
     extract($args);
     $post_types = FrmProAppHelper::get_custom_post_types();
     if (!$post_types) {
         return;
     }
     $post_type = FrmProFormsHelper::post_type($args['values']['id']);
     $taxonomies = get_object_taxonomies($post_type);
     $action_control = $this;
     $echo = true;
     $form_id = $form->id;
     $display = false;
     $displays = array();
     $display_ids = FrmDb::get_col($wpdb->postmeta, array('meta_key' => 'frm_form_id', 'meta_value' => $form_id), 'post_ID');
     if ($display_ids) {
         $query_args = array('pm.meta_key' => 'frm_show_count', 'post_type' => 'frm_display', 'pm.meta_value' => array('dynamic', 'calendar', 'one'), 'p.post_status' => array('publish', 'private'), 'p.ID' => $display_ids);
         $displays = FrmDb::get_results($wpdb->posts . ' p LEFT JOIN ' . $wpdb->postmeta . ' pm ON (p.ID = pm.post_ID)', $query_args, 'p.ID, p.post_title', array('order_by' => 'p.post_title ASC'));
         if (isset($form_action->post_content['display_id'])) {
             // get view from settings
             if (is_numeric($form_action->post_content['display_id'])) {
                 $display = FrmProDisplay::getOne($form_action->post_content['display_id'], false, true);
             }
         } else {
             if (!is_numeric($form_action->post_content['post_content']) && !empty($display_ids)) {
                 // get auto view
                 $display = FrmProDisplay::get_form_custom_display($form_id);
                 if ($display) {
                     $display = FrmProDisplaysHelper::setup_edit_vars($display, true);
                 }
             }
         }
     }
     // Get array of all custom fields
     $custom_fields = array();
     if (isset($form_action->post_content['post_custom_fields'])) {
         foreach ($form_action->post_content['post_custom_fields'] as $custom_field_opts) {
             if (isset($custom_field_opts['meta_name'])) {
                 $custom_fields[] = $custom_field_opts['meta_name'];
             }
             unset($custom_field_opts);
         }
     }
     unset($display_ids);
     include dirname(__FILE__) . '/post_options.php';
 }
 public static function create()
 {
     $field_data = $_POST['field'];
     $form_id = $_POST['form_id'];
     $values = array();
     if (class_exists('FrmProForm')) {
         $values['post_type'] = FrmProFormsHelper::post_type($form_id);
     }
     $field_values = apply_filters('frm_before_field_created', FrmFieldsHelper::setup_new_vars($field_data, $form_id));
     $frm_field = new FrmField();
     $field_id = $frm_field->create($field_values);
     if ($field_id) {
         $field = FrmFieldsHelper::setup_edit_vars($frm_field->getOne($field_id));
         $field_name = "item_meta[{$field_id}]";
         $id = $form_id;
         require FrmAppHelper::plugin_path() . '/classes/views/frm-forms/add_field.php';
     }
     die;
 }
Beispiel #7
0
 public static function update_options($options, $values)
 {
     $defaults = FrmProFormsHelper::get_default_opts();
     unset($defaults['logged_in']);
     unset($defaults['editable']);
     foreach ($defaults as $opt => $default) {
         $options[$opt] = isset($values['options'][$opt]) ? $values['options'][$opt] : $default;
         unset($opt, $default);
     }
     unset($defaults);
     $options['single_entry'] = isset($values['options']['single_entry']) ? $values['options']['single_entry'] : 0;
     if ($options['single_entry']) {
         $options['single_entry_type'] = isset($values['options']['single_entry_type']) ? $values['options']['single_entry_type'] : 'cookie';
     }
     if (is_multisite()) {
         $options['copy'] = isset($values['options']['copy']) ? $values['options']['copy'] : 0;
     }
     return $options;
 }
 function update_options($options, $values)
 {
     global $frmpro_settings;
     $defaults = FrmProFormsHelper::get_default_opts();
     unset($defaults['logged_in']);
     unset($defaults['editable']);
     $defaults['inc_user_info'] = 0;
     foreach ($defaults as $opt => $default) {
         $options[$opt] = isset($values['options'][$opt]) ? $values['options'][$opt] : $default;
     }
     unset($defaults);
     $options['single_entry'] = isset($values['options']['single_entry']) ? $values['options']['single_entry'] : 0;
     if ($options['single_entry']) {
         $options['single_entry_type'] = isset($values['options']['single_entry_type']) ? $values['options']['single_entry_type'] : 'cookie';
     }
     if (IS_WPMU) {
         $options['copy'] = isset($values['options']['copy']) ? $values['options']['copy'] : 0;
     }
     return $options;
 }
Beispiel #9
0
<div id="postbox-container-1" class="postbox-container">
    <div id="submitdiv" class="postbox ">
    <div class="inside">
        <div class="submitbox">
        <div class="misc-pub-section frm-postbox-no-h3">
            <?php 
echo $draft = FrmProFormsHelper::get_draft_button($form, 'button-secondary');
if (empty($draft)) {
    ?>
            <p class="howto"><?php 
    _e('Complete the form and save the entry', 'formidable');
    ?>
</p>
            <?php 
}
?>
        </div>
        <div id="major-publishing-actions">
    	    <div id="delete-action">
				<a href="javascript:void(0)" class="submitdelete deletion" onclick="history.back(-1)" title="<?php 
esc_attr_e('Cancel', 'formidable');
?>
"><?php 
_e('Cancel', 'formidable');
?>
</a>
    	    </div>
    	    <div id="publishing-action">
            <input type="submit" value="<?php 
echo esc_attr($submit);
?>
Beispiel #10
0
if(typeof __FRMRULES == 'undefined'){__FRMRULES=frmrules;}
else{__FRMRULES=jQuery.extend({},__FRMRULES,frmrules);}<?php 
}
if (isset($frm_vars['google_graphs']) && !empty($frm_vars['google_graphs'])) {
    echo '__FRMTABLES=' . json_encode($frm_vars['google_graphs']) . ";\n";
    echo 'frmFrontForm.loadGoogle();' . "\n";
}
?>
jQuery(document).ready(function($){
<?php 
if ($trigger_form) {
    ?>
$(document).off('submit.formidable','.frm-show-form');$(document).on('submit.formidable','.frm-show-form',frmFrontForm.submitForm);
<?php 
}
FrmProFormsHelper::load_chosen_js($frm_vars);
$logic_fields = FrmProFormsHelper::hide_conditional_fields($frm_vars);
if (!empty($logic_fields['hide'])) {
    echo "frmFrontForm.hideCondFields('" . json_encode($logic_fields['hide']) . "');";
}
if (!empty($logic_fields['check'])) {
    echo "frmFrontForm.checkDependent('" . json_encode($logic_fields['check']) . "');";
}
FrmProFormsHelper::load_datepicker_js($frm_vars);
FrmProFormsHelper::load_calc_js($frm_vars);
FrmProFormsHelper::load_input_mask_js($frm_input_masks);
?>
});
/*]]>*/
</script>
 public static function setup_edit_vars($values)
 {
     return FrmProFormsHelper::setup_edit_vars($values);
 }
Beispiel #12
0
    ?>
        <div id="poststuff" style="padding-top:0;">
        <?php 
}
?>
        
        <div id="post-body" class="metabox-holder columns-2">
        <div id="post-body-content">
        <?php 
$form_action = 'update';
require FrmAppHelper::plugin_path() . '/classes/views/frm-entries/form.php';
?>
        
        <p>
        <?php 
echo FrmProFormsHelper::get_prev_button($form, 'button-secondary');
?>
        <input class="button-primary" type="submit" value="<?php 
echo esc_attr($submit);
?>
" <?php 
do_action('frm_submit_button_action', $form, $form_action);
?>
 /> 
        <?php 
_e('or', 'formidable');
?>
 
        <a class="button-secondary cancel" href="?page=formidable-entries"><?php 
_e('Cancel', 'formidable');
?>
 public static function get_search_ids($s, $form_id, $args = array())
 {
     global $wpdb;
     if (empty($s)) {
         return false;
     }
     preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
     $search_terms = array_map('trim', $matches[0]);
     $spaces = '';
     $e_ids = $p_search = array();
     $search = array('or' => 1);
     $data_field = FrmProFormsHelper::has_field('data', $form_id, false);
     foreach ((array) $search_terms as $term) {
         $p_search[] = array($spaces . $wpdb->posts . '.post_title like' => $term, $spaces . $wpdb->posts . '.post_content like' => $term, 'or' => 1);
         $search[$spaces . 'meta_value like'] = $term;
         $spaces .= ' ';
         // add a space to keep the array keys unique
         if (is_numeric($term)) {
             $e_ids[] = (int) $term;
         }
         if ($data_field) {
             $df_form_ids = array();
             //search the joined entry too
             foreach ((array) $data_field as $df) {
                 FrmProFieldsHelper::get_subform_ids($df_form_ids, $df);
                 unset($df);
             }
             $data_form_ids = FrmDb::get_col($wpdb->prefix . 'frm_fields', array('id' => $df_form_ids), 'form_id');
             unset($df_form_ids);
             if ($data_form_ids) {
                 $data_entry_ids = FrmEntryMeta::getEntryIds(array('fi.form_id' => $data_form_ids, 'meta_value like' => $term));
                 if ($data_entry_ids) {
                     if (!isset($search['meta_value'])) {
                         $search['meta_value'] = array();
                     }
                     $search['meta_value'] = array_merge($search['meta_value'], $data_entry_ids);
                 }
             }
             unset($data_form_ids);
         }
     }
     $matching_posts = FrmDb::get_col($wpdb->posts, $p_search, 'ID');
     $p_ids = array($search, 'or' => 1);
     if ($matching_posts) {
         $post_ids = FrmDb::get_col($wpdb->prefix . 'frm_items', array('post_id' => $matching_posts, 'form_id' => (int) $form_id));
         if ($post_ids) {
             $p_ids['item_id'] = $post_ids;
         }
     }
     if (!empty($e_ids)) {
         $p_ids['item_id'] = $e_ids;
     }
     $query = array('fi.form_id' => $form_id);
     $query[] = $p_ids;
     return FrmEntryMeta::getEntryIds($query, '', '', true, $args);
 }
 public static function ajax_create()
 {
     global $frm_entry;
     $frm_form = new FrmForm();
     $form = $frm_form->getOne($_POST['form_id']);
     if (!$form) {
         echo false;
         die;
     }
     $no_ajax_fields = array('file');
     $errors = $frm_entry->validate($_POST, $no_ajax_fields);
     if (empty($errors)) {
         global $wpdb;
         $where = $wpdb->prepare("form_id=%d", $form->id);
         if (isset($_POST['frm_page_order_' . $form->id])) {
             $where .= $wpdb->prepare(" AND field_order < %d", $_POST['frm_page_order_' . $form->id]);
         }
         $ajax = isset($form->options['ajax_submit']) ? $form->options['ajax_submit'] : 0;
         //ajax submit if no file, rte, captcha
         if ($ajax) {
             $no_ajax = $wpdb->get_var("SELECT id FROM {$wpdb->prefix}frm_fields WHERE type in ('" . implode("','", $no_ajax_fields) . "') AND {$where} LIMIT 1");
             if ($no_ajax) {
                 $ajax = false;
             }
         }
         if ($ajax) {
             global $frm_vars;
             $frm_vars['ajax'] = true;
             $frm_vars['css_loaded'] = true;
             if (!isset($_POST['frm_page_order_' . $form->id]) && !FrmProFormsHelper::going_to_prev($form->id) || FrmProFormsHelper::saving_draft($form->id)) {
                 $processed = true;
                 FrmEntriesController::process_entry($errors, true);
             }
             echo FrmFormsController::show_form($form->id);
             // trigger the footer scripts if there is a form to show
             if ($errors || !isset($form->options['show_form']) || $form->options['show_form'] || !isset($processed)) {
                 self::register_scripts();
                 FrmProEntriesController::enqueue_footer_js();
                 wp_deregister_script('formidable');
                 global $wp_scripts, $wp_styles;
                 foreach (array('jquery', 'jquery-ui-core', 'jquery-migrate', 'thickbox') as $s) {
                     if (isset($wp_scripts->registered[$s])) {
                         $wp_scripts->done[] = $s;
                     }
                     unset($s);
                 }
                 $keep_styles = apply_filters('frm_ajax_load_styles', array('dashicons', 'jquery-theme'));
                 foreach ($wp_styles->registered as $s => $info) {
                     if (!is_array($keep_styles) || !in_array($s, $keep_styles)) {
                         $wp_styles->done[] = $s;
                     }
                     unset($s);
                 }
                 wp_print_footer_scripts();
                 FrmProEntriesController::footer_js();
             }
         } else {
             echo false;
         }
     } else {
         $errors = str_replace('"', '&quot;', $errors);
         $obj = array();
         foreach ($errors as $field => $error) {
             $field_id = str_replace('field', '', $field);
             $obj[$field_id] = $error;
         }
         echo json_encode($obj);
     }
     die;
 }
Beispiel #15
0
 function create_post($entry_id, $form_id)
 {
     if (!isset($_POST['frm_wp_post'])) {
         return;
     }
     global $wpdb, $frmdb, $frmpro_display;
     $post_id = NULL;
     $post = array('post_type' => FrmProFormsHelper::post_type($form_id));
     if (isset($_POST['frm_user_id']) && is_numeric($_POST['frm_user_id'])) {
         $post['post_author'] = $_POST['frm_user_id'];
     }
     $status = false;
     foreach ($_POST['frm_wp_post'] as $post_data => $value) {
         if ($status) {
             continue;
         }
         $post_data = explode('=', $post_data);
         if ($post_data[1] == 'post_status') {
             $status = true;
         }
     }
     if (!$status) {
         $form_options = $frmdb->get_var($wpdb->prefix . 'frm_forms', array('id' => $form_id), 'options');
         $form_options = maybe_unserialize($form_options);
         if (isset($form_options['post_status']) && $form_options['post_status'] == 'publish') {
             $post['post_status'] = 'publish';
         }
     }
     //check for auto view and set frm_display_id
     $display = $frmpro_display->get_auto_custom_display(compact('form_id', 'entry_id'));
     if ($display) {
         $_POST['frm_wp_post_custom']['=frm_display_id'] = $display->ID;
     }
     $post_id = $this->insert_post($entry_id, $post, false, $form_id);
 }
Beispiel #16
0
 public static function post_type($form_id)
 {
     _deprecated_function(__FUNCTION__, '1.07.05', 'FrmProFormsHelper::post_type');
     return FrmProFormsHelper::post_type($form_id);
 }
Beispiel #17
0
<?php 
    unset($post_type);
}
unset($post_types);
?>
            </select>
        </td>
    </tr>
        <?php 
if (empty($form_action->post_content['post_category']) && !empty($values['fields'])) {
    foreach ($values['fields'] as $fo_key => $fo) {
        if ($fo['post_field'] == 'post_category') {
            if (!isset($fo['taxonomy']) || $fo['taxonomy'] == '') {
                $fo['taxonomy'] = 'post_category';
            }
            $tax_count = FrmProFormsHelper::get_taxonomy_count($fo['taxonomy'], $form_action->post_content['post_category']);
            $form_action->post_content['post_category'][$fo['taxonomy'] . $tax_count] = array('field_id' => $fo['id'], 'exclude_cat' => $fo['exclude_cat'], 'meta_name' => $fo['taxonomy']);
            unset($tax_count);
        } else {
            if ($fo['post_field'] == 'post_custom' && !in_array($fo['custom_field'], $custom_fields)) {
                $form_action->post_content['post_custom_fields'][$fo['custom_field']] = array('field_id' => $fo['id'], 'meta_name' => $fo['custom_field']);
            }
        }
        unset($fo_key, $fo);
    }
}
?>
        <tr>
            <th>
                <label><?php 
_e('Post Title', 'formidable');
 public static function ajax_data_options()
 {
     $hide_field = FrmAppHelper::get_param('hide_field');
     $entry_id = FrmAppHelper::get_param('entry_id');
     $selected_field_id = FrmAppHelper::get_param('selected_field_id');
     $field_id = FrmAppHelper::get_param('field_id');
     global $frm_field;
     $data_field = $frm_field->getOne($selected_field_id);
     if ($entry_id == '') {
         die;
     }
     $entry_id = explode(',', $entry_id);
     $field_data = $frm_field->getOne($field_id);
     $field_name = "item_meta[{$field_id}]";
     if (isset($field_data->field_options['multiple']) and $field_data->field_options['multiple'] and ($field_data->type == 'select' or $field_data->type == 'data' and isset($field_data->field_options['data_type']) and $field_data->field_options['data_type'] == 'select')) {
         $field_name .= '[]';
     }
     $field = array('id' => $field_id, 'value' => '', 'default_value' => '', 'form_id' => $field_data->form_id, 'type' => apply_filters('frm_field_type', $field_data->type, $field_data, ''), 'options' => $field_data->options, 'size' => isset($field_data->field_options['size']) && $field_data->field_options['size'] != '' ? $field_data->field_options['size'] : '', 'field_key' => $field_data->field_key);
     if ($field['size'] == '') {
         global $frm_vars;
         $field['size'] = isset($frm_vars['sidebar_width']) ? $frm_vars['sidebar_width'] : '';
     }
     if (is_numeric($selected_field_id)) {
         $field['options'] = array();
         $metas = FrmProEntryMetaHelper::meta_through_join($hide_field, $data_field, $entry_id);
         $metas = stripslashes_deep($metas);
         if ($metas and (!isset($field_data->field_options['data_type']) or !in_array($field_data->field_options['data_type'], array('radio', 'checkbox'))) and (!isset($field_data->field_options['multiple']) or !$field_data->field_options['multiple'] or isset($field_data->field_options['autocom']) and $field_data->field_options['autocom'])) {
             $field['options'][''] = '';
         }
         foreach ($metas as $meta) {
             $field['options'][$meta->item_id] = FrmProEntryMetaHelper::display_value($meta->meta_value, $data_field, array('type' => $data_field->type, 'show_icon' => true, 'show_filename' => false));
             unset($meta);
         }
         $field = apply_filters('frm_setup_new_fields_vars', $field, $field_data);
     } else {
         if ($selected_field_id == 'taxonomy') {
             if ($entry_id == 0) {
                 die;
             }
             if (is_array($entry_id)) {
                 $zero = array_search(0, $entry_id);
                 if ($zero !== false) {
                     unset($entry_id[$zero]);
                 }
                 if (empty($entry_id)) {
                     die;
                 }
             }
             $field = apply_filters('frm_setup_new_fields_vars', $field, $field_data);
             $cat_ids = array_keys($field['options']);
             $args = array('include' => implode(',', $cat_ids), 'hide_empty' => false);
             $post_type = FrmProFormsHelper::post_type($field_data->form_id);
             $args['taxonomy'] = FrmProAppHelper::get_custom_taxonomy($post_type, $field_data);
             if (!$args['taxonomy']) {
                 die;
             }
             $cats = get_categories($args);
             foreach ($cats as $cat) {
                 if (!in_array($cat->parent, (array) $entry_id)) {
                     unset($field['options'][$cat->term_id]);
                 }
             }
             if (count($field['options']) == 1 and reset($field['options']) == '') {
                 die;
             }
         } else {
             $field = apply_filters('frm_setup_new_fields_vars', $field, $field_data);
         }
     }
     $auto_width = isset($field['size']) && $field['size'] > 0 ? 'class="auto_width"' : '';
     require FrmAppHelper::plugin_path() . '/pro/classes/views/frmpro-fields/data-options.php';
     die;
 }
Beispiel #19
0
 public static function validate_confirmation_field(&$errors, $field, $value, $args)
 {
     //Make sure confirmation field matches original field
     if (!FrmField::is_option_true($field, 'conf_field')) {
         return;
     }
     if (FrmProFormsHelper::saving_draft()) {
         //Check confirmation field if saving a draft
         $args['action'] = $_POST['frm_action'] == 'create' ? 'create' : 'update';
         self::validate_check_confirmation_field($errors, $field, $value, $args);
         return;
     }
     $args['action'] = $_POST['frm_action'] == 'update' ? 'update' : 'create';
     self::validate_check_confirmation_field($errors, $field, $value, $args);
 }
 /**
  * Get the options for a dependent Dynamic category field
  *
  * @since 2.0.16
  * @param array $args
  * @param array $field
  */
 private static function get_dependent_category_field_options($args, &$field)
 {
     if ($args['entry_id'] == 0) {
         wp_die();
     }
     if (is_array($args['entry_id'])) {
         $zero = array_search(0, $args['entry_id']);
         if ($zero !== false) {
             unset($args['entry_id'][$zero]);
         }
         if (empty($args['entry_id'])) {
             wp_die();
         }
     }
     $field = apply_filters('frm_setup_new_fields_vars', $field, $args['field_data']);
     $cat_ids = array_keys($field['options']);
     $cat_args = array('include' => implode(',', $cat_ids), 'hide_empty' => false);
     $post_type = FrmProFormsHelper::post_type($args['field_data']->form_id);
     $cat_args['taxonomy'] = FrmProAppHelper::get_custom_taxonomy($post_type, $args['field_data']);
     if (!$cat_args['taxonomy']) {
         wp_die();
     }
     $cats = get_categories($cat_args);
     foreach ($cats as $cat) {
         if (!in_array($cat->parent, (array) $args['entry_id'])) {
             unset($field['options'][$cat->term_id]);
         }
     }
     if (count($field['options']) == 1 && reset($field['options']) == '') {
         wp_die();
     }
 }
 public static function dropdown_categories($args)
 {
     $defaults = array('field' => false, 'name' => false, 'show_option_all' => ' ');
     $args = wp_parse_args($args, $defaults);
     if (!$args['field']) {
         return;
     }
     if (!$args['name']) {
         $args['name'] = 'item_meta[' . $args['field']['id'] . ']';
     }
     $id = self::get_html_id($args['field']);
     $class = $args['field']['type'];
     $exclude = is_array($args['field']['exclude_cat']) ? implode(',', $args['field']['exclude_cat']) : $args['field']['exclude_cat'];
     $exclude = apply_filters('frm_exclude_cats', $exclude, $args['field']);
     if (is_array($args['field']['value'])) {
         if (!empty($exclude)) {
             $args['field']['value'] = array_diff($args['field']['value'], explode(',', $exclude));
         }
         $selected = reset($args['field']['value']);
     } else {
         $selected = $args['field']['value'];
     }
     $tax_atts = array('show_option_all' => $args['show_option_all'], 'hierarchical' => 1, 'name' => $args['name'], 'id' => $id, 'exclude' => $exclude, 'class' => $class, 'selected' => $selected, 'hide_empty' => false, 'echo' => 0, 'orderby' => 'name');
     $tax_atts = apply_filters('frm_dropdown_cat', $tax_atts, $args['field']);
     if (FrmAppHelper::pro_is_installed()) {
         $post_type = FrmProFormsHelper::post_type($args['field']['form_id']);
         $tax_atts['taxonomy'] = FrmProAppHelper::get_custom_taxonomy($post_type, $args['field']);
         if (!$tax_atts['taxonomy']) {
             return;
         }
         // If field type is dropdown (not Dynamic), exclude children when parent is excluded
         if ($args['field']['type'] != 'data' && is_taxonomy_hierarchical($tax_atts['taxonomy'])) {
             $tax_atts['exclude_tree'] = $exclude;
         }
     }
     $dropdown = wp_dropdown_categories($tax_atts);
     $add_html = FrmFieldsController::input_html($args['field'], false);
     if (FrmAppHelper::pro_is_installed()) {
         $add_html .= FrmProFieldsController::input_html($args['field'], false);
     }
     $dropdown = str_replace("<select name='" . esc_attr($args['name']) . "' id='" . esc_attr($id) . "' class='" . esc_attr($class) . "'", "<select name='" . esc_attr($args['name']) . "' id='" . esc_attr($id) . "' " . $add_html, $dropdown);
     if (is_array($args['field']['value'])) {
         $skip = true;
         foreach ($args['field']['value'] as $v) {
             if ($skip) {
                 $skip = false;
                 continue;
             }
             $dropdown = str_replace(' value="' . esc_attr($v) . '"', ' value="' . esc_attr($v) . '" selected="selected"', $dropdown);
             unset($v);
         }
     }
     return $dropdown;
 }
 public static function get_search_ids($s, $form_id)
 {
     global $wpdb, $frm_entry_meta;
     if (empty($s)) {
         return false;
     }
     preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $s, $matches);
     $search_terms = array_map('trim', $matches[0]);
     $n = '%';
     //!empty($q['exact']) ? '' : '%';
     $p_search = $search = '';
     $search_or = '';
     $e_ids = array();
     $data_field = FrmProFormsHelper::has_field('data', $form_id, false);
     foreach ((array) $search_terms as $term) {
         $term = FrmAppHelper::esc_like($term);
         $p_search .= $wpdb->prepare(" AND (({$wpdb->posts}.post_title LIKE %s) OR ({$wpdb->posts}.post_content LIKE %s))", $n . $term . $n, $n . $term . $n);
         $search .= $wpdb->prepare($search_or . 'meta_value LIKE %s', $n . $term . $n);
         $search_or = ' OR ';
         if (is_numeric($term)) {
             $e_ids[] = (int) $term;
         }
         if ($data_field) {
             $df_form_ids = array();
             //search the joined entry too
             foreach ((array) $data_field as $df) {
                 if (is_numeric($df->field_options['form_select'])) {
                     $df_form_ids[] = (int) $df->field_options['form_select'];
                 }
                 unset($df);
             }
             $data_form_ids = $wpdb->get_col("SELECT form_id FROM {$wpdb->prefix}frm_fields WHERE id in (" . implode(',', $df_form_ids) . ")");
             unset($df_form_ids);
             if ($data_form_ids) {
                 $data_entry_ids = $frm_entry_meta->getEntryIds("fi.form_id in (" . implode(',', $data_form_ids) . ")" . $wpdb->prepare(' AND meta_value LIKE %s', '%' . $term . '%'));
                 if ($data_entry_ids) {
                     $search .= "{$search_or}meta_value in (" . implode(',', $data_entry_ids) . ")";
                 }
             }
             unset($data_form_ids);
         }
     }
     $p_ids = '';
     $matching_posts = $wpdb->get_col("SELECT ID FROM {$wpdb->posts} WHERE 1=1 {$p_search}");
     if ($matching_posts) {
         $p_ids = $wpdb->get_col("SELECT id FROM {$wpdb->prefix}frm_items WHERE post_id in (" . implode(',', $matching_posts) . ") AND form_id=" . (int) $form_id);
         $p_ids = $p_ids ? " OR item_id in (" . implode(',', $p_ids) . ")" : '';
     }
     if (!empty($e_ids)) {
         $p_ids .= " OR item_id in (" . implode(',', $e_ids) . ")";
     }
     return $frm_entry_meta->getEntryIds("(({$search}){$p_ids}) and fi.form_id=" . (int) $form_id);
 }
 public static function get_post_value($post_id, $post_field, $custom_field, $atts)
 {
     if (!$post_id) {
         return '';
     }
     $post = get_post($post_id);
     if (!$post) {
         return '';
     }
     $defaults = array('sep' => ', ', 'truncate' => true, 'form_id' => false, 'field' => array(), 'links' => false, 'show' => '');
     $atts = wp_parse_args($atts, $defaults);
     $value = '';
     if ($atts['type'] == 'tag') {
         if (isset($atts['field']->field_options)) {
             $field_options = maybe_unserialize($atts['field']->field_options);
             $tax = isset($field_options['taxonomy']) ? $field_options['taxonomy'] : 'frm_tag';
             if ($tags = get_the_terms($post_id, $tax)) {
                 $names = array();
                 foreach ($tags as $tag) {
                     $tag_name = $tag->name;
                     if ($atts['links']) {
                         $tag_name = '<a href="' . esc_attr(get_term_link($tag, $tax)) . '" title="' . esc_attr(sprintf(__('View all posts filed under %s', 'formidable'), $tag_name)) . '">' . $tag_name . '</a>';
                     }
                     $names[] = $tag_name;
                 }
                 $value = implode($atts['sep'], $names);
             }
         }
     } else {
         if ($post_field == 'post_custom') {
             //get custom post field value
             $value = get_post_meta($post_id, $custom_field, true);
         } else {
             if ($post_field == 'post_category') {
                 if ($atts['form_id']) {
                     $post_type = FrmProFormsHelper::post_type($atts['form_id']);
                     $taxonomy = FrmProAppHelper::get_custom_taxonomy($post_type, $atts['field']);
                 } else {
                     $taxonomy = 'category';
                 }
                 $categories = get_the_terms($post_id, $taxonomy);
                 $names = array();
                 $cat_ids = array();
                 if ($categories) {
                     foreach ($categories as $cat) {
                         if (isset($atts['exclude_cat']) and in_array($cat->term_id, (array) $atts['exclude_cat'])) {
                             continue;
                         }
                         $cat_name = $cat->name;
                         if ($atts['links']) {
                             $cat_name = '<a href="' . esc_attr(get_term_link($cat, $taxonomy)) . '" title="' . esc_attr(sprintf(__('View all posts filed under %s', 'formidable'), $cat_name)) . '">' . $cat_name . '</a>';
                         }
                         $names[] = $cat_name;
                         $cat_ids[] = $cat->term_id;
                     }
                 }
                 if ($atts['show'] == 'id') {
                     $value = implode($atts['sep'], $cat_ids);
                 } else {
                     if ($atts['truncate']) {
                         $value = implode($atts['sep'], $names);
                     } else {
                         $value = $cat_ids;
                     }
                 }
             } else {
                 $post = (array) $post;
                 $value = $post[$post_field];
             }
         }
     }
     return $value;
 }
 public static function ajax_create()
 {
     if (!FrmAppHelper::doing_ajax() || !isset($_POST['form_id'])) {
         // normally, this function would be triggered with the wp_ajax hook, but we need it fired sooner
         return;
     }
     $allowed_actions = array('frm_entries_create', 'frm_entries_update');
     if (!in_array(FrmAppHelper::get_post_param('action', '', 'sanitize_title'), $allowed_actions)) {
         // allow ajax creating and updating
         return;
     }
     $form = FrmForm::getOne((int) $_POST['form_id']);
     if (!$form) {
         echo false;
         wp_die();
     }
     $no_ajax_fields = array('file');
     $errors = FrmEntryValidate::validate($_POST, $no_ajax_fields);
     if (empty($errors)) {
         if (FrmProForm::is_ajax_on($form)) {
             global $frm_vars;
             $frm_vars['ajax'] = true;
             $frm_vars['css_loaded'] = true;
             // don't load scripts if we are going backwards in the form
             $going_backwards = FrmProFormsHelper::going_to_prev($form->id);
             // save the entry if there is not another page or when saving a draft
             if (!isset($_POST['frm_page_order_' . $form->id]) && !$going_backwards || FrmProFormsHelper::saving_draft()) {
                 $processed = true;
                 FrmEntriesController::process_entry($errors, true);
             }
             echo FrmFormsController::show_form($form->id);
             // trigger the footer scripts if there is a form to show
             if ($errors || !isset($processed) || !empty($frm_vars['forms_loaded'])) {
                 self::print_ajax_scripts($going_backwards ? 'none' : '');
             }
         } else {
             echo false;
         }
     } else {
         $obj = array();
         foreach ($errors as $field => $error) {
             $field_id = str_replace('field', '', $field);
             $obj[$field_id] = $error;
         }
         echo json_encode($obj);
     }
     wp_die();
 }
Beispiel #25
0
?>
;border-top:none;}
.with_frm_style .auto_width input, .with_frm_style input.auto_width, .with_frm_style select.auto_width, .with_frm_style textarea.auto_width{width:auto<?php 
echo $important;
?>
;}
.with_frm_style input[disabled], .with_frm_style select[disabled], .with_frm_style textarea[disabled], .with_frm_style input[readonly], .with_frm_style select[readonly], .with_frm_style textarea[readonly]{opacity:.5;filter:alpha(opacity=50);}
.frm_set_select .with_frm_style select, .frm_set_select .with_frm_style select.auto_width{width:100%;}
.with_frm_style .form-field input:focus, .with_frm_style select:focus, .with_frm_style textarea:focus, .with_frm_style .frm_focus_field input[type=text], .with_frm_style .frm_focus_field input[type=password], .with_frm_style .frm_focus_field input[type=email], .with_frm_style .frm_focus_field input[type=number], .with_frm_style .frm_focus_field input[type=url], .with_frm_style .frm_focus_field input[type=tel], .frm_form_fields_active_style, .with_frm_style .chosen-container-active .chosen-choices{background-color:#<?php 
echo $bg_color_active . $important;
?>
;border-color:#<?php 
echo $border_color_active . $important;
?>
;box-shadow:0 1px 1px rgba(0, 0, 0, 0.075) inset, 0 0 8px rgba(<?php 
echo FrmProFormsHelper::hex2rgb($border_color_active);
?>
, 0.6);}
<?php 
if (!$submit_style) {
    ?>
.with_frm_style .frm_submit input[type=submit], .with_frm_style .frm_submit input[type=button], .frm_form_submit_style, .with_frm_style.frm_login_form input[type=submit]{width:<?php 
    echo ($submit_width == '' ? 'auto' : $submit_width) . $important;
    ?>
;font-family:<?php 
    echo stripslashes($font);
    ?>
;font-size:<?php 
    echo $submit_font_size;
    ?>
;height:<?php 
Beispiel #26
0
 function validate($errors, $field)
 {
     if ($field->type == 'user_id') {
         // make sure we have a user ID
         if (!is_numeric($_POST['item_meta'][$field->id])) {
             $_POST['item_meta'][$field->id] = FrmProAppHelper::get_user_id_param($_POST['item_meta'][$field->id]);
         }
         //add user id to post variables to be saved with entry
         $_POST['frm_user_id'] = $_POST['item_meta'][$field->id];
     } else {
         if ($field->type == 'time' and is_array($_POST['item_meta'][$field->id])) {
             $_POST['item_meta'][$field->id] = $value = $_POST['item_meta'][$field->id]['H'] . ':' . $_POST['item_meta'][$field->id]['m'] . (isset($_POST['item_meta'][$field->id]['A']) ? ' ' . $_POST['item_meta'][$field->id]['A'] : '');
         }
     }
     // don't validate if going backwards
     if (FrmProFormsHelper::going_to_prev($field->form_id)) {
         return array();
     }
     // clear any existing errors if draft
     if (FrmProFormsHelper::saving_draft($field->form_id) && isset($errors['field' . $field->id])) {
         unset($errors['field' . $field->id]);
     }
     //if the field is a file upload, check for a file
     if ($field->type == 'file' && isset($_FILES['file' . $field->id]) && !empty($_FILES['file' . $field->id]['name'])) {
         $filled = true;
         if (is_array($_FILES['file' . $field->id]['name'])) {
             $filled = false;
             foreach ($_FILES['file' . $field->id]['name'] as $n) {
                 if (!empty($n)) {
                     $filled = true;
                 }
             }
         }
         if ($filled) {
             if (isset($errors['field' . $field->id])) {
                 unset($errors['field' . $field->id]);
             }
             if (isset($field->field_options['restrict']) && $field->field_options['restrict'] && isset($field->field_options['ftypes']) && !empty($field->field_options['ftypes'])) {
                 $mimes = $field->field_options['ftypes'];
             } else {
                 $mimes = null;
             }
             //check allowed mime types for this field
             if (is_array($_FILES['file' . $field->id]['name'])) {
                 foreach ($_FILES['file' . $field->id]['name'] as $name) {
                     if (empty($name)) {
                         continue;
                     }
                     $file_type = wp_check_filetype($name, $mimes);
                     unset($name);
                     if (!$file_type['ext']) {
                         break;
                     }
                 }
             } else {
                 $file_type = wp_check_filetype($_FILES['file' . $field->id]['name'], $mimes);
             }
             if (isset($file_type) && !$file_type['ext']) {
                 $errors['field' . $field->id] = $field->field_options['invalid'] == __('This field is invalid', 'formidable') || $field->field_options['invalid'] == '' || $field->field_options['invalid'] == $field->name . ' ' . __('is invalid', 'formidable') ? __('Sorry, this file type is not permitted for security reasons.', 'formidable') : $field->field_options['invalid'];
             }
             unset($file_type);
         }
         unset($filled);
     }
     // if saving draft, only check file type since it won't be checked later
     if (FrmProFormsHelper::saving_draft($field->form_id)) {
         return $errors;
     }
     if (in_array($field->type, array('break', 'html', 'divider'))) {
         $hidden = FrmProFieldsHelper::is_field_hidden($field, stripslashes_deep($_POST));
         global $frm_hidden_break, $frm_hidden_divider;
         if ($field->type == 'break') {
             $frm_hidden_break = array('field_order' => $field->field_order, 'hidden' => $hidden);
         } else {
             if ($field->type == 'divider') {
                 $frm_hidden_divider = array('field_order' => $field->field_order, 'hidden' => $hidden);
             }
         }
         if (isset($errors['field' . $field->id])) {
             unset($errors['field' . $field->id]);
         }
     }
     $value = $_POST['item_meta'][$field->id];
     if (($field->type != 'tag' and $value == 0 or $field->type == 'tag' and $value == '') and isset($field->field_options['post_field']) and $field->field_options['post_field'] == 'post_category' and $field->required == '1') {
         global $frm_settings;
         $errors['field' . $field->id] = (!isset($field->field_options['blank']) or $field->field_options['blank'] == '' or $field->field_options['blank'] == 'Untitled cannot be blank') ? $frm_settings->blank_msg : $field->field_options['blank'];
     }
     //Don't require fields hidden with shortcode fields="25,26,27"
     global $frm_vars;
     if (isset($frm_vars['show_fields']) and !empty($frm_vars['show_fields']) and is_array($frm_vars['show_fields']) and $field->required == '1' and isset($errors['field' . $field->id]) and !in_array($field->id, $frm_vars['show_fields']) and !in_array($field->field_key, $frm_vars['show_fields'])) {
         unset($errors['field' . $field->id]);
         $_POST['item_meta'][$field->id] = $value = '';
     }
     //Don't require a conditionally hidden field
     if (isset($field->field_options['hide_field']) and !empty($field->field_options['hide_field'])) {
         if (FrmProFieldsHelper::is_field_hidden($field, stripslashes_deep($_POST))) {
             if (isset($errors['field' . $field->id])) {
                 unset($errors['field' . $field->id]);
             }
             $_POST['item_meta'][$field->id] = $value = '';
         }
     }
     //Don't require a field hidden in a conditional page or section heading
     if (isset($errors['field' . $field->id]) or $_POST['item_meta'][$field->id] != '') {
         global $frm_hidden_break, $frm_hidden_divider;
         if ($frm_hidden_break and $frm_hidden_break['hidden'] or $frm_hidden_divider and $frm_hidden_divider['hidden'] and (!$frm_hidden_break or $frm_hidden_break['field_order'] < $frm_hidden_divider['field_order'])) {
             if (isset($errors['field' . $field->id])) {
                 unset($errors['field' . $field->id]);
             }
             $_POST['item_meta'][$field->id] = $value = '';
         }
     }
     //make sure the [auto_id] is still unique
     if (!empty($field->default_value) and !is_array($field->default_value) and !empty($value) and is_numeric($value) and strpos($field->default_value, '[auto_id') !== false) {
         //make sure we are not editing
         if (isset($_POST) and !isset($_POST['id']) or !is_numeric($_POST['id'])) {
             $_POST['item_meta'][$field->id] = $value = FrmProFieldsHelper::get_default_value($field->default_value, $field);
         }
     }
     //check uniqueness
     if ($value and !empty($value) and isset($field->field_options['unique']) and $field->field_options['unique']) {
         $entry_id = (isset($_POST) and isset($_POST['id'])) ? $_POST['id'] : false;
         if ($field->type == 'time') {
             //TODO: add server-side validation for unique date-time
         } else {
             if ($field->type == 'date') {
                 global $frmpro_settings;
                 $old_value = $value;
                 if (!preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', trim($value))) {
                     $value = FrmProAppHelper::convert_date($value, $frmpro_settings->date_format, 'Y-m-d');
                 }
                 if (FrmProEntryMetaHelper::value_exists($field->id, $value, $entry_id)) {
                     $errors['field' . $field->id] = FrmProFieldsHelper::get_error_msg($field, 'unique_msg');
                 }
                 $value = $old_value;
             } else {
                 if (FrmProEntryMetaHelper::value_exists($field->id, $value, $entry_id)) {
                     $errors['field' . $field->id] = FrmProFieldsHelper::get_error_msg($field, 'unique_msg');
                 }
             }
         }
         unset($entry_id);
     }
     // validate number settings
     if ('number' == $field->type && $value != '') {
         global $frm_settings;
         // only check if options are available in settings
         if ($frm_settings->use_html && isset($field->field_options['minnum']) && isset($field->field_options['maxnum'])) {
             //minnum maxnum
             if ((double) $value < $field->field_options['minnum']) {
                 $errors['field' . $field->id] = __('Please select a higher number', 'formidable');
             } else {
                 if ((double) $value > $field->field_options['maxnum']) {
                     $errors['field' . $field->id] = __('Please select a lower number', 'formidable');
                 }
             }
         }
     }
     if (!empty($value) and ($field->type == 'website' or $field->type == 'url' or $field->type == 'image')) {
         if (trim($value) == 'http://') {
             $_POST['item_meta'][$field->id] = $value = '';
         } else {
             $value = esc_url_raw($value);
             $_POST['item_meta'][$field->id] = $value = preg_match('/^(https?|ftps?|mailto|news|feed|telnet):/is', $value) ? $value : 'http://' . $value;
         }
     }
     $errors = FrmProEntryMetaHelper::set_post_fields($field, $value, $errors);
     if (!FrmProFieldsHelper::is_field_visible_to_user($field)) {
         //don't validate admin only fields that can't be seen
         unset($errors['field' . $field->id]);
         return $errors;
     }
     if (false and isset($field->field_options['use_calc']) and !empty($field->field_options['use_calc']) and !empty($field->field_options['calc'])) {
         $field->field_options['calc'] = trim($field->field_options['calc']);
         preg_match_all("/\\[(.*?)\\]/s", $field->field_options['calc'], $calc_matches, PREG_PATTERN_ORDER);
         if (isset($calc_matches[1])) {
             foreach ($calc_matches[1] as $c) {
                 if (is_numeric($c)) {
                     $c_id = $c;
                 } else {
                     global $frm_field;
                     $c_field = $frm_field->getOne($c);
                     if (!$c_field) {
                         $field->field_options['calc'] = str_replace('[' . $c . ']', 0, $field->field_options['calc']);
                         continue;
                     }
                     $c_id = $c_field->id;
                     unset($c_field);
                 }
                 $c_val = trim($_POST['item_meta'][$c_id]);
                 if (!is_numeric($c_val)) {
                     preg_match_all('/[0-9,]*\\.?[0-9]+/', $c_val, $c_matches);
                     $c_val = $c_matches ? end($c_matches[0]) : 0;
                     unset($c_matches);
                 }
                 if ($c_val == '') {
                     $c_val = 0;
                 }
                 $field->field_options['calc'] = str_replace('[' . $c . ']', $c_val, $field->field_options['calc']);
                 unset($c);
                 unset($c_id);
             }
             include FrmAppHelper::plugin_path() . '/pro/classes/helpers/FrmProMathHelper.php';
             $m = new EvalMath();
             if (strpos($field->field_options['calc'], ').toFixed(')) {
                 $field->field_options['calc'] = str_replace(').toFixed(2', '', $field->field_options['calc']);
                 $round = 2;
             }
             $result = $m->evaluate(str_replace('Math.', '', '(' . $field->field_options['calc'] . ')'));
             if (isset($round) and $round) {
                 $result = sprintf('%.' . $round . 'f', $result);
             }
             unset($m);
             $_POST['item_meta'][$field->id] = $value = $result;
             unset($result);
         }
         unset($calc_matches);
     }
     //Don't validate the format if field is blank
     if ($value == '' or is_array($value)) {
         return $errors;
     }
     $value = trim($value);
     //validate the format
     if ($field->type == 'number' and !is_numeric($value) or $field->type == 'email' and !is_email($value) or ($field->type == 'website' or $field->type == 'url' or $field->type == 'image') and !preg_match('/^http(s)?:\\/\\/([\\da-z\\.-]+)\\.([\\da-z\\.-]+)/i', $value)) {
         $errors['field' . $field->id] = FrmProFieldsHelper::get_error_msg($field, 'invalid');
     }
     if ($field->type == 'phone') {
         $pattern = (isset($field->field_options['format']) and !empty($field->field_options['format'])) ? $field->field_options['format'] : '^((\\+\\d{1,3}(-|.| )?\\(?\\d\\)?(-| |.)?\\d{1,5})|(\\(?\\d{2,6}\\)?))(-|.| )?(\\d{3,4})(-|.| )?(\\d{4})(( x| ext)\\d{1,5}){0,1}$';
         $pattern = apply_filters('frm_phone_pattern', $pattern, $field);
         //check if format is already a regular expression
         if (strpos($pattern, '^') !== 0) {
             //if not, create a regular expression
             $pattern = preg_replace('/\\d/', '\\d', preg_quote($pattern));
             $pattern = '/^' . $pattern . '$/';
         } else {
             $pattern = '/' . $pattern . '/';
         }
         if (!preg_match($pattern, $value)) {
             $errors['field' . $field->id] = FrmProFieldsHelper::get_error_msg($field, 'invalid');
         }
         unset($pattern);
     }
     if ($field->type == 'date') {
         if (!preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $value)) {
             global $frmpro_settings;
             $formated_date = FrmProAppHelper::convert_date($value, $frmpro_settings->date_format, 'Y-m-d');
             //check format before converting
             if ($value != date($frmpro_settings->date_format, strtotime($formated_date))) {
                 $errors['field' . $field->id] = FrmProFieldsHelper::get_error_msg($field, 'invalid');
             }
             $value = $formated_date;
             unset($formated_date);
         }
         $date = explode('-', $value);
         if (count($date) != 3 or !checkdate((int) $date[1], (int) $date[2], (int) $date[0])) {
             $errors['field' . $field->id] = FrmProFieldsHelper::get_error_msg($field, 'invalid');
         }
     }
     return $errors;
 }
<?php 
    unset($post_type);
}
unset($post_types);
?>
            </select>
        </td></tr>
        <?php 
$values['post_category'] = $values['post_custom_fields'] = array();
if (empty($values['post_category']) and !empty($values['fields'])) {
    foreach ($values['fields'] as $fo_key => $fo) {
        if ($fo['post_field'] == 'post_category') {
            if (!isset($fo['taxonomy']) or $fo['taxonomy'] == '') {
                $fo['taxonomy'] = 'post_category';
            }
            $tax_count = FrmProFormsHelper::get_taxonomy_count($fo['taxonomy'], $values['post_category']);
            $values['post_category'][$fo['taxonomy'] . $tax_count] = array('field_id' => $fo['id'], 'exclude_cat' => $fo['exclude_cat'], 'meta_name' => $fo['taxonomy']);
            unset($tax_count);
        } else {
            if ($fo['post_field'] == 'post_custom' and !array_key_exists($fo['custom_field'], $values['post_custom_fields'])) {
                $values['post_custom_fields'][$fo['custom_field']] = array('field_id' => $fo['id'], 'meta_name' => $fo['custom_field']);
            }
        }
    }
}
?>
 
        <tr class="frm_hide_post" <?php 
echo $hide_post;
?>
>
 /**
  * @param array $atts - includes form_id, error, fields
  */
 public static function get_base_page_info($atts)
 {
     $page_numbers = array('page_breaks' => array(), 'go_back' => false, 'next_page' => false, 'set_prev' => 0, 'set_next' => false, 'get_last' => false, 'prev_page_obj' => false, 'prev_page' => FrmAppHelper::get_param('frm_page_order_' . $atts['form_id'], false, 'get', 'absint'));
     if (FrmProFormsHelper::going_to_prev($atts['form_id'])) {
         $page_numbers['go_back'] = true;
         $page_numbers['next_page'] = FrmAppHelper::get_param('frm_next_page');
         $page_numbers['prev_page'] = $page_numbers['set_prev'] = $page_numbers['next_page'] - 1;
     } else {
         if (FrmProFormsHelper::saving_draft() && !$atts['error']) {
             $page_numbers['next_page'] = FrmAppHelper::get_param('frm_page_order_' . $atts['form_id'], false);
             // If next_page is zero, assume user clicked "Save Draft" on last page of form
             if ($page_numbers['next_page'] == 0) {
                 $page_numbers['next_page'] = count($atts['fields']);
             }
             $page_numbers['prev_page'] = $page_numbers['set_prev'] = $page_numbers['next_page'] - 1;
         }
     }
     if ($atts['error']) {
         $page_numbers['set_prev'] = $page_numbers['prev_page'];
         if ($page_numbers['prev_page']) {
             $page_numbers['prev_page'] = $page_numbers['prev_page'] - 1;
         } else {
             $page_numbers['prev_page'] = 999;
             $page_numbers['get_last'] = true;
         }
     }
     return $page_numbers;
 }
 public static function get_form_fields($fields, $form_id, $error = false)
 {
     global $frm_field, $frm_vars, $frm_page_num;
     $prev_page = (int) FrmAppHelper::get_param('frm_page_order_' . $form_id, false);
     $go_back = $next_page = false;
     if (FrmProFormsHelper::going_to_prev($form_id)) {
         $go_back = true;
         $next_page = FrmAppHelper::get_param('frm_next_page');
         $prev_page = $set_prev = $next_page - 1;
     } else {
         if (FrmProFormsHelper::saving_draft($form_id) and !$error) {
             $next_page = FrmAppHelper::get_param('frm_page_order_' . $form_id, false);
             $prev_page = $set_prev = $next_page - 1;
         }
     }
     //$current_form_id = FrmAppHelper::get_param('form_id', false);
     //if (is_numeric($current_form_id) and $current_form_id != $form_id)
     //    return $fields;
     $get_last = false;
     if ($error) {
         $set_prev = $prev_page;
         if ($prev_page) {
             $prev_page = $prev_page - 1;
         } else {
             $prev_page = 999;
             $get_last = true;
         }
     }
     $frm_form = new FrmForm();
     $form = $frm_form->getOne($form_id);
     $ajax = (isset($form->options['ajax_submit']) and $form->options['ajax_submit']) ? true : false;
     unset($form);
     $ajax_now = (!defined('DOING_AJAX') or isset($frm_vars['preview']) and $frm_vars['preview']);
     $page_breaks = array();
     foreach ((array) $fields as $f) {
         if ($f->type == 'captcha') {
             $recap = $f;
         }
         if ($ajax) {
             switch ($f->type) {
                 case 'date':
                     if (!isset($frm_vars['datepicker_loaded']) or !is_array($frm_vars['datepicker_loaded'])) {
                         $frm_vars['datepicker_loaded'] = array();
                     }
                     $frm_vars['datepicker_loaded']['field_' . $f->field_key] = $ajax_now;
                     break;
                 case 'time':
                     if (isset($f->field_options['unique']) and $f->field_options['unique']) {
                         if (!isset($frm_vars['timepicker_loaded'])) {
                             $frm_vars['timepicker_loaded'] = array();
                         }
                         $frm_vars['timepicker_loaded']['field_' . $f->field_key] = $ajax_now;
                     }
                     break;
                 case 'phone':
                     if (isset($f->field_options['format']) and !empty($f->field_options['format']) and strpos($f->field_options['format'], '^') !== 0) {
                         global $frm_input_masks;
                         $frm_input_masks[$f->id] = $ajax_now ? preg_replace('/\\d/', '9', $f->field_options['format']) : false;
                     }
                     break;
                 default:
                     //do_action('frm_check_ajax_js_load', $f, $ajax_now);
                     break;
             }
         }
         if ($f->type != 'break') {
             continue;
         }
         $page_breaks[$f->field_order] = $f;
         if (($prev_page or $go_back) and !$get_last) {
             if (($error or $go_back) and $f->field_order < $prev_page or !$error and !$go_back and !isset($prev_page_obj) and $f->field_order == $prev_page) {
                 $prev_page_obj = true;
                 $prev_page = $f->field_order;
             } else {
                 if (isset($set_prev) and $f->field_order < $set_prev) {
                     $prev_page_obj = true;
                     $prev_page = $f->field_order;
                 } else {
                     if ($f->field_order > $prev_page and !isset($set_next) and (!$next_page or is_numeric($next_page))) {
                         $next_page = $f;
                         $set_next = true;
                     }
                 }
             }
         } else {
             if ($get_last) {
                 $prev_page_obj = true;
                 $prev_page = $f->field_order;
                 $next_page = false;
             } else {
                 if (!$next_page) {
                     $next_page = $f;
                 } else {
                     if (is_numeric($next_page) and $f->field_order == $next_page) {
                         $next_page = $f;
                     }
                 }
             }
         }
         unset($f);
     }
     unset($ajax);
     if (!isset($prev_page_obj) and $prev_page) {
         $prev_page = 0;
     }
     if ($prev_page) {
         $current_page = $page_breaks[$prev_page];
         if (self::is_field_hidden($current_page, stripslashes_deep($_POST))) {
             $current_page = apply_filters('frm_get_current_page', $current_page, $page_breaks, $go_back);
             if (!$current_page or $current_page->field_order != $prev_page) {
                 $prev_page = $current_page ? $current_page->field_order : 0;
                 foreach ($page_breaks as $o => $pb) {
                     if ($o > $prev_page) {
                         $next_page = $pb;
                         break;
                     }
                 }
                 if ($next_page->field_order <= $prev_page) {
                     $next_page = false;
                 }
             }
         }
     }
     if ($prev_page) {
         $frm_vars['prev_page'][$form_id] = $prev_page;
     } else {
         unset($frm_vars['prev_page'][$form_id]);
     }
     if (!isset($next_page)) {
         $next_page = false;
     }
     if ($next_page) {
         if (is_numeric($next_page) && isset($page_breaks[$next_page])) {
             $next_page = $page_breaks[$next_page];
         }
         if (!is_numeric($next_page)) {
             $frm_vars['next_page'][$form_id] = $next_page;
             $next_page = $next_page->field_order;
         }
     } else {
         unset($frm_vars['next_page'][$form_id]);
     }
     $pages = array_keys($page_breaks);
     $frm_page_num = $prev_page ? array_search($prev_page, $pages) + 2 : 1;
     unset($page_breaks);
     if ($next_page or $prev_page) {
         foreach ($fields as $f) {
             if ($f->type == 'hidden' or $f->type == 'user_id') {
                 continue;
             }
             if ($prev_page and $next_page and $f->field_order < $prev_page and $f->field_order > $next_page) {
                 $f->type = 'hidden';
             } else {
                 if ($prev_page and $f->field_order < $prev_page) {
                     $f->type = 'hidden';
                 } else {
                     if ($next_page and $f->field_order > $next_page) {
                         $f->type = 'hidden';
                     }
                 }
             }
             unset($f);
         }
         global $frm_settings;
         if (isset($recap) and $recap and !empty($frm_settings->pubkey)) {
             //check to see if recaptcha script should be loaded on this page
             $frm_vars['recap_script'] = true;
         }
     }
     return $fields;
 }
Beispiel #30
0
 public static function dropdown_categories($args)
 {
     global $frm_vars;
     $defaults = array('field' => false, 'name' => false, 'show_option_all' => ' ');
     extract(wp_parse_args($args, $defaults));
     if (!$field) {
         return;
     }
     if (!$name) {
         $name = "item_meta[{$field['id']}]";
     }
     $id = 'field_' . $field['field_key'];
     $class = $field['type'];
     $exclude = is_array($field['exclude_cat']) ? implode(',', $field['exclude_cat']) : $field['exclude_cat'];
     $exclude = apply_filters('frm_exclude_cats', $exclude, $field);
     if (is_array($field['value'])) {
         if (!empty($exclude)) {
             $field['value'] = array_diff($field['value'], explode(',', $exclude));
         }
         $selected = reset($field['value']);
     } else {
         $selected = $field['value'];
     }
     $args = array('show_option_all' => $show_option_all, 'hierarchical' => 1, 'name' => $name, 'id' => $id, 'exclude' => $exclude, 'class' => $class, 'selected' => $selected, 'hide_empty' => false, 'echo' => 0, 'orderby' => 'name');
     $args = apply_filters('frm_dropdown_cat', $args, $field);
     if (class_exists('FrmProFormsHelper')) {
         $post_type = FrmProFormsHelper::post_type($field['form_id']);
         $args['taxonomy'] = FrmProAppHelper::get_custom_taxonomy($post_type, $field);
         if (!$args['taxonomy']) {
             return;
         }
         if (is_taxonomy_hierarchical($args['taxonomy'])) {
             $args['exclude_tree'] = $exclude;
         }
     }
     $dropdown = wp_dropdown_categories($args);
     $add_html = FrmFieldsController::input_html($field, false);
     if ($frm_vars['pro_is_installed']) {
         $add_html .= FrmProFieldsController::input_html($field, false);
     }
     $dropdown = str_replace("<select name='{$name}' id='{$id}' class='{$class}'", "<select name='{$name}' id='{$id}' " . $add_html, $dropdown);
     if (is_array($field['value'])) {
         $skip = true;
         foreach ($field['value'] as $v) {
             if ($skip) {
                 $skip = false;
                 continue;
             }
             $dropdown = str_replace(' value="' . $v . '"', ' value="' . $v . '" selected="selected"', $dropdown);
             unset($v);
         }
     }
     return $dropdown;
 }