回精華區
作者itoc, 信區: itoc
標題[功能] manage.c 板主自訂看板:不可加密文章
時間05/05/26
作者: itoc (核心動力) 看板: itoc
標題: Re: 不可加密
時間: 2004/06/16 Wed 08:41:11                           Updated: 2005/05/26

※ 引述《Uizmp (黑袍法師)》之銘言:
> 請問可否限制某看板文章不得加密呀?

: battr.h

#define BRD_ANONYMOUS   0x20    /* 匿名看板 */
+ #define BRD_NORESTRICT   0x40    /* 不可加密看板 */

  ...
  ...

- #define NUMBATTRS       6
+ #define NUMBATTRS       7

- #define STR_BATTR       "zTcsvA"
+ #define STR_BATTR       "zTcsvAR"

: battr.h:battr_tbl[]

  "匿名看板",                   /* BRD_ANONYMOUS */
+ "不可加密看板",               /* BRD_NORESTRICT */

: edit.c:ve_filer()

#ifdef HAVE_REFUSEMARK
  case 'x':
-  if (ve_op < 0)               /* itoc.010301: 不能儲存 */
+  if (ve_op < 0 || currbattr & BRD_NORESTRICT)
     return VE_FOOTER;
   curredit |= EDIT_RESTRICT;
   curredit &= ~EDIT_OUTGO;     /* 加密必是 local save */
   break;
#endif

: post.c:post_refuse()

  if (!cuser.userlevel) /* itoc.020114: guest 不能對其他 guest 的文章加密 */
    return XO_NONE;

+ if (currbattr & BRD_NORESTRICT)
+   return XO_NONE;

: post.c:post_cross()

#ifdef HAVE_REFUSEMARK
-    else if (rc == 'x')
+    else if (rc == 'x' && !(currbattr & BRD_NORESTRICT))
       xpost.xmode = POST_RESTRICT;
#endif

> ──────────────────────────────────── <

  如果希望開放給板主自行設定

: manage.c 把以下這段加在 post_battr_noscore() 後面

static int
post_battr_norestrict(xo)
  XO *xo;
{
  BRD *oldbrd, newbrd;

  oldbrd = bshm->bcache + currbno;
  memcpy(&newbrd, oldbrd, sizeof(BRD));

  switch (vans("1)可以加密文章 2)不可加密文章 [Q] "))
  {
  case '1':
    newbrd.battr &= ~BRD_NORESTRICT;
    break;
  case '2':
    newbrd.battr |= BRD_NORESTRICT;
    break;
  default:
    return XO_FOOT;
  }

  if (memcmp(&newbrd, oldbrd, sizeof(BRD)) && vans(msg_sure_ny) == 'y')
  {
    memcpy(oldbrd, &newbrd, sizeof(BRD));
    rec_put(FN_BRD, &newbrd, sizeof(BRD), currbno, NULL);
  }

  return XO_FOOT;
}

: manage.c:post_manage()

#  ifdef HAVE_SCORE
    "Score   設定可否評分",
#  endif
+   "Xrefuse 加密文章設定",

  ...
  ...

#  ifdef HAVE_SCORE
    " (S)評分"
#  endif
+   " (X)加密"

  ...
  ...

#ifdef HAVE_SCORE
  case 's':
    return post_battr_noscore(xo);
#endif

+ case 'x':
+   return post_battr_norestrict(xo);

--
  Origin:  Maple-itoc˙動力核心  processor.tfcis.org 
  Author: itoc itoc.Dorm11.NCTU.edu.tw 發表
精華選讀←離開[主題上]主題下(k)上篇(j)下篇S/a搜尋 G串列 TAB精華 ↑↓捲 Pg/Space翻