Bug 29818: Cannot save subscription frequency without display order

The schema says that subscription_frequencies.displayorder can be null, and
everything else deals with it being null just fine, but if you try to save
a new frequency without specifying display order with strict_sql_modes set,
you get an error.

Test plan:
 1. Without the patch, Serials - Manage frequencies - New frequency
 2. Description is mandatory, so fill it in, then click Save
 3. Boom! Apply patch, restart_all
 4. Repeat steps 1-2, and verify that no error is thrown and the new
    frequency shows up (at the top of the list since nothing comes before
    something)
 5. New frequency, fill in Description, try typing something other than a
    number in Display order and saving. You should be told to follow the
    directions that only numeric characters are allowed

Sponsored-by: Chetco Community Public Library
Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Phil Ringnalda 2024-11-12 21:31:02 -08:00 committed by Katrin Fischer
parent d794891005
commit 77c003ed54
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834
2 changed files with 4 additions and 2 deletions

View file

@ -117,7 +117,8 @@
</li>
<li>
<label for="displayorder">Display order: </label>
<input type="text" id="displayorder" name="displayorder" value="[% displayorder | html %]" size="3" />
<input type="text" inputmode="numeric" pattern="\d*" id="displayorder" name="displayorder" value="[% displayorder | html %]" size="3" />
<span class="hint">Only numeric characters are allowed</span>
</li>
</ol>
</fieldset>

View file

@ -75,7 +75,8 @@ if($op && ($op eq 'cud-savenew' || $op eq 'cud-savemod')) {
foreach (qw/ description unit issuesperunit unitsperissue displayorder /) {
$frequency->{$_} = $input->param($_);
}
$frequency->{unit} = undef if $frequency->{unit} eq '';
$frequency->{unit} = undef if $frequency->{unit} eq '';
$frequency->{displayorder} = undef if $frequency->{displayorder} eq '';
foreach (qw/issuesperunit unitsperissue/) {
$frequency->{$_} = 1 if $frequency->{$_} !~ /\d+/;
}