[LON-CAPA-cvs] cvs: loncom /interface lonmsg.pm lonwhatsnew.pm
raeburn
raeburn at source.lon-capa.org
Tue Jul 21 17:26:33 EDT 2015
raeburn Tue Jul 21 21:26:33 2015 EDT
Modified files:
/loncom/interface lonwhatsnew.pm lonmsg.pm
Log:
- speedup "What's New" page for people with large number of messages in INBOX.
Index: loncom/interface/lonwhatsnew.pm
diff -u loncom/interface/lonwhatsnew.pm:1.117 loncom/interface/lonwhatsnew.pm:1.118
--- loncom/interface/lonwhatsnew.pm:1.117 Mon Dec 15 17:13:25 2014
+++ loncom/interface/lonwhatsnew.pm Tue Jul 21 21:26:32 2015
@@ -1,5 +1,5 @@
#
-# $Id: lonwhatsnew.pm,v 1.117 2014/12/15 17:13:25 raeburn Exp $
+# $Id: lonwhatsnew.pm,v 1.118 2015/07/21 21:26:32 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);
Index: loncom/interface/lonmsg.pm
diff -u loncom/interface/lonmsg.pm:1.242 loncom/interface/lonmsg.pm:1.243
--- loncom/interface/lonmsg.pm:1.242 Tue Jun 23 02:42:34 2015
+++ loncom/interface/lonmsg.pm Tue Jul 21 21:26:32 2015
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.242 2015/06/23 02:42:34 musolffc Exp $
+# $Id: lonmsg.pm,v 1.243 2015/07/21 21:26:32 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -397,14 +397,17 @@
}
sub unpackmsgid {
- my ($msgid,$folder,$skipstatus,$status_cache)=@_;
+ my ($msgid,$folder,$skipstatus,$status_cache,$onlycid)=@_;
$msgid=&unescape($msgid);
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid,
$processid,$symb,$error) = split(/\:/,&unescape($msgid));
+ if (!defined($processid)) { $fromcid = ''; }
+ if (($onlycid) && ($onlycid ne $fromcid)) {
+ return ($sendtime,'',$fromname,$fromdomain,'',$fromcid,'',$error);
+ }
$shortsubj = &unescape($shortsubj);
$shortsubj = &HTML::Entities::decode($shortsubj);
$symb = &unescape($symb);
- if (!defined($processid)) { $fromcid = ''; }
my %status=();
unless ($skipstatus) {
if (ref($status_cache)) {
More information about the LON-CAPA-cvs
mailing list