The contents of the LSQ file need to be Base 64 Encoded.
-
en.wikipedia.org/wiki/Base64
-
www.freeformatter.com/base64-encoder.html
Additionally, before you do that you should make sure that the question code in the LSQ file does not match any existing codes or the API will return an error. (look for the <title> tag in the LSQ file and modify the CDATA value)
Following the
PHP example in the manual
, this successfully adds new short-text questions. Of course you will need to modify the variables for your set up and requirements. These variables could also be passed in via GET or POST.
Code:
<?php
require_once 'jsonRPCClient.php';
define( 'LS_BASEURL', 'https://path/to/limeSurvey/');
define( 'LS_USER', 'adminUsername' );
define( 'LS_PASSWORD', 'adminPassword' );
$iSurveyID = 358123; // The survey ID
$iGroupID = 44; // The group ID
$sLanguage = 'en'; // The language
$sImportData = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxkb2N1bWVudD4NCiA8TGltZVN1cnZleURvY1R5cGU+UXVlc3Rpb248L0xpbWVTdXJ2ZXlEb2NUeXBlPg0KIDxEQlZlcnNpb24+MjU3PC9EQlZlcnNpb24+DQogPGxhbmd1YWdlcz4NCiAgPGxhbmd1YWdlPmVuPC9sYW5ndWFnZT4NCiA8L2xhbmd1YWdlcz4NCiA8cXVlc3Rpb25zPg0KICA8ZmllbGRzPg0KICAgPGZpZWxkbmFtZT5xaWQ8L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+cGFyZW50X3FpZDwvZmllbGRuYW1lPg0KICAgPGZpZWxkbmFtZT5zaWQ8L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+Z2lkPC9maWVsZG5hbWU+DQogICA8ZmllbGRuYW1lPnR5cGU8L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+dGl0bGU8L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+cXVlc3Rpb248L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+cHJlZzwvZmllbGRuYW1lPg0KICAgPGZpZWxkbmFtZT5oZWxwPC9maWVsZG5hbWU+DQogICA8ZmllbGRuYW1lPm90aGVyPC9maWVsZG5hbWU+DQogICA8ZmllbGRuYW1lPm1hbmRhdG9yeTwvZmllbGRuYW1lPg0KICAgPGZpZWxkbmFtZT5xdWVzdGlvbl9vcmRlcjwvZmllbGRuYW1lPg0KICAgPGZpZWxkbmFtZT5sYW5ndWFnZTwvZmllbGRuYW1lPg0KICAgPGZpZWxkbmFtZT5zY2FsZV9pZDwvZmllbGRuYW1lPg0KICAgPGZpZWxkbmFtZT5zYW1lX2RlZmF1bHQ8L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+cmVsZXZhbmNlPC9maWVsZG5hbWU+DQogICA8ZmllbGRuYW1lPm1vZHVsZW5hbWU8L2ZpZWxkbmFtZT4NCiAgPC9maWVsZHM+DQogIDxyb3dzPg0KICAgPHJvdz4NCiAgICA8cWlkPjwhW0NEQVRBWzUyMV1dPjwvcWlkPg0KICAgIDxwYXJlbnRfcWlkPjwhW0NEQVRBWzBdXT48L3BhcmVudF9xaWQ+DQogICAgPHNpZD48IVtDREFUQVszNTgxMjNdXT48L3NpZD4NCiAgICA8Z2lkPjwhW0NEQVRBWzQ0XV0+PC9naWQ+DQogICAgPHR5cGU+PCFbQ0RBVEFbU11dPjwvdHlwZT4NCiAgICA8dGl0bGU+PCFbQ0RBVEFbUXh4XV0+PC90aXRsZT4NCiAgICA8cXVlc3Rpb24+PCFbQ0RBVEFbPHA+UTEuLi48L3A+DQpdXT48L3F1ZXN0aW9uPg0KICAgIDxwcmVnLz4NCiAgICA8aGVscC8+DQogICAgPG90aGVyPjwhW0NEQVRBW05dXT48L290aGVyPg0KICAgIDxtYW5kYXRvcnk+PCFbQ0RBVEFbTl1dPjwvbWFuZGF0b3J5Pg0KICAgIDxxdWVzdGlvbl9vcmRlcj48IVtDREFUQVs2XV0+PC9xdWVzdGlvbl9vcmRlcj4NCiAgICA8bGFuZ3VhZ2U+PCFbQ0RBVEFbZW5dXT48L2xhbmd1YWdlPg0KICAgIDxzY2FsZV9pZD48IVtDREFUQVswXV0+PC9zY2FsZV9pZD4NCiAgICA8c2FtZV9kZWZhdWx0PjwhW0NEQVRBWzBdXT48L3NhbWVfZGVmYXVsdD4NCiAgICA8cmVsZXZhbmNlLz4NCiAgICA8bW9kdWxlbmFtZS8+DQogICA8L3Jvdz4NCiAgPC9yb3dzPg0KIDwvcXVlc3Rpb25zPg0KIDxxdWVzdGlvbl9hdHRyaWJ1dGVzPg0KICA8ZmllbGRzPg0KICAgPGZpZWxkbmFtZT5xaWQ8L2ZpZWxkbmFtZT4NCiAgIDxmaWVsZG5hbWU+YXR0cmlidXRlPC9maWVsZG5hbWU+DQogICA8ZmllbGRuYW1lPnZhbHVlPC9maWVsZG5hbWU+DQogICA8ZmllbGRuYW1lPmxhbmd1YWdlPC9maWVsZG5hbWU+DQogIDwvZmllbGRzPg0KICA8cm93cz4NCiAgIDxyb3c+DQogICAgPHFpZD48IVtDREFUQVs1MjFdXT48L3FpZD4NCiAgICA8YXR0cmlidXRlPjwhW0NEQVRBW3ByZWZpeF1dPjwvYXR0cmlidXRlPg0KICAgIDx2YWx1ZT48IVtDREFUQVtQcmVmaXggdGV4dF1dPjwvdmFsdWU+DQogICAgPGxhbmd1YWdlPjwhW0NEQVRBW2VuXV0+PC9sYW5ndWFnZT4NCiAgIDwvcm93Pg0KICAgPHJvdz4NCiAgICA8cWlkPjwhW0NEQVRBWzUyMV1dPjwvcWlkPg0KICAgIDxhdHRyaWJ1dGU+PCFbQ0RBVEFbc3RhdGlzdGljc19ncmFwaHR5cGVdXT48L2F0dHJpYnV0ZT4NCiAgICA8dmFsdWU+PCFbQ0RBVEFbNV1dPjwvdmFsdWU+DQogICA8L3Jvdz4NCiAgIDxyb3c+DQogICAgPHFpZD48IVtDREFUQVs1MjFdXT48L3FpZD4NCiAgICA8YXR0cmlidXRlPjwhW0NEQVRBW3N1ZmZpeF1dPjwvYXR0cmlidXRlPg0KICAgIDx2YWx1ZT48IVtDREFUQVtTdWZmaXggdGV4dF1dPjwvdmFsdWU+DQogICAgPGxhbmd1YWdlPjwhW0NEQVRBW2VuXV0+PC9sYW5ndWFnZT4NCiAgIDwvcm93Pg0KICA8L3Jvd3M+DQogPC9xdWVzdGlvbl9hdHRyaWJ1dGVzPg0KPC9kb2N1bWVudD4NCg=='; // The Base64 Encoded lsq file
$sImportDataType = 'lsq'; // Data type
$sMandatory = 'N'; // Question mandatory? (optional)
$sNewQuestionTitle = 'Q66'; // New question code (optional)
$sNewqQuestion = 'This is new question text...'; // New text (optional)
$sNewQuestionHelp = 'Some new question help...'; // New help text (optional)
if(ctype_alnum($iSurveyID) && strlen($iSurveyID) == 6) { // Valid iSurveyID format
// Instantiate a new RPC client
$myJSONRPCClient = new jsonRPCClient( LS_BASEURL.'/index.php/admin/remotecontrol' );
// Get a session key
$sSessionKey= $myJSONRPCClient->get_session_key( LS_USER, LS_PASSWORD );
// Add new question
$newQuestion = $myJSONRPCClient->import_question($sSessionKey, $iSurveyID, $iGroupID, $sImportData, $sImportDataType, $sMandatory, $sNewQuestionTitle, $sNewqQuestion, $sNewQuestionHelp);
// Release the session key
$myJSONRPCClient->release_session_key( $sSessionKey );
}
else { // Invalid iSurveyID format
die( 'Invalid format!' );
}
?>