Replies: 3
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;
}