操作
Bug(バグ) #2661
完了年齢が0歳の場合にプロフィールに年齢が表示されない
開始日:
2011-12-02
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)
説明
Yuma Sakata さんがほぼ13年前に更新
Akihiro KOBAYASHI さんが約10年前に更新
- 関連している Bug(バグ) #2431: op_preset_birthday の日付範囲が制限されていない を追加
Akihiro KOBAYASHI さんが約10年前に更新
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を Akihiro KOBAYASHI にセット
- 対象バージョン を OpenPNE 3.9.0-old にセット
- 3.8 で発生するか を Yes (はい) にセット
Akihiro KOBAYASHI さんが約10年前に更新
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
プルリクエスト:https://github.com/openpne/OpenPNE3/pull/232
原因
従来のapps/pc_frontend/modules/member/templates/_profileListBox.php内if ($member->getAge(true))は”getAge()で値が取れたら”ということを分岐条件しているわけではなく、
”getAge()でとれた変数”を分岐条件にしている。そのため、getAge()で取れた値が0(つまり0歳のとき)はfalseを返し、if文内をスルーしてしまう(その他の数値("-1"等)は通してしまうため、年齢のところが-1でも素直に表示されてしまう)
対策
getAge()で取れる値が-1よりも上のときのみ年齢を表示するようにする.これによって、プロフィールの設定時に年月日を間違えてしまった結果、年がマイナスになってしまった場合にも年が表示されないようにすることができる. ただ、統一性を保つためにも、そもそもプロフィールの設定時に年月日を間違えるということをなくさないようにする必要もあるだろう(関連チケット #2431を解決すれば必然的に対応できるようになる)
Rimpei Ogawa さんが約9年前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
- getAge() の第一引数 $viewableCheck を無効にしてはいけません。
- bool 型が返りうる文脈で -1 と比較すると暗黙的に型変換が起こり挙動がわかりにくいです。多少記述が長くなっても false は別扱いした方がよいと思います。 http://php.net/manual/ja/language.operators.comparison.php
Rimpei Ogawa さんが約9年前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
操作