function _dometallopdb($metal, $mode, $count, $rss = false) { $count = intval($count); if ($count <= 0) { trigger_error("Parameter count must be an integer > 0, value sent: {$count}", E_USER_ERROR); } $result = @getPDBFromMetal($metal, $mode, $count); if (is_object($result) && DB::isError($result)) { trigger_error($result->getMessage(), E_USER_ERROR); } elseif ($result == false) { trigger_error('No results were found', E_USER_WARNING); } else { if ($rss) { $pkt = toRSS(&$result); return new SOAP_Value('result', 'base64', base64_encode($pkt)); } else { return new SOAP_Value('result', 'Struct', $result); } } }
function metallopdb() { /*{{{*/ if (!$_REQUEST['metal']) { echo "<b>ERROR: Missing parameters.</b>\n"; return false; } $metal = strtolower($_REQUEST['metal']); $mode = isset($_REQUEST['mode']) ? strtolower($_REQUEST['mode']) : 'first'; $count = isset($_REQUEST['count']) ? intval($_REQUEST['count']) : 5; $format = isset($_REQUEST['format']) ? strtolower($_REQUEST['format']) : 'csv'; $result = getPDBFromMetal($metal, $mode, $count); if (is_object($result) && DB::isError($result)) { echo "<b>ERROR " . $result->getCode() . ": " . $result->getMessage() . "</b>\n"; return false; } if ($result == false) { echo ""; return false; } switch ($format) { case "wddx": header("Content-type: text/xml"); echo wddx_serialize_value($result); break; case "serialize": header("Content-type: text/plain"); echo serialize($result); break; case "rss": header("Content-type: text/xml"); echo toRSS($result, $GLOBALS['server_remote']); break; case "csv": default: header("Content-type: text/plain"); $fields = array_keys($result[0]); $out = toCSV($fields); for ($i = 0; $i < count($result); $i++) { $out .= toCSV(array_values($result[$i])); } echo $out; break; } return true; }
function metallopdb($m) { /*{{{*/ require_once 'api/function.getpdbfrommetal.php'; require_once 'api/util_convert.php'; if ($m->getNumParams() == 0 || $m->getNumParams() > 4) { $error = "Invalid number of parameters: metal, [mode], [count], [format]"; return new XML_RPC_Response(0, $GLOBALS['XML_RPC_erruser'], $error); } // get the metal $metal = $m->getParam(0); $mode = $m->getNumParams() > 1 ? $m->getParam(1) : new XML_RPC_Value("first"); $count = $m->getNumParams() > 2 ? $m->getParam(2) : new XML_RPC_Value(5, $GLOBALS['XML_RPC_Int']); $format = $m->getNumParams() > 3 ? $m->getParam(3) : new XML_RPC_Value("array"); $result = getPDBFromMetal($metal->scalarval(), $mode->scalarval(), intval($count->scalarval())); if (is_object($result) && DB::isError($result)) { echo "<b>ERROR " . $result->getCode() . ": " . $result->getMessage() . "</b>\n"; return false; } if ($result == false) { echo ""; return false; } switch ($format->scalarval()) { case "rss": $packet = new XML_RPC_Value(toRSS($result), $GLOBALS['XML_RPC_Base64']); break; case "wddx": $packet = new XML_RPC_Value(wddx_serialize_value($result), $GLOBALS['XML_RPC_Base64']); break; case "array": default: $types = array('metal' => $GLOBALS['XML_RPC_String'], 'source_id' => $GLOBALS['XML_RPC_String'], 'revision_date' => $GLOBALS['XML_RPC_DateTime'], 'deposition_date' => $GLOBALS['XML_RPC_DateTime'], 'expdata' => $GLOBALS['XML_RPC_String'], 'r_value' => $GLOBALS['XML_RPC_Double'], 'resolution' => $GLOBALS['XML_RPC_Double'], 'authors' => $GLOBALS['XML_RPC_String'], 'description' => $GLOBALS['XML_RPC_String']); $packet = array2XMLRPC($result, $types); break; } return new XML_RPC_Response($packet); }