diff options
-rw-r--r-- | pttbbs/include/proto.h | 2 | ||||
-rw-r--r-- | pttbbs/mbbsd/angel.c | 42 | ||||
-rw-r--r-- | pttbbs/mbbsd/ccw.c | 6 | ||||
-rw-r--r-- | pttbbs/mbbsd/io.c | 2 | ||||
-rw-r--r-- | pttbbs/mbbsd/ordersong.c | 61 | ||||
-rw-r--r-- | pttbbs/mbbsd/user.c | 1 | ||||
-rw-r--r-- | pttbbs/mbbsd/var.c | 2 |
7 files changed, 59 insertions, 57 deletions
diff --git a/pttbbs/include/proto.h b/pttbbs/include/proto.h index 97afc698..922b2fd4 100644 --- a/pttbbs/include/proto.h +++ b/pttbbs/include/proto.h @@ -36,6 +36,8 @@ int a_angelreport(void); int a_angelreload(void); int angel_reject_me(userinfo_t * uin); void angel_notify_activity(void); +void angel_log_order_song(const char *angel_nick); +const char *angel_order_song(char *receiver, size_t sz_receiver); void CallAngel(void); void angel_toggle_pause(); void angel_load_my_fullnick(char *buf, int szbuf); // full nick! diff --git a/pttbbs/mbbsd/angel.c b/pttbbs/mbbsd/angel.c index e5049202..edd2d25d 100644 --- a/pttbbs/mbbsd/angel.c +++ b/pttbbs/mbbsd/angel.c @@ -79,7 +79,7 @@ angel_toggle_pause() "設定小天使神諭呼叫器", "請選取神諭呼叫器的新狀態: ", "開放\t停收\t關閉", - NULL); + NULL) % ANGELPAUSE_MODES; } } @@ -341,6 +341,46 @@ int a_changeangel(void) { return do_changeangel(0); } +const char * +angel_order_song(char *receiver, size_t sz_receiver) { + userec_t udata; + char prompt[STRLEN], ans[3]; + const char *angel_nick = NULL; + + if (!*cuser.myangel) + return NULL; + + // ensure if my angel is still valid. + if (passwd_load_user(cuser.myangel, &udata) <= 0 || + !(udata.userlevel & PERM_ANGEL)) + return NULL; + + angel_nick = angel_get_nick(); + snprintf(prompt, sizeof(prompt), "要留言給你的%s小天使嗎? [y/N]: ", + angel_nick); + if (getdata(20, 0, prompt, ans, sizeof(ans), LCECHO) && *ans == 'y') { + snprintf(receiver, sz_receiver, "%s小天使", angel_nick); + } + return angel_nick; +} + +void +angel_log_order_song(const char *angel_nick) { + char angel_exp[STRLEN]; + + syncnow(); + if (cuser.timesetangel) + snprintf(angel_exp, sizeof(angel_exp), + "%d天", (cuser.timesetangel - now) / DAY_SECONDS + 1); + else + strlcpy(angel_exp, "很久", sizeof(angel_exp)); + + log_filef("log/osong_angel.log", LOG_CREAT, + "%s %*s 點歌給 %*s小天使 (關係已維持: %s)\n", + Cdatelite(&now), IDLEN, cuser.userid, + IDLEN - 6, angel_nick, angel_exp); +} + int a_angelmsg(){ char msg[3][75] = { "", "", "" }; diff --git a/pttbbs/mbbsd/ccw.c b/pttbbs/mbbsd/ccw.c index b22fad2f..137e9d44 100644 --- a/pttbbs/mbbsd/ccw.c +++ b/pttbbs/mbbsd/ccw.c @@ -454,14 +454,10 @@ ccw_process(CCW_CTX *ctx) ///////////////////////////////////////////////////////////////////////////// // Talk / Chat Adaptors -#if 1 +#ifndef CCW_CAP_TALK #define CCW_CAP_TALK "交談" #define CCW_CAP_CHAT "聊天室" #define CCW_CAP_CHATROOM "聊天室" -#else -#define CCW_CAP_TALK "聊天" -#define CCW_CAP_CHAT "談天室" -#define CCW_CAP_CHATROOM "談天室" #endif CCW_PROTO int diff --git a/pttbbs/mbbsd/io.c b/pttbbs/mbbsd/io.c index 51c7163d..fccd9433 100644 --- a/pttbbs/mbbsd/io.c +++ b/pttbbs/mbbsd/io.c @@ -248,7 +248,7 @@ process_pager_keys(int ch) currutmp->msgs[0].userid, WATERBALL_GENERAL, NULL); break; case MSGMODE_FROMANGEL: - my_write(currutmp->msgs[0].pid, "再問祂一次: ", + my_write(currutmp->msgs[0].pid, "再問一次: ", currutmp->msgs[0].userid, WATERBALL_ANGEL, NULL); break; case MSGMODE_TOANGEL: diff --git a/pttbbs/mbbsd/ordersong.c b/pttbbs/mbbsd/ordersong.c index 93e79ce1..964b3408 100644 --- a/pttbbs/mbbsd/ordersong.c +++ b/pttbbs/mbbsd/ordersong.c @@ -32,9 +32,7 @@ do_order_song(void) fileheader_t mail; int nsongs; char save_title[STRLEN]; -#ifdef PLAY_ANGEL - const char *angel_nick = NULL; -#endif + const char *override_receiver = NULL; // 由於變免費了,改成要文章數跟登入天數 #ifdef ORDERSONG_MIN_NUMPOST @@ -97,35 +95,14 @@ do_order_song(void) vmsg("謝謝光臨 :)"); unlockutmpmode(); return 0; - } + } } getdata_str(19, 0, "留言者(可匿名): ", sender, sizeof(sender), DOECHO, cuser.userid); -#ifdef ANGEL_RAIN_DAY - do { - struct tm t = {0}; - char prompt[STRLEN], ans[3]; - userec_t udata; - localtime4_r(&now, &t); - if (t.tm_mday != ANGEL_RAIN_DAY) - break; - if (!*cuser.myangel) - break; - // ensure if my angel is still valid. - if (passwd_load_user(cuser.myangel, &udata) <= 0 || - !(udata.userlevel & PERM_ANGEL)) - break; - // TODO check if the angel has been selected for one month. - angel_nick = angel_get_nick(); - snprintf(prompt, sizeof(prompt), - "要參加天使節活動,留言給你的%s小天使嗎? [y/N]: ", - angel_nick); - if (getdata(20, 0, prompt, ans, sizeof(ans), LCECHO) && *ans == 'y') { - snprintf(receiver, sizeof(receiver), "%s小天使", angel_nick); - } - } while (0); +#ifdef USE_ANGEL_SONG + override_receiver = angel_order_song(receiver, sizeof(receiver)); #endif if (!*receiver) @@ -142,14 +119,9 @@ do_order_song(void) snprintf(save_title, sizeof(save_title), "%s:%s", sender, say); -#ifdef PLAY_ANGEL - if (angel_nick) { - // Send to Angel, or simply make it blank? - // strlcpy(address, sizeof(address), cuser.myangel); + if (override_receiver) { *address = 0; - } else -#endif - do { + } else do { move(22, 0); clrtobot(); getdata_str(22, 0, "寄到誰的信箱(站內真實ID)?", address, sizeof(address), LCECHO, receiver); @@ -186,7 +158,8 @@ do_order_song(void) return 0; } strlcpy(mail.owner, "[心情點播]", sizeof(mail.owner)); - snprintf(mail.title, sizeof(mail.title), "◇ %s 留言給 %s ", sender, receiver); + snprintf(mail.title, sizeof(mail.title), "◇ %s 留言給 %s ", sender, + receiver); while (fgets(buf, sizeof(buf), fp)) { char *po; @@ -232,20 +205,10 @@ do_order_song(void) "%s\t%s\t%s\t%s\t%s\t%s\t%s\n", Cdate(&now), cuser.userid, trans_buffer, address, sender, receiver, say)); -#ifdef PLAY_ANGEL - if (angel_nick) { - // TODO post to AngelPray? - char angel_exp[STRLEN]; - if (cuser.timesetangel) - snprintf(angel_exp, sizeof(angel_exp), - "%d天", (cuser.timesetangel - now) / DAY_SECONDS + 1); - else - strlcpy(angel_exp, "很久", sizeof(angel_exp)); - log_filef("log/osong_angel.log", LOG_CREAT, - "%s %*s 點歌給 %*s小天使 (關係已維持: %s)\n", - Cdatelite(&now), IDLEN, cuser.userid, - IDLEN - 6, angel_nick, angel_exp); - } + +#ifdef USE_ANGEL_SONG + if (override_receiver) + angel_log_order_song(override_receiver); #endif if (append_record(OSONGPATH "/" FN_DIR, &mail, sizeof(mail)) != -1) { diff --git a/pttbbs/mbbsd/user.c b/pttbbs/mbbsd/user.c index b27c6bc7..d8bb626b 100644 --- a/pttbbs/mbbsd/user.c +++ b/pttbbs/mbbsd/user.c @@ -1221,6 +1221,7 @@ uinfo_query(const char *orig_uid, int adminmode, int unum) sendalert(x.userid, ALERT_PWD_PERM); // force to reload perm post_change_perm(changefrom, x.userlevel, cuser.userid, x.userid); #ifdef PLAY_ANGEL + // TODO notify Angelbeats if (x.userlevel & ~changefrom & PERM_ANGEL) mail_id(x.userid, "翅膀長出來了!", "etc/angel_notify", "[天使公會]"); #endif diff --git a/pttbbs/mbbsd/var.c b/pttbbs/mbbsd/var.c index fddcdc26..dd3e973e 100644 --- a/pttbbs/mbbsd/var.c +++ b/pttbbs/mbbsd/var.c @@ -24,7 +24,7 @@ const char * const str_permid[] = { #ifdef PLAY_ANGEL "可擔任小天使", /* PERM_ANGEL */ #else - "未使用", + "小天使(本站無效)", #endif "不允許\認證碼註冊", /* PERM_NOREGCODE */ "視覺站長", /* PERM_VIEWSYSOP */ |