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

(-)a/C4/NewsChannels.pm (-28 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-76 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
        my @fields = keys %{$href_entry};
62
        my @values = values %{$href_entry};
63
        my $field_string = join ',', @fields;
64
        $field_string = $field_string // q{};
65
        my $values_string = join(',', map { '?' } @fields);
66
        my $dbh = C4::Context->dbh;
67
        my $sth = $dbh->prepare("INSERT INTO opac_news ( $field_string ) VALUES ( $values_string )");
68
        $sth->execute(@values);
69
        $retval = 1;
70
    }
71
    return $retval;
72
}
73
74
=head2 GetNewsToDisplay
46
=head2 GetNewsToDisplay
75
47
76
    $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
    timestamp      => $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
    timestamp      => $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
    timestamp      => $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 timestamp='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 timestamp='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 timestamp='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 104-121 if ( $op eq 'add_form' ) { Link Here
104
}
104
}
105
elsif ( $op eq 'add' ) {
105
elsif ( $op eq 'add' ) {
106
    if ($title) {
106
    if ($title) {
107
        add_opac_new(
107
        my $new = Koha::NewsItem->new({
108
            {
108
            title          => $title,
109
                title          => $title,
109
            content        => $content,
110
                content        => $content,
110
            lang           => $lang,
111
                lang           => $lang,
111
            expirationdate => $expirationdate,
112
                expirationdate => $expirationdate,
112
            timestamp      => $timestamp,
113
                timestamp      => $timestamp,
113
            number         => $number,
114
                number         => $number,
114
            branchcode     => $branchcode,
115
                branchcode     => $branchcode,
115
            borrowernumber => $borrowernumber,
116
                borrowernumber => $borrowernumber,
116
        })->store;
117
            }
118
        );
119
        print $cgi->redirect("/cgi-bin/koha/tools/koha-news.pl");
117
        print $cgi->redirect("/cgi-bin/koha/tools/koha-news.pl");
120
    }
118
    }
121
    else {
119
    else {
122
- 

Return to bug 22544