View | Details | Raw Unified | Return to bug 22544
Collapse All | Expand All

(-)a/C4/NewsChannels.pm (-29 lines)
Lines 28-34 BEGIN { Link Here
28
    @ISA = qw(Exporter);
28
    @ISA = qw(Exporter);
29
    @EXPORT = qw(
29
    @EXPORT = qw(
30
        &GetNewsToDisplay
30
        &GetNewsToDisplay
31
        &add_opac_new
32
    );
31
    );
33
}
32
}
34
33
Lines 44-77 This module provides the functions needed to mange OPAC and intranet news. Link Here
44
43
45
=cut
44
=cut
46
45
47
=head2 add_opac_new
48
49
    $retval = add_opac_new($hashref);
50
51
    $hashref should contains all the fields found in opac_news,
52
    except idnew. The idnew field is auto-generated.
53
54
=cut
55
56
sub add_opac_new {
57
    my ($href_entry) = @_;
58
    my $retval = 0;
59
60
    if ($href_entry) {
61
        $href_entry->{number} = 0 if $href_entry->{number} !~ /^\d+$/;
62
        my @fields = keys %{$href_entry};
63
        my @values = values %{$href_entry};
64
        my $field_string = join ',', @fields;
65
        $field_string = $field_string // q{};
66
        my $values_string = join(',', map { '?' } @fields);
67
        my $dbh = C4::Context->dbh;
68
        my $sth = $dbh->prepare("INSERT INTO opac_news ( $field_string ) VALUES ( $values_string )");
69
        $sth->execute(@values);
70
        $retval = 1;
71
    }
72
    return $retval;
73
}
74
75
=head2 GetNewsToDisplay
46
=head2 GetNewsToDisplay
76
47
77
    $news = &GetNewsToDisplay($lang,$branch);
48
    $news = &GetNewsToDisplay($lang,$branch);
(-)a/t/db_dependent/NewsChannels.t (-65 / +1 lines)
Lines 6-12 use Koha::DateUtils; Link Here
6
use Koha::Libraries;
6
use Koha::Libraries;
7
use Koha::News;
7
use Koha::News;
8
8
9
use Test::More tests => 7;
9
use Test::More tests => 4;
10
10
11
BEGIN {
11
BEGIN {
12
    use_ok('C4::NewsChannels');
12
    use_ok('C4::NewsChannels');
Lines 61-130 my $brwrnmbr; Link Here
61
# Must have valid borrower number, or tests are meaningless.
61
# Must have valid borrower number, or tests are meaningless.
62
ok ( defined $brwrnmbr );
62
ok ( defined $brwrnmbr );
63
63
64
# Test add_opac_new
65
my $rv = add_opac_new();    # intentionally bad
66
is( $rv, 0, 'Correctly failed on no parameter!' );
67
68
my $timestamp = '2000-01-01';
69
my ( $timestamp1, $timestamp2 ) = ( $timestamp, $timestamp );
70
my $timestamp3 = '2000-01-02';
71
my ( $title1, $new1, $lang1, $expirationdate1, $number1 ) =
72
  ( 'News Title', '<p>We have some exciting news!</p>', q{}, '2999-12-30', 1 );
73
my $href_entry1 = {
74
    title          => $title1,
75
    content        => $new1,
76
    lang           => $lang1,
77
    expirationdate => $expirationdate1,
78
    published_on=> $timestamp1,
79
    number         => $number1,
80
    branchcode     => 'LIB1',
81
};
82
83
$rv = add_opac_new($href_entry1);
84
is( $rv, 1, 'Successfully added the first dummy news item!' );
85
86
my ( $title2, $new2, $lang2, $expirationdate2, $number2 ) =
87
  ( 'News Title2', '<p>We have some exciting news!</p>', q{}, '2999-12-31', 1 );
88
my $href_entry2 = {
89
    title          => $title2,
90
    content        => $new2,
91
    lang           => $lang2,
92
    expirationdate => $expirationdate2,
93
    published_on=> $timestamp2,
94
    number         => $number2,
95
    borrowernumber => $brwrnmbr,
96
    branchcode     => 'LIB1',
97
};
98
$rv = add_opac_new($href_entry2);
99
is( $rv, 1, 'Successfully added the second dummy news item!' );
100
101
my ( $title3, $new3, $lang3, $number3 ) =
102
  ( 'News Title3', '<p>News without expiration date</p>', q{}, 1 );
103
my $href_entry3 = {
104
    title          => $title3,
105
    content        => $new3,
106
    lang           => $lang3,
107
    published_on=> $timestamp3,
108
    number         => $number3,
109
    borrowernumber => $brwrnmbr,
110
    branchcode     => 'LIB1',
111
};
112
$rv = add_opac_new($href_entry3);
113
is( $rv, 1, 'Successfully added the third dummy news item without expiration date!' );
114
115
# We need to determine the idnew in a non-MySQLism way.
116
# This should be good enough.
117
my $query =
118
q{ SELECT idnew from opac_news WHERE published_on='2000-01-01' AND expirationdate='2999-12-30'; };
119
my ( $idnew1 ) = $dbh->selectrow_array( $query );
120
$query =
121
q{ SELECT idnew from opac_news WHERE published_on='2000-01-01' AND expirationdate='2999-12-31'; };
122
my ( $idnew2 ) = $dbh->selectrow_array( $query );
123
124
$query =
125
q{ SELECT idnew from opac_news WHERE published_on='2000-01-02'; };
126
my ( $idnew3 ) = $dbh->selectrow_array( $query );
127
128
# Test GetNewsToDisplay
64
# Test GetNewsToDisplay
129
my ( $opac_news_count, $arrayref_opac_news ) = GetNewsToDisplay( q{}, 'LIB1' );
65
my ( $opac_news_count, $arrayref_opac_news ) = GetNewsToDisplay( q{}, 'LIB1' );
130
ok( $opac_news_count >= 2, 'Successfully tested GetNewsToDisplay for LIB1!' );
66
ok( $opac_news_count >= 2, 'Successfully tested GetNewsToDisplay for LIB1!' );
(-)a/tools/koha-news.pl (-13 / +10 lines)
Lines 109-126 if ( $op eq 'add_form' ) { Link Here
109
}
109
}
110
elsif ( $op eq 'add' ) {
110
elsif ( $op eq 'add' ) {
111
    if ($title) {
111
    if ($title) {
112
        add_opac_new(
112
        my $new = Koha::NewsItem->new({
113
            {
113
            title          => $title,
114
                title          => $title,
114
            content        => $content,
115
                content        => $content,
115
            lang           => $lang,
116
                lang           => $lang,
116
            expirationdate => $expirationdate,
117
                expirationdate => $expirationdate,
117
            timestamp      => $timestamp,
118
                published_on=> $published_on,
118
            number         => $number,
119
                number         => $number,
119
            branchcode     => $branchcode,
120
                branchcode     => $branchcode,
120
            borrowernumber => $borrowernumber,
121
                borrowernumber => $borrowernumber,
121
        })->store;
122
            }
123
        );
124
        print $cgi->redirect("/cgi-bin/koha/tools/koha-news.pl");
122
        print $cgi->redirect("/cgi-bin/koha/tools/koha-news.pl");
125
    }
123
    }
126
    else {
124
    else {
127
- 

Return to bug 22544