Changeset 34 for trunk/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php
- Timestamp:
- 06/29/07 15:17:46 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php
r2 r34 6 6 * @author Daniele Baroncelli 7 7 * @author Gaetano Giunta 8 * @copyright (c) 2003 Giunta/Baroncelli. All rights reserved.8 * @copyright (c) 2003-2004 Giunta/Baroncelli. All rights reserved. 9 9 * 10 10 * @todo some more error checking here and there 11 11 * @todo document the xmlrpc-struct used to encode recordset info 12 * @todo verify if using xmlrpc_encode($rs->GetArray()) would work with: 13 * - ADODB_FETCH_BOTH 14 * - null values 12 15 */ 13 16 … … 16 19 */ 17 20 require_once('xmlrpc.inc'); 18 require_once('adodb.inc.php');21 if (!defined('ADODB_DIR')) require_once('adodb.inc.php'); 19 22 20 23 /** … … 23 26 function rs2xmlrpcval(&$adodbrs) { 24 27 28 $header =& rs2xmlrpcval_header($adodbrs); 29 $body =& rs2xmlrpcval_body($adodbrs); 30 31 // put it all together and build final xmlrpc struct 32 $xmlrpcrs =& new xmlrpcval ( array( 33 "header" => $header, 34 "body" => $body, 35 ), "struct"); 36 37 return $xmlrpcrs; 38 39 } 40 41 /** 42 * Builds an xmlrpc struct value describing an AdoDB recordset 43 */ 44 function rs2xmlrpcval_header($adodbrs) 45 { 25 46 $numfields = $adodbrs->FieldCount(); 26 47 $numrecords = $adodbrs->RecordCount(); … … 32 53 $fieldarray = array(); 33 54 if (isset($fld->name)) 34 $fieldarray["name"] = new xmlrpcval ($fld->name);55 $fieldarray["name"] =& new xmlrpcval ($fld->name); 35 56 if (isset($fld->type)) 36 $fieldarray["type"] = new xmlrpcval ($fld->type);57 $fieldarray["type"] =& new xmlrpcval ($fld->type); 37 58 if (isset($fld->max_length)) 38 $fieldarray["max_length"] = new xmlrpcval ($fld->max_length, "int");59 $fieldarray["max_length"] =& new xmlrpcval ($fld->max_length, "int"); 39 60 if (isset($fld->not_null)) 40 $fieldarray["not_null"] = new xmlrpcval ($fld->not_null, "boolean");61 $fieldarray["not_null"] =& new xmlrpcval ($fld->not_null, "boolean"); 41 62 if (isset($fld->has_default)) 42 $fieldarray["has_default"] = new xmlrpcval ($fld->has_default, "boolean");63 $fieldarray["has_default"] =& new xmlrpcval ($fld->has_default, "boolean"); 43 64 if (isset($fld->default_value)) 44 $fieldarray["default_value"] = new xmlrpcval ($fld->default_value);45 $fieldstruct[$i] = new xmlrpcval ($fieldarray, "struct");65 $fieldarray["default_value"] =& new xmlrpcval ($fld->default_value); 66 $fieldstruct[$i] =& new xmlrpcval ($fieldarray, "struct"); 46 67 } 47 $fieldcount = new xmlrpcval ($numfields, "int");48 $recordcount = new xmlrpcval ($numrecords, "int");49 $sql = new xmlrpcval ($adodbrs->sql);50 $fieldinfo = new xmlrpcval ($fieldstruct, "array");68 $fieldcount =& new xmlrpcval ($numfields, "int"); 69 $recordcount =& new xmlrpcval ($numrecords, "int"); 70 $sql =& new xmlrpcval ($adodbrs->sql); 71 $fieldinfo =& new xmlrpcval ($fieldstruct, "array"); 51 72 52 $header = new xmlrpcval ( array(73 $header =& new xmlrpcval ( array( 53 74 "fieldcount" => $fieldcount, 54 75 "recordcount" => $recordcount, … … 57 78 ), "struct"); 58 79 80 return $header; 81 } 82 83 /** 84 * Builds an xmlrpc struct value out of an AdoDB recordset 85 * (data values only, no data definition) 86 */ 87 function rs2xmlrpcval_body($adodbrs) 88 { 89 $numfields = $adodbrs->FieldCount(); 90 59 91 // build structure containing recordset data 92 $adodbrs->MoveFirst(); 60 93 $rows = array(); 61 94 while (!$adodbrs->EOF) { … … 64 97 if ($adodbrs->fetchMode == 'ADODB_FETCH_BOTH' || count($adodbrs->fields) == 2 * $adodbrs->FieldCount()) 65 98 for ($i = 0; $i < $numfields; $i++) 66 if ($ columns[$i] === null)67 $columns[$i] = new xmlrpcval ('');99 if ($adodbrs->fields[$i] === null) 100 $columns[$i] =& new xmlrpcval (''); 68 101 else 69 $columns[$i] = xmlrpc_encode ($adodbrs->fields[$i]);102 $columns[$i] =& xmlrpc_encode ($adodbrs->fields[$i]); 70 103 else 71 104 foreach ($adodbrs->fields as $val) 72 105 if ($val === null) 73 $columns[ $i] =new xmlrpcval ('');106 $columns[] =& new xmlrpcval (''); 74 107 else 75 $columns[] = xmlrpc_encode ($val);108 $columns[] =& xmlrpc_encode ($val); 76 109 77 $rows[] = new xmlrpcval ($columns, "array");110 $rows[] =& new xmlrpcval ($columns, "array"); 78 111 79 112 $adodbrs->MoveNext(); 80 113 } 81 $body = new xmlrpcval ($rows, "array");114 $body =& new xmlrpcval ($rows, "array"); 82 115 83 // put it all together and build final xmlrpc struct 84 $xmlrpcrs = new xmlrpcval ( array( 85 "header" => $header, 86 "body" => $body, 87 ), "struct"); 88 89 return $xmlrpcrs; 90 116 return $body; 91 117 } 92 118 93 119 /** 94 120 * Returns an xmlrpc struct value as string out of an AdoDB recordset … … 125 151 for ($i = 0; $i < $numfields; $i++) { 126 152 $temp =& $fieldinfo->arraymem($i); 127 $fld = new ADOFieldObject();153 $fld =& new ADOFieldObject(); 128 154 while (list($key,$value) = $temp->structeach()) { 129 155 if ($key == "name") $fld->name = $value->scalarval(); … … 149 175 150 176 // finally build in-memory recordset object and return it 151 $rs = new ADORecordSet_array();177 $rs =& new ADORecordSet_array(); 152 178 $rs->InitArrayFields($data_array,$fields_array); 153 179 return $rs;
Note: See TracChangeset
for help on using the changeset viewer.