. $apps = array(); $app_versions = array(); function app_version_string($id) { global $apps, $app_versions; if ($id == 0) return ""; if ($id == -1) return tra("Anonymous platform"); if ($id == -2) return tra("Anonymous platform - CPU"); if ($id == -3) return tra("Anonymous platform - NVIDIA GPU"); if ($id == -4) return tra("Anonymous platform - ATI GPU"); if (array_key_exists($id, $app_versions)) { $av = $app_versions[$id]; $app = $apps[$av->appid]; } else { $av = BoincAppVersion::lookup_id($id); if (!$av) { return tra("Not in DB"); } $app_versions[$id] = $av; $app = BoincApp::lookup_id($av->appid); $apps[$av->appid] = $app; } $n = $app->user_friendly_name; $v = sprintf("%d.%02d", $av->version_num/100, $av->version_num%100); if ($av->plan_class) { $c = "($av->plan_class)"; } else { $c = ""; } return "$n v$v $c"; } function result_granted_credit_string($result, $string_to_show) { if ($result->server_state == 4 && $result->granted_credit > 0) { return $string_to_show; } if ($result->server_state <> 5) return "---"; switch($result->outcome) { case 1: //Success switch ($result->validate_state) { case 0: case 4: return tra("pending"); } return $string_to_show; default: if ($result->granted_credit > 0) { return $string_to_show; } return "---"; } } // various states that we allow users to filter on define("STATE_ALL", 0); define("STATE_IN_PROGRESS", 1); define("STATE_PENDING", 2); define("STATE_VALID", 3); define("STATE_INVALID", 4); define("STATE_ERROR", 5); define("NSTATES", 6); $state_name = array( tra("All"), tra("In progress"), tra("Pending"), tra("Valid"), tra("Invalid"), tra("Error"), ); $state_clause = array( "", " and server_state=4 ", " and server_state=5 and outcome=1 and (validate_state=0 or validate_state=4) ", " and server_state=5 and outcome=1 and validate_state=1 ", " and server_state=5 and (outcome=6 or (outcome=1 and (validate_state=2 or validate_state=3 or validate_state=5))) ", " and server_state=5 and (outcome=3 or outcome=4 or outcome=7) ", ); function state_string($result) { switch ($result->server_state) { case 1: return tra("Inactive"); case 2: return tra("Unsent"); case 4: return tra("In progress"); case 5: switch ($result->outcome) { case 1: switch ($result->validate_state) { case 0: return tra("Completed, waiting for validation"); case 1: return tra("Completed and validated"); case 2: return tra("Completed, marked as invalid"); case 3: return tra("Completed, can't validate"); case 4: return tra("Completed, validation inconclusive"); case 5: return tra("Completed, too late to validate"); } return tra("Completed"); case 2: return tra("Couldn't send"); case 3: if ($result->exit_status == -221) { return tra("Cancelled by server"); } switch($result->client_state) { case 1: return tra("Error while downloading"); case 2: case 3: return tra("Error while computing"); case 4: return tra("Error while uploading"); case 6: return tra("Aborted by user"); } return tra("Error"); case 4: return tra("Timed out - no response"); case 5: return tra("Didn't need"); case 6: return tra("Validate error"); case 7: return tra("Client detached"); } } return tra("Unknown"); } function result_server_state_string($result) { switch($result->server_state) { case 1: return tra("Inactive"); case 2: return tra("Unsent"); case 4: return tra("In progress"); case 5: return tra("Over"); } return tra("Unknown"); } function result_outcome_string($result) { switch($result->outcome) { case 0: return "---"; case 1: return tra("Success"); case 2: return tra("Couldn't send"); case 3: if ($result->exit_status <> -221) { return tra("Client error"); } return tra("Redundant result"); case 4: return tra("No reply"); case 5: return tra("Didn't need"); case 6: return tra("Validate error"); case 7: return tra("Client detached"); } return tra("Unknown"); } function result_client_state_string($result) { switch($result->client_state) { case 0: return tra("New"); case 1: return tra("Downloading"); case 2: return tra("Processing"); case 3: return tra("Compute error"); case 4: return tra("Uploading"); case 5: return tra("Done"); case 6: if ($result->exit_status == -221) { return tra("Cancelled by server"); } return tra("Aborted by user"); } } function validate_state_str($result) { switch($result->validate_state) { case 0: return tra("Initial"); case 1: return tra("Valid"); case 2: if ($result->exit_status <> -221) { return tra("Invalid"); } return tra("Not necessary"); case 3: return tra("Workunit error - check skipped"); case 4: return tra("Checked, but no consensus yet"); case 5: return tra("Task was reported too late to validate"); } return tra("Unknown"); } function wu_error_mask_str($s) { $x = ""; if ($s & 1) { $x = $x." ".tra("Couldn't send result"); $s -= 1; } if ($s & 2) { $x = $x." ".tra("Too many errors (may have bug)"); $s -= 2; } if ($s & 4) { $x = $x." ".tra("Too many results (may be nondeterministic)"); $s -= 4; } if ($s & 8) { $x = $x." ".tra("Too many total results"); $s -= 8; } if ($s & 16) { $x = $x." ".tra("WU cancelled"); $s -= 16; } if ($s) { $x = $x." ".tra("Unrecognized Error: %1", $s); } if (strlen($x)) { $x="".$x.""; } else { $x=""; } return $x; } function result_page_url($info) { $c = $info->clause; $o = $info->offset; $sn = $info->show_names; $st = $info->state; return "results.php?$c&offset=$o&show_names=$sn&state=$st"; } function result_table_start($show_wu_link, $show_host_link, $info) { start_table(); echo "
".htmlspecialchars($result->stderr_out).""; } function show_result_navigation($info) { global $state_name; echo "