#include <www.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | DBG(x) tell_object(find_player("hate"), sprintf("DBG: %O\n", x)) |
| #define | NEWSD "/secure/news" |
| #define | N_GROUP 0 |
| #define | N_AUTHOR 1 |
| #define | N_TID 2 |
| #define | N_DATE 3 |
| #define | N_TITLE 4 |
| #define | N_ARTICLE 5 |
| #define | THREAD(a) |
| #define | TEXPR "rn=[^\n ]*|rt=[^\n ]*|rg=[^\n ]*" |
| #define | RN 0 |
| #define | RT 1 |
| #define | RG 2 |
| #define | TID 3 |
Funktionen | |
| varargs private string | url (string group, string article) |
| varargs private string | make_link (string text, string group, string article) |
| string | GroupList () |
| private mixed | tinfo (mixed article) |
| private int | thread (mixed article, int i, mapping t) |
| private int | expired (mixed *list, int i) |
| string | ArticleList (string group) |
| private varargs string | Message (string group, mixed article) |
| string | Request (mapping cmds) |
| #define DBG | ( | x | ) | tell_object(find_player("hate"), sprintf("DBG: %O\n", x)) |
Definiert in Zeile 12 der Datei www.news.c.
| #define N_ARTICLE 5 |
Definiert in Zeile 21 der Datei www.news.c.
| #define N_AUTHOR 1 |
Definiert in Zeile 17 der Datei www.news.c.
Wird benutzt von ArticleList(), expired(), Message() und thread().
| #define N_DATE 3 |
Definiert in Zeile 19 der Datei www.news.c.
Wird benutzt von ArticleList(), expired(), Message(), thread() und tinfo().
| #define N_GROUP 0 |
Definiert in Zeile 16 der Datei www.news.c.
Wird benutzt von thread().
| #define N_TID 2 |
Definiert in Zeile 18 der Datei www.news.c.
| #define N_TITLE 4 |
Definiert in Zeile 20 der Datei www.news.c.
Wird benutzt von ArticleList(), Message() und thread().
| #define NEWSD "/secure/news" |
Definiert in Zeile 14 der Datei www.news.c.
Wird benutzt von ArticleList(), GroupList() und Message().
| #define RG 2 |
Definiert in Zeile 80 der Datei www.news.c.
| #define RN 0 |
Definiert in Zeile 78 der Datei www.news.c.
| #define RT 1 |
Definiert in Zeile 79 der Datei www.news.c.
Wird benutzt von expired().
| #define TEXPR "rn=[^\n ]*|rt=[^\n ]*|rg=[^\n ]*" |
Definiert in Zeile 55 der Datei www.news.c.
| #define THREAD | ( | a | ) |
Definiert in Zeile 53 der Datei www.news.c.
| #define TID 3 |
Definiert in Zeile 81 der Datei www.news.c.
Wird benutzt von ArticleList(), Message() und thread().
| string ArticleList | ( | string | group | ) |
Definiert in Zeile 116 der Datei www.news.c.
Benutzt dtime(), expired(), i, list, make_link(), N_AUTHOR, N_DATE, N_TITLE, NEWSD, old_explode(), thread(), TID und tinfo().
Wird benutzt von Request().
00117 { 00118 string *list, ret; 00119 mapping t; 00120 int i; 00121 00122 list = NEWSD->GetNotes(group = old_explode(group, ":")[0]); 00123 if (!pointerp(list)) { 00124 return "<H2>Gruppe: "+group+"</H2>" 00125 "<H3>existiert nicht.</H3>" 00126 "["+make_link("Gruppenübersicht")+"]"; 00127 } 00128 t = m_allocate(0,4); 00129 for (i = sizeof(list)-1, ret = ""; i >= 0; i--) 00130 if(!thread(list[i], i, t) || expired(list, i)) 00131 { 00132 int ttmp; 00133 string tid; 00134 mixed tt; tt = tinfo(list[i]); 00135 ttmp = t[tid = tt[TID]] - 1; 00136 ret = sprintf("%3.3d [%-12s %-6s]%-3s %s\n", 00137 i+1, 00138 list[i][N_AUTHOR]+":", 00139 dtime(list[i][N_DATE])[5..11], 00140 ttmp > 0 ? "+"+ttmp : " - ", 00141 make_link((string)list[i][N_TITLE] 00142 +(ttmp > 0 ? 00143 " ("+dtime(to_int(t[tid, 3]))[5..11] 00144 +dtime(to_int(t[tid, 3]))[17..]+")" : ""), 00145 group, to_string(i)+":"+t[tid, 3])) + ret; 00146 } 00147 00148 return "<H2>Gruppe: "+group+"</H2>" 00149 +"<H3>["+sizeof(list)+" Artikel, " 00150 +"letzte Änderung "+dtime(NEWSD->GetNewsTime(group))+"]</H3>" 00151 +"<PRE>" + ret + "</PRE>" 00152 +"["+make_link("Gruppenübersicht")+"]"; 00153 }


| private int expired | ( | mixed * | list, | |
| int | i | |||
| ) |
Definiert in Zeile 105 der Datei www.news.c.
Benutzt info, N_AUTHOR, N_DATE, RN, RT und tinfo().
Wird benutzt von ArticleList() und Message().
00106 { 00107 mixed info; 00108 info = tinfo(list[i]); 00109 for(i--; i >= 0; i--) 00110 if(list[i][N_AUTHOR] == info[RN] && 00111 list[i][N_DATE] == to_int(info[RT])) 00112 return 0; 00113 return 1; 00114 }


| string GroupList | ( | ) |
Definiert in Zeile 36 der Datei www.news.c.
Benutzt dtime(), i, list, make_link() und NEWSD.
Wird benutzt von Request().
00037 { 00038 string *list, ret; 00039 int i, t; 00040 00041 list = NEWSD->GetGroups(); 00042 for (i = 0, ret = ""; i < sizeof(list); i++) 00043 ret += sprintf("[%3d Artikel, %-6s] %s\n", 00044 sizeof(NEWSD->GetNotes(list[i])), 00045 dtime(t = NEWSD->GetNewsTime(list[i]))[5..11], 00046 make_link(list[i],list[i]+":"+t)); 00047 return "<H2>Übersicht</H2>" 00048 +"<H3>["+sizeof(list)+" Gruppen, " 00049 +"letzte Änderung "+dtime(NEWSD->GetNewsTime())+"]</H3>" 00050 +"<PRE>" + ret +"</PRE>"; 00051 }


| varargs private string make_link | ( | string | text, | |
| string | group, | |||
| string | article | |||
| ) |
Definiert in Zeile 30 der Datei www.news.c.
Benutzt url().
Wird benutzt von ArticleList(), GroupList(), Message() und thread().
00031 { 00032 if(!text || !strlen(text)) text = "-Unbenannt-"; 00033 return "<A HREF="+url(group, article)+">"+text+"</A>"; 00034 }


| private varargs string Message | ( | string | group, | |
| mixed | article | |||
| ) |
Definiert in Zeile 155 der Datei www.news.c.
Benutzt dtime(), expired(), i, info, make_link(), N_ARTICLE, N_AUTHOR, N_DATE, N_TITLE, NEWSD, old_explode(), RN, text(), thread(), TID und tinfo().
Wird benutzt von Request().
00156 { 00157 mixed text, tmp, ttmp, next, prev, info; 00158 string art; 00159 mapping t; 00160 int i; 00161 00162 if (!article) article = 0; 00163 else article = to_int(old_explode(article, ":")[0]); 00164 00165 tmp = NEWSD->GetNotes(group = old_explode(group, ":")[0]); 00166 if (pointerp(tmp) && (article >= sizeof(tmp))) 00167 return("Artikel nicht gefunden, soviele Artikel hat diese Rubrik " 00168 "nicht!\n"); 00169 00170 text = tmp[article]; 00171 00172 t = m_allocate(0,4); 00173 for(i = sizeof(tmp)-1; i > article; i--) 00174 thread(tmp[i], i, t); 00175 next = "Nächster Artikel"; 00176 prev = "Voriger Artikel"; 00177 00178 art = implode((ttmp = old_explode(text[N_ARTICLE], "\n")) 00179 - regexp(ttmp, "^~#!"), "\n"); 00180 00181 art = regreplace(art, "<", "\\<", 1); 00182 art = regreplace(art, ">", "\\>", 1); 00183 art = regreplace(art, "([a-zA-Z][a-zA-Z]*://[^ \n\t][^ \n\t]*)", "<a href=\"\\1\">\\1</a>", 1); 00184 00185 info = tinfo(text); 00186 00187 return "<H1>" + text[N_TITLE] + "</H1><HR>\n" 00188 + "<H3>" + group + ": " + text[N_AUTHOR] 00189 + " (Artikel " + (article + 1) + ", " + dtime(text[N_DATE]) + ")\n</H3>" 00190 + (info[RN] ? ("<H4>Antwort auf "+info[RN]+ 00191 (expired(tmp, article) ? " (verfallen)" : "")+"</H4>") 00192 : "") 00193 + "<PRE>" + art + "</PRE>\n" 00194 + (t[info[TID]] ? 00195 "<HR>Weitere Artikel zu diesem Thema:" 00196 + "<PRE>" + t[info[TID], 1] + "</PRE><HR>" : "") 00197 + " ["+(article < sizeof(tmp)-1 ? make_link(next, group,to_string(article+1)) : 00198 next)+"]" 00199 + " ["+(article ? make_link(prev, group, to_string(article-1)) : prev)+"]" 00200 + " ["+make_link("Artikelübersicht", group)+"]" 00201 + " ["+make_link("Gruppenübersicht")+"]"; 00202 }


| string Request | ( | mapping | cmds | ) |
Definiert in Zeile 204 der Datei www.news.c.
Benutzt ARTICLE, ArticleList(), GROUP, GroupList(), Message(), MUDNAME und text().
00205 { 00206 string text; 00207 if(!cmds[GROUP]) text = GroupList(); 00208 else 00209 if(!cmds[ARTICLE]) text = ArticleList(cmds[GROUP]); 00210 else text = Message(cmds[GROUP], cmds[ARTICLE]); 00211 00212 return "<H2>"+MUDNAME+" Zeitung</H2><HR>" 00213 +text; 00214 }

| private int thread | ( | mixed | article, | |
| int | i, | |||
| mapping | t | |||
| ) |
Definiert in Zeile 83 der Datei www.news.c.
Benutzt dtime(), info, make_link(), N_AUTHOR, N_DATE, N_GROUP, N_TITLE, TID und tinfo().
Wird benutzt von ArticleList() und Message().
00084 { 00085 mixed info; 00086 info = tinfo(article); 00087 00088 if(info[TID]) { 00089 t[info[TID]]++; 00090 t[info[TID], 1] = sprintf("%3.3d [%-12s %-6s]%-3s %s\n", 00091 i+1, 00092 article[N_AUTHOR]+":", 00093 dtime(article[N_DATE])[5..11], 00094 (t[info[TID]] - 1) ? "+"+(t[info[TID]]-1) : " - ", 00095 make_link(article[N_TITLE], 00096 article[N_GROUP], to_string(i))) 00097 + (t[info[TID], 1] ? t[info[TID], 1] : ""); 00098 t[info[TID], 2] = info; 00099 if(article[N_DATE] > to_int(t[info[TID], 3])) 00100 t[info[TID], 3] = ""+article[N_DATE]; 00101 return 1; 00102 } 00103 }


| private mixed tinfo | ( | mixed | article | ) |
Definiert in Zeile 57 der Datei www.news.c.
Benutzt info, N_ARTICLE, N_DATE und old_explode().
Wird benutzt von ArticleList(), expired(), Message() und thread().
00058 { 00059 mixed tmp, info; 00060 string rn, rt, rg, tid; 00061 int j, k; 00062 00063 tmp = regexp(old_explode(article[N_ARTICLE], "\n"), "^~#!"); 00064 for(j = sizeof(tmp); j--;) { 00065 mixed line; 00066 line = old_explode(tmp[j], " "); 00067 for(k = sizeof(line); k--;) { 00068 if(line[k][0..1]=="rn") rn = line[k][3..]; 00069 if(line[k][0..1]=="rt") rt = line[k][3..]; 00070 if(line[k][0..1]=="rg") rg = line[k][3..]; 00071 if(line[k][0..2]=="tid") tid = line[k][4..]; 00072 } 00073 } 00074 if(!tid) tid = ""+article[N_DATE]; 00075 return ({ rn, rt, rg, tid }); 00076 }


| varargs private string url | ( | string | group, | |
| string | article | |||
| ) |
Definiert in Zeile 23 der Datei www.news.c.
Benutzt ARTICLE, GROUP, MUDWWW, R_NEWS und REQ.
Wird benutzt von make_link().
00024 { 00025 return "\""+MUDWWW+"?"+REQ+"="+R_NEWS 00026 +(group?"&"+GROUP+"="+group:"") 00027 +(article?"&"+ARTICLE+"="+article:"")+"\""; 00028 }

1.6.3