]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Modules/countdown.pl
use result div in babelfish
[infobot.git] / src / Modules / countdown.pl
index 912a463d9109703fd1801aed54b7a993417880c6..90fcd74c4ce4e995787bde2914756db29cf3f370 100644 (file)
@@ -11,85 +11,109 @@ use strict;
 
 sub countdown {
     my ($query) = @_;
-    my $file = "$bot_base_dir/$param{'ircUser'}.countdown";
-    my (%date, %desc);
+    my $file = "$bot_data_dir/$param{'ircUser'}.countdown";
+    my ( %date, %desc );
     my $reply;
 
-    if (!open(IN,$file)) {
-       &ERROR("cannot open $file.");
-       return 0;
+    if ( !open( IN, $file ) ) {
+        &ERROR("cannot open $file.");
+        return 0;
     }
 
     while (<IN>) {
-       chop;
-       s/[\s\t]+/ /g;
+        chop;
+        s/[\s\t]+/ /g;
 
-       if (/^(\d{8}) (\S+) (.*)$/) {
-           $date{$2} = $1;
-           $desc{$2} = $3;
-       }
+        if (/^(\d{8}) (\S+) (.*)$/) {
+            $date{$2} = $1;
+            $desc{$2} = $3;
+        }
     }
     close IN;
 
-    if (defined $query) {                      # argument.
-       if (!exists $date{$query}) {
-           &msg($who,"error: $query is not in my countdown list.");
-           return 0;
-       }
-
-       $date{$query} =~ /^(\d{4})(\d{2})(\d{2})$/;
-       my($year,$month,$day) = ($1,$2,$3);
-       my $sqldate = "$1-$2-$3";
-
-       ### SQL SPECIFIC.
-       my ($to_days,$dayname,$monname);
-
-       if ($param{'DBType'} =~ /^(mysql|sqlite(2)?)$/i) {
-           $to_days = (&sqlRawReturn("SELECT TO_DAYS(NOW()) - TO_DAYS('$sqldate')"))[0];
-           $dayname = (&sqlRawReturn("SELECT DAYNAME('$sqldate')"))[0];
-           $monname = (&sqlRawReturn("SELECT MONTHNAME('$sqldate')"))[0];
-
-       } elsif ($param{'DBType'} =~ /^pgsql$/i) {
-           $to_days = (&sqlRawReturn("SELECT date_trunc('day',
-                               'now'::timestamp - '$sqldate')"))[0];
-           $dayname = qw(Sun Mon Tue Wed Thu Fri Sat)[(&sqlRawReturn("SELECT extract(dow from timestamp '$sqldate')"))[0]];
-           $monname = qw(BAD Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)[(&sqlRawReturn("SELECT extract(month from timestamp '$sqldate')"))[0]];
-
-       } else {
-           &ERROR("countdown: invalid DBType " . $param{'DBType'} . ".");
-           return 1;
-       }
-
-       if ($to_days =~ /^\D+$/) {
-           my $str = "to_days is not integer.";
-           &msg($who,$str);
-           &ERROR($str);
-
-           return 1;
-       }
-
-       my @gmtime = gmtime(time());
-       my $daysec = ($gmtime[2]*60*60) + ($gmtime[1]*60) + ($gmtime[0]);
-       my $time   = ($to_days*24*60*60);
-
-       if ($to_days >= 0) {    # already passed.
-           $time  += $daysec;
-           $reply  = "T plus ". &Time2String($time) ." ago";
-       } else {                # time to go.
-           $time   = -$time - $daysec;
-           $reply  = "T minus ". &Time2String($time);
-       }
-       $reply    .= ", \002(\002$desc{$query}\002)\002 at $dayname, $monname $day $year";
-
-       &performStrictReply($reply .".");
-       return 1;
-    } else {                           # no argument.
-       my $prefix = "countdown list ";
-
-       &performStrictReply( &formListReply(0, $prefix, sort keys %date) );
-
-       return 1;
+    if ( defined $query ) {    # argument.
+        if ( !exists $date{$query} ) {
+            &msg( $who, "error: $query is not in my countdown list." );
+            return 0;
+        }
+
+        $date{$query} =~ /^(\d{4})(\d{2})(\d{2})$/;
+        my ( $year, $month, $day ) = ( $1, $2, $3 );
+        my $sqldate = "$1-$2-$3";
+
+        ### SQL SPECIFIC.
+        my ( $to_days, $dayname, $monname );
+
+        if ( $param{'DBType'} =~ /^(mysql|sqlite(2)?)$/i ) {
+            $to_days =
+              ( &sqlRawReturn("SELECT TO_DAYS(NOW()) - TO_DAYS('$sqldate')") )
+              [0];
+            $dayname = ( &sqlRawReturn("SELECT DAYNAME('$sqldate')") )[0];
+            $monname = ( &sqlRawReturn("SELECT MONTHNAME('$sqldate')") )[0];
+
+        }
+        elsif ( $param{'DBType'} =~ /^pgsql$/i ) {
+            $to_days = (
+                &sqlRawReturn(
+                    "SELECT date_trunc('day',
+                               'now'::timestamp - '$sqldate')"
+                )
+            )[0];
+            $dayname = qw(Sun Mon Tue Wed Thu Fri Sat) [
+                (
+                    &sqlRawReturn(
+                        "SELECT extract(dow from timestamp '$sqldate')")
+                )[0]
+            ];
+            $monname = qw(BAD Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) [
+                (
+                    &sqlRawReturn(
+                        "SELECT extract(month from timestamp '$sqldate')")
+                )[0]
+            ];
+
+        }
+        else {
+            &ERROR( "countdown: invalid DBType " . $param{'DBType'} . "." );
+            return 1;
+        }
+
+        if ( $to_days =~ /^\D+$/ ) {
+            my $str = "to_days is not integer.";
+            &msg( $who, $str );
+            &ERROR($str);
+
+            return 1;
+        }
+
+        my @gmtime = gmtime( time() );
+        my $daysec =
+          ( $gmtime[2] * 60 * 60 ) + ( $gmtime[1] * 60 ) + ( $gmtime[0] );
+        my $time = ( $to_days * 24 * 60 * 60 );
+
+        if ( $to_days >= 0 ) {    # already passed.
+            $time += $daysec;
+            $reply = "T plus " . &Time2String($time) . " ago";
+        }
+        else {                    # time to go.
+            $time  = -$time - $daysec;
+            $reply = "T minus " . &Time2String($time);
+        }
+        $reply .=
+          ", \002(\002$desc{$query}\002)\002 at $dayname, $monname $day $year";
+
+        &performStrictReply( $reply . "." );
+        return 1;
+    }
+    else {                        # no argument.
+        my $prefix = "countdown list ";
+
+        &performStrictReply( &formListReply( 0, $prefix, sort keys %date ) );
+
+        return 1;
     }
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80