Merge branch 'master' of git+ssh://github.com/adefaria/clearscm
authorAndrew DeFaria <Andrew@DeFaria.com>
Wed, 12 May 2021 14:51:42 +0000 (07:51 -0700)
committerAndrew DeFaria <Andrew@DeFaria.com>
Wed, 12 May 2021 14:51:42 +0000 (07:51 -0700)
maps/bin/detail.cgi
maps/bin/display.cgi
maps/lib/MAPS.pm

index ed7efca..55c9cbd 100755 (executable)
@@ -242,8 +242,9 @@ sub PrintTable {
     my $messages = 1;
 
     for (@msgs) {
-      my $msg_date = pop @{$_};
-      my $subject  = pop @{$_};
+      my $msg_date  = pop @{$_};
+      my $link_date = $msg_date;
+      my $subject   = pop @{$_};
 
       if ($date eq substr ($msg_date, 0, 10)) {
         $msg_date = b font {-color => 'green'}, SQLDatetime2UnixDatetime $msg_date;
@@ -262,7 +263,6 @@ sub PrintTable {
                      -cellspacing => 2,
                      -border      => 0,
                      -width       => '100%'};
-      my $msg_nbr = $messages;
       print
         Tr [
           td {-class   => 'msgnbr',
@@ -275,7 +275,7 @@ sub PrintTable {
           td {-class   => 'subject',
               -valign  => 'middle',
               -bgcolor => '#ffffff'},
-           a {-href    => "display.cgi?sender=$sender;msg_nbr=$msg_nbr"}, $subject,
+           a {-href    => "display.cgi?sender=$sender;msg_date=$link_date"}, $subject,
           td {-class   => 'date',
               -width   => '150',
               -valign  => 'middle'}, $msg_date
index 02379e6..14c2553 100755 (executable)
@@ -37,7 +37,7 @@ my $sender      = param('sender');
 # so add it back
 $sender =~ s/ /\+/;
 
-my $msg_nbr     = param('msg_nbr');
+my $msg_date    = param('msg_date');
 my $table_name  = 'message';
 
 sub ParseEmail(@) {
@@ -70,22 +70,16 @@ sub ParseEmail(@) {
 } # ParseEmail
 
 sub Body($) {
-  my ($count) = @_;
+  my ($date) = @_;
 
-  $count ||= 1;
+  # Find unique message using $date
+  my $handle = FindEmail $sender, $date;
 
-  my $handle = FindEmail $sender;
-
-  my ($userid, $sender, $subject, $timestamp, $message);
-
-  # Need to handle multiple messages
-  for (my $i = 0; $i < $count; $i++) {
-    ($userid, $sender, $subject, $timestamp, $message) = GetEmail $handle;
-  } # for
+  my ($userid, $sender, $subject, $timestamp, $message) = GetEmail $handle;
 
   my $parser = MIME::Parser->new();
 
-  $parser->output_to_core (1);
+  $parser->output_to_core(1);
 
   my $entity = $parser->parse_data ($message);
 
@@ -112,10 +106,10 @@ sub Body($) {
                         -bgcolor      => "#ece9d8",
                         -width        => "100%"}) . "\n";
 
-    foreach (keys (%header)) {
+    for (keys (%header)) {
       next if /base64/;
 
-      my $str = decode_mimewords ($header{$_});
+      my $str = decode_mimewords($header{$_});
 
       print Tr ([
         th ({-align    => "right",
@@ -123,7 +117,7 @@ sub Body($) {
              -width    => "8%"}, "$_:") . "\n" .
         td ({-bgcolor  => "white"}, $str)
       ]);
-    } # if
+    } # for
 
     print end_table;
     print "</td></tr>";
@@ -179,7 +173,7 @@ sub Body($) {
         } # for
       } elsif ($part->mime_type eq 'multipart/related') {
         # Sometimes parts are 'multipart/relative'...
-       $part->print_body;
+        $part->print_body;
       } else {
         if ($part->mime_type =~ /text/) {
           my $encoding = '';
@@ -218,6 +212,6 @@ $userid = Heading(
 SetContext($userid);
 NavigationBar($userid);
 
-Body($msg_nbr);
+Body($msg_date);
 
 Footing($table_name);
index ae6efcc..b1df123 100644 (file)
@@ -702,16 +702,19 @@ sub Encrypt($$) {
   return $row[0];
 } # Encrypt
 
-sub FindEmail(;$) {
-  my ($sender) = @_;
+sub FindEmail(;$$) {
+  my ($sender, $date) = @_;
 
   my $statement;
 
-  if (!defined $sender || $sender eq '') {
-    $statement = "select * from email where userid = '$userid'";
-  } else {
-    $statement = "select * from email where userid = '$userid' and sender = '$sender'";
-  } # if
+  $sender //= '';
+  $date   //= '';
+
+  $statement  = "select * from email where userid = '$userid'";
+
+  # Add conditions if present
+  $statement .= " and sender = '$sender'"  if $sender;
+  $statement .= " and timestamp = '$date'" if $date;
 
   my $sth = $DB->prepare($statement)
     or DBError('FindEmail: Unable to prepare statement', $statement);