--- loncom/interface/lonmsg.pm 2000/10/19 14:20:17 1.1
+++ loncom/interface/lonmsg.pm 2003/04/02 00:50:46 1.53
@@ -1,7 +1,31 @@
# The LearningOnline Network with CAPA
-#
# Routines for messaging
#
+# $Id: lonmsg.pm,v 1.53 2003/04/02 00:50:46 www Exp $
+#
+# Copyright Michigan State University Board of Trustees
+#
+# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
+#
+# LON-CAPA is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# LON-CAPA is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with LON-CAPA; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# /home/httpd/html/adm/gpl.txt
+#
+# http://www.lon-capa.org/
+#
+#
# (Routines to control the menu
#
# (TeX Conversion Module
@@ -10,26 +34,51 @@
#
# 10/05 Gerd Kortemeyer)
#
-# 10/19 Gerd Kortemeyer
-
+# 10/19,10/20,10/30,
+# 02/06/01 Gerd Kortemeyer
+# 07/27 Guy Albertelli
+# 07/27,07/28,07/30,08/03,08/06,08/08,08/09,08/10,8/13,8/15,
+# 10/1,11/5 Gerd Kortemeyer
+# YEAR=2002
+# 1/1,3/18 Gerd Kortemeyer
+#
package Apache::lonmsg;
use strict;
use Apache::lonnet();
-
+use vars qw($msgcount);
+use HTML::TokeParser();
+use Apache::Constants qw(:common);
+use Apache::loncommon();
+use Apache::lontexconvert();
+use HTML::Entities();
+use Mail::Send;
# ===================================================================== Package
-sub package {
- var ($subject,$message)=@_;
- $message=~s/\\<\;/g;
- $message=~s/\>/\>\;/g;
- $subject=~s/\\<\;/g;
- $subject=~s/\>/\>\;/g;
- return ''.$ENV{'user.name'}.''.
+sub packagemsg {
+ my ($subject,$message,$citation,$baseurl,$attachmenturl)=@_;
+ $message =&HTML::Entities::encode($message);
+ $citation=&HTML::Entities::encode($citation);
+ $subject =&HTML::Entities::encode($subject);
+ #remove machine specification
+ $baseurl =~ s|^http://[^/]+/|/|;
+ $baseurl =&HTML::Entities::encode($baseurl);
+ #remove machine specification
+ $attachmenturl =~ s|^http://[^/]+/|/|;
+ $attachmenturl =&HTML::Entities::encode($attachmenturl);
+
+ my $now=time;
+ $msgcount++;
+ my $partsubj=$subject;
+ $partsubj=&Apache::lonnet::escape($partsubj);
+ my $msgid=&Apache::lonnet::escape(
+ $now.':'.$partsubj.':'.$ENV{'user.name'}.':'.
+ $ENV{'user.domain'}.':'.$msgcount.':'.$$);
+ my $result=''.$ENV{'user.name'}.''.
''.$ENV{'user.domain'}.''.
''.$subject.''.
- ''.
+ ''.
''.$ENV{'SERVER_NAME'}.''.
''.$ENV{'HTTP_HOST'}.''.
''.$ENV{'REMOTE_ADDR'}.''.
@@ -41,26 +90,877 @@ sub package {
''.$ENV{'request.course.id'}.''.
''.$ENV{'request.role'}.''.
''.$ENV{'request.filename'}.''.
+ ''.$msgid.''.
''.$message.'';
+ if (defined($citation)) {
+ $result.=''.$citation.'';
+ }
+ if (defined($baseurl)) {
+ $result.= ''.$baseurl.'';
+ }
+ if (defined($attachmenturl)) {
+ $result.= ''.$attachmenturl.'';
+ }
+ return $msgid,$result;
+}
+
+# ================================================== Unpack message into a hash
+
+sub unpackagemsg {
+ my ($message,$notoken)=@_;
+ my %content=();
+ my $parser=HTML::TokeParser->new(\$message);
+ my $token;
+ while ($token=$parser->get_token) {
+ if ($token->[0] eq 'S') {
+ my $entry=$token->[1];
+ my $value=$parser->get_text('/'.$entry);
+ $content{$entry}=$value;
+ }
+ }
+ if ($content{'attachmenturl'}) {
+ my ($fname,$ft)=($content{'attachmenturl'}=~/\/(\w+)\.(\w+)$/);
+ if ($notoken) {
+ $content{'message'}.='