Bug 37684: Direct link to expired news are broken
When using a direct link to a news (koha.url/cgi-bin/koha/opac-main.pl?news_id=XXX), the link is broken if the news is expired.
Formerly, a using AdditionalContent->get( id => "my_news_id") on an
expired news was returning a news, and calling get without id was
returning all news but the expired ones.
This patch adds tests to check this behaviour by adding one expired news and performing following new tests:
1 - It may not be returned by AdditionalContent.get()
2 - It must be returned by AdditionalContent.get() using its id
This patch fixes the behaviour by addind the new behaviour or
AdditionalContent.get:
1 - Any news must be returned by AdditionalContent.get() using its id;
TEST PLAN:
1 - Apply patch
2 - Remove the changes made to Koha/AdditionalContents.pm
3 - Run tests -> one test must fail
4 - Create a news with a expired expiration date, notice the id of the
news in the url of the modification panel
5 - Go to "opac.url/cgi-bin/koha/opac-main.pl?news_id=MY_ID" -> notice
it does not work
6 - Reapply the whole patch
7 - Run test -> all test must pass
8 - Go to "opac.url/cgi-bin/koha/opac-main.pl?news_id=MY_ID" -> notice
it does work now
Signed-off-by: Olivier V <olivier.vezina@inLibro.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
(cherry picked from commit 4ad5cbdb97)
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
7d4399a99f
commit
1be8a9eedd
|
|
@ -84,11 +84,11 @@ sub search_for_display {
|
|||
$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 ] ]
|
||||
$search_params->{published_on} = { '<=' => \'CAST(NOW() AS DATE)' } unless $params->{id};
|
||||
$search_params->{expirationdate} = [ '-or', { '>=' => \'CAST(NOW() AS DATE)' }, undef ] unless $params->{id};
|
||||
$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' };
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ my $builder = t::lib::TestBuilder->new;
|
|||
$schema->storage->txn_begin;
|
||||
|
||||
subtest 'get' => sub {
|
||||
plan tests => 4;
|
||||
plan tests => 6;
|
||||
|
||||
my $additional_contents = Koha::Template::Plugin::AdditionalContents->get(
|
||||
{ category => 'news', location => [ 'opac_only', 'staff_and_opac' ], lang => 'default', library => '%' } );
|
||||
|
|
@ -61,6 +61,35 @@ subtest 'get' => sub {
|
|||
{ 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" );
|
||||
|
||||
my $expired_additional_content = $builder->build_object(
|
||||
{
|
||||
class => 'Koha::AdditionalContents',
|
||||
value => {
|
||||
category => 'news',
|
||||
location => 'opac_only',
|
||||
branchcode => undef,
|
||||
expirationdate => '0001-01-01',
|
||||
}
|
||||
}
|
||||
);
|
||||
$builder->build_object(
|
||||
{
|
||||
class => 'Koha::AdditionalContentsLocalizations',
|
||||
value => {
|
||||
additional_content_id => $expired_additional_content->id,
|
||||
lang => 'default',
|
||||
}
|
||||
}
|
||||
);
|
||||
$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 do not get the expired content" );
|
||||
|
||||
$additional_contents = Koha::Template::Plugin::AdditionalContents->get(
|
||||
{ category => 'news', location => [ 'opac_only', 'staff_and_opac' ], id => $expired_additional_content->id } );
|
||||
is( $additional_contents->{content}->count, 1, "We still get expired news through direct link" );
|
||||
|
||||
$additional_contents = Koha::Template::Plugin::AdditionalContents->get(
|
||||
{
|
||||
category => 'news', location => [ 'opac_only', 'staff_and_opac' ], lang => 'default',
|
||||
|
|
|
|||
Loading…
Reference in New Issue