From 7168229653a2e9dde3fdbd96e00b04273916f32a 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 Signed-off-by: Tomas Cohen Arazi Signed-off-by: Andrew Fuerste-Henry (cherry picked from commit 33369d2522c23230e9f755466b19f9c032629365) Signed-off-by: Victor Grousset/tuxayo --- C4/NewsChannels.pm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/C4/NewsChannels.pm b/C4/NewsChannels.pm index 7c9df5b2e5..41b441e1e3 100644 --- a/C4/NewsChannels.pm +++ b/C4/NewsChannels.pm @@ -204,13 +204,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.39.5