// $Id: mailcast.c,v 1.7 2008/01/05 12:42:17 lynx Exp $ #include #include #include inherit NET_PATH "place/basic"; // noch nicht ganz klar ob das nicht einfach ein job der /history ist.. // und wir ganz generell hin und wieder mehrfache histories brauchen // array(mapping) mails = ({ }); // // wieviele mails sollen gespeichert bleiben? // ...waer gut, wenn man das im raumfile definieren koennt und hier bleibts.. // #ifndef _limit_amount_history_mailcast #define _limit_amount_history_mailcast 7 #endif msg(source, mc, data, mapping vars) { if (abbrev("_notice_email_delivered", mc)) { // eine _notice_email_delivered wird im server-fenster angezeigt, nicht im raum.. // naja, der raum ist eh nicht zum chatten da.. // net/irc sollte das problem geschickter lösen dann.. // und nicht hier sowas komisches da: castmsg(source, "_message_public_mail", vars["_subject"]+":\n"+vars["_content"], vars); if (sizeof(mails) >= _limit_amount_history_mailcast) { mails[0] = 0; mails -= ({ 0 }); } mails += ({ ([ "_source" : source, "_subject" : vars["_subject"], "_content" : vars["_content"] ]) }); save(); return; } return ::msg(source, mc, data, vars); } htget(prot, query, headers, qs, data, noprocess) { htok(prot); #ifndef STYLESHEET # define STYLESHEET (v("_uniform_style") || "http://www.psyced.org/mail.css") #endif write("\n"); // typically use textdb here to obtain different layouts // // write("\n" // " \n \n \n \n \n"); for (int i=sizeof(mails)-1; i>=0; i--) { mapping mail = mails[i]; string t = htquote(mail["_content"]); t = replace(t, "\n", "
\n"); // write(" \n \n \n \n \n"); write("
    \n
  • "+ mail["_source"] +"
  • \n
  • "+ mail["_subject"] +"
  • \n
  • "+ t +"
  • \n
\n"); } // write("
SourceSubjectContent
"+ mail["_source"] +""+ mail["_subject"] +""+ t +"
"); return 1; }