gT('Iterate survey'));
$iteratesurveyoutput .= "
\n";
$iteratesurveyoutput .= "
\n" . "
| ";
}
if ($subaction=='unfinalizeanswers')
{
$iteratesurveyoutput = browsemenubar($clang->gT('Iterate survey'));
$baselang = GetBaseLanguageFromSurveyID($surveyid);
$surveytable = db_table_name("survey_$surveyid");
// First delete incomplete answers that correspond to a token for which a completed answers is already recorded
// subquery in delete or update are tricky things when using the same table for delete and Select
// see http://www.developpez.net/forums/d494961/bases-donnees/mysql/requetes/cant-specify-target-in-from-clause/
$updateqr = "DELETE from $surveytable WHERE submitdate IS NULL AND token in (SELECT * FROM ( SELECT answ2.token from $surveytable AS answ2 WHERE answ2.submitdate IS NOT NULL) tmp );\n";
// $updateqr = "DELETE from $surveytable WHERE submitdate IS NULL AND token in (SELECT b.token from $surveytable AS b WHERE b.submitdate IS NOT NULL);\n";
//error_log("TIBO query = $updateqr");
$updateres = $connect->Execute($updateqr) or safe_die("Delete incomplete answers with duplicate tokens failed: \n" . $connect->ErrorMsg() . " $updateqr"); // Then set all remaining answers to incomplete state $updateqr = "UPDATE $surveytable SET submitdate=NULL;\n"; $updateres = $connect->Execute($updateqr) or safe_die("UnFinilize answers failed: \n" . $connect->ErrorMsg() . " $updateqr"); // Finally, reset the token completed and sent status $updateqr="UPDATE ".db_table_name("tokens_$surveyid")." SET sent='N', remindersent='N', remindercount=0, completed='N'"; $updateres=$connect->Execute($updateqr) or safe_die ("Couldn't reset token completed state $updateqr ".$connect->ErrorMsg()); $iteratesurveyoutput .= " \n"; $iteratesurveyoutput .= " ".$clang->gT("Iterate survey")." \n";
$iteratesurveyoutput .= "\n"
. "".$clang->gT("Success")."
|