Skip to content

Commit

Permalink
dev Subquestions are now stored in the normal question table
Browse files Browse the repository at this point in the history
git-svn-id: file:///Users/Shitiz/Downloads/lssvn/source/limesurvey_dev_cs@8261 b72ed6b6-b9f8-46b5-92b4-906544132732
  • Loading branch information
c-schmitz committed Jan 16, 2010
1 parent 7148881 commit e792345
Show file tree
Hide file tree
Showing 8 changed files with 136 additions and 244 deletions.
57 changes: 21 additions & 36 deletions admin/database.php
Expand Up @@ -563,7 +563,7 @@ function get_max_question_order($gid)
}
if (!$keepsubquestions)
{
$query = "DELETE FROM ".db_table_name('subquestions')." WHERE qid=".$postqid;
$query = "DELETE FROM ".db_table_name('questions')." WHERE parent_qid=".$postqid;
$result = $connect->Execute($query) or safe_die("Error: ".$connect->ErrorMsg()); // Checked
if (!$result)
{
Expand Down Expand Up @@ -1045,13 +1045,13 @@ function get_max_question_order($gid)
{
//$_POST = array_map('db_quote', $_POST);//Removed: qstr is used in SQL below
$_POST['insertcode']=sanitize_paranoid_string($_POST['insertcode']);
$query = "select max(sortorder) as maxorder from ".db_table_name('subquestions')." where qid='$qid'";
$query = "select max(question_order) as maxorder from ".db_table_name('questions')." where parent_qid='$qid'";
$result = $connect->Execute($query); // Checked
$newsortorder=sprintf("%05d", $result->fields['maxorder']+1);
$anslangs = GetAdditionalLanguagesFromSurveyID($surveyid);
$baselang = GetBaseLanguageFromSurveyID($surveyid);
//$query = "select * from ".db_table_name('answers')." where code=".$connect->db_quote($_POST['insertcode'])." and language='$baselang' and qid={$postqid}";
$query = "select * from ".db_table_name('subquestions')." where code=".db_quoteall($_POST['insertcode'])." and language='$baselang' and qid={$postqid}";
$query = "select * from ".db_table_name('questions')." where title=".db_quoteall($_POST['insertcode'])." and language='$baselang' and parent_qid={$postqid}";
$result = $connect->Execute($query); // Checked

if (isset($result) && $result->RecordCount()>0)
Expand All @@ -1076,48 +1076,33 @@ function get_max_question_order($gid)
// Fix bug with FCKEditor saving strange BR types
$_POST['insertanswer']=fix_FCKeditor_text($_POST['insertanswer']);

// Add new Answer for Base Language Question

$query = "INSERT INTO ".db_table_name('subquestions')." (qid, code, subquestion, sortorder, language) VALUES ('{$postqid}', ".db_quoteall($_POST['insertcode']).", ".db_quoteall($_POST['insertanswer']).", '{$newsortorder}', '$baselang')";
if (!$result = $connect->Execute($query)) // Checked
{
$databaseoutput .= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Failed to insert answer","js")." - ".$query." - ".$connect->ErrorMsg()."\")\n //-->\n</script>\n";
}

// Added by lemeur for AutoSaveAll
// The data is finally saved in AutoSaveAll
$_POST['code_'.($newsortorder+0)] = $_POST['insertcode'];
$_POST['previouscode_'.($newsortorder+0)] = $_POST['insertcode'];
$_POST['codeids'] = $_POST['codeids'] . " ".($newsortorder+0);
$_POST['answer_'.$baselang.'_'.($newsortorder+0)] = $_POST['insertanswer'];
$_POST['sortorderids'] = $_POST['sortorderids'] . " ".$baselang."_".($newsortorder+0);
// End lemeur AutoSaveAll

// Last code was successfully inserted - find out the next incrementing code and remember it
// Find out the next incrementing code and remember it
$_SESSION['nextanswercode']=getNextCode($_POST['insertcode']);
//Now check if this new code doesn't exist. For now then there is no code inserted.
$query = "select * from ".db_table_name('subquestions')." where code=".db_quoteall($_SESSION['nextanswercode'])." and language='$baselang' and qid={$postqid}";
$query = "select * from ".db_table_name('questions')." where title=".db_quoteall($_SESSION['nextanswercode'])." and language='$baselang' and parent_qid={$postqid}";
$result = $connect->Execute($query) or safe_die("Couldn't execute query:<br />$query<br />".$connect->ErrorMsg());; // Checked
if ($result->RecordCount()>0) unset($_SESSION['nextanswercode']);

foreach ($anslangs as $anslang)
{
if(!isset($_POST['default'])) $_POST['default'] = "";
$query = "INSERT INTO ".db_table_name('answers')." (qid, code, answer, sortorder, default_value,language) VALUES ({$postqid}, ".db_quoteall($_POST['insertcode']).",".db_quoteall($_POST['insertanswer']).", '{$newsortorder}', 'N','$anslang')";
if (!$result = $connect->Execute($query)) // Checked
{
$databaseoutput .= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Failed to insert answer","js")." - ".$query." - ".$connect->ErrorMsg()."\")\n //-->\n</script>\n";
}
// Added by lemeur for AutoSaveAll
$_POST['answer_'.$anslang.'_'.($newsortorder+0)] = $_POST['insertanswer'];
$_POST['sortorderids'] = $_POST['sortorderids'] . " ".$anslang."_".($newsortorder+0);
// End lemeur AutoSaveAll
// The data is finally saved in AutoSaveAll
$_POST['answer_'.$anslang.'_'.($newsortorder+0)] = $_POST['insertanswer'];
$_POST['sortorderids'] = $_POST['sortorderids'] . " ".$anslang."_".($newsortorder+0);
}
}
} else {
}
else
{
$databaseoutput .= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Invalid or empty answer code supplied","js")."\")\n //-->\n</script>\n";
break; // let's break because in this case we do not want an AutoSaveAll
}
//break; // Commented by lemeur for AutoSaveAll
// Save all answers with one button
case $clang->gT("Save Changes", "unescaped"):
//Determine autoids by evaluating the hidden field
Expand Down Expand Up @@ -1148,7 +1133,7 @@ function get_max_question_order($gid)
$myFilter = new InputFilter('','',1,1,1);

//First delete all answers
$query = "delete from ".db_table_name('subquestions')." where qid=".db_quote($qid);
$query = "delete from ".db_table_name('questions')." where parent_qid=".db_quote($qid);
$result = $connect->Execute($query); // Checked

foreach ($sortorderids as $sortorderid)
Expand Down Expand Up @@ -1177,7 +1162,7 @@ function get_max_question_order($gid)

$_POST['code_'.$codeids[$count]]=sanitize_paranoid_string($_POST['code_'.$codeids[$count]]);
// Now we insert the answers
$query = "INSERT INTO ".db_table_name('subquestions')." (code,subquestion,qid,sortorder,language)
$query = "INSERT INTO ".db_table_name('questions')." (title,question,parent_qid,question_order,language)
VALUES (".db_quoteall($_POST['code_'.$codeids[$count]]).", ".
db_quoteall($_POST['answer_'.$sortorderid]).", ".
db_quote($qid).", ".
Expand Down Expand Up @@ -1212,29 +1197,29 @@ function get_max_question_order($gid)
case $clang->gT("Up", "unescaped"):
$newsortorder=$postsortorder-1;
$oldsortorder=$postsortorder;
$cdquery = "UPDATE ".db_table_name('subquestions')." SET sortorder=-1 WHERE qid=$qid AND sortorder='$newsortorder'";
$cdquery = "UPDATE ".db_table_name('questions')." SET question_order=-1 WHERE parent_qid=$qid AND question_order='$newsortorder'";
$cdresult=$connect->Execute($cdquery) or safe_die($connect->ErrorMsg()); // Checked
$cdquery = "UPDATE ".db_table_name('subquestions')." SET sortorder=$newsortorder WHERE qid=$qid AND sortorder=$oldsortorder";
$cdquery = "UPDATE ".db_table_name('questions')." SET question_order=$newsortorder WHERE parent_qid=$qid AND question_order=$oldsortorder";
$cdresult=$connect->Execute($cdquery) or safe_die($connect->ErrorMsg()); // Checked
$cdquery = "UPDATE ".db_table_name('subquestions')." SET sortorder='$oldsortorder' WHERE qid=$qid AND sortorder=-1";
$cdquery = "UPDATE ".db_table_name('questions')." SET question_order='$oldsortorder' WHERE parent_qid=$qid AND question_order=-1";
$cdresult=$connect->Execute($cdquery) or safe_die($connect->ErrorMsg()); // Checked
break;

// Pressing the Down button
case $clang->gT("Dn", "unescaped"):
$newsortorder=$postsortorder+1;
$oldsortorder=$postsortorder;
$cdquery = "UPDATE ".db_table_name('subquestions')." SET sortorder=-1 WHERE qid=$qid AND sortorder='$newsortorder'";
$cdquery = "UPDATE ".db_table_name('questions')." SET question_order=-1 WHERE parent_qid=$qid AND question_order='$newsortorder'";
$cdresult=$connect->Execute($cdquery) or safe_die($connect->ErrorMsg()); // Checked
$cdquery = "UPDATE ".db_table_name('subquestions')." SET sortorder='$newsortorder' WHERE qid=$qid AND sortorder=$oldsortorder";
$cdquery = "UPDATE ".db_table_name('questions')." SET question_order='$newsortorder' WHERE parent_qid=$qid AND question_order=$oldsortorder";
$cdresult=$connect->Execute($cdquery) or safe_die($connect->ErrorMsg()); // Checked
$cdquery = "UPDATE ".db_table_name('subquestions')." SET sortorder=$oldsortorder WHERE qid=$qid AND sortorder=-1";
$cdquery = "UPDATE ".db_table_name('questions')." SET question_order=$oldsortorder WHERE parent_qid=$qid AND question_order=-1";
$cdresult=$connect->Execute($cdquery) or safe_die($connect->ErrorMsg()); // Checked
break;

// Delete Button
case $clang->gT("Del", "unescaped"):
$query = "DELETE FROM ".db_table_name('subquestions')." WHERE qid={$qid} AND sortorder='{$postsortorder}'"; // Checked
$query = "DELETE FROM ".db_table_name('questions')." WHERE parent_qid={$qid} AND question_order='{$postsortorder}'"; // Checked
if (!$result = $connect->Execute($query))
{
$databaseoutput .= "<script type=\"text/javascript\">\n<!--\n alert(\"".$clang->gT("Failed to delete answer","js")." - ".$query." - ".$connect->ErrorMsg()."\")\n //-->\n</script>\n";
Expand Down
41 changes: 15 additions & 26 deletions admin/export_structure_csv.php
Expand Up @@ -23,12 +23,11 @@
// 4. Questions
// 5. Answers
// 6. Conditions
// 7. Label Sets
// 8. Labels
// 9. Question Attributes
// 10. Assessments
// 11. Quota
// 12. Quota Members
// 7. Subquestions
// 8. Question Attributes
// 9. Assessments
// 10. Quota
// 11. Quota Members

include_once("login_check.php");

Expand Down Expand Up @@ -101,48 +100,38 @@
AND {$dbprefix}questions.sid=$surveyid";
$cdump = BuildCSVFromQuery($cquery);

//7: Label Sets
$lsquery = "SELECT DISTINCT {$dbprefix}labelsets.lid, label_name, {$dbprefix}labelsets.languages
FROM {$dbprefix}labelsets, {$dbprefix}questions
WHERE ({$dbprefix}labelsets.lid={$dbprefix}questions.lid or {$dbprefix}labelsets.lid={$dbprefix}questions.lid1)
AND type IN ('F', 'H', 'W', 'Z', '1', ':', ';')
AND sid=$surveyid";
$lsdump = BuildCSVFromQuery($lsquery);

//8: Labels
$lquery = "SELECT {$dbprefix}labels.lid, {$dbprefix}labels.code, {$dbprefix}labels.title, {$dbprefix}labels.sortorder,{$dbprefix}labels.language,{$dbprefix}labels.assessment_value
FROM {$dbprefix}labels, {$dbprefix}questions
WHERE ({$dbprefix}labels.lid={$dbprefix}questions.lid or {$dbprefix}labels.lid={$dbprefix}questions.lid1)
AND type in ('F', 'W', 'H', 'Z', '1', ':', ';')
AND sid=$surveyid
GROUP BY {$dbprefix}labels.lid, {$dbprefix}labels.code, {$dbprefix}labels.title, {$dbprefix}labels.sortorder,{$dbprefix}labels.language,{$dbprefix}labels.assessment_value";
//7: Subquestions
$lquery = "SELECT {$dbprefix}subquestions.*
FROM {$dbprefix}subquestions, {$dbprefix}questions
WHERE {$dbprefix}subquestions.qid={$dbprefix}questions.qid
AND {$dbprefix}questions.sid=$surveyid;";
$ldump = BuildCSVFromQuery($lquery);

//9: Question Attributes
//8: Question Attributes
$query = "SELECT {$dbprefix}question_attributes.qaid, {$dbprefix}question_attributes.qid, {$dbprefix}question_attributes.attribute, {$dbprefix}question_attributes.value
FROM {$dbprefix}question_attributes
WHERE {$dbprefix}question_attributes.qid in (select qid from {$dbprefix}questions where sid=$surveyid group by qid)";
$qadump = BuildCSVFromQuery($query);

//10: Assessments;
//9: Assessments;
$query = "SELECT {$dbprefix}assessments.*
FROM {$dbprefix}assessments
WHERE {$dbprefix}assessments.sid=$surveyid";
$asdump = BuildCSVFromQuery($query);

//11: Quota;
//10: Quota;
$query = "SELECT {$dbprefix}quota.*
FROM {$dbprefix}quota
WHERE {$dbprefix}quota.sid=$surveyid";
$quotadump = BuildCSVFromQuery($query);

//12: Quota Members;
//11: Quota Members;
$query = "SELECT {$dbprefix}quota_members.*
FROM {$dbprefix}quota_members
WHERE {$dbprefix}quota_members.sid=$surveyid";
$quotamemdump = BuildCSVFromQuery($query);

//13: Quota languagesettings
//12: Quota languagesettings
$query = "SELECT {$dbprefix}quota_languagesettings.*
FROM {$dbprefix}quota_languagesettings, {$dbprefix}quota
WHERE {$dbprefix}quota.id = {$dbprefix}quota_languagesettings.quotals_quota_id
Expand Down

0 comments on commit e792345

Please sign in to comment.