gT("Data entry")); if (!$surveyid && !$subaction) { $dataentryoutput .= "
".$clang->gT("Data entry")."
\n"; $dataentryoutput .= "
\n" ."
".$clang->gT("Error")."

\n" .$clang->gT("You have not selected a survey for data-entry.")."

\n" ."
\n" ."
\n"; return; } if ($subaction == "insert" && bHasSurveyPermission($surveyid,'responses','create')) { $thissurvey=getSurveyInfo($surveyid); $errormsg=""; $dataentryoutput .= $surveyoptions."
".$clang->gT("Data entry")."
\n" ."\t
\n"; $lastanswfortoken=''; // check if a previous answer has been submitted or saved $rlanguage=''; if (isset($_POST['token']) && $_POST['token']) { $tokencompleted = ""; $tokentable = db_table_name("tokens_".$surveyid); $tcquery = "SELECT completed from $tokentable WHERE token=".db_quoteall($_POST['token'],true); $tcresult = db_execute_assoc($tcquery); $tccount = $tcresult->RecordCount(); while ($tcrow = $tcresult->FetchRow()) { $tokencompleted = $tcrow['completed']; } if ($tccount < 1) { // token doesn't exist in token table $lastanswfortoken='UnknownToken'; } elseif ($thissurvey['anonymized'] == "Y") { // token exist but survey is anonymous, check completed state if ($tokencompleted != "" && $tokencompleted != "N") { // token is completed $lastanswfortoken='PrivacyProtected'; } } else { // token is valid, survey not anonymous, try to get last recorded response id $aquery = "SELECT id,startlanguage FROM $surveytable WHERE token=".db_quoteall($_POST['token'],true); $aresult = db_execute_assoc($aquery); while ($arow = $aresult->FetchRow()) { if ($tokencompleted != "N") { $lastanswfortoken=$arow['id']; } $rlanguage=$arow['startlanguage']; } } } if (tableExists('tokens_'.$thissurvey['sid']) && (!isset($_POST['token']) || !$_POST['token'])) {// First Check if the survey uses tokens and if a token has been provided $errormsg="
".$clang->gT("Error")."

".$clang->gT("This is a closed-access survey, so you must supply a valid token. Please contact the administrator for assistance.")."

\n"; } elseif (tableExists('tokens_'.$thissurvey['sid']) && $lastanswfortoken == 'UnknownToken') { $errormsg="
".$clang->gT("Error")."

".$clang->gT("The token you have provided is not valid or has already been used.")."

\n"; } elseif (tableExists('tokens_'.$thissurvey['sid']) && $lastanswfortoken != '') { $errormsg="
".$clang->gT("Error")."

".$clang->gT("There is already a recorded answer for this token")."

\n"; if ($lastanswfortoken != 'PrivacyProtected') { $errormsg .= "

".$clang->gT("Follow the following link to update it").":\n" . "[id:$lastanswfortoken]"; } else { $errormsg .= "

".$clang->gT("This surveys uses anonymized responses, so you can't update your response.")."\n"; } } else { if (isset($_POST['save']) && $_POST['save'] == "on") { $saver['identifier']=returnglobal('save_identifier'); $saver['language']=returnglobal('save_language'); $saver['password']=returnglobal('save_password'); $saver['passwordconfirm']=returnglobal('save_confirmpassword'); $saver['email']=returnglobal('save_email'); if (!returnglobal('redo')) { $password=md5($saver['password']); } else { $password=$saver['password']; } $errormsg=""; if (!$saver['identifier']) {$errormsg .= $clang->gT("Error").": ".$clang->gT("You must supply a name for this saved session.");} if (!$saver['password']) {$errormsg .= $clang->gT("Error").": ".$clang->gT("You must supply a password for this saved session.");} if ($saver['password'] != $saver['passwordconfirm']) {$errormsg .= $clang->gT("Error").": ".$clang->gT("Your passwords do not match.");} if ($errormsg) { $dataentryoutput .= $errormsg; $dataentryoutput .= $clang->gT("Try again").":
"; if (isset($_POST['datestamp'])) { $dataentryoutput .= "\n"; } if (isset($_POST['ipaddr'])) { $dataentryoutput .= "\n"; } $dataentryoutput .= "
".$clang->gT("Identifier:")."
".$clang->gT("Password:")."
".$clang->gT("Confirm Password:")."
".$clang->gT("Email:")."
".$clang->gT("Start Language:")." \n"; foreach ($_POST as $key=>$val) { if (substr($key, 0, 4) != "save" && $key != "action" && $key !="sid" && $key != "datestamp" && $key !="ipaddr") { $dataentryoutput .= "\n"; } } $dataentryoutput .= "
\n"; } } //BUILD THE SQL TO INSERT RESPONSES $baselang = GetBaseLanguageFromSurveyID($surveyid); $fieldmap= createFieldMap($surveyid); $columns=array(); $values=array(); $_POST['startlanguage']=$baselang; if ($thissurvey['datestamp'] == "Y") {$_POST['startdate']=$_POST['datestamp'];} if (isset($_POST['closerecord'])) { if ($thissurvey['datestamp'] == "Y") { $_POST['submitdate']=date_shift(date("Y-m-d H:i:s"), "Y-m-d H:i:s", $timeadjust); } else { $_POST['submitdate']=date("Y-m-d H:i:s",mktime(0,0,0,1,1,1980)); } } foreach ($fieldmap as $irow) { $fieldname = $irow['fieldname']; if (isset($_POST[$fieldname])) { if ($_POST[$fieldname] == "" && ($irow['type'] == 'D' || $irow['type'] == 'N' || $irow['type'] == 'K')) { // can't add '' in Date column // Do nothing } else if ($irow['type'] == '|') { if (!strpos($irow['fieldname'], "_filecount")) { $json = $_POST[$fieldname]; $phparray = json_decode(stripslashes($json)); $filecount = 0; for ($i = 0; $filecount < count($phparray); $i++) { if ($_FILES[$fieldname."_file_".$i]['error'] != 4) { $target = $uploaddir. "/surveys/". $thissurvey['sid'] ."/files/".sRandomChars(20); $size = 0.001 * $_FILES[$fieldname."_file_".$i]['size']; $name = rawurlencode($_FILES[$fieldname."_file_".$i]['name']); if (move_uploaded_file($_FILES[$fieldname."_file_".$i]['tmp_name'], $target)) { $phparray[$filecount]->filename = basename($target); $phparray[$filecount]->name = $name; $phparray[$filecount]->size = $size; $pathinfo = pathinfo($_FILES[$fieldname."_file_".$i]['name']); $phparray[$filecount]->ext = $pathinfo['extension']; $filecount++; } } } $columns[] .= db_quote_id($fieldname); $values[] .= db_quoteall(ls_json_encode($phparray), true); } else { $columns[] .= db_quote_id($fieldname); $values[] .= db_quoteall(count($phparray), true); } } elseif ($irow['type'] == 'D') { $datetimeobj = new Date_Time_Converter($_POST[$fieldname],$dateformatdetails['phpdate']); $columns[] .= db_quote_id($fieldname); $values[] .= db_quoteall($datetimeobj->convert("Y-m-d H:i:s"),true); } else { $columns[] .= db_quote_id($fieldname); $values[] .= db_quoteall($_POST[$fieldname],true); } } } $SQL = "INSERT INTO $surveytable (".implode(',',$columns).") VALUES (".implode(',',$values).")"; $iinsert = $connect->Execute($SQL) or safe_die ("Could not insert your data:
$SQL
\n" .$connect->ErrorMsg()); if (isset($_POST['closerecord']) && isset($_POST['token']) && $_POST['token'] != '') // submittoken { // get submit date if (isset($_POST['closedate'])) { $submitdate = $_POST['closedate']; } else { $submitdate = date_shift(date("Y-m-d H:i:s"), "Y-m-d", $timeadjust); } // check how many uses the token has left $usesquery = "SELECT usesleft FROM {$dbprefix}tokens_$surveyid WHERE token=".db_quoteall($_POST['token'],true); $usesresult = db_execute_assoc($usesquery); $usesrow = $usesresult->FetchRow(); if (isset($usesrow)) { $usesleft = $usesrow['usesleft']; } // query for updating tokens $utquery = "UPDATE {$dbprefix}tokens_$surveyid\n"; if (bIsTokenCompletedDatestamped($thissurvey)) { if (isset($usesleft) && $usesleft<=1) { $utquery .= "SET usesleft=usesleft-1, completed='$submitdate'\n"; } else { $utquery .= "SET usesleft=usesleft-1\n"; } } else { if (isset($usesleft) && $usesleft<=1) { $utquery .= "SET usesleft=usesleft-1, completed='Y'\n"; } else { $utquery .= "SET usesleft=usesleft-1\n"; } } $utquery .= "WHERE token=".db_quoteall($_POST['token'],true); $utresult = $connect->Execute($utquery) or safe_die ("Couldn't update tokens table!
\n$utquery
\n".$connect->ErrorMsg()); // save submitdate into survey table $srid = $connect->Insert_ID(); $sdquery = "UPDATE {$dbprefix}survey_$surveyid SET submitdate=".db_quoteall($submitdate,true)." WHERE id={$srid}\n"; $sdresult = $connect->Execute($sdquery) or safe_die ("Couldn't set submitdate response in survey table!
\n$sdquery
\n".$connect->ErrorMsg()); } if (isset($_POST['save']) && $_POST['save'] == "on") { $srid = $connect->Insert_ID(); //CREATE ENTRY INTO "saved_control" $scdata = array("sid"=>$surveyid, "srid"=>$srid, "identifier"=>$saver['identifier'], "access_code"=>$password, "email"=>$saver['email'], "ip"=>getIPAddress(), "refurl"=>getenv("HTTP_REFERER"), 'saved_thisstep' => 0, "status"=>"S", "saved_date"=>date_shift(date("Y-m-d H:i:s"), "Y-m-d H:i:s", $timeadjust)); if ($connect->AutoExecute("{$dbprefix}saved_control", $scdata,'INSERT')) { $scid = $connect->Insert_ID("{$dbprefix}saved_control","scid"); $dataentryoutput .= "".$clang->gT("Your survey responses have been saved successfully. You will be sent a confirmation e-mail. Please make sure to save your password, since we will not be able to retrieve it for you.")."
\n"; $tkquery = "SELECT * FROM ".db_table_name("tokens_$surveyid"); if ($tkresult = $connect->Execute($tkquery)) //If the query fails, assume no tokens table exists { $tokendata = array ( "firstname"=> $saver['identifier'], "lastname"=> $saver['identifier'], "email"=>$saver['email'], "token"=>sRandomChars(15), "language"=>$saver['language'], "sent"=>date_shift(date("Y-m-d H:i:s"), "Y-m-d H:i", $timeadjust), "completed"=>"N"); $connect->AutoExecute(db_table_name("tokens_".$surveyid), $tokendata,'INSERT'); $dataentryoutput .= "".$clang->gT("A token entry for the saved survey has been created too.")."
\n"; } if ($saver['email']) { //Send email if (validate_email($saver['email']) && !returnglobal('redo')) { $subject=$clang->gT("Saved Survey Details"); $message=$clang->gT("Thank you for saving your survey in progress. The following details can be used to return to this survey and continue where you left off. Please keep this e-mail for your reference - we cannot retrieve the password for you."); $message.="\n\n".$thissurvey['name']."\n\n"; $message.=$clang->gT("Name").": ".$saver['identifier']."\n"; $message.=$clang->gT("Password").": ".$saver['password']."\n\n"; $message.=$clang->gT("Reload your survey by clicking on the following link (or pasting it into your browser):")."\n"; $message.=$publicurl."/index.php?sid=$surveyid&loadall=reload&scid=".$scid."&lang=".urlencode($saver['language'])."&loadname=".urlencode($saver['identifier'])."&loadpass=".urlencode($saver['password']); if (isset($tokendata['token'])) {$message.="&token=".$tokendata['token'];} $from = $thissurvey['adminemail']; if (SendEmailMessage(null, $message, $subject, $saver['email'], $from, $sitename, false, getBounceEmail($surveyid))) { $emailsent="Y"; $dataentryoutput .= "".$clang->gT("An email has been sent with details about your saved survey")."
\n"; } } } } else { safe_die("Unable to insert record into saved_control table.

".$connect->ErrorMsg()); } } $dataentryoutput .= "\t
".$clang->gT("Success")."
\n"; $thisid=$connect->Insert_ID(); $dataentryoutput .= "\t".$clang->gT("The entry was assigned the following record id: ")." {$thisid}

\n"; } $dataentryoutput .= $errormsg; $dataentryoutput .= "\t

\n"; $dataentryoutput .= "\t

\n"; if (isset($thisid)) { $dataentryoutput .= "\t

\n"; } if (isset($_POST['save']) && $_POST['save'] == "on") { $dataentryoutput .= "\t

\n"; } $dataentryoutput .= "
\n"; } elseif (($subaction == "edit" || $subaction == "editsaved") && bHasSurveyPermission($surveyid,'responses','update')) { $dataentryoutput .= $surveyoptions; //FIRST LETS GET THE NAMES OF THE QUESTIONS AND MATCH THEM TO THE FIELD NAMES FOR THE DATABASE $fnquery = "SELECT * FROM ".db_table_name("questions").", ".db_table_name("groups")." g, ".db_table_name("surveys")." WHERE ".db_table_name("questions").".gid=g.gid AND ".db_table_name("questions").".language = '{$sDataEntryLanguage}' AND g.language = '{$sDataEntryLanguage}' AND ".db_table_name("questions").".sid=".db_table_name("surveys").".sid AND ".db_table_name("questions").".sid='$surveyid' order by group_order, question_order"; $fnresult = db_execute_assoc($fnquery); $fncount = $fnresult->RecordCount(); //$dataentryoutput .= "$fnquery

\n"; $fnrows = array(); //Create an empty array in case FetchRow does not return any rows while ($fnrow = $fnresult->FetchRow()) { $fnrows[] = $fnrow; $private=$fnrow['anonymized']; $datestamp=$fnrow['datestamp']; $ipaddr=$fnrow['ipaddr']; } // Get table output into array // Perform a case insensitive natural sort on group name then question title of a multidimensional array // $fnames = (Field Name in Survey Table, Short Title of Question, Question Type, Field Name, Question Code, Predetermined Answers if exist) $fnames['completed'] = array('fieldname'=>"completed", 'question'=>$clang->gT("Completed"), 'type'=>'completed'); $fnames=array_merge($fnames,createFieldMap($surveyid,'full',false,false,$sDataEntryLanguage)); $nfncount = count($fnames)-1; //SHOW INDIVIDUAL RECORD if ($subaction == "edit" && bHasSurveyPermission($surveyid,'responses','update')) { $idquery = "SELECT * FROM $surveytable WHERE id=$id"; $idresult = db_execute_assoc($idquery) or safe_die ("Couldn't get individual record
$idquery
".$connect->ErrorMsg()); while ($idrow = $idresult->FetchRow()) { $results[]=$idrow; } } elseif ($subaction == "editsaved" && bHasSurveyPermission($surveyid,'responses','update')) { if (isset($_GET['public']) && $_GET['public']=="true") { $password=md5($_GET['accesscode']); } else { $password=$_GET['accesscode']; } $svquery = "SELECT * FROM ".db_table_name("saved_control")." WHERE sid=$surveyid AND identifier='".$_GET['identifier']."' AND access_code='".$password."'"; $svresult=db_execute_assoc($svquery) or safe_die("Error getting save
$svquery
".$connect->ErrorMsg()); while($svrow=$svresult->FetchRow()) { $saver['email']=$svrow['email']; $saver['scid']=$svrow['scid']; $saver['ip']=$svrow['ip']; } $svquery = "SELECT * FROM ".db_table_name("saved_control")." WHERE scid=".$saver['scid']; $svresult=db_execute_assoc($svquery) or safe_die("Error getting saved info
$svquery
".$connect->ErrorMsg()); while($svrow=$svresult->FetchRow()) { $responses[$svrow['fieldname']]=$svrow['value']; } // while $fieldmap = createFieldMap($surveyid); foreach($fieldmap as $fm) { if (isset($responses[$fm['fieldname']])) { $results1[$fm['fieldname']]=$responses[$fm['fieldname']]; } else { $results1[$fm['fieldname']]=""; } } $results1['id']=""; $results1['datestamp']=date_shift(date("Y-m-d H:i:s"), "Y-m-d H:i:s", $timeadjust); $results1['ipaddr']=$saver['ip']; $results[]=$results1; } // $dataentryoutput .= "
";print_r($results);$dataentryoutput .= "
"; $dataentryoutput.="
".$clang->gT("Data entry")."
\n" ."\t
"; if ($subaction=='edit') { $dataentryoutput .= sprintf($clang->gT("Editing response (ID %s)"),$id); } else { $dataentryoutput .= sprintf($clang->gT("Viewing response (ID %s)"),$id); } $dataentryoutput .="
\n"; $dataentryoutput .= "
\n" ."\n"; $highlight=false; unset($fnames['lastpage']); // unset timings foreach ($fnames as $fname) { if ($fname['type'] == "interview_time" || $fname['type'] == "page_time" || $fname['type'] == "answer_time") { unset($fnames[$fname['fieldname']]); $nfncount--; } } foreach ($results as $idrow) { //$dataentryoutput .= "
"; print_r($idrow);$dataentryoutput .= "
"; //for ($i=0; $i<$nfncount+1; $i++) $fname=reset($fnames); do { //$dataentryoutput .= "
"; print_r($fname);$dataentryoutput .= "
"; if (isset($idrow[$fname['fieldname']])) $answer = $idrow[$fname['fieldname']]; $question=$fname['question']; //get survey details $thissurvey=getSurveyInfo($surveyid); $dataentryoutput .= "\t" ."\n"; $dataentryoutput .= "\t".strip_javascript($question)."\n"; $dataentryoutput .= "\n" ."
\n"; //$dataentryoutput .= "\t-={$fname[3]}=-"; //Debugging info switch ($fname['type']) { case "completed": // First compute the submitdate if ($private == "Y") { // In case of anonymized responses survey with no datestamp // then the the answer submitdate gets a conventional timestamp // 1st Jan 1980 $mysubmitdate = date("Y-m-d H:i:s",mktime(0,0,0,1,1,1980)); } else { $mysubmitdate = date_shift(date("Y-m-d H:i:s"), "Y-m-d H:i:s", $timeadjust); } $completedate= empty($idrow['submitdate']) ? $mysubmitdate : $idrow['submitdate']; $dataentryoutput .= " \n"; break; case "X": //Boilerplate question $dataentryoutput .= ""; break; case "Q": case "K": $dataentryoutput .= "\t{$fname['subquestion']} \n"; break; case "id": $dataentryoutput .= " {$idrow[$fname['fieldname']]}"; break; case "5": //5 POINT CHOICE radio-buttons for ($x=1; $x<=5; $x++) { $dataentryoutput .= "\tconvert($dateformatdetails['phpdate']); } $dataentryoutput .= "\t\n"; break; case "G": //GENDER drop-down list $dataentryoutput .= "\t\n"; break; case "L": //LIST drop-down case "!": //List (Radio) $qidattributes=getQuestionAttributes($fname['qid']); if (isset($qidattributes['category_separator']) && trim($qidattributes['category_separator'])!='') { $optCategorySeparator = $qidattributes['category_separator']; } else { unset($optCategorySeparator); } if (substr($fname['fieldname'], -5) == "other") { $dataentryoutput .= "\t\n"; } else { $lquery = "SELECT * FROM ".db_table_name("answers")." WHERE qid={$fname['qid']} AND language = '{$sDataEntryLanguage}' ORDER BY sortorder, answer"; $lresult = db_execute_assoc($lquery); $dataentryoutput .= "\t\n"; } break; case "O": //LIST WITH COMMENT drop-down/radio-button list + textarea $lquery = "SELECT * FROM ".db_table_name("answers")." WHERE qid={$fname['qid']} AND language = '{$sDataEntryLanguage}' ORDER BY sortorder, answer"; $lresult = db_execute_assoc($lquery); $dataentryoutput .= "\t\n"; break; case "R": //RANKING TYPE QUESTION $thisqid=$fname['qid']; $currentvalues=array(); $myfname=$fname['sid'].'X'.$fname['gid'].'X'.$fname['qid']; while (isset($fname['type']) && $fname['type'] == "R" && $fname['qid']==$thisqid) { //Let's get all the existing values into an array if ($idrow[$fname['fieldname']]) { $currentvalues[] = $idrow[$fname['fieldname']]; } $fname=next($fnames); } $ansquery = "SELECT * FROM ".db_table_name("answers")." WHERE language = '{$sDataEntryLanguage}' AND qid=$thisqid ORDER BY sortorder, answer"; $ansresult = db_execute_assoc($ansquery); $anscount = $ansresult->RecordCount(); $dataentryoutput .= "\t\n"; while ($ansrow = $ansresult->FetchRow()) //Now we're getting the codes and answers { $answers[] = array($ansrow['code'], $ansrow['answer']); } //now find out how many existing values there are $chosen[]=""; //create array if (!isset($ranklist)) {$ranklist="";} if (isset($currentvalues)) { $existing = count($currentvalues); } else {$existing=0;} for ($j=1; $j<=$anscount; $j++) //go through each ranking and check for matching answer { $k=$j-1; if (isset($currentvalues) && isset($currentvalues[$k]) && $currentvalues[$k]) { foreach ($answers as $ans) { if ($ans[0] == $currentvalues[$k]) { $thiscode=$ans[0]; $thistext=$ans[1]; } } } $ranklist .= "$j: \n" . "\n" . "".$clang->gT("Remove this item")."
\n\n"; } if (!isset($choicelist)) {$choicelist="";} $choicelist .= "\n"; $dataentryoutput .= "\t\n" ."\n" ."\t\n" ."\t\n" ."\n" ."\t
\n" ."" .$clang->gT("Your Choices").":
\n" .$choicelist ."\t
\n" ."" .$clang->gT("Your Ranking").":
\n" .$ranklist ."\t
\n" ."\t\n" ."\t\n"; $choicelist=""; $ranklist=""; unset($answers); $fname=prev($fnames); break; case "M": //Multiple choice checkbox $qidattributes=getQuestionAttributes($fname['qid']); if (trim($qidattributes['display_columns'])!='') { $dcols=$qidattributes['display_columns']; } else { $dcols=0; } // while ($fname[3] == "M" && $question != "" && $question == $fname['type']) $thisqid=$fname['qid']; while ($fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); //$dataentryoutput .= substr($fname['fieldname'], strlen($fname['fieldname'])-5, 5)."
\n"; if (substr($fname['fieldname'], -5) == "other") { $dataentryoutput .= "\t\n"; } else { $dataentryoutput .= "\tgT("Please choose")."..\n"; foreach ($slangs as $lang) { $dataentryoutput.="
'; } break; case "N": //NUMERICAL TEXT //get question attributes to change some style and validation settings $qidattributes = getQuestionAttributes($fname['qid']); if (isset($qidattributes['prefix']) && trim($qidattributes['prefix'])!='') { $prefix=$qidattributes['prefix']; } else { $prefix = ''; } if (isset($qidattributes['suffix']) && trim($qidattributes['suffix'])!='') { $suffix=$qidattributes['suffix']; } else { $suffix = ''; } if (intval(trim($qidattributes['maximum_chars']))>0 && intval(trim($qidattributes['maximum_chars']))<20) // Limt to 20 chars for numeric { $maximum_chars= intval(trim($qidattributes['maximum_chars'])); $maxlength= "maxlength='{$maximum_chars}' "; } else { $maxlength= "maxlength='20' "; } if (trim($qidattributes['text_input_width'])!='') { $tiwidth=$qidattributes['text_input_width']; } else { $tiwidth=10; } if (trim($qidattributes['num_value_int_only'])==1) { $acomma=""; } else { $acomma=getRadixPointData($thissurvey['surveyls_numberformat']); $acomma = $acomma['seperator']; } $sSeperator = getRadixPointData($thissurvey['surveyls_numberformat']); $dataentryoutput .= $prefix. "".$suffix; break; case "S": //SHORT FREE TEXT //get question attributes to change some style and validation settings $qidattributes = getQuestionAttributes($fname['qid']); if ($qidattributes['numbers_only']==1) { $sSeperator = getRadixPointData($thissurvey['surveyls_numberformat']); $sSeperator = $sSeperator['seperator']; $numbersonly = 'onkeypress="return goodchars(event,\'-0123456789'.$sSeperator.'\')"'; } else { $numbersonly = ''; } if (intval(trim($qidattributes['maximum_chars']))>0) { // Only maxlength attribute, use textarea[maxlength] jquery selector for textarea $maximum_chars= intval(trim($qidattributes['maximum_chars'])); $maxlength= "maxlength='{$maximum_chars}' "; } else { $maxlength= ""; } if (trim($qidattributes['text_input_width'])!='') { $tiwidth=$qidattributes['text_input_width']; } else { $tiwidth=50; } if (isset($qidattributes['prefix']) && trim($qidattributes['prefix'])!='') { $prefix=$qidattributes['prefix']; } else { $prefix = ''; } if (isset($qidattributes['suffix']) && trim($qidattributes['suffix'])!='') { $suffix=$qidattributes['suffix']; } else { $suffix = ''; } if (trim($qidattributes['display_rows'])!='') { //question attribute "display_rows" is set -> we need a textarea to be able to show several rows $drows=$qidattributes['display_rows']; //if a textarea should be displayed we make it equal width to the long text question //this looks nicer and more continuous if($tiwidth == 50) { $tiwidth=40; } $dataentryoutput .= $prefix."$suffix\n"; } else { //no question attribute set, use common input text field $dataentryoutput .= $prefix."" .htmlspecialchars($idrow[$fname['fieldname']], ENT_QUOTES) ."$suffix\n"; break; case "U": //HUGE FREE TEXT //get question attributes to change some style and validation settings $qidattributes=getQuestionAttributes($fname['qid']); if (trim($qidattributes['display_rows'])!='') { $drows=$qidattributes['display_rows']; } else { $drows=70; } if (trim($qidattributes['text_input_width'])!='') { $tiwidth=$qidattributes['text_input_width']; } else { $tiwidth=50; } if (isset($qidattributes['prefix']) && trim($qidattributes['prefix'])!='') { $prefix=$qidattributes['prefix']; } else { $prefix = ''; } if (isset($qidattributes['suffix']) && trim($qidattributes['suffix'])!='') { $suffix=$qidattributes['suffix']; } else { $suffix = ''; } $dataentryoutput .= $prefix.'$suffix\n"; break; case "Y": //YES/NO radio-buttons $dataentryoutput .= "\t\n"; break; case "A": //ARRAY (5 POINT CHOICE) radio-buttons $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while ($fname['qid'] == $thisqid) { $dataentryoutput .= "\t\n" ."\n" ."
{$fname['subquestion']}\n"; for ($j=1; $j<=5; $j++) { $dataentryoutput .= "\t\n"; $fname=next($fnames); } $dataentryoutput .= "
\n"; $fname=prev($fnames); break; case "B": //ARRAY (10 POINT CHOICE) radio-buttons $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while ($fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); $dataentryoutput .= "\t\n" ."\n" ."
{$fname['subquestion']}\n"; for ($j=1; $j<=10; $j++) { $dataentryoutput .= "\t\n"; $fname=next($fnames); } $fname=prev($fnames); $dataentryoutput .= "
\n"; break; case "C": //ARRAY (YES/UNCERTAIN/NO) radio-buttons $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while ($fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); $dataentryoutput .= "\t\n" ."\n" ."\n" ."\t\n"; $fname=next($fnames); } $fname=prev($fnames); $dataentryoutput .= "
{$fname['subquestion']}\n" ."\tgT("Yes")." \n" ."\tgT("Uncertain")." \n" ."\tgT("No")." \n" ."
\n"; break; case "E": //ARRAY (Increase/Same/Decrease) radio-buttons $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while ($fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); $dataentryoutput .= "\t\n" ."\n" ."\n"; $fname=next($fnames); } $fname=prev($fnames); $dataentryoutput .= "
{$fname['subquestion']}\n" ."\t\n" ."\t
\n"; break; case "F": //ARRAY (Flexible Labels) case "H": case "1": $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while (isset($fname['qid']) && $fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); $dataentryoutput .= "\t\n" ."\n"; $scale_id=0; if (isset($fname['scale_id'])) $scale_id=$fname['scale_id']; $fquery = "SELECT * FROM ".db_table_name("answers")." WHERE qid='{$fname['qid']}' and scale_id={$scale_id} and language='$sDataEntryLanguage' order by sortorder, answer"; $fresult = db_execute_assoc($fquery); $dataentryoutput .= "\n" ."\t\n"; $fname=next($fnames); } $fname=prev($fnames); $dataentryoutput .= "
{$fname['subquestion']}"; if (isset($fname['scale'])) { $dataentryoutput .= " (".$fname['scale'].')'; } $dataentryoutput .="\n"; while ($frow=$fresult->FetchRow()) { $dataentryoutput .= "\tgT("No answer")." \n"; $dataentryoutput .= "
\n"; break; case ":": //ARRAY (Multi Flexi) (Numbers) $qidattributes=getQuestionAttributes($fname['qid']); if (trim($qidattributes['multiflexible_max'])!='' && trim($qidattributes['multiflexible_min']) ==''){ $maxvalue=$qidattributes['multiflexible_max']; $minvalue=1; } if (trim($qidattributes['multiflexible_min'])!='' && trim($qidattributes['multiflexible_max']) ==''){ $minvalue=$qidattributes['multiflexible_min']; $maxvalue=$qidattributes['multiflexible_min'] + 10; } if (trim($qidattributes['multiflexible_min'])=='' && trim($qidattributes['multiflexible_max']) ==''){ $minvalue=1; $maxvalue=10; } if (trim($qidattributes['multiflexible_min']) !='' && trim($qidattributes['multiflexible_max']) !=''){ if($qidattributes['multiflexible_min'] < $qidattributes['multiflexible_max']){ $minvalue=$qidattributes['multiflexible_min']; $maxvalue=$qidattributes['multiflexible_max']; } } if (trim($qidattributes['multiflexible_step'])!='') { $stepvalue=$qidattributes['multiflexible_step']; } else { $stepvalue=1; } if ($qidattributes['multiflexible_checkbox']!=0) { $minvalue=0; $maxvalue=1; $stepvalue=1; } $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while (isset($fname['qid']) && $fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); $dataentryoutput .= "\t\n" . "\n"; $dataentryoutput .= "
{$fname['subquestion1']}:{$fname['subquestion2']}\n"; if ($qidattributes['input_boxes']!=0) { $dataentryoutput .= "\t"; } else { $dataentryoutput .= "\t
\n"; break; case ";": //ARRAY (Multi Flexi) $dataentryoutput .= "\n"; $thisqid=$fname['qid']; while (isset($fname['qid']) && $fname['qid'] == $thisqid) { $fieldn = substr($fname['fieldname'], 0, strlen($fname['fieldname'])); $dataentryoutput .= "\t\n" . "\n"; $dataentryoutput .= "
{$fname['subquestion1']}:{$fname['subquestion2']}\n"; $dataentryoutput .= "\t\n"; $fname=next($fnames); } $fname=prev($fnames); $dataentryoutput .= "
\n"; break; default: //This really only applies to tokens for non-private surveys $dataentryoutput .= "\t\n"; break; } $dataentryoutput .= " \n"; } while ($fname=next($fnames)); } $dataentryoutput .= "\n" ."\n"; if (!bHasSurveyPermission($surveyid, 'responses','update')) { // if you are not survey owner or super admin you cannot modify responses $dataentryoutput .= "

\n"; } elseif ($subaction == "edit" && bHasSurveyPermission($surveyid,'responses','update')) { $dataentryoutput .= "

"; } elseif ($subaction == "editsaved" && bHasSurveyPermission($surveyid,'responses','update')) { $dataentryoutput .= "\n"; $dataentryoutput .= "\n"; $dataentryoutput .= "\t
\n"; $dataentryoutput .="\n"; $dataentryoutput .= "\t
\n"; $dataentryoutput .= "
\n"; $dataentryoutput .= "