Exemplo n.º 1
0
/**
 * Upload a data record from the given fid to the RPC server
 * Currently will work with queXS 1.5.2
 * 
 * @param int $fid The formid to upload
 * 
 * @return
 * @author Adam Zammit <*****@*****.**>
 * @since  2011-11-04
 */
function uploadrpc($fid)
{
    global $db;
    //get url, qid
    $sql = "SELECT q.rpc_server_url,q.rpc_username,q.rpc_password,f.qid,q.limesurvey_sid\n\t\tFROM forms as f, questionnaires as q\n\t\tWHERE f.fid = '{$fid}'\n\t\tAND f.qid = q.qid";
    $rs = $db->GetRow($sql);
    if (!empty($rs['rpc_server_url'])) {
        $url = $rs['rpc_server_url'];
        $qid = $rs['qid'];
        $surveyid = $rs['limesurvey_sid'];
        include_once dirname(__FILE__) . "/../include/xmlrpc-3.0.0.beta/lib/xmlrpc.inc";
        list($head, $data) = outputdatacsv($qid, $fid, false, false, true);
        $assoc = array();
        for ($i = 0; $i < count($head); $i++) {
            //concat if same variable name
            if (isset($assoc[$head[$i]])) {
                $assoc[$head[$i]] .= $data[$i];
            } else {
                $assoc[$head[$i]] = $data[$i];
            }
        }
        //formid not recognised by limesurvey
        unset($assoc['formid']);
        unset($assoc['rpc_id']);
        //make sure token won't interfere with normal operation of questionnaire
        $assoc['token'] = "queXF-" . $fid;
        $xmlrpc_val = php_xmlrpc_encode($assoc);
        $client = new xmlrpc_client($url);
        $client->setSSLVerifyHost(0);
        //$client->setDebug(2);
        $cred = array(new xmlrpcval($rs['rpc_username']), new xmlrpcval($rs['rpc_password']));
        //First need to connect and get session key
        $message = new xmlrpcmsg("get_session_key", $cred);
        $resp = $client->send($message);
        if ($resp->faultCode()) {
            echo T_("XML RPC Error: ") . $resp->faultString();
        } else {
            $sessionkey = $resp->value();
            $message = new xmlrpcmsg("add_response", array($sessionkey, new xmlrpcval($surveyid, "int"), $xmlrpc_val));
            $resp = $client->send($message);
            if ($resp->faultCode()) {
                echo T_("XML RPC Error (functions.output.php): ") . $resp->faultString();
            } else {
                //echo 'OK: got '.php_xmlrpc_decode($resp->value());
                //update forms table with rpc_id
                $sql = "UPDATE forms\n\t\t\t\t\tSET rpc_id = '" . php_xmlrpc_decode($resp->value()) . "'\n\t\t\t\t\tWHERE fid = '{$fid}'";
                $db->Execute($sql);
            }
        }
    }
}
Exemplo n.º 2
0
    exit;
}
if (isset($_GET['data'])) {
    outputdata(intval($_GET['data']));
    exit;
}
if (isset($_GET['csvlabel'])) {
    outputdatacsv(intval($_GET['csvlabel']), "", true);
    exit;
}
if (isset($_GET['csv'])) {
    outputdatacsv(intval($_GET['csv']));
    exit;
}
if (isset($_GET['csvmerged'])) {
    outputdatacsv(intval($_GET['csvmerged']), "", false, false, false, true);
    exit;
}
if (isset($_GET['banding'])) {
    export_banding(intval($_GET['banding']));
    exit;
}
if (isset($_GET['pspp'])) {
    export_pspp(intval($_GET['pspp']));
    exit;
}
xhtml_head(T_("Output data"), true, array("../css/table.css"));
$sql = "SELECT description,\n\t\tCONCAT('<a href=\"?data=', qid, '\">" . T_("Data") . "</a>') as data,\n\t\tCONCAT('<a href=\"?ddi=', qid, '\">" . T_("DDI") . "</a>') as ddi,\n\t\tCONCAT('<a href=\"?csv=', qid, '\">" . T_("CSV") . "</a>') as csv,\n\t\tCONCAT('<a href=\"?csvmerged=', qid, '\">" . T_("CSV Merged") . "</a>') as csvmerged,\n\t\tCONCAT('<a href=\"?csvlabel=', qid, '\">" . T_("CSV Labelled") . "</a>') as csvlabel,\n\t\tCONCAT('<a href=\"?pspp=', qid, '\">" . T_("PSPP (SPSS)") . "</a>') as pspp,\n\t\tCONCAT('<a href=\"?banding=', qid, '\">" . T_("Banding XML") . "</a>') as banding\n\tFROM questionnaires\n\tORDER BY qid ASC";
$qs = $db->GetAll($sql);
xhtml_table($qs, array('description', 'data', 'ddi', 'csv', 'csvmerged', 'csvlabel', 'pspp', 'banding'), array(T_("Questionnaire"), T_("Data"), T_("DDI"), T_("CSV"), T_("CSV Merged"), T_("CSV Labelled"), T_("PSPP (SPSS)"), T_("Banding XML")));
xhtml_foot();