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); }
/** * Envoi de l'email de notification pour les entrées Gravity Forms en "save & continue" qui n'ont pas donnée * de résultat dans les 7 derniers jours. * * @return void */ function avignon_send_reminder_email() { global $wpdb; // On veux les formulaires pré-rempli il y a 7 jours $days = 7; $start = new DateTime("-{$days} days midnight", new DateTimeZone('GMT')); $end = new DateTime("-{$days} days 23:59:59", new DateTimeZone('GMT')); // On supprime les soumissions périmées GFFormsModel::purge_expired_incomplete_submissions(); // On récupère les adresses email, l'URL de base et le jeton $table = GFFormsModel::get_incomplete_submissions_table_name(); $sql = $wpdb->prepare("SELECT email, source_url, uuid FROM {$table} WHERE date_created BETWEEN %s AND %s", $start->format('Y-m-d H:i:s'), $end->format('Y-m-d H:i:s')); $reminders = $wpdb->get_results($sql, ARRAY_A); add_filter('wp_mail_content_type', 'avignon_email_html_content_type'); foreach ($reminders as $reminder) { $resume_url = add_query_arg(array('gf_token' => $reminder['uuid']), $reminder['source_url']); $resume_url = esc_url($resume_url); ob_start(); include get_stylesheet_directory() . '/email/reminder.php'; $message = ob_get_clean(); wp_mail($reminder['email'], __("Friendly reminder (Institut d'Avignon application)", 'avignon'), $message); } remove_filter('wp_mail_content_type', 'avignon_email_html_content_type'); return $row; }