ID, '_ttdvr_verification_id', true );
$recipient_name = get_post_meta( $post->ID, '_ttdvr_recipient_name', true );
$phone = get_post_meta( $post->ID, '_ttdvr_phone', true );
$email = get_post_meta( $post->ID, '_ttdvr_email', true );
$date_of_birth = get_post_meta( $post->ID, '_ttdvr_date_of_birth', true );
$address = get_post_meta( $post->ID, '_ttdvr_address', true );
$document_type = get_post_meta( $post->ID, '_ttdvr_document_type', true );
$document_type_other = get_post_meta( $post->ID, '_ttdvr_document_type_other', true );
$awarding_body = get_post_meta( $post->ID, '_ttdvr_awarding_body', true );
$course_subject = get_post_meta( $post->ID, '_ttdvr_course_subject', true );
$grade = get_post_meta( $post->ID, '_ttdvr_grade', true );
$performance = get_post_meta( $post->ID, '_ttdvr_performance', true );
$issued_date = get_post_meta( $post->ID, '_ttdvr_issued_date', true );
$effective_until_date = get_post_meta( $post->ID, '_ttdvr_effective_until_date', true );
$document_pdf_url = get_post_meta( $post->ID, '_ttdvr_document_pdf_url', true );
$course_details_remarks = get_post_meta( $post->ID, '_ttdvr_course_details_remarks', true );
$document_type_options = array(
'' => esc_html__( 'Select Document Type', '24tt-document-verifier' ),
'Letter' => esc_html__( 'Letter', '24tt-document-verifier' ),
'Certificate of Merit' => esc_html__( 'Certificate of Merit', '24tt-document-verifier' ),
'Certificate of Completion' => esc_html__( 'Certificate of Completion', '24tt-document-verifier' ),
'Memorandum of Understanding' => esc_html__( 'Memorandum of Understanding', '24tt-document-verifier' ),
'Proposal' => esc_html__( 'Proposal', '24tt-document-verifier' ),
'Invoice' => esc_html__( 'Invoice', '24tt-document-verifier' ),
'Receipt' => esc_html__( 'Receipt', '24tt-document-verifier' ),
'Quotation' => esc_html__( 'Quotation', '24tt-document-verifier' ),
'Contract/Agreement' => esc_html__( 'Contract/Agreement', '24tt-document-verifier' ),
'Company Resolution' => esc_html__( 'Company Resolution', '24tt-document-verifier' ),
'Offer' => esc_html__( 'Offer', '24tt-document-verifier' ),
'Business Letter' => esc_html__( 'Business Letter', '24tt-document-verifier' ),
'Other' => esc_html__( 'Other (specify below)', '24tt-document-verifier' ),
);
?>
'_ttdvr_verification_id',
'ttdvr_recipient_name' => '_ttdvr_recipient_name',
'ttdvr_phone' => '_ttdvr_phone',
'ttdvr_email' => '_ttdvr_email',
'ttdvr_date_of_birth' => '_ttdvr_date_of_birth',
'ttdvr_address' => '_ttdvr_address',
'ttdvr_document_type' => '_ttdvr_document_type',
'ttdvr_document_type_other' => '_ttdvr_document_type_other',
'ttdvr_awarding_body' => '_ttdvr_awarding_body',
'ttdvr_course_subject' => '_ttdvr_course_subject',
'ttdvr_grade' => '_ttdvr_grade',
'ttdvr_performance' => '_ttdvr_performance',
'ttdvr_issued_date' => '_ttdvr_issued_date',
'ttdvr_effective_until_date' => '_ttdvr_effective_until_date',
'ttdvr_document_pdf_url' => '_ttdvr_document_pdf_url',
'ttdvr_course_details_remarks' => '_ttdvr_course_details_remarks',
);
// 5. Sanitize and Save
foreach ( $fields as $input_name => $meta_key ) {
$posted_value = isset( $_POST[ $input_name ] ) ? wp_unslash( $_POST[ $input_name ] ) : '';
// --- THE NEW SHIELD: Catch the Verification ID before it saves ---
if ( 'ttdvr_verification_id' === $input_name ) {
$new_value = sanitize_text_field( $posted_value );
if ( ! empty( $new_value ) ) {
// Check if this ID exists on any OTHER document
$existing_post = $wpdb->get_var( $wpdb->prepare(
"SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_ttdvr_verification_id' AND meta_value = %s AND post_id != %d LIMIT 1",
$new_value,
$post_id
) );
// Neutralize the duplicate!
if ( $existing_post ) {
$new_value = $new_value . '-DUP-' . wp_rand( 1000, 9999 );
// Fire a warning transient to alert the admin on the next screen load
set_transient( 'ttdvr_duplicate_id_warning', 'Security Alert: The Document ID you entered already existed! To protect system integrity, it was automatically changed to: ' . $new_value, 45 );
}
}
}
// --- END NEW SHIELD ---
// Standard sanitation for all other fields
elseif ( 'ttdvr_email' === $input_name ) {
$new_value = sanitize_email( $posted_value );
} elseif ( 'ttdvr_document_pdf_url' === $input_name ) {
$new_value = esc_url_raw( $posted_value );
} elseif ( 'ttdvr_address' === $input_name || 'ttdvr_course_details_remarks' === $input_name ) {
$new_value = sanitize_textarea_field( $posted_value );
} elseif ( 'ttdvr_performance' === $input_name ) {
$new_value = absint( $posted_value );
if ( $new_value > 100 ) $new_value = 100;
} else {
$new_value = sanitize_text_field( $posted_value );
}
update_post_meta( $post_id, $meta_key, $new_value );
}
}
}