Bug 27943 added MARC21 authorities 7XX on display. It calls $field->as_string($subfields_to_report). This fails when field is not in known ones.
This creates an ugly warning in logs : Unmatched [ in regex; marked by <-- HERE in m/^[ <-- HERE ]$/ at /usr/share/perl5/MARC/Field.pm line 643. Because of a call field->as_string with an empty string. Looks like MARC::Field only checks var is undef before using in regexp.
Created attachment 186964 [details] [review] Bug 40883: Add unit test
Created attachment 186965 [details] [review] Bug 40883: Fix authorities display fails on unknown 7XX Bug 27943 added MARC21 authorities 7XX on display. It calls $field->as_string($subfields_to_report). This fails when authority type is custom (not in C4/Heading/MARC21.pm $auth_heading_fields) and so field is not in known ones. We see in other parts that $subfields_to_report may be emty. This patch simply creates 7xx heading with $field->as_string() in this case. Test plan: 1) Run test : prove t/db_dependent/AuthoritiesMarc.t 2) Create a new autority type with main heading in 199 and field 799 3) Create a new authority of this type 4) Perform a search to find it => Without patch the page retruns the error Unmatched [ in regex; marked by <-- HERE in m/^[ <-- HERE ]$/ at /usr/share/perl5/MARC/Field.pm line 643.
NB : We see in C4/AuthoritiesMarc.pm BuildSummary() that var $subfields_to_report can be set by part building 7xx and then is reused in part building 880. This looks very strange.
1) QA checks Failed: tests untidy. 2) Code review 3) Testing - Unit tests pass - Tests pass I got an error when trying to edit the MARC structure of the newly added authority type: CGI::Compile::ROOT::kohadevbox_koha_admin_auth_tag_structure_2epl::auth_tag_structure_2epl(): DBI Exception: DBD::mysql::st execute failed: 'koha_kohadev.auth_types.authtypetext' isn't in GROUP BY at /usr/share/perl5/CGI/Emulate/PSGI.pm line 30 at /usr/share/perl5/DBIx/Class/Exception.pm line 77 Had to set: <strict_sql_modes>0</strict_sql_modes> and restart_all Without patch: - Added a new custom authority type XXX - Copied my PERSO_NAME authority structure into it - Added 789 as a new field with subfield a - Edited an existing authority, changed framework and added the field - Searched: it shows in the authority result list including my 789 info - Checked the logs with tail -f /var/logs/koha/kohadev/*.log - no errors Can you check if the error still persists for you or where my test was faulty?