Bug 37628: (follow-up) Remove get_opac_news_by_id

Keep the same behaviour, but wondering why we don't return 'content'
when there is no match.

ie.
+    is( $additional_contents, undef );
should certainly be
+    is( $additional_contents->{content}->count, 0 );

WNC amended patch - tidied

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 8830cd7eff)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Jonathan Druart 2023-10-24 15:12:44 +02:00 committed by Lucas Gass
parent 7776ebc178
commit 935ae536c8
4 changed files with 51 additions and 25 deletions

View File

@ -81,13 +81,14 @@ sub search_for_display {
qq|(SELECT COUNT(*) FROM additional_contents_localizations WHERE lang='$lang' AND additional_content_id=me.additional_content_id)=0|;
my $search_params;
$search_params->{location} = $params->{location};
$search_params->{branchcode} = $params->{library_id} ? [ $params->{library_id}, undef ] : undef;
$search_params->{published_on} = { '<=' => \'CAST(NOW() AS DATE)' };
$search_params->{expirationdate} = [ '-or', { '>=' => \'CAST(NOW() AS DATE)' }, undef ];
$search_params->{category} = $params->{category} if $params->{category};
$search_params->{lang} = 'default' if !$lang || $lang eq 'default';
$search_params->{-or} = [ { 'lang' => $lang }, '-and' => [ 'lang', 'default', \$subquery ] ]
$search_params->{'additional_content.id'} = $params->{id} if $params->{id};
$search_params->{location} = $params->{location};
$search_params->{branchcode} = $params->{library_id} ? [ $params->{library_id}, undef ] : undef;
$search_params->{published_on} = { '<=' => \'CAST(NOW() AS DATE)' };
$search_params->{expirationdate} = [ '-or', { '>=' => \'CAST(NOW() AS DATE)' }, undef ];
$search_params->{category} = $params->{category} if $params->{category};
$search_params->{lang} = 'default' if !$lang || $lang eq 'default';
$search_params->{-or} = [ { 'lang' => $lang }, '-and' => [ 'lang', 'default', \$subquery ] ]
if !$search_params->{lang};
my $attribs = { prefetch => 'additional_content', order_by => 'additional_content.number' };

View File

@ -40,10 +40,11 @@ sub get {
my $content = Koha::AdditionalContents->search_for_display(
{
category => $category,
location => $location,
lang => $lang,
category => $category,
location => $location,
lang => $lang,
( $library ? ( library_id => $library ) : () ),
( $id ? ( id => $id ) : () ),
}
);

View File

@ -82,7 +82,7 @@
[% END %]
[% IF news_id %]
[% SET koha_news = AdditionalContents.get( category => 'news', location => ['opac_only', 'staff_and_opac'], lang => lang, news_id => news_id ) %]
[% SET koha_news = AdditionalContents.get( category => 'news', location => ['opac_only', 'staff_and_opac'], lang => lang, id => news_id ) %]
[% ELSE %]
[% SET koha_news = AdditionalContents.get( category => 'news', location => ['opac_only', 'staff_and_opac'], lang => lang, library => branchcode ) %]
[% END %]

View File

@ -33,18 +33,21 @@ my $builder = t::lib::TestBuilder->new;
$schema->storage->txn_begin;
subtest 'get' => sub {
plan tests => 2;
plan tests => 4;
my $additional_contents = Koha::Template::Plugin::AdditionalContents->get({ category => 'news', location => ['opac_only', 'staff_and_opac'], lang => 'default', library => '%' });
my $before_count = $additional_contents ? $additional_contents->{content}->count() : 0;
my $additional_content = $builder->build_object({
class => 'Koha::AdditionalContents',
value => {
category => 'news',
location => 'opac_only',
branchcode => undef
my $additional_contents = Koha::Template::Plugin::AdditionalContents->get(
{ category => 'news', location => [ 'opac_only', 'staff_and_opac' ], lang => 'default', library => '%' } );
my $before_count = $additional_contents ? $additional_contents->{content}->count() : 0;
my $additional_content = $builder->build_object(
{
class => 'Koha::AdditionalContents',
value => {
category => 'news',
location => 'opac_only',
branchcode => undef
}
}
});
);
$builder->build_object(
{
class => 'Koha::AdditionalContentsLocalizations',
@ -54,13 +57,34 @@ subtest 'get' => sub {
}
}
);
$additional_contents = Koha::Template::Plugin::AdditionalContents->get({ category => 'news', location => ['opac_only', 'staff_and_opac'], lang => 'default' });
is( $additional_contents->{content}->count, $before_count + 1, "We get the additional one we added");
$additional_contents = Koha::Template::Plugin::AdditionalContents->get(
{ category => 'news', location => [ 'opac_only', 'staff_and_opac' ], lang => 'default' } );
is( $additional_contents->{content}->count, $before_count + 1, "We get the additional one we added" );
$additional_contents = Koha::Template::Plugin::AdditionalContents->get({ category => 'news', location => ['opac_only', 'staff_and_opac'], lang => 'default', blocktitle => 'blockhead' });
$additional_contents = Koha::Template::Plugin::AdditionalContents->get(
{
category => 'news', location => [ 'opac_only', 'staff_and_opac' ], lang => 'default',
blocktitle => 'blockhead'
}
);
is( $additional_contents->{blocktitle}, 'blockhead', "Block title is passed through");
is( $additional_contents->{blocktitle}, 'blockhead', "Block title is passed through" );
$additional_contents = Koha::Template::Plugin::AdditionalContents->get(
{
id => $additional_content->id, category => 'news', location => [ 'opac_only', 'staff_and_opac' ],
lang => 'default'
}
);
is( $additional_contents->{content}->count, 1 );
$additional_contents = Koha::Template::Plugin::AdditionalContents->get(
{
id => $additional_content->id, category => 'html_customizations',
location => [ 'opac_only', 'staff_and_opac' ], lang => 'default'
}
);
is( $additional_contents, undef );
};