summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pttbbs/mbbsd/ordersong.c60
-rw-r--r--pttbbs/mbbsd/passwd.c3
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();
}