• Resolved hollosipeter

    (@hollosipeter)


    Hi! I want to put a {hidden-4} to the forminator’s email from a database logic, but seems like not working. I’m using forminator_custom_submit_before_set_fields. What I missed?

    Thank you,
    Peter



    add_action(‘forminator_custom_form_submit_before_set_fields’, ‘forminator_append_ean_to_hidden_field’, 10, 3);

    function forminator_append_ean_to_hidden_field($entry, $form_id, $field_data_array) {

        $form_ids = array(22246); // Állítsd be a megfelelő Forminator űrlap ID-t

        if (!in_array($form_id, $form_ids)) {

            return;

        }

        global $wpdb;

        $email_field = null;

        $user_ean = null;

        // Keresd meg az email mezőt

        foreach ($field_data_array as $key => $value) {

            if (isset($value[‘name’]) && $value[‘name’] === ’email-1′) {

                $email_field = $value[‘value’];

                break;

            }

        }

        // Generáljuk vagy keressük meg az User EAN-t

        if ($email_field) {

            $user_id = $wpdb->get_var($wpdb->prepare(“SELECT ID FROM {$wpdb->users} WHERE user_email = %s”, $email_field));

            if ($user_id) {

                // Létező user esetén ellenőrizzük az EAN-t

                $user_ean = $wpdb->get_var($wpdb->prepare(

                    “SELECT user_value FROM wp_prflxtrflds_user_field_data WHERE user_id = %d AND field_id = 10”,

                    $user_id

                ));

                if (!$user_ean) {

                    $user_ean = generate_prefixed_ean($user_id);

                    $wpdb->insert(

                        ‘wp_prflxtrflds_user_field_data’,

                        array(

                            ‘user_id’    => $user_id,

                            ‘field_id’   => 10,

                            ‘user_value’ => $user_ean,

                        ),

                        array(‘%d’, ‘%d’, ‘%s’)

                    );

                }

            } else {

                // Nem létező user

                $user_ean = $wpdb->get_var($wpdb->prepare(

                    “SELECT user_value FROM wp_prflxtrflds_regdata WHERE email = %s”,

                    $email_field

                ));

                if (!$user_ean) {

                    $user_ean = generate_prefixed_ean($email_field);

                    $wpdb->insert(

                        ‘wp_prflxtrflds_regdata’,

                        array(

                            ’email’      => $email_field,

                            ‘user_value’ => $user_ean,

                        ),

                        array(‘%s’, ‘%s’)

                    );

                }

            }

        }

        if (!$user_ean) {

            $user_ean = generate_prefixed_ean(time());

        }

        // Frissítsük a hidden-4 mezőt

        foreach ($field_data_array as $key => $value) {

            if (strpos($value[‘name’], ‘hidden-4’) !== false) {

                Forminator_CForm_Front_Action::$info[‘field_data_array’][$key][‘value’] = $user_ean;

            }

        }

    }

    // Prefix generálása a User EAN-hez

    function generate_prefixed_ean($base_value) {

        if (preg_match(‘/^\d{5}$/’, $base_value)) {

            return ‘99980’ . $base_value;

        } elseif (preg_match(‘/^\d{6}$/’, $base_value)) {

            return ‘9998’ . $base_value;

        }

        return $base_value;

    }

    // QR-kód generálása

    function generate_qr_code($user_ean, $user_id = null) {

        $upload_dir = wp_upload_dir();

        $qr_code_dir = $upload_dir[‘basedir’] . ‘/qrcodes/’;

        $qr_code_url_dir = $upload_dir[‘baseurl’] . ‘/qrcodes/’;

        if (!file_exists($qr_code_dir)) {

            wp_mkdir_p($qr_code_dir);

        }

        // Ha van user_id, a fájl neve user_id.png, ha nincs, akkor user_ean.png

        $qr_code_filename = $user_id ? $user_id . ‘.png’ : $user_ean . ‘.png’;

        $qr_code_path = $qr_code_dir . $qr_code_filename;

        if (!file_exists($qr_code_path)) {

            $qr_code_generation_url = ‘https://quickchart.io/qr?text=’ . urlencode($user_ean) . ‘&format=png’;

            $qr_code_image = file_get_contents($qr_code_generation_url);

            if ($qr_code_image) {

                file_put_contents($qr_code_path, $qr_code_image);

            }

        }

        return $qr_code_url_dir . $qr_code_filename;

    }

Viewing 3 replies - 1 through 3 (of 3 total)
  • Hi @hollosipeter

    I hope you are doing well today.

    By default, this is not possible and this will be outside the scope of support to provide such a thing. For that, you’ll need to hire a developer to provide the required custom code for you. WordPress provides a jobs directory here https://jobs.wordpress.net/, if you need further advice about it, feel free to email [email protected].

    – Subject: ATTN: WPMU DEV support – wp.org
    – Link back to this thread for reference (https://ww.wp.xz.cn/support/topic/forminator-save-field-code/)

    Kind Regards,
    Kris

    Thread Starter hollosipeter

    (@hollosipeter)

    Hi Kris!
    I always ask this kind of questions here, because it is a help with a function in SDK. I’m developing the code and I’m using forminator_after_save_entry but now I need to fill a field before submit and seems like forminator_custom_form_submit_before_set_fields function not working. This function – in an older version of Forminator worked, that’s why I’m asked what I miss.
    But I can write to wpmudev.
    Thank you,
    Peter

    Plugin Support Patrick – WPMU DEV Support

    (@wpmudevsupport12)

    Hi @hollosipeter

    I see you started a ticket on our Pro area, we followed up there.

    I also suggest removing your code or updating the database prefix as this is a public thread and that was added to it.

    Instead, a better idea would be to get the prefix using $wpdb->prefix, unless it is a custom table.

    Best Regards
    Patrick Freitas

Viewing 3 replies - 1 through 3 (of 3 total)

The topic ‘Forminator save field code’ is closed to new replies.