From 4148d0ace6d4fa158ad1666d09309055cee22e11 Mon Sep 17 00:00:00 2001 From: rangi Date: Sat, 3 Sep 2005 00:54:23 +0000 Subject: [PATCH] Modified module to no longer use Date::Manip, not as powerful, but a lot faster. --- C4/Circulation/Date.pm | 226 +++++++++++++++++++---------------------- 1 file changed, 107 insertions(+), 119 deletions(-) diff --git a/C4/Circulation/Date.pm b/C4/Circulation/Date.pm index 05298f490c..a3ceb85d8c 100644 --- a/C4/Circulation/Date.pm +++ b/C4/Circulation/Date.pm @@ -2,145 +2,133 @@ package C4::Circulation::Date; -# $Id: - -# Copyright 2005 Katipo Communications -# -# This file is part of Koha. -# -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# $id: + +# Copyright 2005 Katipo Communications +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA use strict; use C4::Context; -use Date::Manip; require Exporter; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); -$VERSION = do { my @v = '$Revision$' =~ /\d+/g; - shift(@v) . "." . join("_", map {sprintf "%03d", $_ } @v); };; +$VERSION = do { my @v = '$Revision$' =~ /\d+/g; + shift(@v) . "." . join( "_", map { sprintf "%03d", $_ } @v ); +}; @ISA = qw(Exporter); @EXPORT = qw( - &display_date_format - &format_date - &format_date_in_iso + &display_date_format + &format_date + &format_date_in_iso ); +=head1 DESCRIPTION + +C4::Circulation::Date provides routines for format dates to display in human readable forms. + +=head1 FUNCTIONS + +=over 2 + +=cut + +=head2 get_date_format + + $dateformat = get_date_format(); + +Takes no input, and returns the format that the library prefers dates displayed in -sub get_date_format -{ - #Get the database handle - my $dbh = C4::Context->dbh; - return C4::Context->preference('dateformat'); -} -sub display_date_format -{ - my $dateformat = get_date_format(); - - if ( $dateformat eq "us" ) - { - return "mm/dd/yyyy"; - } - elsif ( $dateformat eq "metric" ) - { - return "dd/mm/yyyy"; - } - elsif ( $dateformat eq "iso" ) - { - return "yyyy-mm-dd"; - } - else - { - return "Invalid date format: $dateformat. Please change in system preferences"; - } +=cut + +sub get_date_format { + + # Get the database handle + my $dbh = C4::Context->dbh; + return C4::Context->preference('dateformat'); } +=head2 display_date_format + + $displaydateformat = display_date_format(); + +Takes no input, and returns a string showing the format the library likes dates displayed in -sub format_date -{ - my $olddate = shift; - my $newdate; - - if ( ! $olddate ) - { - return ""; - } - - my $dateformat = get_date_format(); - - if ( $dateformat eq "us" ) - { - Date_Init("DateFormat=US"); - $olddate = ParseDate($olddate); - $newdate = UnixDate($olddate,'%m/%d/%Y'); - } - elsif ( $dateformat eq "metric" ) - { - Date_Init("DateFormat=metric"); - $olddate = ParseDate($olddate); - $newdate = UnixDate($olddate,'%d/%m/%Y'); - } - elsif ( $dateformat eq "iso" ) - { - Date_Init("DateFormat=iso"); - $olddate = ParseDate($olddate); - $newdate = UnixDate($olddate,'%Y-%m-%d'); - } - else - { - return "Invalid date format: $dateformat. Please change in system preferences"; - } + +=cut + +sub display_date_format { + my $dateformat = get_date_format(); + + if ( $dateformat eq "us" ) { + return "mm/dd/yyyy"; + } + elsif ( $dateformat eq "metric" ) { + return "dd/mm/yyyy"; + } + elsif ( $dateformat eq "iso" ) { + return "yyyy-mm-dd"; + } + else { + return +"Invalid date format: $dateformat. Please change in system preferences"; + } } -sub format_date_in_iso -{ - my $olddate = shift; - my $newdate; - - if ( ! $olddate ) - { - return ""; - } - - my $dateformat = get_date_format(); - - if ( $dateformat eq "us" ) - { - Date_Init("DateFormat=US"); - $olddate = ParseDate($olddate); - } - elsif ( $dateformat eq "metric" ) - { - Date_Init("DateFormat=metric"); - $olddate = ParseDate($olddate); - } - elsif ( $dateformat eq "iso" ) - { - Date_Init("DateFormat=iso"); - $olddate = ParseDate($olddate); - } - else - { - return "9999-99-99"; - } - - $newdate = UnixDate($olddate, '%Y-%m-%d'); - - return $newdate; +=head2 format_date + + $formatteddate = format_date($date); + +Takes a date, from mysql and returns it in the format specified by the library +This is less flexible than C4::Date::format_date, which can handle dates of many formats +if you need that flexibility use C4::Date, if you are just using it to format the output from mysql as +in circulation.pl use this one, it is much faster. +=cut + + +sub format_date { + my $olddate = shift; + my $newdate; + + if ( !$olddate ) { + return ""; + } + + my $dateformat = get_date_format(); + + if ( $dateformat eq "us" ) { + my @datearray=split('-',$olddate); + $newdate = "$datearray[1]/$datearray[2]/$datearray[0]"; + } + elsif ( $dateformat eq "metric" ) { + my @datearray=split('-',$olddate); + $newdate = "$datearray[2]/$datearray[1]/$datearray[0]"; + } + elsif ( $dateformat eq "iso" ) { + $newdate = $olddate; + } + else { + return +"Invalid date format: $dateformat. Please change in system preferences"; + } } + 1; -- 2.39.5