<?php header('Content-type: text/plain'); include 'xmlrpc.inc'; include 'xmlrpcs.inc'; function highlight($x,$var) { if(strcasecmp($var, substr($x, 0, strlen($var))) == 0) return "<strong>" . substr($x, 0, strlen($var)) . "</strong>" . substr($x, strlen($var), strlen($x) - strlen($var)); else return $x; } function getTaxonList($query) { $max_rows = 50; $p = $query->getParam(0); $pat = ucfirst($p->scalarval()); $p = $query->getParam(1); $table = str_replace('field_', 'suggest', $p->scalarval()); $sql = "select TOP ".$max_rows." Name, unitCount from $table where Name LIKE '$pat%' ORDER BY Name ASC "; // connect to ODBC data source $conn = odbc_connect('syn_botany', 'WebUser', 'WebUser2014'); if (!$conn) { exit("Connection Failed: " . odbc_errormsg($conn)); } // execute sql query $result = odbc_exec($conn, $sql); if (!$result) { exit("Error in SQL"); } $s = ""; $i = 0; while ( ($row = odbc_fetch_array($result))) { $s .= "<div id=".$i++."><span>" . highlight($row['Name'],$pat) . "</span> <i>(" . number_format($row['unitCount'], 0, ',', '.') . ")</i></div>"; } if (odbc_num_rows($result) == $max_rows) { $s .= "<div id=".$max_rows."><span></span> <strong>...</strong>"; } return new xmlrpcresp(new xmlrpcval($s, 'string')); } // Declare our signature and provide some documentation. $sig = array(array($xmlrpcString, $xmlrpcString, $xmlrpcString)); $doc = 'bla'; new xmlrpc_server(array( 'suggest.getTaxonList' => array( 'function' => 'getTaxonList', 'signature' => $sig, 'docstring' => $doc ))); ?>