From 08a2fee35532394efc655e34ab2e4b788633e149 Mon Sep 17 00:00:00 2001
From: David Anderson <davea@ssl.berkeley.edu>
Date: Thu, 17 Jul 2003 23:51:32 +0000
Subject: [PATCH] Renamed from db.inc to distinguish it from db.inc in
 html_user/

svn path=/trunk/boinc/; revision=1719
---
 html/ops/db_ops.inc | 442 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 442 insertions(+)
 create mode 100644 html/ops/db_ops.inc

diff --git a/html/ops/db_ops.inc b/html/ops/db_ops.inc
new file mode 100644
index 0000000000..f76d250002
--- /dev/null
+++ b/html/ops/db_ops.inc
@@ -0,0 +1,442 @@
+<?php
+
+function db_init() {
+    $retval = mysql_connect();
+    if (!$retval) {
+        echo "Unable to connect to database - please try again later";
+        exit();
+    }
+    $db_name = parse_config("<db_name>");
+    if(!mysql_select_db($db_name)) {
+	    echo "Unable to select database - please try again later";
+	    exit();
+    }
+
+    return 0;
+}
+
+function lookup_user_auth($auth) {
+    $result = mysql_query("select * from user where authenticator='$auth'");
+    if ($result) {
+        $user = mysql_fetch_object($result);
+        mysql_free_result($result);
+        return $user;
+    } else {
+        return 0;
+    }
+}
+
+function result_server_state_select() {
+    echo "
+        <select name=result_server_state>
+        <option value=0 selected> Any
+    ";
+    for($i=1; $i<=6; $i++) {
+        echo "<option value=$i> ".result_server_state_string($i) . "\n";
+    }
+    echo "</select>\n";
+}
+
+function result_outcome_select() {
+    echo "
+        <select name=result_outcome>
+        <option value=0 selected> Any
+    ";
+    for($i=1; $i<=6; $i++) {
+        echo "<option value=$i> ".result_outcome_string($i) . "\n";
+    }
+    echo "</select>\n";
+}
+
+function result_client_state_select() {
+    echo "
+        <select name=result_client_state>
+        <option value=0 selected> Any
+    ";
+    for($i=1; $i<=6; $i++) {
+        echo "<option value=$i> ".result_client_state_string($i) . "\n";
+    }
+    echo "</select>\n";
+}
+
+function result_sort_select() {
+    echo "
+        <select name=sort_by>
+        <option value=''>None
+        <option value=create_time>Create time
+        <option value=sent_time>Sent time
+        <option value=received_time>Received time
+        </select>
+    ";
+}
+
+function table_title($table) {
+    switch($table) {
+    case "platform": return "Platforms";
+    case "app": return "Applications";
+    case "app_version": return "Application Versions";
+    case "host": return "Hosts";
+    case "workunit": return "Workunits";
+    case "result": return "Results";
+    case "team": return "Teams";
+    case "user": return "Users";
+    default: return "????";
+    }
+}
+
+function show_platform($platform) {
+    start_table();
+    row("ID", $platform->id);
+    row("Created", time_str($platform->create_time));
+    row("Name", $platform->name);
+    row("User friendly name", $platform->user_friendly_name);
+    row("","<a href=db_action.php?table=app_version&plat_id=$platform->id>App versions for this platform</a>");
+    end_table();
+}
+
+function show_app($app) {
+    start_table();
+    row("ID", $app->id);
+    row("Created", time_str($app->create_time));
+    row("Name", $app->name);
+    row("","<a href=db_action.php?table=app_version&app_id=$app->id>App Versions for this application</a>");
+    row("","<a href=db_action.php?table=workunit&app_id=$app->id>Workunits for this application</a>");
+    end_table();
+}
+
+function show_app_version($app_version, $hide_xml_docs) {
+    start_table();
+    row("ID", $app_version->id);
+    row("Created", time_str($app_version->create_time));
+    row("Application", "<a href=db_action.php?table=app&id=$app_version->appid>" . app_name_by_id($app_version->appid) . "</a>");
+    row("Version num", $app_version->version_num);
+    row("Platform", "<a href=db_action.php?table=platform&id=$app_version->platformid>" . platform_name_by_id($app_version->platformid) . "</a>" );
+    if (!$hide_xml_docs) {
+        row("XML doc", "<pre>".htmlspecialchars($app_version->xml_doc)."</pre>");
+    }
+    row("Min_core_version", $app_version->min_core_version);
+    row("Max_core_version", $app_version->max_core_version);
+    row("Message", $app_version->message);
+    row("Deprecated", $app_version->deprecated);
+    end_table();
+}
+
+function host_short_header() {
+    echo "
+        <tr>
+        <th>host ID</th>
+        <th>IP address</th>
+        <th>name</th>
+        <th>CPU</th>
+        <th>OS</th>
+        </tr>
+    ";
+}
+
+function show_host_short($host) {
+    echo "
+        <tr>
+        <td><a href=db_action.php?table=host&id=$host->id>$host->id</a></td>
+        <td>$host->last_ip_addr</td>
+        <td>$host->domain_name</td>
+        <td>$host->p_vendor $host->p_model</td>
+        <td>$host->os_name $host->os_version</td>
+        </tr>
+    ";
+}
+
+function show_host($host) {
+    start_table();
+
+    row("ID", $host->id);
+    row("Created", time_str($host->create_time));
+    row("Venue", $host->venue);
+    row("Total credit", $host->total_credit);
+    row("Average credit", $host->expavg_credit);
+    row("Average update time", time_str($host->expavg_time));
+    row("IP address", "$host->last_ip_addr<br>(same the last $host->nsame_ip_addr times)");
+    row("Domain name", $host->domain_name);
+    $x = $host->timezone/3600;
+    row("Time zone", "UTC - $x hours");
+    row("Number of CPUs", $host->p_ncpus);
+    row("CPU", "$host->p_vendor $host->p_model");
+    row("FP ops/sec", $host->p_fpops);
+    row("Int ops/sec", $host->p_iops);
+    row("memory bandwidth", $host->p_membw);
+    row("Operating System", "$host->os_name $host->os_version");
+    $x = $host->m_nbytes/(1024*1024);
+    $y = round($x, 2);
+    row("Memory", "$y MB");
+    $x = $host->m_cache/1024;
+    $y = round($x, 2);
+    row("Cache", "$y KB");
+    $x = $host->m_swap/(1024*1024);
+    $y = round($x, 2);
+    row("Swap Space", "$y MB");
+    $x = $host->d_total/(1024*1024*1024);
+    $y = round($x, 2);
+    row("Total Disk Space", "$y GB");
+    $x = $host->d_free/(1024*1024*1024);
+    $y = round($x, 2);
+    row("Free Disk Space", "$y GB");
+    row("Avg network bandwidth (upstream)", "$host->n_bwup bytes/sec");
+    row("Avg network bandwidth (downstream)", "$host->n_bwdown bytes/sec");
+    row("Number of RPCs", $host->rpc_seqno);
+    row("Last RPC", time_str($host->rpc_time));
+    row("% of time client on", 100*$host->on_frac." %");
+    row("% of time host connected", 100*$host->connected_frac." %");
+    row("% of time user active", 100*$host->active_frac." %");
+    row("Results", "<a href=db_action.php?table=result&detail=low&hostid=$host->id&sort_by=sent_time>click here</a>");
+    end_table();
+
+}
+
+function wu_error_mask_str($s) {
+    $x = "";
+    if ($s & 1) $x = $x."Couldn't send result; ";
+    if ($s & 2) $x = $x."Too many errors (may have bug); ";
+    if ($s & 4) $x = $x."Too many results (may be nondeterministic)";
+    $x = $x."<br>";
+    return $x;
+}
+
+function assimilate_state_str($s) {
+    switch($s) {
+    case 0: return "Initial";
+    case 1: return "Ready to assimilate";
+    case 2: return "Assimilated";
+    }
+}
+
+function file_delete_state_str($s) {
+    switch($s) {
+    case 0: return "Initial";
+    case 1: return "Ready to delete";
+    case 2: return "Deleted";
+    }
+}
+
+function show_workunit($wu, $hide_xml_doc) {
+    start_table();
+    row("Created", time_str($wu->create_time));
+    row("Name", $wu->name);
+    if (!$hide_xml_doc) {
+        row("XML doc", "<pre>".htmlspecialchars($wu->xml_doc)."</pre>");
+    }
+    row("Application", "<a href=db_action.php?table=app&id=$wu->appid>" . app_name_by_id($wu->appid) . "</a>");
+    row("Batch", $wu->batch);
+    row("FP Operations", $wu->rsc_fpops);
+    row("Integer Operations", $wu->rsc_iops);
+    row("Memory Requirement", $wu->rsc_memory);
+    row("Disk Requirement", $wu->rsc_disk);
+    row("Need validate?", $wu->need_validate?"yes":"no");
+    row("Canonical resultid",
+            "<a href=db_action.php?table=result&id=$wu->canonical_resultid>".$wu->canonical_resultid."</a>");
+    row("Canonical credit", $wu->canonical_credit);
+    row("Timeout check time", time_str($wu->timeout_check_time));
+    row("Delay bound", $wu->delay_bound);
+    row("Error mask", wu_error_mask_str($wu->error_mask));
+    row("File delete state", file_delete_state_str($wu->file_delete_state));
+    row("Assimilation state", assimilate_state_str($wu->assimilate_state));
+    row("","<a href=db_action.php?table=result&wu_id=$wu->id>Show associated results</a>");
+    row("","<a href='show_log.php?s=$wu->name'>Grep logs</a>");
+    end_table();
+    echo "<p>";
+}
+
+function result_server_state_string($s) {
+    switch($s) {
+    case 1: return "Inactive";
+    case 2: return "Unsent";
+    case 4: return "In Progress";
+    case 5: return "Over";
+    }
+    return "Unknown";
+}
+
+function result_outcome_string($s) {
+    switch($s) {
+    case 1: return "Success";
+    case 2: return "Couldn't send";
+    case 3: return "Client error";
+    case 4: return "No reply";
+    case 5: return "Didn't need";
+    }
+    return "Unknown";
+}
+
+function result_client_state_string($s) {
+    switch($s) {
+    case 0: return "New";
+    case 1: return "Downloading";
+    case 2: return "Downloaded";
+    case 3: return "Computing";
+    case 4: return "Uploading";
+    case 5: return "Done";
+    }
+    return "Unknown";
+}
+
+function validate_state_str($s) {
+    switch($s) {
+    case 0: return "Initial";
+    case 1: return "Valid";
+    case 2: return "Invalid";
+    }
+    return "Unknown";
+}
+
+function show_result($result, $hide_xml_docs, $hide_stderr, $hide_times) {
+    start_table();
+    if (!$hide_times) {
+        row("Created", time_str($result->create_time));
+        row("Sent", time_str($result->sent_time));
+        row("Received", time_str($result->received_time));
+    }
+    row("Name", $result->name);
+    row("Workunit", "<a href=db_action.php?table=workunit&id=$result->workunitid>" . wu_name_by_id($result->workunitid) . "</a>" );
+    row("Server state", result_server_state_string($result->server_state));
+    row("Outcome", result_outcome_string($result->outcome));
+    row("Client state", result_client_state_string($result->client_state));
+    row("Host ID", "<a href=db_action.php?table=host&id=$result->hostid>" . host_name_by_id($result->hostid) . "</a>");
+    row("Report deadline", time_str($result->report_deadline));
+    row("CPU time", $result->cpu_time);
+    if (!$hide_xml_docs) {
+        row("XML doc in", "<pre>".htmlspecialchars($result->xml_doc_in)."</pre>");
+        row("XML doc out", "<pre>".htmlspecialchars($result->xml_doc_out)."</pre>");
+    }
+    if (!$hide_stderr) {
+        row("stderr out", "<pre>".htmlspecialchars($result->stderr_out)."</pre>");
+    }
+    row("Batch", $result->batch);
+    row("File delete state", file_delete_state_str($result->file_delete_state));
+    row("Validate state", validate_state_str($result->validate_state));
+    row("claimed credit", $result->claimed_credit);
+    row("Granted credit", $result->granted_credit);
+    row("","<a href='show_log.php?s=$result->name'>Grep logs</a>");
+    end_table();
+    echo "<p>";
+}
+
+function result_short_header() {
+    echo "
+        <tr>
+        <th>result ID</th>
+        <th>WU ID</th>
+        <th>server state</th>
+        <th>outcome</th>
+        <th>client state</th>
+        <th>host</th>
+        </tr>
+    ";
+}
+
+function show_result_short($result) {
+    $ss = result_server_state_string($result->server_state);
+    $cs = result_client_state_string($result->client_state);
+    $oc = result_outcome_string($result->outcome);
+    echo "
+        <tr>
+        <td><a href=db_action.php?table=result&id=$result->id>$result->id</a></td>
+        <td><a href=db_action.php?table=workunit&id=$result->workunitid>$result->workunitid</a></td>
+        <td>$ss</td>
+        <td>$oc</td>
+        <td>$cs</td>
+    ";
+    if ($result->hostid) {
+        echo "
+            <td><a href=db_action.php?table=host&id=$result->hostid>$result->hostid</a></td>
+        ";
+    } else {
+        echo "<td>---</td>\n";
+    }
+    echo "
+        </tr>
+    ";
+}
+
+function show_user($user) {
+    start_table();
+    row("ID", $user->id);
+    row("Created", time_str($user->create_time));
+    row("Name", $user->name);
+    row("Authenticator", $user->authenticator);
+    row("Email address", $user->email_addr);
+    row("Country", $user->country);
+    row("Postal code", $user->postal_code);
+    row("Total credit", $user->total_credit);
+    row("Average credit", $user->expavg_credit);
+    row("Last average time", time_str($user->expavg_time));
+    row("Default venue", $user->venue);
+    row("Hosts", "<a href=db_action.php?table=host&userid=$user->id&detail=low>click</a>");
+    end_table();
+}
+
+function team_type_string($s) {
+    switch ($s) {
+    case 1: return "Small Company";
+    case 2: return "Medium Company";
+    case 3: return "Large Company";
+    case 4: return "Club";
+    case 5: return "Primary School";
+    case 6: return "Secondary School";
+    case 7: return "Junior College";
+    case 8: return "University or Department";
+    case 9: return "Government Agency";
+    default: return "Unknown";
+    }
+}
+
+function show_team($team) {
+    start_table();
+    row("ID", $team->id);
+    row("Team Founder", "<a href=db_action.php?table=user&id=$team->userid>" . user_name_by_id($team->userid) . "</a>");
+    row("Name", $team->name);
+    row("Name (HTML Formatted)", "<pre>" . htmlspecialchars($team->name_html) . "</pre>" );
+    row("Url", "<a href=http://$team->url>" . $team->url . "</a>");
+    row("Type", team_type_string($team->type));
+    row("Description", $team->description);
+    row("", "<a href=db_action.php?table=user&team_id=$team->id>List All Members</a>");
+    end_table();
+}
+
+function team_name_by_id($team_id) {
+    $result = mysql_query("select * from team where id = $team_id");
+    $team = mysql_fetch_object($result);
+    return $team->name;
+}
+
+function user_name_by_id($user_id) {
+    $result = mysql_query("select * from user where id = $user_id");
+    $user = mysql_fetch_object($result);
+    return $user->name;
+}
+
+function app_name_by_id($app_id) {
+    $result = mysql_query("select * from app where id = $app_id");
+    $app = mysql_fetch_object($result);
+    return $app->name;
+}
+
+function wu_name_by_id($wu_id) {
+    $result = mysql_query("select * from workunit where id = $wu_id");
+    $wu = mysql_fetch_object($result);
+    return $wu->name;
+}
+
+function platform_name_by_id($plat_id) {
+    $result = mysql_query("select * from platform where id = $plat_id");
+    $plat = mysql_fetch_object($result);
+    return $plat->name;
+}
+
+function host_name_by_id($hostid) {
+    $result = mysql_query("select * from host where id = $hostid");
+    $host = mysql_fetch_object($result);
+    if (!strlen($host->domain_name) && !strlen($host->last_ip_addr))
+        return "(blank)";
+    else
+        return $host->domain_name . " (" . $host->last_ip_addr . ")";
+}
+
+?>