Browse Source

Bug 22544: Move get_opac_news to Koha namespace

Signed-off-by: David Nind <david@davidnind.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
master
Josef Moravec 3 years ago
committed by Jonathan Druart
parent
commit
ae0c08c936
  1. 42
      C4/NewsChannels.pm
  2. 35
      Koha/NewsItem.pm
  3. 16
      koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt
  4. 41
      t/db_dependent/NewsChannels.t
  5. 22
      tools/koha-news.pl

42
C4/NewsChannels.pm

@ -30,7 +30,7 @@ BEGIN {
@ISA = qw(Exporter);
@EXPORT = qw(
&GetNewsToDisplay
&add_opac_new &upd_opac_new &del_opac_new &get_opac_news
&add_opac_new &upd_opac_new &del_opac_new
);
}
@ -145,46 +145,6 @@ sub del_opac_new {
}
sub get_opac_news {
my ($limit, $lang, $branchcode) = @_;
my @values;
my $dbh = C4::Context->dbh;
my $query = q{
SELECT opac_news.*, branches.branchname,
published_on AS newdate,
borrowers.title AS author_title,
borrowers.firstname AS author_firstname,
borrowers.surname AS author_surname
FROM opac_news LEFT JOIN branches
ON opac_news.branchcode=branches.branchcode
LEFT JOIN borrowers on borrowers.borrowernumber = opac_news.borrowernumber
};
$query .= ' WHERE 1';
if ($lang) {
$query .= " AND (opac_news.lang='' OR opac_news.lang=?)";
push @values,$lang;
}
if ($branchcode) {
$query .= ' AND (opac_news.branchcode IS NULL OR opac_news.branchcode=?)';
push @values,$branchcode;
}
$query.= ' ORDER BY published_on DESC ';
#if ($limit) {
# $query.= 'LIMIT 0, ' . $limit;
#}
my $sth = $dbh->prepare($query);
$sth->execute(@values);
my @opac_news;
my $count = 0;
while (my $row = $sth->fetchrow_hashref) {
if ((($limit) && ($count < $limit)) || (!$limit)) {
push @opac_news, $row;
}
$count++;
}
return ($count, \@opac_news);
}
=head2 GetNewsToDisplay
$news = &GetNewsToDisplay($lang,$branch);

35
Koha/NewsItem.pm

@ -22,6 +22,8 @@ use Modern::Perl;
use Carp;
use Koha::Database;
use Koha::DateUtils;
use Koha::Libraries;
use Koha::Patrons;
use base qw(Koha::Object);
@ -53,6 +55,39 @@ sub author {
return Koha::Patron->_new_from_dbic($author_rs);
}
=head3 is_expired
my $is_expired = $news_item->is_expired;
Returns 1 if the news item is expired or 0;
=cut
sub is_expired {
my ( $self ) = @_;
return 0 unless $self->expirationdate;
return 1 if dt_from_string( $self->expirationdate ) < dt_from_string->truncate( to => 'day' );
return 0;
}
=head3 library
my $library = $news_item->library;
Returns Koha::Library object or undef
=cut
sub library {
my ( $self ) = @_;
my $library_rs = $self->_result->branchcode;
return unless $library_rs;
return Koha::Library->_new_from_dbic( $library_rs );
}
=head3 _type
=cut

16
koha-tmpl/intranet-tmpl/prog/en/modules/tools/koha-news.tt

@ -7,8 +7,6 @@
[% INCLUDE 'doc-head-open.inc' %]
<title>News &rsaquo; Tools &rsaquo; Koha</title>
[% INCLUDE 'doc-head-close.inc' %]
[% IF ( opac_news_count ) %]
[% END %]
[% UNLESS ( wysiwyg ) %]
[% Asset.css("lib/codemirror/codemirror.css") | $raw %]
[% Asset.css("lib/codemirror/lint.min.css") | $raw %]
@ -140,7 +138,7 @@
<fieldset class="action"><input class="button" type="submit" value="Submit" /> <a class="cancel" href="/cgi-bin/koha/tools/koha-news.pl">Cancel</a></fieldset>
</form>
[% ELSE %]
[% IF ( opac_news_count ) %]
[% IF ( opac_news.count ) %]
<form id="del_form" method="post" action="/cgi-bin/koha/tools/koha-news.pl">
<table id="newst">
<thead> <tr>
@ -156,7 +154,7 @@
<th class="NoSort noExport">Actions</th>
</tr></thead>
<tbody>[% FOREACH opac_new IN opac_news %]
[% IF ( opac_new.expired ) %]
[% IF ( opac_new.is_expired ) %]
<tr class="expired">
[% ELSE %]
<tr>
@ -177,13 +175,13 @@
</td>
<td>[% IF ( opac_new.branchcode == "" ) -%]
All libraries
[% ELSE %][% opac_new.branchname | html %]
[% ELSE %][% opac_new.library.branchname | html %]
[% END %]</td>
<td>[% opac_new.number | html %]</td>
<td data-order="[% opac_new.newdate | html %]">[% opac_new.newdate | $KohaDates %]</td>
<td data-order="[% opac_new.expirationdate | html %]">[% opac_new.expirationdate | $KohaDates %] [% IF ( opac_new.expired ) %](<span class="expired">expired</span>)[% END %]</td>
<td data-order="[% opac_new.timestamp | html %]">[% opac_new.timestamp | $KohaDates %]</td>
<td data-order="[% opac_new.expirationdate | html %]">[% opac_new.expirationdate | $KohaDates %] [% IF ( opac_new.is_expired ) %](<span class="expired">expired</span>)[% END %]</td>
<td>[% opac_new.title | html %]</td>
<td>[% opac_new.author_title | html %] [% opac_new.author_firstname | html %] [% opac_new.author_surname | html %]</td>
<td>[% IF ( opac_new.author) %][% INCLUDE 'patron-title.inc' patron=opac_new.author hide_patron_infos_if_needed=1 %][% END %]</td>
<td>
<div class="btn-group">
<a class="preview_news btn btn-default btn-xs" data-number="[% loop.count | html %]"><i class="fa fa-eye" aria-hidden="true"></i> Preview content</a>
@ -289,7 +287,7 @@
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'calendar.inc' %]
[% Asset.js("js/tools-menu.js") | $raw %]
[% IF ( opac_news_count ) %]
[% IF ( opac_news.count ) %]
[% INCLUDE 'datatables.inc' %]
<script>
$('.preview_news').click( function() {

41
t/db_dependent/NewsChannels.t

@ -4,8 +4,9 @@ use Modern::Perl;
use Koha::Database;
use Koha::DateUtils;
use Koha::Libraries;
use Koha::News;
use Test::More tests => 11;
use Test::More tests => 9;
BEGIN {
use_ok('C4::NewsChannels');
@ -134,43 +135,7 @@ $href_entry2->{idnew} = $idnew2;
$rv = upd_opac_new($href_entry2);
is( $rv, 1, 'Successfully updated second dummy news item!' );
# Test get_opac_news (multiple news items)
my ( $opac_news_count, $arrayref_opac_news ) = get_opac_news( 0, q{}, 'LIB1' );
# using >= 2, because someone may have LIB1 news already.
ok( $opac_news_count >= 2, 'Successfully tested get_opac_news for LIB1!' );
# Test GetNewsToDisplay
( $opac_news_count, $arrayref_opac_news ) = GetNewsToDisplay( q{}, 'LIB1' );
my ( $opac_news_count, $arrayref_opac_news ) = GetNewsToDisplay( q{}, 'LIB1' );
ok( $opac_news_count >= 2, 'Successfully tested GetNewsToDisplay for LIB1!' );
# Regression test 14248 -- make sure author_title, author_firstname, and
# author_surname exist.
subtest 'Regression tests on author title, firstname, and surname.', sub {
my ( $opac_news_count, $opac_news ) = get_opac_news( 0, q{}, 'LIB1' );
my $check = 0; # bitwise flag to confirm NULL and not NULL borrowernumber.
ok($opac_news_count>0,'Data exists for regression testing');
foreach my $news_item (@$opac_news) {
ok(exists $news_item->{author_title}, 'Author title exists');
ok(exists $news_item->{author_firstname},'Author first name exists');
ok(exists $news_item->{author_surname}, 'Author surname exists');
if ($news_item->{borrowernumber}) {
ok(defined $news_item->{author_title} ||
defined $news_item->{author_firstname} ||
defined $news_item->{author_surname}, 'Author data defined');
$check = $check | 2; # bitwise flag;
}
else {
ok(!defined $news_item->{author_title},
'Author title undefined as expected');
ok(!defined $news_item->{author_firstname},
'Author first name undefined as expected');
ok(!defined $news_item->{author_surname},
'Author surname undefined as expected');
$check = $check | 1; # bitwise flag;
}
}
ok($check==3,'Both with and without author data tested');
done_testing();
};

22
tools/koha-news.pl

@ -148,21 +148,15 @@ elsif ( $op eq 'del' ) {
}
else {
my ( $opac_news_count, $opac_news ) = &get_opac_news( undef, undef, undef );
foreach my $new ( @$opac_news ) {
next unless $new->{'expirationdate'};
my @date = split (/-/,$new->{'expirationdate'});
if ($date[0]*$date[1]*$date[2]>0 && Date_to_Days( @date ) < Date_to_Days(&Today) ){
$new->{'expired'} = 1;
my $params;
$params->{lang} = $lang if $lang;
my $opac_news = Koha::News->search(
$params,
{
order_by => { -desc => 'timestamp' },
}
}
$template->param(
opac_news => $opac_news,
opac_news_count => $opac_news_count,
);
);
$template->param( opac_news => $opac_news );
}
$template->param(
lang => $lang,

Loading…
Cancel
Save