From 35aef7845f68d940eb7542863c2b6a9f0bec0257 Mon Sep 17 00:00:00 2001 From: Fridolin Somers Date: Thu, 8 Jul 2021 22:33:03 -1000 Subject: [PATCH] Bug 28698: Fix news for all displays in all locations Some news are used for custom text with a specific language, for example "opacheader". The bug is that in these locations, news for all (staff and opac) are displayed. This is because GetNewsToDisplay uses SQL : opac_news.lang = '' OR opac_news.lang = ? This patch is a quick fix. This feature maybe needs a big revamping. Test plan : 1) Remove any news 2) Create a news with empty 'Display location' and some content 3) Display OPAC interface 4) without patch you see in location of 'opacheader', 'opacnavright' ... the content of the news 5) With patch you see content of the news only in news table 6) Create a news for opacheader 7) Check it appears in correct language Signed-off-by: David Nind --- C4/NewsChannels.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/C4/NewsChannels.pm b/C4/NewsChannels.pm index 4b3c68311f..8c7aac738e 100644 --- a/C4/NewsChannels.pm +++ b/C4/NewsChannels.pm @@ -226,13 +226,14 @@ sub GetNewsToDisplay { OR expirationdate IS NULL ) AND published_on <= CURDATE() - AND (opac_news.lang = '' OR opac_news.lang = ?) + AND (opac_news.lang = ? OR opac_news.lang = ?) AND (opac_news.branchcode IS NULL OR opac_news.branchcode = ?) ORDER BY number }; my $sth = $dbh->prepare($query); - $lang = $lang // q{}; - $sth->execute($lang,$branch); + my $lang1 = ( $lang =~ /_/ ) ? $lang : q{}; # lang contains also location + my $lang2 = $lang // q{}; + $sth->execute($lang1,$lang2,$branch); my @results; while ( my $row = $sth->fetchrow_hashref ){ $row->{newdate} = output_pref({ dt => dt_from_string( $row->{newdate} ), dateonly => 1 }); -- 2.20.1