Moodle1.9.4+です.
評点(ratings)の最高点を表示するコードに軽いバグ(Warnning)が発生します.
mod/forum/lib.php の function forum_get\ratings_max(),
function forum_get_ratings_max($postid, $scale, $ratings=NULL) {
if (is_null($ratings)) {
$ratings = array();
if ($rates = get_records("forum_ratings", "post", $postid)) {
foreach ($rates as $rate) {
$ratings[] = $rate->rating;
}
}
}function forum_get_ratings_max($postid, $scale, $ratings=NULL) {
if (is_null($ratings)) {
$ratings = array();
if ($rates = get_records("forum_ratings", "post", $postid)) {
foreach ($rates as $rate) {
$ratings[] = $rate->rating;
}
}
}
// (Shirai): ここから修正
// $count = count($ratings);
if (!($count = count($ratings))) return "";
// (Shirai): ここまで修正
$max = max($ratings);if ($count == 0 ) {
return "";} else if ($count == 1) { //this works for max
$rating = reset($ratings);
return $scale[$rating];
$count = count($ratings);
$max = max($ratings);if ($count == 0 ) {
return "";} else if ($count == 1) { //this works for max
$rating = reset($ratings);
return $scale[$rating];
もし誰も評点を入力していない場合,$ratingsはNULLです.したがって青文字で示したmax()は,少なくとも一つの要素が無いとダメだ,という警告を発します.いくつも解決方法があるのですが,赤字で示したコードを追加するのが一番手軽ではあります.その後の,if ($count == 0)が無駄になりますが.
同じような処理をいくつかの関数が行っていますね.
function forum_get_ratings_mean()は問題無さそうです.
function forum_get_ratings_count()も大丈夫そうです.
function forum_get_ratings_min()も上記同様の対策が必要です.
function forum_get_ratings_sum()も大丈夫そうです.
function forum_get_ratings_summary()も大丈夫.
どうやらmaxとminの二箇所のようですね.