/** * 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); } } } }
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();