[LON-CAPA-cvs] cvs: loncom(version_2_11_X) /interface lonwhatsnew.pm

raeburn raeburn at source.lon-capa.org
Sat Aug 6 22:06:00 EDT 2016


raeburn		Sun Aug  7 02:06:00 2016 EDT

  Modified files:              (Branch: version_2_11_X)
    /loncom/interface	lonwhatsnew.pm 
  Log:
  - For 2.11
    - Backport 1.118
  
  
Index: loncom/interface/lonwhatsnew.pm
diff -u loncom/interface/lonwhatsnew.pm:1.105.2.10 loncom/interface/lonwhatsnew.pm:1.105.2.11
--- loncom/interface/lonwhatsnew.pm:1.105.2.10	Thu Mar 12 03:28:51 2015
+++ loncom/interface/lonwhatsnew.pm	Sun Aug  7 02:06:00 2016
@@ -1,5 +1,5 @@
 #
-# $Id: lonwhatsnew.pm,v 1.105.2.10 2015/03/12 03:28:51 raeburn Exp $
+# $Id: lonwhatsnew.pm,v 1.105.2.11 2016/08/07 02:06:00 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -1275,29 +1275,36 @@
 
 sub getnormalmail {
     my ($newmsgs) = @_;
-# Check for unread mail in course
+# Check for unread messages in user's INBOX (which were sent in context of current course).
     my $msgcount = 0;
-
-    my @messages = sort(&Apache::lonnet::getkeys('nohist_email'));
-    foreach my $message (@messages) {
-	my $msgid=&escape($message);
-        my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)=
-            &Apache::lonmsg::unpackmsgid($msgid);
-        if (($fromcid) && ($fromcid eq $env{'request.course.id'})) {
-            if (defined($sendtime) && $sendtime!~/error/) {
-                if ($status eq 'new') {
-                $sendtime = &Apache::lonlocal::locallocaltime($sendtime);
-		    $msgcount ++;
-                    if ($shortsubj eq '') {
-                        $shortsubj = &mt('No subject');
+    my @messages = &Apache::lonnet::getkeys('nohist_email');
+    return $msgcount if (!@messages);
+    my %emailstatus = &Apache::lonnet::dump('email_status');
+    foreach my $msgid (sort(@messages)) {
+        if ((!$emailstatus{$msgid}) || ($emailstatus{$msgid} eq 'new')) {
+            my $skipstatus;
+            if ($emailstatus{$msgid} eq 'new') {
+                $skipstatus = 1;
+            }
+            my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)=
+                &Apache::lonmsg::unpackmsgid($msgid,undef,$skipstatus,undef,
+                                             $env{'request.course.id'});
+            if (($fromcid) && ($fromcid eq $env{'request.course.id'})) {
+                if (defined($sendtime) && $sendtime!~/error/) {
+                    if (($emailstatus{$msgid} eq 'new') || ($status eq 'new')) {
+                        $sendtime = &Apache::lonlocal::locallocaltime($sendtime);
+                        $msgcount ++;
+                        if ($shortsubj eq '') {
+                            $shortsubj = &mt('No subject');
+                        }
+                        push(@{$newmsgs}, {
+                            msgid    => $msgid,
+                            sendtime => $sendtime,
+                            shortsub => $shortsubj,
+                            from     => $fromname,
+                            fromdom  => $fromdom
+                            });
                     }
-                    push(@{$newmsgs}, {
-                        msgid    => $msgid,
-                        sendtime => $sendtime,
-                        shortsub => $shortsubj,
-                        from     => $fromname,
-                        fromdom  => $fromdom
-                        });
                 }
             }
         }
@@ -1307,13 +1314,14 @@
 
 sub getcritmail {
     my ($critmsgs) = @_; 
-# Check for critical messages in course
+# Check for critical messages which were sent in context of current course.
     my %what=&Apache::lonnet::dump('critical');
     my $result = '';
     my $critmsgcount = 0;
     foreach my $msgid (sort(keys(%what))) {
         my ($sendtime,$shortsubj,$fromname,$fromdom,$status,$fromcid)=
-            &Apache::lonmsg::unpackmsgid($msgid);
+            &Apache::lonmsg::unpackmsgid($msgid,undef,1,undef,
+                                         $env{'request.course.id'});
         if (($fromcid) && ($fromcid eq  $env{'request.course.id'})) {
             if (defined($sendtime) && $sendtime!~/error/) {
                 $sendtime = &Apache::lonlocal::locallocaltime($sendtime);




More information about the LON-CAPA-cvs mailing list