getId()])) { // Use the last 5 builds to determine project health: $successes = 0; $failures = 0; foreach ($builds[$project->getId()] as $build) { switch ($build->getStatus()) { case 0: $statuses[] = 'pending'; break; case 1: $statuses[] = 'running'; break; case 2: $successes++; $statuses[] = 'ok'; $success = is_null($success) && !is_null($build->getFinished()) ? $build->getFinished()->format('M j Y g:ia') : $success; break; case 3: $failures++; $statuses[] = 'failed'; $failure = is_null($failure) && !is_null($build->getFinished()) ? $build->getFinished()->format('M j Y g:ia') : $failure; break; } } } if ($failures == 0) { $subcls = 'green'; } elseif ($successes == 0) { $subcls = 'red'; } else { $subcls = 'yellow'; } $buildCount = count($builds[$project->getId()]); $lastSuccess = $successful[$project->getId()]; $lastFailure = $failed[$project->getId()]; $message = Lang::get('no_builds_yet'); $shortMessage = Lang::get('no_builds_yet'); if ($buildCount > 0) { if ($failures > 0) { $shortMessage = Lang::get('x_of_x_failed_short', $failures, $buildCount); $message = Lang::get('x_of_x_failed', $failures, $buildCount); if (!is_null($lastSuccess) && !is_null($lastSuccess->getFinished())) { $message .= Lang::get('last_successful_build', $lastSuccess->getFinished()->format('M j Y')); } else { $message .= Lang::get('never_built_successfully'); } } else { $message = Lang::get('all_builds_passed', $buildCount); $shortMessage = Lang::get('all_builds_passed_short', $buildCount, $buildCount); if (!is_null($lastFailure) && !is_null($lastFailure->getFinished())) { $message .= Lang::get('last_failed_build', $lastFailure->getFinished()->format('M j Y')); } else { $message .= Lang::get('never_failed_build'); } } } ?> 10): ?>