public static function handle_submission($form, &$lead, $ajax = false) { //creating entry in DB RGFormsModel::save_lead($form, $lead); //reading entry that was just saved $lead = RGFormsModel::get_lead($lead["id"]); $lead = GFFormsModel::set_entry_meta($lead, $form); do_action('gform_entry_created', $lead, $form); //if Akismet plugin is installed, run lead through Akismet and mark it as Spam when appropriate $is_spam = false; if (GFCommon::akismet_enabled($form['id']) && GFCommon::is_akismet_spam($form, $lead)) { $is_spam = true; } if (!$is_spam) { GFCommon::create_post($form, $lead); //send auto-responder and notification emails self::send_emails($form, $lead); } else { //marking entry as spam RGFormsModel::update_lead_property($lead["id"], "status", "spam", false, true); $lead["status"] = "spam"; } //display confirmation message or redirect to confirmation page return self::handle_confirmation($form, $lead, $ajax); }
public static function handle_submission($form, &$lead, $ajax=false){ $lead_id = apply_filters("gform_entry_id_pre_save_lead{$form["id"]}", apply_filters("gform_entry_id_pre_save_lead", null, $form), $form); if(!empty($lead_id)){ if(empty($lead)) $lead = array(); $lead["id"] = $lead_id; } //creating entry in DB RGFormsModel::save_lead($form, $lead); //reading entry that was just saved $lead = RGFormsModel::get_lead($lead["id"]); $lead = GFFormsModel::set_entry_meta($lead, $form); do_action('gform_entry_created', $lead, $form); $lead = apply_filters('gform_entry_post_save', $lead, $form); RGFormsModel::set_current_lead($lead); //if Akismet plugin is installed, run lead through Akismet and mark it as Spam when appropriate $is_spam = GFCommon::akismet_enabled($form['id']) && GFCommon::is_akismet_spam($form, $lead); GFCommon::log_debug("Checking for spam..."); GFCommon::log_debug("Is entry considered spam? {$is_spam}."); if(!$is_spam){ GFCommon::create_post($form, $lead); //send notifications GFCommon::send_form_submission_notifications($form, $lead); } else { //marking entry as spam RGFormsModel::update_lead_property($lead["id"], "status", "spam", false, true); $lead["status"] = "spam"; } self::clean_up_files($form); //display confirmation message or redirect to confirmation page return self::handle_confirmation($form, $lead, $ajax); }
public static function handle_submission($form, &$lead, $ajax = false) { $lead_id = gf_apply_filters(array('gform_entry_id_pre_save_lead', $form['id']), null, $form); if (!empty($lead_id)) { if (empty($lead)) { $lead = array(); } $lead['id'] = $lead_id; } //creating entry in DB RGFormsModel::save_lead($form, $lead); //reading entry that was just saved $lead = RGFormsModel::get_lead($lead['id']); $lead = GFFormsModel::set_entry_meta($lead, $form); //if Akismet plugin is installed, run lead through Akismet and mark it as Spam when appropriate $is_spam = GFCommon::akismet_enabled($form['id']) && GFCommon::is_akismet_spam($form, $lead); /** * A filter to set if an entry is spam * * @param int $form['id'] The Form ID to filter through (take directly from the form object) * @param bool $is_spam True or false to filter if the entry is spam * @param array $form The Form object to filer through * @param array $lead The Lead object to filter through */ $is_spam = gf_apply_filters(array('gform_entry_is_spam', $form['id']), $is_spam, $form, $lead); if (GFCommon::spam_enabled($form['id'])) { GFCommon::log_debug('GFFormDisplay::handle_submission(): Akismet integration enabled OR gform_entry_is_spam hook in use.'); $log_is_spam = $is_spam ? 'Yes' : 'No'; GFCommon::log_debug("GFFormDisplay::handle_submission(): Is entry considered spam? {$log_is_spam}."); } if ($is_spam) { //marking entry as spam RGFormsModel::update_lead_property($lead['id'], 'status', 'spam', false, true); $lead['status'] = 'spam'; } /** * Fired after an entry is created * * @param array $lead The Entry object * @param array $form The Form object */ do_action('gform_entry_created', $lead, $form); $lead = gf_apply_filters(array('gform_entry_post_save', $form['id']), $lead, $form); RGFormsModel::set_current_lead($lead); if (!$is_spam) { GFCommon::create_post($form, $lead); //send notifications GFCommon::send_form_submission_notifications($form, $lead); } self::clean_up_files($form); // remove incomplete submission and purge expired if (rgars($form, 'save/enabled')) { GFFormsModel::delete_incomplete_submission(rgpost('gform_resume_token')); GFFormsModel::purge_expired_incomplete_submissions(); } //display confirmation message or redirect to confirmation page return self::handle_confirmation($form, $lead, $ajax); }
public static function lead_detail_page() { global $wpdb; global $current_user; if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $form = RGFormsModel::get_form_meta($_GET["id"]); $lead = RGFormsModel::get_lead($_GET["lid"]); if (!$lead) { _e("OOps! We couldn't find your lead. Please try again", "gravityforms"); return; } RGFormsModel::update_lead_property($lead["id"], "is_read", 1); $search_qs = empty($_GET["s"]) ? "" : "&s=" . $_GET["s"]; $sort_qs = empty($_GET["sort"]) ? "" : "&sort=" . $_GET["sort"]; $dir_qs = empty($_GET["dir"]) ? "" : "&dir=" . $_GET["dir"]; $page_qs = empty($_GET["paged"]) ? "" : "&paged=" . absint($_GET["paged"]); switch (RGForms::post("action")) { case "update": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::save_lead($form, $lead); $lead = RGFormsModel::get_lead($_GET["lid"]); break; case "add_note": check_admin_referer('gforms_update_note', 'gforms_update_note'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["new_note"])); //emailing notes if configured if (rgpost("gentry_email_notes_to")) { $email_to = $_POST["gentry_email_notes_to"]; $email_from = $current_user->user_email; $email_subject = stripslashes($_POST["gentry_email_subject"]); $headers = "From: \"{$email_from}\" <{$email_from}> \r\n"; $result = wp_mail($email_to, $email_subject, stripslashes($_POST["new_note"]), $headers); } break; case "add_quick_note": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["quick_note"])); break; case "bulk": check_admin_referer('gforms_update_note', 'gforms_update_note'); if ($_POST["bulk_action"] == "delete") { RGFormsModel::delete_notes($_POST["note"]); } break; case "delete": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::delete_lead($lead["id"]); ?> <div id="message" class="updated fade" style="background-color: rgb(255, 251, 204); margin-top:50px; padding:50px;"> <?php _e("Entry has been deleted.", "gravityforms"); ?> <a href="<?php echo esc_url("admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]) . $search_qs . $sort_qs . $dir_qs . $page_qs); ?> "><?php _e("Back to entries list", "gravityforms"); ?> </a> </div> <?php exit; break; } $mode = empty($_POST["screen_mode"]) ? "view" : $_POST["screen_mode"]; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" /> <script type="text/javascript"> function DeleteFile(leadId, fieldId){ if(confirm(<?php _e("'Would you like to delete this file? \\'Cancel\\' to stop. \\'OK\\' to delete'", "gravityforms"); ?> )){ var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_delete_file" ); mysack.setVar( "rg_delete_file", "<?php echo wp_create_nonce("rg_delete_file"); ?> " ); mysack.setVar( "lead_id", leadId ); mysack.setVar( "field_id", fieldId ); mysack.encVar( "cookie", document.cookie, false ); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while deleting field.", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } } function EndDeleteFile(fieldId){ jQuery('#preview_' + fieldId).hide(); jQuery('#upload_' + fieldId).show('slow'); } function ToggleShowEmptyFields(){ if(jQuery("#gentry_display_empty_fields").is(":checked")){ createCookie("gf_display_empty_fields", true, 10000); document.location = document.location.href; } else{ eraseCookie("gf_display_empty_fields"); document.location = document.location.href; } } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function eraseCookie(name) { createCookie(name,"",-1); } </script> <form method="post" id="entry_form" enctype='multipart/form-data'> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value=""/> <input type="hidden" name="screen_mode" id="screen_mode" value="<?php echo esc_attr(rgpost("screen_mode")); ?> " /> <div class="wrap"> <img alt="<?php _e("Gravity Forms", "gravityforms"); ?> " src="<?php echo GFCommon::get_base_url(); ?> /images/gravity-title-icon-32.png" style="float:left; margin:15px 7px 0 0;"/> <h2><?php _e("Entry #", "gravityforms"); echo absint($lead["id"]); ?> </h2> <a href="<?php echo esc_url("admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]) . $search_qs . $sort_qs . $dir_qs . $page_qs); ?> "><?php _e("« back to entries list", "gravityforms"); ?> </a> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div id="side-info-column" class="inner-sidebar"> <div id="submitdiv" class="stuffbox"> <h3> <span class="hndle"><?php _e("Info", "gravityforms"); ?> </span> </h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishing" style="padding:10px;"> <br/> <?php _e("Entry Id", "gravityforms"); ?> : <?php echo absint($lead["id"]); ?> <br/><br/> <?php _e("Submitted on", "gravityforms"); ?> : <?php echo esc_html(GFCommon::format_date($lead["date_created"], false, "Y/m/d")); ?> <br/><br/> <?php _e("User IP", "gravityforms"); ?> : <?php echo $lead["ip"]; ?> <br/><br/> <?php if (!empty($lead["created_by"]) && ($usermeta = get_userdata($lead["created_by"]))) { ?> <?php _e("User", "gravityforms"); ?> : <a href="user-edit.php?user_id=<?php echo absint($lead["created_by"]); ?> " alt="<?php _e("View user profile", "gravityforms"); ?> " title="<?php _e("View user profile", "gravityforms"); ?> "><?php echo esc_html($usermeta->user_login); ?> </a> <br/><br/> <?php } ?> <?php _e("Embed Url", "gravityforms"); ?> : <a href="<?php echo esc_url($lead["source_url"]); ?> " target="_blank" alt="<?php echo esc_url($lead["source_url"]); ?> " title="<?php echo esc_url($lead["source_url"]); ?> ">.../<?php echo esc_html(GFCommon::truncate_url($lead["source_url"])); ?> </a> <br/><br/> <?php if (!empty($lead["post_id"])) { $post = get_post($lead["post_id"]); ?> <?php _e("Edit Post", "gravityforms"); ?> : <a href="post.php?action=edit&post=<?php echo absint($post->ID); ?> " alt="<?php _e("Click to edit post", "gravityforms"); ?> " title="<?php _e("Click to edit post", "gravityforms"); ?> "><?php echo esc_html($post->post_title); ?> </a> <br/><br/> <?php } if (!empty($lead["payment_status"])) { echo $lead["transaction_type"] != 2 ? __("Payment Status", "gravityforms") : __("Subscription Status", "gravityforms"); ?> : <?php echo $lead["payment_status"]; ?> <br/><br/> <?php if (!empty($lead["payment_date"])) { echo $lead["transaction_type"] == 1 ? __("Payment Date", "gravityforms") : __("Start Date", "gravityforms"); ?> : <?php echo GFCommon::format_date($lead["payment_date"], false, "Y/m/d", $lead["transaction_type"] == 1); ?> <br/><br/> <?php } if (!empty($lead["transaction_id"])) { echo $lead["transaction_type"] == 1 ? __("Transaction Id", "gravityforms") : __("Subscriber Id", "gravityforms"); ?> : <?php echo $lead["transaction_id"]; ?> <br/><br/> <?php } if (strlen($lead["payment_amount"]) > 0) { echo $lead["transaction_type"] == 1 ? __("Payment Amount", "gravityforms") : __("Subscription Amount", "gravityforms"); ?> : <?php echo GFCommon::to_money($lead["payment_amount"], $lead["currency"]); ?> <br/><br/> <?php } } do_action("gform_entry_info", $form["id"], $lead); ?> </div> <div id="major-publishing-actions"> <div id="delete-action"> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { $delete_link = '<a class="submitdelete deletion" onclick="if ( confirm(\'' . __("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms") . '\') ) { jQuery(\'#action\').val(\'delete\'); jQuery(\'#entry_form\')[0].submit();} return false;" href="#">' . __("Delete", "gravityforms") . '</a>'; echo apply_filters("gform_entrydetail_delete_link", $delete_link); } ?> </div> <div id="publishing-action"> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entries")) { $button_text = $mode == "view" ? __("Edit Entry", "gravityforms") : __("Update Entry", "gravityforms"); $button_click = $mode == "view" ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input class="button-primary" type="submit" tabindex="4" value="' . $button_text . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters("gform_entrydetail_update_button", $update_button); if ($mode == "edit") { echo ' <input class="button" style="color:#bbb;" type="submit" tabindex="5" value="' . __("Cancel", "gravityforms") . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> <br/> <br/><br/> </div> </div> </div> </div> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entry_notes")) { ?> <!-- start side notes --> <div class="postbox" id="tagsdiv-post_tag"> <h3 style="cursor:default;"><span>Quick Note</span></h3> <div class="inside"> <div id="post_tag" class="tagsdiv"> <div> <span> <textarea name="quick_note" style="width:99%; height:180px; margin-bottom:4px;"></textarea> <input type="submit" name="add_quick_note" value="<?php _e("Add Note", "gravityforms"); ?> " class="button" style="width:60px;" onclick="jQuery('#action').val('add_quick_note');"/> </span> </div> </div> </div> </div> <!-- end side notes --> <?php } ?> <!-- begin print button --> <div class="detail-view-print"> <a href="javascript:;" onclick="var notes_qs = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var url='<?php echo GFCommon::get_base_url(); ?> /print-entry.php?fid=<?php echo $form['id']; ?> &lid=<?php echo $lead['id']; ?> ' + notes_qs; window.open (url,'printwindow');" class="button">Print</a> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <input type="checkbox" name="print_notes" value="print_notes" checked="checked" id="gform_print_notes"/> <label for="print_notes">include notes</label> <?php } ?> </div> <!-- end print button --> </div> <div id="post-body" class="has-sidebar"> <div id="post-body-content" class="has-sidebar-content"> <?php if ($mode == "view") { self::lead_detail_grid($form, $lead, true); } else { self::lead_detail_edit($form, $lead); } ?> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <div id="namediv" class="stuffbox"> <h3> <label for="name"><?php _e("Notes", "gravityforms"); ?> </label> </h3> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead["id"]); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field["id"]])) { $emails[] = $lead[$email_field["id"]]; } } //displaying notes grid $subject = !empty($form["autoResponder"]["subject"]) ? "RE: " . GFCommon::replace_variables($form["autoResponder"]["subject"], $form, $lead) : ""; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> </div> <?php } ?> </div> </div> </div> </div> </form> <?php if (rgpost("action") == "update") { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Entry Updated.", "gravityforms"); ?> </div> <?php } }
public static function lead_detail_page() { global $wpdb; global $current_user; if (!GFCommon::ensure_wp_version()) { return; } echo GFCommon::get_remote_message(); $form = RGFormsModel::get_form_meta($_GET["id"]); $form = apply_filters("gform_admin_pre_render_" . $form["id"], apply_filters("gform_admin_pre_render", $form)); $lead_id = rgget('lid'); $filter = rgget("filter"); $status = in_array($filter, array("trash", "spam")) ? $filter : "active"; $search = rgget("s"); $position = rgget('pos') ? rgget('pos') : 0; $sort_direction = rgget('dir') ? rgget('dir') : 'DESC'; $sort_field = empty($_GET["sort"]) ? 0 : $_GET["sort"]; $sort_field_meta = RGFormsModel::get_field($form, $sort_field); $is_numeric = $sort_field_meta["type"] == "number"; $star = $filter == "star" ? 1 : null; $read = $filter == "unread" ? 0 : null; // added status as an optional parameter to get_lead_count because the counts are inaccurate without using the status $lead_count = RGFormsModel::get_lead_count($form['id'], $search, $star, $read, null, null, $status); $prev_pos = !rgblank($position) && $position > 0 ? $position - 1 : false; $next_pos = !rgblank($position) && $position < $lead_count - 1 ? $position + 1 : false; // unread filter requires special handling for pagination since entries are filter out of the query as they are read if ($filter == 'unread') { $next_pos = $position; if ($next_pos + 1 == $lead_count) { $next_pos = false; } } // get the lead $leads = RGFormsModel::get_leads($form['id'], $sort_field, $sort_direction, $search, $position, 1, $star, $read, $is_numeric, null, null, $status); if (!$lead_id) { $lead = !empty($leads) ? $leads[0] : false; } else { $lead = RGFormsModel::get_lead($lead_id); } if (!$lead) { _e("Oops! We couldn't find your lead. Please try again", "gravityforms"); return; } RGFormsModel::update_lead_property($lead["id"], "is_read", 1); switch (RGForms::post("action")) { case "update": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::save_lead($form, $lead); do_action("gform_after_update_entry", $form, $lead["id"]); do_action("gform_after_update_entry_{$form["id"]}", $form, $lead["id"]); $lead = RGFormsModel::get_lead($lead["id"]); $lead = GFFormsModel::set_entry_meta($lead, $form); break; case "add_note": check_admin_referer('gforms_update_note', 'gforms_update_note'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["new_note"])); //emailing notes if configured if (rgpost("gentry_email_notes_to")) { $email_to = $_POST["gentry_email_notes_to"]; $email_from = $current_user->user_email; $email_subject = stripslashes($_POST["gentry_email_subject"]); $headers = "From: \"{$email_from}\" <{$email_from}> \r\n"; $result = wp_mail($email_to, $email_subject, stripslashes($_POST["new_note"]), $headers); } break; case "add_quick_note": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $user_data = get_userdata($current_user->ID); RGFormsModel::add_note($lead["id"], $current_user->ID, $user_data->display_name, stripslashes($_POST["quick_note"])); break; case "bulk": check_admin_referer('gforms_update_note', 'gforms_update_note'); if ($_POST["bulk_action"] == "delete") { RGFormsModel::delete_notes($_POST["note"]); } break; case "trash": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "trash"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "restore": case "unspam": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "active"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "spam": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::update_lead_property($lead["id"], "status", "spam"); $lead = RGFormsModel::get_lead($lead["id"]); break; case "delete": check_admin_referer('gforms_save_entry', 'gforms_save_entry'); RGFormsModel::delete_lead($lead["id"]); ?> <script type="text/javascript"> document.location.href='<?php echo "admin.php?page=gf_entries&view=entries&id=" . absint($form["id"]); ?> '; </script> <?php break; } $mode = empty($_POST["screen_mode"]) ? "view" : $_POST["screen_mode"]; ?> <link rel="stylesheet" href="<?php echo GFCommon::get_base_url(); ?> /css/admin.css" /> <script type="text/javascript"> jQuery(document).ready(function(){ toggleNotificationOverride(true); }); function DeleteFile(leadId, fieldId){ if(confirm(<?php _e("'Would you like to delete this file? \\'Cancel\\' to stop. \\'OK\\' to delete'", "gravityforms"); ?> )){ var mysack = new sack("<?php echo admin_url("admin-ajax.php"); ?> "); mysack.execute = 1; mysack.method = 'POST'; mysack.setVar( "action", "rg_delete_file" ); mysack.setVar( "rg_delete_file", "<?php echo wp_create_nonce("rg_delete_file"); ?> " ); mysack.setVar( "lead_id", leadId ); mysack.setVar( "field_id", fieldId ); mysack.onError = function() { alert('<?php echo esc_js(__("Ajax error while deleting field.", "gravityforms")); ?> ' )}; mysack.runAJAX(); return true; } } function EndDeleteFile(fieldId){ jQuery('#preview_' + fieldId).hide(); jQuery('#upload_' + fieldId).show('slow'); } function ToggleShowEmptyFields(){ if(jQuery("#gentry_display_empty_fields").is(":checked")){ createCookie("gf_display_empty_fields", true, 10000); document.location = document.location.href; } else{ eraseCookie("gf_display_empty_fields"); document.location = document.location.href; } } function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function eraseCookie(name) { createCookie(name,"",-1); } function ResendNotifications() { var selectedNotifications = new Array(); jQuery(".gform_notifications:checked").each(function(){ selectedNotifications.push(jQuery(this).val()); }); var sendTo = jQuery('#notification_override_email').val(); if(selectedNotifications.length <=0) { displayMessage("<?php _e("You must select at least one type of notification to resend.", "gravityforms"); ?> ", "error", "#notifications_container"); return; } jQuery('#please_wait_container').fadeIn(); jQuery.post(ajaxurl, { action : "gf_resend_notifications", gf_resend_notifications : '<?php echo wp_create_nonce('gf_resend_notifications'); ?> ', notifications: jQuery.toJSON(selectedNotifications), sendTo : sendTo, leadIds : '<?php echo $lead['id']; ?> ', formId : '<?php echo $form['id']; ?> ' }, function(response) { if(response) { displayMessage(response, "error", "#notifications_container"); } else { displayMessage("<?php _e("Notifications were resent successfully.", "gravityforms"); ?> ", "updated", "#notifications_container"); // reset UI jQuery(".gform_notifications").attr('checked', false); jQuery('#notification_override_email').val(''); } jQuery('#please_wait_container').hide(); setTimeout(function(){jQuery('#notifications_container').find('.message').slideUp();}, 5000); } ); } function displayMessage(message, messageClass, container){ jQuery(container).find('.message').hide().html(message).attr('class', 'message ' + messageClass).slideDown(); } function toggleNotificationOverride(isInit) { if(isInit) jQuery('#notification_override_email').val(''); if(jQuery(".gform_notifications:checked").length > 0 ) { jQuery('#notifications_override_settings').slideDown(); } else { jQuery('#notifications_override_settings').slideUp(function(){ jQuery('#notification_override_email').val(''); }); } } </script> <form method="post" id="entry_form" enctype='multipart/form-data'> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value=""/> <input type="hidden" name="screen_mode" id="screen_mode" value="<?php echo esc_attr(rgpost("screen_mode")); ?> " /> <div class="wrap gf_entry_wrap"> <div class="icon32" id="gravity-title-icon"><br></div> <h2 class="gf_admin_page_title"><span><?php echo __("Entry #", "gravityforms") . absint($lead["id"]); ?> </span><span class="gf_admin_page_subtitle"><span class="gf_admin_page_formid">ID: <?php echo $form['id']; ?> </span><?php echo $form['title']; ?> </span></h2> <?php if (isset($_GET["pos"])) { ?> <div class="gf_entry_detail_pagination"> <ul> <li class="gf_entry_count"><span>entry <strong><?php echo $position + 1; ?> </strong> of <strong><?php echo $lead_count; ?> </strong></span></li> <li class="gf_entry_prev gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($prev_pos, 'Previous Entry', 'gf_entry_prev_link'); ?> </li> <li class="gf_entry_next gf_entry_pagination"><?php echo GFEntryDetail::entry_detail_pagination_link($next_pos, 'Next Entry', 'gf_entry_next_link'); ?> </li> </ul> </div> <?php } ?> <?php RGForms::top_toolbar(); ?> <div id="poststuff" class="metabox-holder has-right-sidebar"> <div id="side-info-column" class="inner-sidebar"> <?php do_action("gform_entry_detail_sidebar_before", $form, $lead); ?> <div id="submitdiv" class="stuffbox"> <h3> <span class="hndle"><?php _e("Info", "gravityforms"); ?> </span> </h3> <div class="inside"> <div id="submitcomment" class="submitbox"> <div id="minor-publishing" style="padding:10px;"> <br/> <?php _e("Entry Id", "gravityforms"); ?> : <?php echo absint($lead["id"]); ?> <br/><br/> <?php _e("Submitted on", "gravityforms"); ?> : <?php echo esc_html(GFCommon::format_date($lead["date_created"], false, "Y/m/d")); ?> <br/><br/> <?php _e("User IP", "gravityforms"); ?> : <?php echo $lead["ip"]; ?> <br/><br/> <?php if (!empty($lead["created_by"]) && ($usermeta = get_userdata($lead["created_by"]))) { ?> <?php _e("User", "gravityforms"); ?> : <a href="user-edit.php?user_id=<?php echo absint($lead["created_by"]); ?> " alt="<?php _e("View user profile", "gravityforms"); ?> " title="<?php _e("View user profile", "gravityforms"); ?> "><?php echo esc_html($usermeta->user_login); ?> </a> <br/><br/> <?php } ?> <?php _e("Embed Url", "gravityforms"); ?> : <a href="<?php echo esc_url($lead["source_url"]); ?> " target="_blank" alt="<?php echo esc_url($lead["source_url"]); ?> " title="<?php echo esc_url($lead["source_url"]); ?> ">.../<?php echo esc_html(GFCommon::truncate_url($lead["source_url"])); ?> </a> <br/><br/> <?php if (!empty($lead["post_id"])) { $post = get_post($lead["post_id"]); ?> <?php _e("Edit Post", "gravityforms"); ?> : <a href="post.php?action=edit&post=<?php echo absint($post->ID); ?> " alt="<?php _e("Click to edit post", "gravityforms"); ?> " title="<?php _e("Click to edit post", "gravityforms"); ?> "><?php echo esc_html($post->post_title); ?> </a> <br/><br/> <?php } if (!empty($lead["payment_status"])) { echo $lead["transaction_type"] != 2 ? __("Payment Status", "gravityforms") : __("Subscription Status", "gravityforms"); ?> : <span id="gform_payment_status"><?php echo apply_filters("gform_payment_status", $lead["payment_status"], $form, $lead); ?> </span> <br/><br/> <?php if (!empty($lead["payment_date"])) { echo $lead["transaction_type"] == 1 ? __("Payment Date", "gravityforms") : __("Start Date", "gravityforms"); ?> : <?php echo GFCommon::format_date($lead["payment_date"], false, "Y/m/d", $lead["transaction_type"] == 1); ?> <br/><br/> <?php } if (!empty($lead["transaction_id"])) { echo $lead["transaction_type"] == 1 ? __("Transaction Id", "gravityforms") : __("Subscriber Id", "gravityforms"); ?> : <?php echo $lead["transaction_id"]; ?> <br/><br/> <?php } if (!rgblank($lead["payment_amount"])) { echo $lead["transaction_type"] == 1 ? __("Payment Amount", "gravityforms") : __("Subscription Amount", "gravityforms"); ?> : <?php echo GFCommon::to_money($lead["payment_amount"], $lead["currency"]); ?> <br/><br/> <?php } } do_action("gform_entry_info", $form["id"], $lead); ?> </div> <div id="major-publishing-actions"> <div> <?php switch ($lead["status"]) { case "spam": if (GFCommon::akismet_enabled($form['id'])) { ?> <a onclick="jQuery('#action').val('unspam'); jQuery('#entry_form').submit()" href="#"><?php _e("Not Spam", "gravityforms"); ?> </a> <?php echo GFCommon::current_user_can_any("gravityforms_delete_entries") ? "|" : ""; } if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <a class="submitdelete deletion" onclick="if ( confirm('<?php _e("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms"); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e("Delete Permanently", "gravityforms"); ?> </a> <?php } break; case "trash": ?> <a onclick="jQuery('#action').val('restore'); jQuery('#entry_form').submit()" href="#"><?php _e("Restore", "gravityforms"); ?> </a> <?php if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> | <a class="submitdelete deletion" onclick="if ( confirm('<?php _e("You are about to delete this entry. \\'Cancel\\' to stop, \\'OK\\' to delete.", "gravityforms"); ?> ') ) {jQuery('#action').val('delete'); jQuery('#entry_form').submit(); return true;} return false;" href="#"><?php _e("Delete Permanently", "gravityforms"); ?> </a> <?php } break; default: if (GFCommon::current_user_can_any("gravityforms_delete_entries")) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('trash'); jQuery('#entry_form').submit()" href="#"><?php _e("Move to Trash", "gravityforms"); ?> </a> <?php echo GFCommon::akismet_enabled($form['id']) ? "|" : ""; } if (GFCommon::akismet_enabled($form['id'])) { ?> <a class="submitdelete deletion" onclick="jQuery('#action').val('spam'); jQuery('#entry_form').submit()" href="#"><?php _e("Mark as Spam", "gravityforms"); ?> </a> <?php } } /*if(GFCommon::current_user_can_any("gravityforms_delete_entries")){ $delete_link = '<a class="submitdelete deletion" onclick="if ( confirm(\''. __("You are about to delete this entry. \'Cancel\' to stop, \'OK\' to delete.", "gravityforms") .'\') ) { jQuery(\'#action\').val(\'delete\'); jQuery(\'#entry_form\')[0].submit();} return false;" href="#">' . __("Delete", "gravityforms") . '</a>'; echo apply_filters("gform_entrydetail_delete_link", $delete_link); }*/ ?> </div> <div id="publishing-action"> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entries") && $lead["status"] != "trash") { $button_text = $mode == "view" ? __("Edit", "gravityforms") : __("Update", "gravityforms"); $button_click = $mode == "view" ? "jQuery('#screen_mode').val('edit');" : "jQuery('#action').val('update'); jQuery('#screen_mode').val('view');"; $update_button = '<input class="button button-large button-primary" type="submit" tabindex="4" value="' . $button_text . '" name="save" onclick="' . $button_click . '"/>'; echo apply_filters("gform_entrydetail_update_button", $update_button); if ($mode == "edit") { echo ' <input class="button button-large" type="submit" tabindex="5" value="' . __("Cancel", "gravityforms") . '" name="cancel" onclick="jQuery(\'#screen_mode\').val(\'view\');"/>'; } } ?> </div> </div> </div> </div> </div> <?php do_action("gform_entry_detail_sidebar_middle", $form, $lead); ?> <?php if (GFCommon::current_user_can_any("gravityforms_edit_entry_notes")) { ?> <!-- start notifications --> <div class="postbox" id="notifications_container"> <h3 style="cursor:default;"><span><?php _e("Notifications", "gravityforms"); ?> </span></h3> <div class="inside"> <div class="message" style="display:none; padding:10px; margin:10px 0px;"></div> <div> <?php if (!is_array($form["notifications"]) || count($form["notifications"]) <= 0) { ?> <p class="description"><?php _e("You cannot resend notifications for this entry because this form does not currently have any notifications configured.", "gravityforms"); ?> </p> <a href="<?php echo admin_url("admin.php?page=gf_edit_forms&view=settings&subview=notification&id={$form["id"]}"); ?> " class="button"><?php _e("Configure Notifications", "gravityforms"); ?> </a> <?php } else { foreach ($form["notifications"] as $notification) { ?> <input type="checkbox" class="gform_notifications" value="<?php echo $notification["id"]; ?> " id="notification_<?php echo $notification["id"]; ?> " onclick="toggleNotificationOverride();" /> <label for="notification_<?php echo $notification["id"]; ?> "><?php echo $notification["name"]; ?> </label> <br /><br /> <?php } ?> <div id="notifications_override_settings" style="display:none;"> <p class="description" style="padding-top:0; margin-top:0; width:99%;">You may override the default notification settings by entering a comma delimited list of emails to which the selected notifications should be sent.</p> <label for="notification_override_email"><?php _e("Send To", "gravityforms"); ?> <?php gform_tooltip("notification_override_email"); ?> </label><br /> <input type="text" name="notification_override_email" id="notification_override_email" style="width:99%;" /> <br /><br /> </div> <input type="button" name="notification_resend" value="<?php _e("Resend Notifications", "gravityforms"); ?> " class="button" style="" onclick="ResendNotifications();"/> <span id="please_wait_container" style="display:none; margin-left: 5px;"> <img src="<?php echo GFCommon::get_base_url(); ?> /images/loading.gif"> <?php _e("Resending...", "gravityforms"); ?> </span> <?php } ?> </div> </div> </div> <!-- / end notifications --> <?php } ?> <!-- begin print button --> <div class="detail-view-print"> <a href="javascript:;" onclick="var notes_qs = jQuery('#gform_print_notes').is(':checked') ? '¬es=1' : ''; var url='<?php echo trailingslashit(site_url()); ?> ?gf_page=print-entry&fid=<?php echo $form['id']; ?> &lid=<?php echo $lead['id']; ?> ' + notes_qs; window.open (url,'printwindow');" class="button"><?php _e("Print", "gravityforms"); ?> </a> <?php if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <input type="checkbox" name="print_notes" value="print_notes" checked="checked" id="gform_print_notes"/> <label for="print_notes"><?php _e("include notes", "gravityforms"); ?> </label> <?php } ?> </div> <!-- end print button --> <?php do_action("gform_entry_detail_sidebar_after", $form, $lead); ?> </div> <div id="post-body" class="has-sidebar"> <div id="post-body-content" class="has-sidebar-content"> <?php do_action("gform_entry_detail_content_before", $form, $lead); if ($mode == "view") { self::lead_detail_grid($form, $lead, true); } else { self::lead_detail_edit($form, $lead); } do_action("gform_entry_detail", $form, $lead); if (GFCommon::current_user_can_any("gravityforms_view_entry_notes")) { ?> <div id="namediv" class="stuffbox"> <h3> <label for="name"><?php _e("Notes", "gravityforms"); ?> </label> </h3> <form method="post"> <?php wp_nonce_field('gforms_update_note', 'gforms_update_note'); ?> <div class="inside"> <?php $notes = RGFormsModel::get_lead_notes($lead["id"]); //getting email values $email_fields = GFCommon::get_email_fields($form); $emails = array(); foreach ($email_fields as $email_field) { if (!empty($lead[$email_field["id"]])) { $emails[] = $lead[$email_field["id"]]; } } //displaying notes grid $subject = !empty($form["autoResponder"]["subject"]) ? "RE: " . GFCommon::replace_variables($form["autoResponder"]["subject"], $form, $lead) : ""; self::notes_grid($notes, true, $emails, $subject); ?> </div> </form> </div> <?php } do_action("gform_entry_detail_content_after", $form, $lead); ?> </div> </div> </div> </div> </form> <?php if (rgpost("action") == "update") { ?> <div class="updated fade" style="padding:6px;"> <?php _e("Entry Updated.", "gravityforms"); ?> </div> <?php } }
public static function handle_submission($form, &$lead, $ajax = false) { //insert submissing in DB RGFormsModel::save_lead($form, $lead); //reading lead that was just saved $lead = RGFormsModel::get_lead($lead["id"]); $disable_post = apply_filters("gform_disable_post_creation_{$form["id"]}", apply_filters("gform_disable_post_creation", false, $form, $lead), $form, $lead); if (!$disable_post) { //creates post if the form has any post fields $post_id = RGFormsModel::create_post($form, $lead); } //send auto-responder and notification emails self::send_emails($form, $lead); //display confirmation message or redirect to confirmation page return self::handle_confirmation($form, $lead, $ajax); }
/** Group notifications */ public function test_email_notification_groups() { wp_set_current_user(1); /* Activate digests for a form */ $_POST['form_notification_enable_digest'] = true; $_POST['save'] = true; $_GET['id'] = '1'; $_POST['form_notification_digest_screen'] = true; $_POST['form_notification_enable_digest'] = true; $_POST['form_notification_digest_emails'] = 'testing@digests.lo, testing2@digests.lo'; $_POST['form_notification_digest_interval'] = 'minute'; $_POST['form_notification_digest_group'] = 'sales'; $_POST['form_notification_digest_export_fields'] = 'all'; $this->digest->init(); // TODO: A better way to add /* Activate digests for a form */ $_POST['form_notification_enable_digest'] = true; $_POST['save'] = true; $_GET['id'] = '2'; $_POST['form_notification_digest_screen'] = true; $_POST['form_notification_enable_digest'] = true; $_POST['form_notification_digest_emails'] = 'testing@digests.lo, testing2@digests.lo, out@digests.lo'; $_POST['form_notification_digest_interval'] = 'minute'; $_POST['form_notification_digest_group'] = 'sales'; $_POST['form_notification_digest_export_fields'] = 'all'; $this->digest->init(); // TODO: A better way to add $_POST[] = array(); $_GET[] = array(); $null = null; $_POST['input_1'] = 'One'; $_POST['input_2'] = array('two', 'three'); RGFormsModel::save_lead(RGFormsModel::get_form_meta(1), $null); $_POST[] = array(); $_GET[] = array(); $null = null; $_POST['input_1'] = 'Gary'; $_POST['input_2'] = 'yesterday'; RGFormsModel::save_lead(RGFormsModel::get_form_meta(2), $null); $_POST[] = array(); $_GET[] = array(); $null = null; $_POST['input_1'] = 'Larry'; $_POST['input_2'] = 'tomorrow'; RGFormsModel::save_lead(RGFormsModel::get_form_meta(2), $null); /* Test the correct cron call */ do_action_ref_array('gf_digest_send_notifications', array(1)); $form = RGFormsModel::get_form_meta(1); $this->assertEquals($form['digests']['digest_last_sent'], 1); $form = RGFormsModel::get_form_meta(2); $this->assertEquals($form['digests']['digest_last_sent'], 3); global $phpmailer; $this->assertNotEmpty($phpmailer->mock_sent); $this->assertEquals(count($phpmailer->mock_sent), 3); /* Let's take a look here... (should be in a test of its own) */ preg_match('#filename="?(.*\\.csv)"?#', $phpmailer->mock_sent[0]['body'], $matches); $filename = sys_get_temp_dir() . '/' . $matches[1]; $csv = fopen($filename, 'rb'); $this->assertEquals(fgetcsv($csv), array('Form: Test Form (#1)')); fgetcsv($csv); fgetcsv($csv); fgetcsv($csv); $this->assertEquals(fgetcsv($csv), array('Form: Help (#2)')); fclose($csv); unlink($filename); }
public function edit_lead_detail($Form, $lead, $options) { global $current_user, $_gform_directory_approvedcolumn; if (empty($_gform_directory_approvedcolumn)) { $_gform_directory_approvedcolumn = self::get_approved_column($Form); } $adminonlycolumns = self::get_admin_only($Form); // If you want to allow users to edit their own approval (?) add a filter and return true. if (apply_filters('kws_gf_directory_allow_user_edit_approved', false) === false) { $Form['fields'] = self::remove_approved_column('form', $Form['fields'], $_gform_directory_approvedcolumn); } if (isset($_GET['edit']) && !wp_verify_nonce(RGForms::get('edit'), 'edit')) { _e(sprintf('%sYou do not have permission to edit this form.%s', '<div class="error">', '</div>'), 'gravity-forms-addons'); return; } if ((!empty($options['useredit']) && is_user_logged_in() && $current_user->id === $lead['created_by']) === true || (!empty($options['adminedit']) && self::has_access("gravityforms_directory")) === true) { if (RGForms::post("action") === "update") { check_admin_referer('gforms_save_entry', 'gforms_save_entry'); $lead = apply_filters('kws_gf_directory_lead_being_updated', $lead, $Form); do_action('kws_gf_directory_pre_update_lead', $lead, $Form); RGFormsModel::save_lead($Form, $lead); $lead = RGFormsModel::get_lead($lead["id"]); do_action('kws_gf_directory_post_update_lead', $lead, $Form); _e(apply_filters('kws_gf_directory_lead_updated_message', sprintf("%sThe entry was successfully updated.%s", "<p class='updated' id='message' style='padding:.5em .75em; background-color:#ffffcc; border:1px solid #ccc;'>", "</p>"), $lead, $Form), 'gravity-forms-addons'); } elseif (isset($_GET['edit'])) { add_filter('kws_gf_directory_backlink', array('GFDirectory', 'edit_entry_backlink'), 1, 2); ?> <form method="post" id="entry_form" enctype="multipart/form-data" action="<?php echo remove_query_arg(array('gf_search', 'sort', 'dir', 'page', 'edit'), add_query_arg(array())); ?> "> <?php wp_nonce_field('gforms_save_entry', 'gforms_save_entry'); ?> <input type="hidden" name="action" id="action" value="update"/> <input type="hidden" name="screen_mode" id="screen_mode" value="edit" /> <?php self::lead_detail_edit($Form, $lead); _e('<input class="button-primary" type="submit" tabindex="4" value="' . apply_filters('kws_gf_directory_update_lead_button_text', __('Update Entry', 'gravity-forms-addons')) . '" name="save" />'); ?> </form> <?php return false; } } return $lead; }
public static function handle_submission($form, &$lead) { //insert submissing in DB RGFormsModel::save_lead($form, $lead); //reading lead that was just saved $lead = RGFormsModel::get_lead($lead["id"]); //send auto-responder and notification emails self::send_emails($form, $lead); //display confirmation message or redirect to confirmation page return self::handle_confirmation($form, $lead); }
/** * Retrieve the lead values */ function get_form_values($form_id, $lead_id) { //echo "get form values form id = $form_id - lead id = $lead_id <br>"; if (!$lead_id) { return false; } if (!$form_id) { return false; } global $wpdb; $ret = false; $form = RGFormsModel::get_form_meta($form_id); $lead_table_name = RGFormsModel::get_lead_table_name(); //echo " form $form <br> lead table $lead_table_name <br>"; /** * Support for Sp-Gf-MySQL-Connect * If we only have a MySQL-Record and no lead * we have to create a dummy lead to make this work */ if ($form['spgfmc_tablename'] && $form['spgfmc_deletelead']) { $primarykey = $lead_id; /** * Now we are going to create a dummy lead * This is very bad :-( but it works :-) */ $lead_id = -1; $lead = NULL; RGFormsModel::save_lead($form, $lead); } /** * Only get the last saved lead for this form */ if ($lead_id == -1) { $lead_id = $wpdb->get_var($wpdb->prepare("SELECT DISTINCT id FROM {$lead_table_name} WHERE form_id = %d AND created_by = %d AND status = 'active' ORDER BY id DESC LIMIT 1", $form_id, wp_get_current_user()->ID)); } /** * If we have a lead id, we can continue */ if ($lead_id) { $lead = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$lead_table_name} WHERE form_id = %d AND id = %d", $form['id'], $lead_id), ARRAY_A); /** * Support for Sp-Gf-MySQL-Connect * If we connected the record to a mysql-table and set 'delete data' to true * we have to retrieve the values from the mysql-table */ if ($form['spgfmc_tablename'] && $form['spgfmc_deletefield']) { $wpdb->show_errors(); if (!$form['spgfmc_deletelead']) { /** * If the lead was not deleted we use the 'lead_id' to * connect the MySQL record with the GF lead */ $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$form['spgfmc_tablename']} WHERE {$form['spgfmc_field_leadid']} = %s", $lead_id), ARRAY_A); } elseif ($form['spgfmc_deletelead']) { /** * If the lead was deleted we use the already loaded data * But we have to setup some lead values */ $data = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$form['spgfmc_tablename']} WHERE {$form['spgfmc_field_leadid']} = %d", $primarykey), ARRAY_A); } else { /** * We can't load any data */ unset($data); } if ($data) { foreach ((array) $form['fields'] as $field) { switch ($field['type']) { case 'address': if ($field['spgfmc_fieldname_address1']) { $lead[$field['id'] . '.1'] = $data[$field['spgfmc_fieldname_address1']]; } if ($field['spgfmc_fieldname_address1']) { $lead[$field['id'] . '.2'] = $data[$field['spgfmc_fieldname_address2']]; } if ($field['spgfmc_fieldname_city']) { $lead[$field['id'] . '.3'] = $data[$field['spgfmc_fieldname_city']]; } if ($field['spgfmc_fieldname_state']) { $lead[$field['id'] . '.4'] = $data[$field['spgfmc_fieldname_state']]; } if ($field['spgfmc_fieldname_zip']) { $lead[$field['id'] . '.5'] = $data[$field['spgfmc_fieldname_zip']]; } if ($field['spgfmc_fieldname_country']) { $lead[$field['id'] . '.6'] = $data[$field['spgfmc_fieldname_country']]; } break; case 'name': if ($field['spgfmc_fieldname_firstname']) { $lead[$field['id'] . '.3'] = $data[$field['spgfmc_fieldname_firstname']]; } if ($field['spgfmc_fieldname_lastname']) { $lead[$field['id'] . '.6'] = $data[$field['spgfmc_fieldname_lastname']]; } default: if ($field['spgfmc_fieldname']) { $lead[$field['id']] = $data[$field['spgfmc_fieldname']]; } break; } } } } else { /** * Retrieve the lead */ $lead = RGFormsModel::get_lead($lead['id']); $lead['gform_edit_id'] = $lead['id']; } //echo "Lead: ".print_r($lead, true).'<br/> Form: '.print_r($form, true).'<br/>'; if ($lead['payment_status'] == 'Approved') { //echo 'Payment Approved<br/>'; } else { //echo 'Payment Not Complete<br/>'; } $ret = array('lead' => $lead, 'meta' => $form); } return $ret; }