diff --git a/xwords4/relay/scripts/showgames.php b/xwords4/relay/scripts/showgames.php
index 41dd97acf..e0ae68c3a 100644
--- a/xwords4/relay/scripts/showgames.php
+++ b/xwords4/relay/scripts/showgames.php
@@ -3,25 +3,104 @@
-
-
colname = $name;
+ $this->isArray = $isArray;
+ $this->converter = $converter;
+ }
-$sql = "SELECT " . join(",",$cols) . " FROM games";
+ function printTD( $index, $row, $nrows, $colData ) {
+ if ( 0 < $index ) {
+ if ( !$this->isArray && 0 < $row ) {
+ /* do nothing */
+ } else if ( 0 == $row && !$this->isArray ) {
+ $td = call_user_func( $this->converter, $colData );
+ echo "$td | ";
+ } else {
+ $td = call_user_func( $this->converter, $this->nth_elem( $colData, $row ) );
+ echo "$td | ";
+ }
+ }
+ }
+
+ function nth_elem( $arr, $nn ) {
+ $arr = explode(',', trim($arr, '{}'));
+ return $arr[$nn];
+ }
+}
+
+function count_devs( $row ) {
+ return $row[0];
+}
+
+function identity( $str ) {
+ return $str;
+}
+
+function int_to_lang( $str ) {
+ $lang = "unknown";
+ switch ( $str ) {
+ case 1: $lang = "English"; break;
+ case 2: $lang = "French"; break;
+ case 3: $lang = "German"; break;
+ case 4: $lang = "Turkish"; break;
+ case 5: $lang = "Arabic"; break;
+ case 6: $lang = "Spanish"; break;
+ case 7: $lang = "Swedish"; break;
+ case 8: $lang = "Polish"; break;
+ case 9: $lang = "Danish"; break;
+ case 10: $lang = "Italian"; break;
+ case 11: $lang = "Dutch"; break;
+ case 12: $lang = "Catalan"; break;
+ case 13: $lang = "Portuguese"; break;
+ case 15: $lang = "Russian"; break;
+ case 17: $lang = "Czech"; break;
+ case 18: $lang = "Greek"; break;
+ case 19: $lang = "Slovak"; break;
+ }
+ return $lang;
+}
+
+function ip_to_host($ip) {
+ return gethostbyaddr($ip);
+}
+
+$cols = array( new Column("array_upper(nperdevice,1)", null, false),
+ new Column("dead", "identity", false ),
+ new Column("room", "identity", false ),
+ new Column("lang", "int_to_lang", false ),
+ new Column("ntotal", "identity", false ),
+ new Column("nperdevice", "identity", true ),
+ new Column("ack", "identity", true ),
+ new Column("nsent", "identity", false ),
+ new Column("addrs", "ip_to_host", true ),
+ new Column("mtimes", "identity", true ),
+ );
+
+$colnames = array();
+foreach ( $cols as $index => $col ) {
+ $colnames[] = $col->colname;
+}
+$sql = "SELECT " . join( ",", $colnames ) . " FROM games "
+ . "WHERE NOT -NTOTAL = sum_array(nperdevice) LIMIT 200;";
echo "$sql
";
+echo "\n\n";
+
echo "";
+/* index has no header */
+echo " | ";
foreach ( $cols as $index => $col ) {
- echo "$col | ";
+ if ( 0 != $index ) {
+ echo "$col->colname | ";
+ }
}
echo "
\n";
@@ -39,20 +118,29 @@ if (!$result) {
// iterate over result set
// print each row
+$count = 0;
while ( $row = pg_fetch_array($result) ) {
- echo "";
- foreach ( $cols as $index => $col ) {
- echo "" . "$row[$index]" . " | ";
+ $nrows = count_devs( $row );
+ for ( $devIndex = 0; $devIndex < $nrows; ++$devIndex ) {
+ echo "
";
+ if ( 0 == $devIndex ) {
+ echo "$count | ";
+ }
+ foreach ( $cols as $index => $col ) {
+ $col->printTD( $index, $devIndex, $nrows, $row[$index] );
+ }
+ echo "
\n";
}
- echo "\n";
+ ++$count;
}
/* cleanup */
pg_free_result( $result );
pg_close( $db );
+echo "
";
+
?>
-