Bug 15177: Sample notice TO_PROCESS confuses budget and fund
[koha-ffzg.git] / C4 / NewsChannels.pm
index 7c413aa..4dfde13 100644 (file)
@@ -20,7 +20,7 @@ package C4::NewsChannels;
 
 use Modern::Perl;
 use C4::Context;
-use C4::Dates qw(format_date);
+use Koha::DateUtils;
 
 use vars qw($VERSION @ISA @EXPORT);
 
@@ -61,9 +61,9 @@ sub add_opac_new {
     if ($href_entry) {
         my @fields = keys %{$href_entry};
         my @values = values %{$href_entry};
-        my $field_string = join ',',@fields;
+        my $field_string = join ',', @fields;
         $field_string = $field_string // q{};
-        my $values_string = '?,' x ($#fields) . '?';
+        my $values_string = join(',', map { '?' } @fields);
         my $dbh = C4::Context->dbh;
         my $sth = $dbh->prepare("INSERT INTO opac_news ( $field_string ) VALUES ( $values_string )");
         $sth->execute(@values);
@@ -135,8 +135,8 @@ sub get_opac_new {
     $sth->execute($idnew);
     my $data = $sth->fetchrow_hashref;
     $data->{$data->{'lang'}} = 1 if defined $data->{lang};
-    $data->{expirationdate} = format_date($data->{expirationdate});
-    $data->{timestamp}      = format_date($data->{timestamp});
+    $data->{expirationdate} = output_pref({ dt => dt_from_string( $data->{expirationdate} ), dateonly => 1 });
+    $data->{timestamp}      = output_pref({ dt => dt_from_string( $data->{timestamp} ), dateonly => 1 }) ;
     return $data;
 }
 
@@ -146,11 +146,15 @@ sub get_opac_news {
     my $dbh = C4::Context->dbh;
     my $query = q{
                   SELECT opac_news.*, branches.branchname,
-                         timestamp AS newdate
+                         timestamp 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';
+    $query .= ' WHERE 1';
     if ($lang) {
         $query .= " AND (opac_news.lang='' OR opac_news.lang=?)";
         push @values,$lang;
@@ -190,16 +194,20 @@ sub GetNewsToDisplay {
     my $dbh = C4::Context->dbh;
     # SELECT *,DATE_FORMAT(timestamp, '%d/%m/%Y') AS newdate
     my $query = q{
-     SELECT *,timestamp AS newdate
+     SELECT opac_news.*,timestamp AS newdate,
+     borrowers.title AS author_title,
+     borrowers.firstname AS author_firstname,
+     borrowers.surname AS author_surname
      FROM   opac_news
+     LEFT JOIN borrowers on borrowers.borrowernumber = opac_news.borrowernumber
      WHERE   (
         expirationdate >= CURRENT_DATE()
         OR    expirationdate IS NULL
         OR    expirationdate = '00-00-0000'
      )
-     AND   `timestamp` < CURRENT_DATE()+1
+     AND   DATE(timestamp) < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
      AND   (lang = '' OR lang = ?)
-     AND   (branchcode IS NULL OR branchcode = ?)
+     AND   (opac_news.branchcode IS NULL OR opac_news.branchcode = ?)
      ORDER BY number
     }; # expirationdate field is NOT in ISO format?
        # timestamp has HH:mm:ss, CURRENT_DATE generates 00:00:00
@@ -209,7 +217,7 @@ sub GetNewsToDisplay {
     $sth->execute($lang,$branch);
     my @results;
     while ( my $row = $sth->fetchrow_hashref ){
-        $row->{newdate} = format_date($row->{newdate});
+        $row->{newdate} = output_pref({ dt => dt_from_string( $row->{newdate} ), dateonly => 1 });
         push @results, $row;
     }
     return \@results;