fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2011-11-18 08:22 am

[dw-free] move cgi-bin/lj*.pl files into proper modules (in cgi-bin/LJ)

[commit: http://hg.dwscoalition.org/dw-free/rev/b53b65e17a12]

http://bugs.dwscoalition.org/show_bug.cgi?id=1726

Move ljtimetuil.pl to LJ/Time.pm; no functional changes.

Patch by [personal profile] kareila.

Files modified:
  • cgi-bin/LJ/Time.pm
  • cgi-bin/ljlib.pl
  • cgi-bin/ljtimeutil.pl
--------------------------------------------------------------------------------
diff -r 6ebda1baf1b5 -r b53b65e17a12 cgi-bin/LJ/Time.pm
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cgi-bin/LJ/Time.pm	Fri Nov 18 16:24:25 2011 +0800
@@ -0,0 +1,231 @@
+# This code was forked from the LiveJournal project owned and operated
+# by Live Journal, Inc. The code has been modified and expanded by
+# Dreamwidth Studios, LLC. These files were originally licensed under
+# the terms of the license supplied by Live Journal, Inc, which can
+# currently be found at:
+#
+# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
+#
+# In accordance with the original license, this code and all its
+# modifications are provided under the GNU General Public License.
+# A copy of that license can be found in the LICENSE file included as
+# part of this distribution.
+
+package LJ;
+use strict;
+
+# <LJFUNC>
+# name: LJ::days_in_month
+# class: time
+# des: Figures out the number of days in a month.
+# args: month, year?
+# des-month: Month
+# des-year: Year.  Necessary for February.  If undefined or zero, function
+#           will return 29.
+# returns: Number of days in that month in that year.
+# </LJFUNC>
+sub days_in_month
+{
+    my ($month, $year) = @_;
+    if ($month == 2)
+    {
+        return 29 unless $year;  # assume largest
+        if ($year % 4 == 0)
+        {
+          # years divisible by 400 are leap years
+          return 29 if ($year % 400 == 0);
+
+          # if they're divisible by 100, they aren't.
+          return 28 if ($year % 100 == 0);
+
+          # otherwise, if divisible by 4, they are.
+          return 29;
+        }
+    }
+    return ((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[$month-1]);
+}
+
+sub day_of_week
+{
+    my ($year, $month, $day) = @_;
+    my $time = eval { Time::Local::timelocal(0,0,0,$day,$month-1,$year) };
+    return undef if $@;
+    return (localtime($time))[6];
+}
+
+# <LJFUNC>
+# class: time
+# name: LJ::http_to_time
+# des: Converts HTTP date to Unix time.
+# info: Wrapper around HTTP::Date::str2time.
+#       See also [func[LJ::time_to_http]].
+# args: string
+# des-string: HTTP Date.  See RFC 2616 for format.
+# returns: integer; Unix time.
+# </LJFUNC>
+sub http_to_time {
+    my $string = shift;
+    return HTTP::Date::str2time($string);
+}
+
+sub mysqldate_to_time {
+    my ($string, $gmt) = @_;
+    return undef unless $string =~ /^(\d\d\d\d)-(\d\d)-(\d\d)(?: (\d\d):(\d\d)(?::(\d\d))?)?$/;
+    my ($y, $mon, $d, $h, $min, $s) = ($1, $2, $3, $4, $5, $6);
+
+    # these need to be set to zero if undefined, to avoid warnings
+    $h   ||= 0;
+    $min ||= 0;
+    $s   ||= 0;
+
+    my $calc = sub {
+        $gmt ?
+            Time::Local::timegm($s, $min, $h, $d, $mon-1, $y) :
+            Time::Local::timelocal($s, $min, $h, $d, $mon-1, $y);
+    };
+
+    # try to do it.  it'll die if the day is bogus
+    my $ret = eval { $calc->(); };
+    return $ret unless $@;
+
+    # then fix the day up, if so.
+    my $max_day = LJ::days_in_month($mon, $y);
+    $d = $max_day if $d > $max_day;
+    return $calc->();
+}
+
+# <LJFUNC>
+# class: time
+# name: LJ::time_to_http
+# des: Converts a Unix time to a HTTP date.
+# info: Wrapper around HTTP::Date::time2str to make an
+#       HTTP date (RFC 1123 format)  See also [func[LJ::http_to_time]].
+# args: time
+# des-time: Integer; Unix time.
+# returns: String; RFC 1123 date.
+# </LJFUNC>
+sub time_to_http {
+    my $time = shift;
+    return HTTP::Date::time2str($time);
+}
+
+# <LJFUNC>
+# name: LJ::time_to_cookie
+# des: Converts Unix time to format expected in a Set-Cookie header.
+# args: time
+# des-time: unix time
+# returns: string; Date/Time in format expected by cookie.
+# </LJFUNC>
+sub time_to_cookie {
+    my $time = shift;
+    $time = time() unless defined $time;
+
+    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
+    $year+=1900;
+
+    my @day = qw{Sunday Monday Tuesday Wednesday Thursday Friday Saturday};
+    my @month = qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec};
+
+    return sprintf("$day[$wday], %02d-$month[$mon]-%04d %02d:%02d:%02d GMT",
+                   $mday, $year, $hour, $min, $sec);
+}
+
+# http://www.w3.org/TR/NOTE-datetime
+# http://www.w3.org/TR/xmlschema-2/#dateTime
+sub time_to_w3c {
+    my ($time, $ofs) = @_;
+    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
+
+    $mon++;
+    $year += 1900;
+
+    $ofs =~ s/([\-+]\d\d)(\d\d)/$1:$2/;
+    $ofs = 'Z' if $ofs =~ /0000$/;
+    return sprintf("%04d-%02d-%02dT%02d:%02d:%02d$ofs",
+                   $year, $mon, $mday,
+                   $hour, $min, $sec);
+}
+
+# args: time in seconds from epoch; boolean for gmt instead of localtime
+# returns: date and time in ISO format
+sub mysql_time
+{
+    my ($time, $gmt) = @_;
+    $time = time() unless defined $time;
+    my @ltime = $gmt ? gmtime($time) : localtime($time);
+    return sprintf("%04d-%02d-%02d %02d:%02d:%02d",
+                   $ltime[5]+1900,
+                   $ltime[4]+1,
+                   $ltime[3],
+                   $ltime[2],
+                   $ltime[1],
+                   $ltime[0]);
+}
+
+# args: time in seconds from epoch; boolean for gmt instead of localtime
+# returns: date in ISO format
+sub mysql_date {
+    my ( $time, $gmt ) = @_;
+    $time = time() unless defined $time;
+    my @ltime = $gmt ? gmtime( $time ) : localtime( $time );
+    return sprintf( "%04d-%02d-%02d",
+                    $ltime[5]+1900, $ltime[4]+1, $ltime[3] );
+}
+
+# <LJFUNC>
+# name: LJ::alldatepart_s2
+# des: Gets date in MySQL format, produces s2dateformat.
+# class: time
+# args:
+# des-:
+# info: s2 dateformat is: yyyy mm dd hh mm ss day_of_week
+# returns:
+# </LJFUNC>
+sub alldatepart_s2
+{
+    my $time = shift;
+    my ($sec,$min,$hour,$mday,$mon,$year,$wday) =
+        gmtime(LJ::mysqldate_to_time($time, 1));
+    return
+        sprintf("%04d %02d %02d %02d %02d %02d %01d",
+                $year+1900,
+                $mon+1,
+                $mday,
+                $hour,
+                $min,
+                $sec,
+                $wday);
+}
+
+# Given a year, month, and day; calculate the age in years compared to now. May return a negative number or
+# zero if called in such a way as would cause those.
+
+sub calc_age {
+    my ($year, $mon, $day) = @_;
+
+    $year += 0; # Force all the numeric context, so 0s become false.
+    $mon  += 0;
+    $day  += 0;
+
+    my ($cday, $cmon, $cyear) = (gmtime)[3,4,5];
+    $cmon  += 1;    # Normalize the month to 1-12
+    $cyear += 1900; # Normalize the year
+
+    return unless $year;
+    my $age = $cyear - $year;
+
+    return $age unless $mon;
+
+    # Sometime this year they will be $age, subtract one if we haven't hit their birthdate yet.
+    $age -= 1 if $cmon < $mon;
+    return $age unless $day;
+
+    # Sometime this month they will be $age, subtract one if we haven't hit their birthdate yet.
+    $age -= 1 if ($cday < $day && $cmon == $mon);
+
+    return $age;
+}
+
+
+
+1;
diff -r 6ebda1baf1b5 -r b53b65e17a12 cgi-bin/ljlib.pl
--- a/cgi-bin/ljlib.pl	Fri Nov 18 16:17:10 2011 +0800
+++ b/cgi-bin/ljlib.pl	Fri Nov 18 16:24:25 2011 +0800
@@ -104,7 +104,7 @@
 use LJ::DB;
 use LJ::Tags;
 require "ljtextutil.pl";
-require "ljtimeutil.pl";
+use LJ::Time;
 use LJ::Capabilities;
 use DW::Mood;
 use LJ::Global::Img;  # defines LJ::Img
diff -r 6ebda1baf1b5 -r b53b65e17a12 cgi-bin/ljtimeutil.pl
--- a/cgi-bin/ljtimeutil.pl	Fri Nov 18 16:17:10 2011 +0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-# This code was forked from the LiveJournal project owned and operated
-# by Live Journal, Inc. The code has been modified and expanded by
-# Dreamwidth Studios, LLC. These files were originally licensed under
-# the terms of the license supplied by Live Journal, Inc, which can
-# currently be found at:
-#
-# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
-#
-# In accordance with the original license, this code and all its
-# modifications are provided under the GNU General Public License.
-# A copy of that license can be found in the LICENSE file included as
-# part of this distribution.
-
-package LJ;
-use strict;
-
-# <LJFUNC>
-# name: LJ::days_in_month
-# class: time
-# des: Figures out the number of days in a month.
-# args: month, year?
-# des-month: Month
-# des-year: Year.  Necessary for February.  If undefined or zero, function
-#           will return 29.
-# returns: Number of days in that month in that year.
-# </LJFUNC>
-sub days_in_month
-{
-    my ($month, $year) = @_;
-    if ($month == 2)
-    {
-        return 29 unless $year;  # assume largest
-        if ($year % 4 == 0)
-        {
-          # years divisible by 400 are leap years
-          return 29 if ($year % 400 == 0);
-
-          # if they're divisible by 100, they aren't.
-          return 28 if ($year % 100 == 0);
-
-          # otherwise, if divisible by 4, they are.
-          return 29;
-        }
-    }
-    return ((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[$month-1]);
-}
-
-sub day_of_week
-{
-    my ($year, $month, $day) = @_;
-    my $time = eval { Time::Local::timelocal(0,0,0,$day,$month-1,$year) };
-    return undef if $@;
-    return (localtime($time))[6];
-}
-
-# <LJFUNC>
-# class: time
-# name: LJ::http_to_time
-# des: Converts HTTP date to Unix time.
-# info: Wrapper around HTTP::Date::str2time.
-#       See also [func[LJ::time_to_http]].
-# args: string
-# des-string: HTTP Date.  See RFC 2616 for format.
-# returns: integer; Unix time.
-# </LJFUNC>
-sub http_to_time {
-    my $string = shift;
-    return HTTP::Date::str2time($string);
-}
-
-sub mysqldate_to_time {
-    my ($string, $gmt) = @_;
-    return undef unless $string =~ /^(\d\d\d\d)-(\d\d)-(\d\d)(?: (\d\d):(\d\d)(?::(\d\d))?)?$/;
-    my ($y, $mon, $d, $h, $min, $s) = ($1, $2, $3, $4, $5, $6);
-
-    # these need to be set to zero if undefined, to avoid warnings
-    $h   ||= 0;
-    $min ||= 0;
-    $s   ||= 0;
-
-    my $calc = sub {
-        $gmt ?
-            Time::Local::timegm($s, $min, $h, $d, $mon-1, $y) :
-            Time::Local::timelocal($s, $min, $h, $d, $mon-1, $y);
-    };
-
-    # try to do it.  it'll die if the day is bogus
-    my $ret = eval { $calc->(); };
-    return $ret unless $@;
-
-    # then fix the day up, if so.
-    my $max_day = LJ::days_in_month($mon, $y);
-    $d = $max_day if $d > $max_day;
-    return $calc->();
-}
-
-# <LJFUNC>
-# class: time
-# name: LJ::time_to_http
-# des: Converts a Unix time to a HTTP date.
-# info: Wrapper around HTTP::Date::time2str to make an
-#       HTTP date (RFC 1123 format)  See also [func[LJ::http_to_time]].
-# args: time
-# des-time: Integer; Unix time.
-# returns: String; RFC 1123 date.
-# </LJFUNC>
-sub time_to_http {
-    my $time = shift;
-    return HTTP::Date::time2str($time);
-}
-
-# <LJFUNC>
-# name: LJ::time_to_cookie
-# des: Converts Unix time to format expected in a Set-Cookie header.
-# args: time
-# des-time: unix time
-# returns: string; Date/Time in format expected by cookie.
-# </LJFUNC>
-sub time_to_cookie {
-    my $time = shift;
-    $time = time() unless defined $time;
-
-    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
-    $year+=1900;
-
-    my @day = qw{Sunday Monday Tuesday Wednesday Thursday Friday Saturday};
-    my @month = qw{Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec};
-
-    return sprintf("$day[$wday], %02d-$month[$mon]-%04d %02d:%02d:%02d GMT",
-                   $mday, $year, $hour, $min, $sec);
-}
-
-# http://www.w3.org/TR/NOTE-datetime
-# http://www.w3.org/TR/xmlschema-2/#dateTime
-sub time_to_w3c {
-    my ($time, $ofs) = @_;
-    my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time);
-
-    $mon++;
-    $year += 1900;
-
-    $ofs =~ s/([\-+]\d\d)(\d\d)/$1:$2/;
-    $ofs = 'Z' if $ofs =~ /0000$/;
-    return sprintf("%04d-%02d-%02dT%02d:%02d:%02d$ofs",
-                   $year, $mon, $mday,
-                   $hour, $min, $sec);
-}
-
-# args: time in seconds from epoch; boolean for gmt instead of localtime
-# returns: date and time in ISO format
-sub mysql_time
-{
-    my ($time, $gmt) = @_;
-    $time = time() unless defined $time;
-    my @ltime = $gmt ? gmtime($time) : localtime($time);
-    return sprintf("%04d-%02d-%02d %02d:%02d:%02d",
-                   $ltime[5]+1900,
-                   $ltime[4]+1,
-                   $ltime[3],
-                   $ltime[2],
-                   $ltime[1],
-                   $ltime[0]);
-}
-
-# args: time in seconds from epoch; boolean for gmt instead of localtime
-# returns: date in ISO format
-sub mysql_date {
-    my ( $time, $gmt ) = @_;
-    $time = time() unless defined $time;
-    my @ltime = $gmt ? gmtime( $time ) : localtime( $time );
-    return sprintf( "%04d-%02d-%02d",
-                    $ltime[5]+1900, $ltime[4]+1, $ltime[3] );
-}
-
-# <LJFUNC>
-# name: LJ::alldatepart_s2
-# des: Gets date in MySQL format, produces s2dateformat.
-# class: time
-# args:
-# des-:
-# info: s2 dateformat is: yyyy mm dd hh mm ss day_of_week
-# returns:
-# </LJFUNC>
-sub alldatepart_s2
-{
-    my $time = shift;
-    my ($sec,$min,$hour,$mday,$mon,$year,$wday) =
-        gmtime(LJ::mysqldate_to_time($time, 1));
-    return
-        sprintf("%04d %02d %02d %02d %02d %02d %01d",
-                $year+1900,
-                $mon+1,
-                $mday,
-                $hour,
-                $min,
-                $sec,
-                $wday);
-}
-
-# Given a year, month, and day; calculate the age in years compared to now. May return a negative number or
-# zero if called in such a way as would cause those.
-
-sub calc_age {
-    my ($year, $mon, $day) = @_;
-
-    $year += 0; # Force all the numeric context, so 0s become false.
-    $mon  += 0;
-    $day  += 0;
-
-    my ($cday, $cmon, $cyear) = (gmtime)[3,4,5];
-    $cmon  += 1;    # Normalize the month to 1-12
-    $cyear += 1900; # Normalize the year
-
-    return unless $year;
-    my $age = $cyear - $year;
-
-    return $age unless $mon;
-
-    # Sometime this year they will be $age, subtract one if we haven't hit their birthdate yet.
-    $age -= 1 if $cmon < $mon;
-    return $age unless $day;
-
-    # Sometime this month they will be $age, subtract one if we haven't hit their birthdate yet.
-    $age -= 1 if ($cday < $day && $cmon == $mon);
-
-    return $age;
-}
-
-
-
-1;
--------------------------------------------------------------------------------