Пример #1
0
 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);
         }
     }
 }
Пример #2
0
 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;
 }
Пример #3
0
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);
}