View | Details | Raw Unified | Return to bug 4858
Collapse All | Expand All

(-)a/misc/cronjobs/gather_print_notices.pl (-6 / +21 lines)
Lines 368-380 sub apply_print_notice_charge { Link Here
368
        return;
368
        return;
369
    }
369
    }
370
370
371
    # Check for borrowernumber
371
    # Validate borrowernumber is numeric to prevent injection
372
    unless ($message->{borrowernumber}) {
372
    unless ($message->{borrowernumber} && $message->{borrowernumber} =~ /^\d+$/) {
373
        warn "No borrowernumber in message for print notice charge";
373
        warn "Invalid or missing borrowernumber in message for print notice charge";
374
        return;
374
        return;
375
    }
375
    }
376
376
377
    # Skip if patron not found
377
    # Validate branchcode format if present
378
    if (defined $message->{branchcode} && $message->{branchcode} !~ /^[A-Za-z0-9_-]*$/) {
379
        warn "Invalid branchcode format in message: " . $message->{branchcode};
380
        return;
381
    }
382
383
    # Validate letter_code format if present
384
    if (defined $message->{letter_code} && $message->{letter_code} !~ /^[A-Za-z0-9_-]*$/) {
385
        warn "Invalid letter_code format in message: " . $message->{letter_code};
386
        return;
387
    }
388
389
    # Skip if patron not found (using validated borrowernumber)
378
    my $patron = Koha::Patrons->find($message->{borrowernumber});
390
    my $patron = Koha::Patrons->find($message->{borrowernumber});
379
    unless ($patron) {
391
    unless ($patron) {
380
        warn "Patron " . $message->{borrowernumber} . " not found for print notice charge";
392
        warn "Patron " . $message->{borrowernumber} . " not found for print notice charge";
Lines 387-397 sub apply_print_notice_charge { Link Here
387
            library_id  => $message->{branchcode},
399
            library_id  => $message->{branchcode},
388
        });
400
        });
389
401
402
        # Log successful charge application
403
        if ($result) {
390
        cronlogaction({
404
        cronlogaction({
391
            action => 'Print notice charge',
405
            action => 'Print notice charge',
392
            info   => "Applied charge for patron " . $message->{borrowernumber} .
406
            info   => "Applied charge for patron " . $message->{borrowernumber} .
393
                     " notice " . ($message->{letter_code} || 'unknown')
407
                         " notice " . ($message->{letter_code} || 'unknown') .
408
                         " (charge ID: " . $result->id . ")"
394
        });
409
        });
410
        }
395
    };
411
    };
396
412
397
    if ($@) {
413
    if ($@) {
398
- 

Return to bug 4858