20 require_once(
'xmlrpc.inc');
21 if (!defined(
'ADODB_DIR')) require_once(
'adodb.inc.php');
32 $xmlrpcrs =
new xmlrpcval ( array(
46 $numfields = $adodbrs->FieldCount();
47 $numrecords = $adodbrs->RecordCount();
50 $fieldstruct = array();
51 for ($i = 0; $i < $numfields; $i++) {
52 $fld = $adodbrs->FetchField($i);
53 $fieldarray = array();
54 if (isset($fld->name))
55 $fieldarray[
"name"] =
new xmlrpcval ($fld->name);
56 if (isset($fld->type))
57 $fieldarray[
"type"] =
new xmlrpcval ($fld->type);
58 if (isset($fld->max_length))
59 $fieldarray[
"max_length"] =
new xmlrpcval ($fld->max_length,
"int");
60 if (isset($fld->not_null))
61 $fieldarray[
"not_null"] =
new xmlrpcval ($fld->not_null,
"boolean");
62 if (isset($fld->has_default))
63 $fieldarray[
"has_default"] =
new xmlrpcval ($fld->has_default,
"boolean");
64 if (isset($fld->default_value))
65 $fieldarray[
"default_value"] =
new xmlrpcval ($fld->default_value);
66 $fieldstruct[$i] =
new xmlrpcval ($fieldarray,
"struct");
68 $fieldcount =
new xmlrpcval ($numfields,
"int");
69 $recordcount =
new xmlrpcval ($numrecords,
"int");
70 $sql =
new xmlrpcval ($adodbrs->sql);
71 $fieldinfo =
new xmlrpcval ($fieldstruct,
"array");
73 $header =
new xmlrpcval ( array(
74 "fieldcount" => $fieldcount,
75 "recordcount" => $recordcount,
77 "fieldinfo" => $fieldinfo
89 $numfields = $adodbrs->FieldCount();
92 $adodbrs->MoveFirst();
94 while (!$adodbrs->EOF) {
97 if ($adodbrs->fetchMode ==
'ADODB_FETCH_BOTH' || count($adodbrs->fields) == 2 * $adodbrs->FieldCount())
98 for ($i = 0; $i < $numfields; $i++)
99 if ($adodbrs->fields[$i] === null)
100 $columns[$i] =
new xmlrpcval (
'');
102 $columns[$i] = xmlrpc_encode ($adodbrs->fields[$i]);
104 foreach ($adodbrs->fields as $val)
106 $columns[] =
new xmlrpcval (
'');
108 $columns[] = xmlrpc_encode ($val);
110 $rows[] =
new xmlrpcval ($columns,
"array");
112 $adodbrs->MoveNext();
114 $body =
new xmlrpcval ($rows,
"array");
125 return $xmlrpc->serialize();
137 $fields_array = array();
138 $data_array = array();
141 $header = $xmlrpcval->structmem(
'header');
143 $numfields = $header->structmem(
'fieldcount');
144 $numfields = $numfields->scalarval();
145 $numrecords = $header->structmem(
'recordcount');
146 $numrecords = $numrecords->scalarval();
147 $sqlstring = $header->structmem(
'sql');
148 $sqlstring = $sqlstring->scalarval();
150 $fieldinfo = $header->structmem(
'fieldinfo');
151 for ($i = 0; $i < $numfields; $i++) {
152 $temp = $fieldinfo->arraymem($i);
153 $fld =
new ADOFieldObject();
154 while (list($key,$value) = $temp->structeach()) {
155 if ($key ==
"name") $fld->name = $value->scalarval();
156 if ($key ==
"type") $fld->type = $value->scalarval();
157 if ($key ==
"max_length") $fld->max_length = $value->scalarval();
158 if ($key ==
"not_null") $fld->not_null = $value->scalarval();
159 if ($key ==
"has_default") $fld->has_default = $value->scalarval();
160 if ($key ==
"default_value") $fld->default_value = $value->scalarval();
162 $fields_array[] = $fld;
166 $body = $xmlrpcval->structmem(
'body');
167 for ($i = 0; $i < $numrecords; $i++) {
168 $data_array[$i]= array();
169 $xmlrpcrs_row = $body->arraymem($i);
170 for ($j = 0; $j < $numfields; $j++) {
171 $temp = $xmlrpcrs_row->arraymem($j);
172 $data_array[$i][$j] = $temp->scalarval();
177 $rs =
new ADORecordSet_array();
178 $rs->InitArrayFields($data_array,$fields_array);