diff options
-rw-r--r-- | pttbbs/mbbsd/ordersong.c | 60 | ||||
-rw-r--r-- | pttbbs/mbbsd/passwd.c | 3 |
2 files changed, 58 insertions, 5 deletions
diff --git a/pttbbs/mbbsd/ordersong.c b/pttbbs/mbbsd/ordersong.c index cb90bcc7..93e79ce1 100644 --- a/pttbbs/mbbsd/ordersong.c +++ b/pttbbs/mbbsd/ordersong.c @@ -24,7 +24,7 @@ static void sortsong(void); static int do_order_song(void) { - char sender[IDLEN + 1], receiver[IDLEN + 1], buf[200], + char sender[IDLEN + 1], receiver[IDLEN + 1] = "", buf[200], genbuf[200], filename[256], say[51]; char trans_buffer[PATHLEN]; char address[IDLEN+1]; @@ -32,6 +32,9 @@ do_order_song(void) fileheader_t mail; int nsongs; char save_title[STRLEN]; +#ifdef PLAY_ANGEL + const char *angel_nick = NULL; +#endif // 由於變免費了,改成要文章數跟登入天數 #ifdef ORDERSONG_MIN_NUMPOST @@ -99,7 +102,34 @@ do_order_song(void) getdata_str(19, 0, "留言者(可匿名): ", sender, sizeof(sender), DOECHO, cuser.userid); - getdata(20, 0, "留言給(可匿名): ", receiver, sizeof(receiver), DOECHO); +#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); +#endif + + if (!*receiver) + getdata(20, 0, "留言給(可匿名): ", receiver, sizeof(receiver), DOECHO); do { getdata(21, 0, "想要要對他/她說..:", say, sizeof(say), DOECHO); @@ -110,8 +140,15 @@ do_order_song(void) } } while (!say[0]); - snprintf(save_title, sizeof(save_title), - "%s:%s", sender, say); + 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); + *address = 0; + } else +#endif do { move(22, 0); clrtobot(); getdata_str(22, 0, "寄到誰的信箱(站內真實ID)?", @@ -195,6 +232,21 @@ 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); + } +#endif if (append_record(OSONGPATH "/" FN_DIR, &mail, sizeof(mail)) != -1) { pwcuSetLastSongTime(now); diff --git a/pttbbs/mbbsd/passwd.c b/pttbbs/mbbsd/passwd.c index e3dd2d22..b0f5fdcd 100644 --- a/pttbbs/mbbsd/passwd.c +++ b/pttbbs/mbbsd/passwd.c @@ -195,7 +195,8 @@ int pwcuSetMyAngel (const char *angel_uid) PWCU_START(); strlcpy( u.myangel, angel_uid, sizeof( u.myangel)); strlcpy(cuser.myangel, angel_uid, sizeof(cuser.myangel)); - cuser.timesetangel = (time4_t)time(NULL); + syncnow(); + cuser.timesetangel = u.timesetangel = now; PWCU_END(); } |