void savemyclass() { struct brcinfo *brcinfo; struct boardmem *bx; char *ptr = getparm("myclass"); bx = getboard2(ptr); if (!bx) { printf("<b>没有找到 %s 版,请用“搜索”功能搜索版面</b><br>\n", ptr); return; } if (!has_read_perm_x(currentuser, bx)) { printf ("<b>%s 版是一个封闭版面,请先向版务申请加入,或者用“搜索”功能另选其他版面</b><br>\n", ptr); return; } brcinfo = brc_readinfo(currentuser->userid); strsncpy(brcinfo->myclass, bx->header.filename, sizeof (brcinfo->myclass)); ptr = strtrim(getparm("myclasstitle")); if (!strcmp(ptr, "版面标题")) brcinfo->myclasstitle[0] = 0; else strsncpy(brcinfo->myclasstitle, ptr, sizeof (brcinfo->myclasstitle)); brc_saveinfo(currentuser->userid, brcinfo); printf ("<b>设置成功</b>(以后可以到菜单“个人工具箱”-->“设定底栏显示的版面”进行修改)<br>"); printf("<script>top.f4.location.reload();</script>"); }
//secstr == NULL: all boards //secstr == "": boards that doesnn't belong to any group static void showlist_alphabetical(const char *secstr, int needrss) { struct boardmem *(data[MAXBOARD]); int i, len = 0, total = 0; if (secstr) { len = strlen(secstr); if (len == 0) len = 1; } for (i = 0; i < MAXBOARD && i < shm_bcache->number; i++) { if (secstr && strncmp(shm_bcache->bcache[i].header.sec1, secstr, len) && strncmp(shm_bcache->bcache[i].header.sec2, secstr, len)) continue; if (has_read_perm_x(¤tuser, &(shm_bcache->bcache[i]))) { data[total] = &(shm_bcache->bcache[i]); total++; } } if (!total) return; qsort(data, total, sizeof (struct boardmem *), (void *) cmpboard); printf("<table>\n"); if (needrss) { for (i = 0; i < total; i++) { if (i % 3 == 0) printf("\n<tr>"); printf ("<td class=tdborder><a href=%s%s>%s(%s)</a> <a href=\"http://bbs.xjtu.edu.cn/BMYGXTBBUYRMZQTLAGFIFGNMJULDMBECHGGV_B/rss?board=%s\" target=\"blank\"><img src=\"/images/rss.gif\" border=\"0\" />\n", showByDefMode(), data[i]->header.filename, data[i]->header.filename, data[i]->header.title, data[i]->header.filename); } printf("</table><br>\n"); } else { for (i = 0; i < total; i++) { char *buf3 = ""; if (ismybrd(data[i]->header.filename)) buf3 = " checked"; if (i % 3 == 0) printf("\n<tr>"); printf ("<td class=tdborder><input type=checkbox name=%s %s><a href=%s%s>%s(%s)</a> <a href=\"http://bbs.xjtu.edu.cn/BMYGXTBBUYRMZQTLAGFIFGNMJULDMBECHGGV_B/rss?board=%s\" target=\"blank\"><img src=\"/images/rss.gif\" border=\"0\" />\n", data[i]->header.filename, buf3, showByDefMode(), data[i]->header.filename, data[i]->header.filename, data[i]->header.title, data[i]->header.filename); } printf("</table><br>\n"); } }
int bbsboa_main() { struct boardmem *(data[MAXBOARD]), *x; int i, total = 0; char *secstr; //, session_name[STRLEN], pname[STRLEN], *p; const struct sectree *sec; //int show_Commend(); int hasintro = 0, len; secstr = getparm("secstr"); sec = getsectree(secstr); //if (secstr[0] != '*') { 暂时去掉缓存 by IronBlood@bmy 20120329 ////get_session_string(session_name); ////if (secstr[0] != '*' && !no_cache_header) { // if (cache_header // (max(thisversion, file_time(MY_BBS_HOME "/wwwtmp")), 120)) // return 0; //} /* if (no_cache_header) { p = strchr(session_name, '.'); if (NULL != p) { *p = '\0'; } sprintf(pname, "/%s%s/", SMAGIC, session_name); print_session_string(pname); } */ html_header(1); check_msg(); //printf("<style type=text/css>A {color: #0000f0}</style>"); changemode(SELECT); if (secstr[0] == '*') { readmybrd(currentuser.userid); for (i = 0; i < MAXBOARD && i < shm_bcache->number; i++) { x = &(shm_bcache->bcache[i]); if (x->header.filename[0] <= 32 || x->header.filename[0] > 'z') continue; if (!has_read_perm_x(¤tuser, x)) continue; if (!ismybrd(x->header.filename)) continue; data[total] = x; total++; } printf("<body><center>\n"); printf("<div class=rhead>%s --<span class=h11> 预定讨论区总览</span></div><hr>", BBSNAME); if (total) showboardlist(data, total, "*", sec); printf("<hr>"); return 0; } if(!strcmp(secstr,"?")){ printf("<script src=\"/inc/tog.js\"></script></head><body leftmargin=0 topmargin=0>\n"); show_banner(); show_content(); goto out; } len = strlen(secstr); if (sec->introstr[0]) hasintro = 1; for (i = 0; i < MAXBOARD && i < shm_bcache->number; i++) { x = &(shm_bcache->bcache[i]); if (x->header.filename[0] <= 32 || x->header.filename[0] > 'z') continue; if (hasintro) { if (strcmp(secstr, x->header.sec1) && strcmp(secstr, x->header.sec2)) continue; } else { if (strncmp(secstr, x->header.sec1, len) && strncmp(secstr, x->header.sec2, len)) continue; } if (!has_read_perm_x(¤tuser, x)) continue; data[total] = x; total++; } printf("<body topmargin=0 leftMargin=1 MARGINWIDTH=1 MARGINHEIGHT=0>"); showsecpage(sec, data, total, secstr); out: printf("</body></html>"); return 0; }
int bbssbs_main() { int result[MAXBOARD], i, total=0; char keyword[80], *ptr, buf[128], bmbuf[(IDLEN + 1) * 4]; struct boardmem *bp; html_header(1); check_msg(); changemode(READING); strsncpy(keyword, getparm("keyword"), 32); printf("<body><center>"); printf("<div class=rhead>%s -- 超级版面选择</div><hr>\n", BBSNAME); if (strlen(strtrim(keyword))) { for (i = 0; i < shm_bcache->number && total < MAXBOARD ; i++){ if (shm_bcache->bcache[i].header.filename[0] == '\0') continue; if (has_read_perm_x(¤tuser, &(shm_bcache->bcache[i].header))) { if (strcasestr(shm_bcache->bcache[i].header.filename, keyword) || strcasestr(shm_bcache->bcache[i].header.keyword, keyword) || strcasestr(shm_bcache->bcache[i].header.title, keyword) ){ result[total] = i; total++; } } } if (total == 0){ printf("Sorry,我真的帮你找了,没找到符合条件的讨论区啊!"); printf("<p><a href=javascript:history.go(-1)>快速返回</a>"); http_quit(); /* }else if (total == 1){ sprintf(buf, "%s?board=%s", "bbshome", shm_bcache->bcache[result[0]].header.filename); redirect(buf); */ }else { printf("<table width=\"100%\" border=0 cellpadding=0 cellspacing=0><tr>\n" "<td width=40> </td>\n" "<td colspan=2 class=\"level1\"><TABLE width=\"90%\" border=0 cellPadding=2 cellSpacing=0>\n" "<TBODY>\n"); printf("<TR>\n" "<TD class=tdtitle>未</TD>\n" "<TD class=tduser>讨论区名称</TD>\n" "<TD class=tdtitle>V</TD>\n" "<TD class=tdtitle>类别</TD>\n" "<TD class=tdtitle>中文描述</TD>\n" "<TD class=tdtitle>版主</TD>\n" "<TD class=tdtitle>文章数</TD>\n" "<TD class=tdtitle>人气</TD>\n" "<TD class=tdtitle>在线</TD>\n" "</TR>\n"); //brc_initial(currentuser.userid, NULL); printf("<tr>\n"); for (i = 0; i < total; i++){ bp=&(shm_bcache->bcache[result[i]]); printf("<td class=tdborder>%s</td>\n", board_read(bp->header.filename, bp->lastpost) ? "◇" : "◆"); printf("<td class=tduser><a href=%s?B=%s >%s</a></td>\n", "bbsdoc", bp->header.filename, bp->header.filename); printf("<td class=tdborder>"); if (bp->header.flag & VOTE_FLAG) printf("<a href=vote?B=%s>V</a>", bp->header.filename); else printf(" "); printf("</td>\n"); printf("<td class=tdborder>[%4.4s]</td>\n", bp->header.type); printf("<td class=tdborder><a href=%s?B=%s>%s</a></td>\n", "bbshome",bp->header.filename, bp->header.title); ptr = userid_str(bm2str(bmbuf, &(bp->header))); if (strlen(ptr) == 0) printf("<td class=tdborder>诚征版主中</td>\n"); else printf("<td class=tdborder>%s</td>\n", ptr); printf("<td class=tdborder>%d</td>\n" "<td class=tdborder>%d</td>\n" "<td class=tdborder>%d</td>\n</tr>\n", bp->total, bp->score, bp->inboard); setbfile(buf, bp->header.filename, "introduction"); if (file_exist(buf)) { printf("<tr><td> </td>\n" "<td class=tduser>版面简介: </td>\n" "<td class=tdborder colspan=7>" "<div title=\"本版关键字: %s\">\n", bp->header.keyword[0] ? bp->header.keyword: "(暂无)"); fshowcon(stdout, buf, 2); printf("</div></td></tr>\n"); } printlastmark(bp->header.filename); } printf("</TR></TBODY></TABLE></td></tr></table>\n"); } } printf("<br><form action=bbssbs>\n"); printf ("<div title=\"支持中英文版名/版面关键字定位至版面。例如,输入“铁路”可定位至traffic版。\">" "<input name=keyword maxlength=20 size=20>\n"); printf("<input type=submit value=开始搜索></div>\n"); printf("</form><hr>\n"); http_quit(); return 0; }