Ignore:
Timestamp:
06/29/07 15:17:46 (17 years ago)
Author:
niltonneto
Message:

Versão nova do ADODB (4.5 para 4.95)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/phpgwapi/inc/adodb/contrib/toxmlrpc.inc.php

    r2 r34  
    66    * @author Daniele Baroncelli 
    77    * @author Gaetano Giunta 
    8     * @copyright (c) 2003 Giunta/Baroncelli. All rights reserved. 
     8    * @copyright (c) 2003-2004 Giunta/Baroncelli. All rights reserved. 
    99    *  
    1010    * @todo some more error checking here and there 
    1111    * @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 
    1215    */ 
    1316 
     
    1619    */     
    1720    require_once('xmlrpc.inc'); 
    18     require_once('adodb.inc.php'); 
     21    if (!defined('ADODB_DIR')) require_once('adodb.inc.php'); 
    1922             
    2023    /** 
     
    2326    function rs2xmlrpcval(&$adodbrs) { 
    2427 
     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    { 
    2546        $numfields = $adodbrs->FieldCount(); 
    2647        $numrecords = $adodbrs->RecordCount(); 
     
    3253            $fieldarray = array(); 
    3354            if (isset($fld->name)) 
    34                 $fieldarray["name"] = new xmlrpcval ($fld->name); 
     55                $fieldarray["name"] =& new xmlrpcval ($fld->name); 
    3556            if (isset($fld->type)) 
    36                 $fieldarray["type"] = new xmlrpcval ($fld->type); 
     57                $fieldarray["type"] =& new xmlrpcval ($fld->type); 
    3758            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"); 
    3960            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"); 
    4162            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"); 
    4364            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"); 
    4667        } 
    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"); 
    5172 
    52         $header = new xmlrpcval ( array( 
     73        $header =& new xmlrpcval ( array( 
    5374                "fieldcount" => $fieldcount, 
    5475                "recordcount" => $recordcount, 
     
    5778                ), "struct"); 
    5879 
     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 
    5991        // build structure containing recordset data 
     92        $adodbrs->MoveFirst(); 
    6093        $rows = array(); 
    6194        while (!$adodbrs->EOF) { 
     
    6497            if ($adodbrs->fetchMode == 'ADODB_FETCH_BOTH' || count($adodbrs->fields) == 2 * $adodbrs->FieldCount()) 
    6598                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 (''); 
    68101                    else 
    69                         $columns[$i] = xmlrpc_encode ($adodbrs->fields[$i]); 
     102                        $columns[$i] =& xmlrpc_encode ($adodbrs->fields[$i]); 
    70103            else 
    71104                foreach ($adodbrs->fields as $val) 
    72105                    if ($val === null) 
    73                         $columns[$i] = new xmlrpcval (''); 
     106                        $columns[] =& new xmlrpcval (''); 
    74107                    else 
    75                         $columns[] = xmlrpc_encode ($val); 
     108                        $columns[] =& xmlrpc_encode ($val); 
    76109 
    77             $rows[] = new xmlrpcval ($columns, "array"); 
     110            $rows[] =& new xmlrpcval ($columns, "array"); 
    78111 
    79112            $adodbrs->MoveNext(); 
    80113        } 
    81         $body = new xmlrpcval ($rows, "array"); 
     114        $body =& new xmlrpcval ($rows, "array"); 
    82115 
    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;     
    91117    } 
    92  
     118     
    93119    /** 
    94120    * Returns an xmlrpc struct value as string out of an AdoDB recordset 
     
    125151        for ($i = 0; $i < $numfields; $i++) { 
    126152            $temp =& $fieldinfo->arraymem($i); 
    127             $fld = new ADOFieldObject(); 
     153            $fld =& new ADOFieldObject(); 
    128154            while (list($key,$value) = $temp->structeach()) { 
    129155                if ($key == "name") $fld->name = $value->scalarval(); 
     
    149175 
    150176        // finally build in-memory recordset object and return it 
    151         $rs = new ADORecordSet_array(); 
     177        $rs =& new ADORecordSet_array(); 
    152178        $rs->InitArrayFields($data_array,$fields_array); 
    153179        return $rs; 
Note: See TracChangeset for help on using the changeset viewer.