ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Opened 12 years ago

Closed 12 years ago

#1688 closed defect (fixed)

誕生日の設定されていないメンバーのフレンドホームに「もうすぐお誕生日です!」のメッセージが表示される

Reported by: kiwa Owned by: yamaji
Priority: minor Milestone: OpenPNE2.10.4
Component: その他 Version: 2.8.x & 2.10.x & 2.11.x
Keywords: OpenPNE2.8.9 OpenPNE2.11.4 Cc:

Description (last modified by kunitada)

■現象

  1. 管理画面のメンバー管理、csvインポートでメンバーを作成する。ニックネームとメールアドレスとパスワードしかないので誕生日は0月0日として登録される。
  2. 携帯からCSVインポートで作成したメンバーのフレンドホームを表示させる
  3. 「☆もうすぐお誕生日です!☆」のメッセージが表示されている

■原因

誕生日等のある日付までの日数を計算している関数で0月0日に対応していなかった。推測ですが0月は前年の12月として解釈されているのではないか?

■修正内容

今日と次の誕生日までの日数を計算するところで、誕生日が0月0日ならば、エラーとして扱い。表示用のテンプレートではエラーのときに何も表示させない処理を入れる

修正リビジョン

■関連情報

webapp/lib/utilのgetCountdownDays

Change History (14)

comment:1 Changed 12 years ago by kiwa

Priority: minormajor

comment:2 Changed 12 years ago by kiwa

Keywords: 再現待ち removed
Priority: majorminor

書き込みしたとき(2007/12/14)には全バージョンでPC・携帯ともに表示されていましたが、

本日(2008/1/17)確認したら表示されなくなっていました。

0月0日の誕生日判定がどこかにあるものと思われます。

comment:3 Changed 12 years ago by yamaji

Owner: changed from nobody to yamaji
Status: newassigned

comment:4 Changed 12 years ago by yamaji

CSVアップロード機能で作成されたメンバーは誕生日が0月0日であることが分かったので、今日と次の誕生日までの日数を計算するところで、誕生日が0月0日ならば、次の誕生日までは4999年などの大きな値を返すようにすれば、問題は解消するはずです。

comment:5 Changed 12 years ago by kunitada

CSVインポートでメンバー追加すると、
項目の順序「ニックネーム」「登録メールアドレス」「パスワード」
しか登録されないのか。。。

選択肢としては、
1) 誕生日がDB登録されて無い状態でも、OpenPNEを動くようにする
2) csvインポート時は、固定で誕生日を1970 1/1 とかにしてしまう。
3) OpenPNEのシステムとしての必須項目なので、初回ログイン時に入力してもらう(だが入力する前もc_memberはあるので、お誕生日メールとか挙動確かめる必要有り)。

ぐらいかな?
僕の感覚だと「3)」だけど、どうかな?また、他に選択肢はないかな。
[14:34:18] おがわおがわの発言: OpenPNE君も0月0日ですよ
[14:34:27] おがわおがわの発言: 1でしょう
[14:35:13] おがわおがわの発言: 誕生日まであと何日かを計算する関数が
[14:35:14] おがわおがわの発言: どこかにあるので
[14:35:28] おがわおがわの発言: その辺を何とかするとうまくいくと思います
[14:35:43] 山路 正樹の発言: getCountdownDays です
[14:40:00] kunitada@shinjukuの発言: なるほど、では1で。

getCountdownDaysが0/0だと-1返すとかがいいんじゃないかな?
そんでそれ受ける処理でエラー処理とか。

comment:6 Changed 12 years ago by yamaji

Description: modified (diff)

comment:7 Changed 12 years ago by kunitada

[14:52:50] おがわおがわの発言: んーこれはちょっと難しいですね
[14:53:12] おがわおがわの発言: 一概にどちらがいいとは言えないですが
[14:55:02] おがわおがわの発言: テンプレート内の条件式が

({if $days_birthday == 0})({* 誕生日当日 *})
({elseif $days_birthday <= 3})({* 誕生日3日以内 *})
[14:55:08] おがわおがわの発言: のようになっているので
[14:55:51] おがわおがわの発言: このあたりを変更しないということであれば、山路さん案が有力になります
[14:58:36] おがわおがわの発言: 条件式を変更するんだということになれば國忠さん案の方が素直かなあという気もします
[15:01:18] kunitada@shinjukuの発言: 僕的には國忠案でいきたいなぁ。tpl書き換えても良いと思うので。。。
その方がきれいだと思う。後でソース見た人もわかりやすいだろうし。。。
(なぜ4999年!?とかなくなるとおもう)
[15:19:08] 山路 正樹の発言: 多少手間がかかりますが、-1をエラーコードとして誕生日が来てから1秒経過にならないようにエラー処理を行うことにしましょう
[15:31:10] kunitada@shinjukuの発言: では、それで。携帯・PCのテンプレートがあるので注意って感じでお願いします
[15:32:39] 山路 正樹の発言: 了解

comment:8 Changed 12 years ago by yamaji

修正リビジョン
Trunk
r5069
2.8.x
r5068
2.10.x
r5070

comment:9 Changed 12 years ago by yamaji

2.10.x修正リビジョン r5071

comment:10 Changed 12 years ago by kunitada

Keywords: 確認中 added

comment:11 Changed 12 years ago by kunitada

Description: modified (diff)

comment:12 Changed 12 years ago by ogawa

Keywords: OpenPNE2.8.9 OpenPNE2.11.4 added
Milestone: OpenPNE2.10.4

comment:13 Changed 12 years ago by ogawa

getCountdownDays() に細かい修正入れました。

comment:14 Changed 12 years ago by ogawa

Keywords: 確認中 removed
Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.