예제 #1
0
}
if (array_key_exists('port', $_GET)) {
    $port = $_GET['port'];
}
if (array_key_exists('vt', $_GET)) {
    $vtid = $_GET['vt'];
}
if (array_key_exists('version', $_GET)) {
    $version = $_GET['version'];
}
if (array_key_exists('tag', $_GET)) {
    $version_tag = $_GET['tag'];
    if ($version_tag != '') {
        $request = xmlrpc_encode_request('get_tag_version', array($host, $port, $dbname, $vtid, $version_tag));
        $response = do_call($VT_HOST, $VT_PORT, $request);
        $version = get_version_from_response($response);
    }
}
if (array_key_exists('buildalways', $_GET)) {
    $force_build = (bool) $_GET['buildalways'];
}
//echo $force_build;
//Check if vtid and version were provided
//echo $vtid . $version;
if ($vtid != '' and $version != '') {
    //echo $host . $port . $dbname . $vtid . $version;
    $request = xmlrpc_encode_request('get_wf_xml', array($host, $port, $dbname, $vtid, $version));
    //echo $request;
    $response = do_call($VT_HOST, $VT_PORT, $request);
    $response = html_entity_decode($response);
    header("Content-Type: text/xml");
function printVistrailTag($input, $params)
{
    global $PATH_TO_IMAGES, $WEB_PATH_TO_IMAGES, $URL_TO_GRAPHS, $PATH_TO_GRAPHS, $VT_HOST, $VT_PORT, $USE_LOCAL_VISTRAILS_SERVER, $USE_VISTRAILS_XML_RPC_SERVER, $PATH_TO_VISTRAILS, $URL_TO_DOWNLOAD, $DB_HOST, $DB_NAME, $DB_PORT;
    $host = $DB_HOST;
    $dbname = $DB_NAME;
    $username = "******";
    $vtid = "";
    $version = "";
    $port = $DB_PORT;
    $version_tag = "";
    $execute = "False";
    $showspreadsheetonly = "False";
    $force_build = 'False';
    $embedWorkflow = 'False';
    $includeFullTree = 'False';
    $forceDB = 'False';
    $showTree = 'False';
    $showWorkflow = 'False';
    foreach ($params as $key => $value) {
        if ($key == "vtid") {
            $vtid = $value;
        }
        if ($key == "version") {
            $version = $value;
        }
        if ($key == "host") {
            $host = $value;
        }
        if ($key == "db") {
            $dbname = $value;
        }
        if ($key == "port") {
            $port = $value;
        }
        if ($key == "tag") {
            $version_tag = $value;
            if ($version_tag != '') {
                $request = xmlrpc_encode_request('get_tag_version', array($host, $port, $dbname, $vtid, $version_tag));
                $response = do_call($VT_HOST, $VT_PORT, $request);
                $version = get_version_from_response($response);
                //echo $version;
            }
        }
        if ($key == "execute") {
            $execute = $value;
        }
        if ($key == "showspreadsheetonly") {
            $showspreadsheetonly = $value;
        }
        if ($key == "buildalways") {
            $force_build = $value;
        }
        if ($key == 'embedworkflow') {
            $embedWorkflow = $value;
        }
        if ($key == 'includefulltree') {
            $includeFullTree = $value;
        }
        if ($key == 'forcedb') {
            $forceDB = $value;
        }
        if ($key == 'showworkflow') {
            $showWorkflow = $value;
        }
        if ($key == 'showtree') {
            $showTree = $value;
        }
    }
    $linkParams = "getvt=" . $vtid . "&version=" . $version . "&db=" . $dbname . "&host=" . $host . "&port=" . $port . "&tag=" . $version_tag . "&execute=" . $execute . "&showspreadsheetonly=" . $showspreadsheetonly . "&embedWorkflow=" . $embedWorkflow . "&includeFullTree=" . $includeFullTree . "&forceDB=" . $forceDB;
    if (strcasecmp($showTree, 'True') == 0) {
        $filename = md5($host . '_' . $dbname . '_' . $port . '_' . $vtid);
        $filename = 'vistrails/' . $filename . ".png";
        //this request is cached only on the server side
        $request = xmlrpc_encode_request("get_vt_graph_png", array($host, $port, $dbname, $vtid, $USE_LOCAL_VISTRAILS_SERVER));
        $response = do_call($VT_HOST, $VT_PORT, $request);
        $result = clean_up($response, $filename);
        list($width, $height, $type, $attr) = getimagesize($PATH_TO_GRAPHS . $result);
        if ($width > 400) {
            $width = 400;
        }
        $res = '<a href="' . $URL_TO_DOWNLOAD . '?' . $linkParams . '">';
        $res = $res . '<img src="' . $URL_TO_GRAPHS . $result . "\" alt=\"vt_id:{$vtid}\" width=\"{$width}\"/>";
        $res = $res . '</a>';
        return $res;
    } elseif (strcasecmp($showWorkflow, 'True') == 0) {
        $filename = md5($host . '_' . $dbname . '_' . $port . '_' . $vtid . '_' . $version);
        $filename = 'workflows/' . $filename . ".png";
        $fullpath = $PATH_TO_GRAPHS . $filename;
        $cached = file_exists($fullpath);
        if ($USE_LOCAL_VISTRAILS_SERVER or (!$cached or strcasecmp($force_build, 'True') == 0)) {
            $request = xmlrpc_encode_request("get_wf_graph_png", array($host, $port, $dbname, $vtid, $version, $USE_LOCAL_VISTRAILS_SERVER));
            $response = do_call($VT_HOST, $VT_PORT, $request);
            $result = clean_up($response, $filename);
        } else {
            $result = $filename;
        }
        list($width, $height, $type, $attr) = getimagesize($PATH_TO_GRAPHS . $result);
        if ($width > 400) {
            $width = 400;
        }
        $res = '<a href="' . $URL_TO_DOWNLOAD . '?' . $linkParams . '">';
        $res = $res . '<img src="' . $URL_TO_GRAPHS . $result . "\" alt=\"vt_id:{$vtid} version:{$version}\" width=\"{$width}\"/>";
        $res = $res . '</a>';
        return $res;
    } else {
        $result = '';
        $destdir = $PATH_TO_IMAGES;
        $destversion = $host . '_' . $dbname . '_' . $port . '_' . $vtid . '_' . $version;
        $destversion = md5($destversion);
        $destdir = $destdir . $destversion;
        $build_always_bool = False;
        if (strcasecmp($force_build, 'True') == 0) {
            $build_always_bool = True;
        }
        if (!path_exists_and_not_empty($destdir) or strcasecmp($force_build, 'True') == 0) {
            if (!file_exists($destdir)) {
                mkdir($destdir, 0770);
                chmod($destdir, 0770);
            }
            if (!$USE_VISTRAILS_XML_RPC_SERVER) {
                chdir($PATH_TO_VISTRAILS);
                $setVariables = 'export PATH=$PATH:/usr/bin/X11;export HOME=/var/lib/wwwrun; export TEMP=/tmp; export DISPLAY=localhost:1.0; export LD_LIBRARY_PATH=/usr/local/lib;';
                $mainCommand = 'python vistrails/run.py -b -e ' . $destdir . ' -t ' . host . ' -r ' . $port . ' -f ' . $dbname . ' -u ' . username . ' "' . $vtid . ':' . $version . '"';
                $result = exec($setVariables . $mainCommand . ' 2>&1', $output, $result);
            } else {
                $request = xmlrpc_encode_request('run_from_db', array($host, $port, $dbname, $vtid, $destdir, $version, False, '', $build_always_bool, '', $USE_LOCAL_VISTRAILS_SERVER));
                $response = do_call($VT_HOST, $VT_PORT, $request);
                $result = multiple_clean_up($response, $destdir);
            }
        }
    }
    $files = scandir($destdir);
    $n = sizeof($files);
    if ($n > 2) {
        $res = '<a href="' . $URL_TO_DOWNLOAD . '?' . $linkParams . '">';
        foreach ($files as $filename) {
            if ($filename != '.' and $filename != '..') {
                list($width, $height, $type, $attr) = getimagesize($destdir . '/' . $filename);
                if ($width > 350) {
                    $width = 350;
                }
                $res = $res . '<img src="' . $WEB_PATH_TO_IMAGES . $destversion . '/' . $filename . "\" alt=\"vt_id:{$vtid} version:{$version}\" width=\"{$width}\"/>";
            }
        }
        $res = $res . '</a>';
    } else {
        $res = "ERROR: Vistrails didn't produce any image.\n" . "This is the output: \n" . $result;
    }
    return $res;
}