Exemple #1
0
 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);
 }
Exemple #2
0
/**
 * 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;
}