Bug 21756: Add deprecation warning to manualinvoice
[koha.git] / C4 / NewsChannels.pm
index 7c413aa..a01d279 100644 (file)
@@ -20,12 +20,11 @@ package C4::NewsChannels;
 
 use Modern::Perl;
 use C4::Context;
-use C4::Dates qw(format_date);
+use Koha::DateUtils;
 
-use vars qw($VERSION @ISA @EXPORT);
+use vars qw(@ISA @EXPORT);
 
 BEGIN { 
-    $VERSION = 3.07.00.049;    # set the version for version checking
     @ISA = qw(Exporter);
     @EXPORT = qw(
         &GetNewsToDisplay
@@ -61,9 +60,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 +134,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 }) if ( $data->{expirationdate} );
+    $data->{timestamp}      = output_pref({ dt => dt_from_string( $data->{timestamp} ), dateonly => 1 }) ;
     return $data;
 }
 
@@ -146,11 +145,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;
@@ -179,7 +182,7 @@ sub get_opac_news {
 =head2 GetNewsToDisplay
 
     $news = &GetNewsToDisplay($lang,$branch);
-    C<$news> is a ref to an array which containts
+    C<$news> is a ref to an array which contains
     all news with expirationdate > today or expirationdate is null
     that is applicable for a given branch.
 
@@ -190,16 +193,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   (lang = '' OR lang = ?)
-     AND   (branchcode IS NULL OR branchcode = ?)
+     AND   DATE(timestamp) < DATE_ADD(CURDATE(), INTERVAL 1 DAY)
+     AND   (opac_news.lang = '' OR opac_news.lang = ?)
+     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 +216,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;