function allow_submit_with_cookie($entry_id)
 {
     $form = $this->form;
     FrmProEntriesController::set_cookie($entry_id, $form->id);
     $this->assertTrue(isset($_COOKIE['frm_form' . $form->id . '_' . COOKIEHASH]), 'The cookie was not created');
     $this->assertFalse(FrmProFormsHelper::user_can_submit_form($form));
 }
Пример #2
0
 function process_update_entry($params, $errors, $form)
 {
     global $frm_entry, $frm_saved_entries, $frm_created_entry;
     $form->options = stripslashes_deep(maybe_unserialize($form->options));
     if ($params['action'] == 'update' and in_array((int) $params['id'], (array) $frm_saved_entries)) {
         return;
     }
     if ($params['action'] == 'create' and isset($frm_created_entry[$form->id]) and isset($frm_created_entry[$form->id]['entry_id']) and is_numeric($frm_created_entry[$form->id]['entry_id'])) {
         $entry_id = $params['id'] = $frm_created_entry[$form->id]['entry_id'];
         FrmProEntriesController::set_cookie($entry_id, $form->id);
         $conf_method = apply_filters('frm_success_filter', 'message', $form, $form->options);
         if ($conf_method == 'redirect') {
             //do_action('frm_success_action', $conf_method, $form, $form->options, $params['id']);
             $success_url = apply_filters('frm_content', $form->options['success_url'], $form, $entry_id);
             $success_url = apply_filters('frm_redirect_url', $success_url, $form, $params);
             wp_redirect($success_url);
             exit;
         }
     } else {
         if ($params['action'] == 'update') {
             if (in_array((int) $params['id'], (array) $frm_saved_entries)) {
                 if (isset($_POST['item_meta'])) {
                     unset($_POST['item_meta']);
                 }
                 add_filter('frm_continue_to_new', create_function('', "return {$continue};"), 15);
                 return;
             }
             if (empty($errors)) {
                 if (isset($form->options['editable_role']) and !FrmAppHelper::user_has_permission($form->options['editable_role'])) {
                     global $frm_settings;
                     wp_die($frm_settings->login_msg);
                 }
                 if (!isset($_POST['frm_page_order_' . $form->id])) {
                     $frm_entry->update($params['id'], $_POST);
                     //check confirmation method
                     $conf_method = apply_filters('frm_success_filter', 'message', $form);
                     if ($conf_method == 'redirect') {
                         //do_action('frm_success_action', $conf_method, $form, $form->options, $params['id']);
                         $success_url = apply_filters('frm_content', $form->options['success_url'], $form, $params['id']);
                         $success_url = apply_filters('frm_redirect_url', $success_url, $form, $params);
                         wp_redirect($success_url);
                         exit;
                     }
                 }
             }
         } else {
             if ($params['action'] == 'destroy') {
                 //if the user who created the entry is deleting it
                 $this->ajax_destroy($form->id, false, false);
             }
         }
     }
 }
 public static function process_update_entry($params, $errors, $form, $args)
 {
     global $frm_entry, $frm_vars;
     if ($params['action'] == 'update' && isset($frm_vars['saved_entries']) && in_array((int) $params['id'], (array) $frm_vars['saved_entries'])) {
         return;
     }
     if ($params['action'] == 'create' and isset($frm_vars['created_entries'][$form->id]) and isset($frm_vars['created_entries'][$form->id]['entry_id']) and is_numeric($frm_vars['created_entries'][$form->id]['entry_id'])) {
         $entry_id = $params['id'] = $frm_vars['created_entries'][$form->id]['entry_id'];
         FrmProEntriesController::set_cookie($entry_id, $form->id);
         $conf_method = apply_filters('frm_success_filter', 'message', $form, $form->options, $params['action']);
         if ($conf_method != 'redirect') {
             return;
         }
         $success_args = array('action' => $params['action']);
         if (isset($args['ajax'])) {
             $success_args['ajax'] = $args['ajax'];
         }
         do_action('frm_success_action', $conf_method, $form, $form->options, $params['id'], $success_args);
     } else {
         if ($params['action'] == 'update') {
             if (isset($frm_vars['saved_entries']) && in_array((int) $params['id'], (array) $frm_vars['saved_entries'])) {
                 if (isset($_POST['item_meta'])) {
                     unset($_POST['item_meta']);
                 }
                 add_filter('frm_continue_to_new', '__return_' . ($continue ? 'true' : 'false'), 15);
                 return;
             }
             //don't update if there are validation errors
             if (!empty($errors)) {
                 return;
             }
             //check if user is allowed to update
             if (!FrmProEntriesHelper::user_can_edit((int) $params['id'], $form)) {
                 global $frm_settings;
                 wp_die(do_shortcode($frm_settings->login_msg));
             }
             //update, but don't check for confirmation if saving draft
             if (FrmProFormsHelper::saving_draft($form->id)) {
                 $frm_entry->update($params['id'], $_POST);
                 return;
             }
             //don't update if going back
             if (isset($_POST['frm_page_order_' . $form->id]) or FrmProFormsHelper::going_to_prev($form->id)) {
                 return;
             }
             $frm_entry->update($params['id'], $_POST);
             $success_args = array('action' => $params['action']);
             if ($params['action'] != 'create' && FrmProEntriesHelper::is_new_entry($params['id'])) {
                 $success_args['action'] = 'create';
             }
             //check confirmation method
             $conf_method = apply_filters('frm_success_filter', 'message', $form, $success_args['action']);
             if ($conf_method != 'redirect') {
                 return;
             }
             if (isset($args['ajax'])) {
                 $success_args['ajax'] = $args['ajax'];
             }
             do_action('frm_success_action', $conf_method, $form, $form->options, $params['id'], $success_args);
         } else {
             if ($params['action'] == 'destroy') {
                 //if the user who created the entry is deleting it
                 self::ajax_destroy($form->id, false, false);
             }
         }
     }
 }
Пример #4
0
    function set_cookie($entry_id, $form_id)
    {
        //if form options['single] or isset($_POST['frm_single_submit']){
        if (defined('WP_IMPORTING') or defined('DOING_AJAX')) {
            return;
        }
        if (isset($_POST) and isset($_POST['frm_skip_cookie'])) {
            if (!headers_sent()) {
                FrmProEntriesController::set_cookie($entry_id, $form_id);
            }
            return;
        }
        ?>
<script type="text/javascript">
jQuery(document).ready(function($){
jQuery.ajax({type:"POST",url:"<?php 
        echo FRM_SCRIPT_URL;
        ?>
",
data:"controller=entries&frm_action=ajax_set_cookie&entry_id=<?php 
        echo $entry_id;
        ?>
&form_id=<?php 
        echo $form_id;
        ?>
"
});
});    
</script>
<?php 
        //}
    }