ErrorMsg()); $qtype = $result->FetchRow(); if ($qtype['type'] == 'G') { $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $answerlist = array('M' => array('Title' => $qtype['title'], 'Display' => $clang->gT("Male"), 'code' => 'M'), 'F' => array('Title' => $qtype['title'],'Display' => $clang->gT("Female"), 'code' => 'F')); if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if ($qtype['type'] == 'M') { $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $query = "SELECT title,question FROM ".db_table_name('questions')." WHERE parent_qid='{$qid}'"; $ansresult = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $answerlist = array(); while ($dbanslist = $ansresult->FetchRow()) { $tmparrayans = array('Title' => $qtype['title'], 'Display' => substr($dbanslist['question'],0,40), 'code' => $dbanslist['title']); $answerlist[$dbanslist['title']] = $tmparrayans; } if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if ($qtype['type'] == 'L' || $qtype['type'] == 'O' || $qtype['type'] == '!') { $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $query = "SELECT code,answer FROM ".db_table_name('answers')." WHERE qid='{$qid}' and language='{$baselang}'"; $ansresult = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $answerlist = array(); while ($dbanslist = $ansresult->FetchRow()) { $answerlist[$dbanslist['code']] = array('Title'=>$qtype['title'], 'Display'=>substr($dbanslist['answer'],0,40), 'code'=>$dbanslist['code']); } if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if ($qtype['type'] == 'A') { $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $query = "SELECT title,question FROM ".db_table_name('questions')." WHERE parent_qid='{$qid}'"; $ansresult = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $answerlist = array(); while ($dbanslist = $ansresult->FetchRow()) { for ($x=1; $x<6; $x++) { $tmparrayans = array('Title' => $qtype['title'], 'Display' => substr($dbanslist['question'],0,40).' ['.$x.']', 'code' => $dbanslist['title']); $answerlist[$dbanslist['title']."-".$x] = $tmparrayans; } } if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if ($qtype['type'] == 'B') { $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $query = "SELECT code,answer FROM ".db_table_name('answers')." WHERE qid='{$qid}' and language='{$baselang}'"; $ansresult = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $answerlist = array(); while ($dbanslist = $ansresult->FetchRow()) { for ($x=1; $x<11; $x++) { $tmparrayans = array('Title' => $qtype['title'], 'Display' => substr($dbanslist['answer'],0,40).' ['.$x.']', 'code' => $dbanslist['code']); $answerlist[$dbanslist['code']."-".$x] = $tmparrayans; } } if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if ($qtype['type'] == 'Y') { $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $answerlist = array('Y' => array('Title' => $qtype['title'], 'Display' => $clang->gT("Yes"), 'code' => 'Y'), 'N' => array('Title' => $qtype['title'],'Display' => $clang->gT("No"), 'code' => 'N')); if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if ($qtype['type'] == 'I') { $slangs = GetAdditionalLanguagesFromSurveyID($surveyid); array_unshift($slangs,$baselang); $query = "SELECT * FROM ".db_table_name('quota_members')." WHERE sid='{$surveyid}' and qid='{$qid}' and quota_id='{$quota_id}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); while(list($key,$value) = each($slangs)) { $tmparrayans = array('Title' => $qtype['title'], 'Display' => getLanguageNameFromCode($value,false), $value); $answerlist[$value] = $tmparrayans; } if ($result->RecordCount() > 0) { while ($quotalist = $result->FetchRow()) { $answerlist[$quotalist['code']]['rowexists'] = '1'; } } } if (!isset($answerlist)) { return array(); } else { return $answerlist; } } $js_admin_includes[]='../scripts/jquery/jquery.tablesorter.min.js'; $js_admin_includes[]='scripts/quotas.js'; if(bHasSurveyPermission($surveyid, 'quotas','read')) { if (isset($_POST['quotamax'])) $_POST['quotamax']=sanitize_int($_POST['quotamax']); if (!isset($action)) $action=returnglobal('action'); if (!isset($subaction)) $subaction=returnglobal('subaction'); if (!isset($quotasoutput)) $quotasoutput = ""; //if (!isset($_POST['autoload_url']) || empty($_POST['autoload_url'])) {$_POST['autoload_url']=0;} //queXS Removal if($subaction == "insertquota" && bHasSurveyPermission($surveyid, 'quotas','create')) { if(!isset($_POST['quota_limit']) || $_POST['quota_limit'] < 0 || empty($_POST['quota_limit']) || !is_numeric($_POST['quota_limit'])) { $_POST['quota_limit'] = 0; } array_walk( $_POST, 'db_quote', true); $query = "INSERT INTO ".db_table_name('quota')." (sid,name,qlimit,action,autoload_url) VALUES ('$surveyid','{$_POST['quota_name']}','{$_POST['quota_limit']}','1', '1')"; $connect->Execute($query) or safe_die("Error inserting limit".$connect->ErrorMsg()); $quotaid=$connect->Insert_Id(db_table_name_nq('quota'),"id"); //Get the languages used in this survey $langs = GetAdditionalLanguagesFromSurveyID($surveyid); $baselang = GetBaseLanguageFromSurveyID($surveyid); array_push($langs, $baselang); //Iterate through each language, and make sure there is a quota message for it $errorstring = ''; foreach ($langs as $lang) { if (!$_POST['quotals_message_'.$lang]) { $errorstring.= GetLanguageNameFromCode($lang,false)."\\n";} } if ($errorstring!='') { $databaseoutput .= "\n"; } else //All the required quota messages exist, now we can insert this info into the database { require_once("../classes/inputfilter/class.inputfilter_clean.php"); $myFilter = new InputFilter('','',1,1,1); foreach ($langs as $lang) //Iterate through each language { //Clean XSS if ($filterxsshtml) { $_POST['quotals_message_'.$lang]=$myFilter->process($_POST['quotals_message_'.$lang]); } else { $_POST['quotals_message_'.$lang] = html_entity_decode($_POST['quotals_message_'.$lang], ENT_QUOTES, "UTF-8"); } // Fix bug with FCKEditor saving strange BR types $_POST['quotals_message_'.$lang]=fix_FCKeditor_text($_POST['quotals_message_'.$lang]); include_once(dirname(__FILE__) . '/../quexs.php'); //queXS Addition //Now save the language to the database: $query = "INSERT INTO ".db_table_name('quota_languagesettings')." (quotals_quota_id, quotals_language, quotals_name, quotals_message, quotals_url, quotals_urldescrip) VALUES ('$quotaid', '$lang', '".db_quote($_POST['quota_name'],true)."', '".db_quote($_POST['quotals_message_'.$lang],true)."', '".QUEXS_URL."rs_quota_end.php"."', '".QUEXS_URL."rs_quota_end.php"."')"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); } } //End insert language based components $viewquota = "1"; } //End foreach $lang if($subaction == "modifyquota" && bHasSurveyPermission($surveyid, 'quotas','update')) { $query = "UPDATE ".db_table_name('quota')." SET name=".db_quoteall($_POST['quota_name'],true).", qlimit=".db_quoteall($_POST['quota_limit'],true)." WHERE id=".db_quoteall($_POST['quota_id'],true); $connect->Execute($query) or safe_die("Error modifying quota".$connect->ErrorMsg()); //Get the languages used in this survey $langs = GetAdditionalLanguagesFromSurveyID($surveyid); $baselang = GetBaseLanguageFromSurveyID($surveyid); array_push($langs, $baselang); //Iterate through each language, and make sure there is a quota message for it $errorstring = ''; foreach ($langs as $lang) { if (!$_POST['quotals_message_'.$lang]) { $errorstring.= GetLanguageNameFromCode($lang,false)."\\n";} } if ($errorstring!='') { $quotasoutput .= "\n"; } else //All the required quota messages exist, now we can insert this info into the database { require_once("../classes/inputfilter/class.inputfilter_clean.php"); $myFilter = new InputFilter('','',1,1,1); foreach ($langs as $lang) //Iterate through each language { //Clean XSS if ($filterxsshtml) { $_POST['quotals_message_'.$lang]=$myFilter->process($_POST['quotals_message_'.$lang]); } else { $_POST['quotals_message_'.$lang] = html_entity_decode($_POST['quotals_message_'.$lang], ENT_QUOTES, "UTF-8"); } // Fix bug with FCKEditor saving strange BR types $_POST['quotals_message_'.$lang]=fix_FCKeditor_text($_POST['quotals_message_'.$lang]); //Check to see if a matching language exists, and if not, INSERT one (no update possible) $query = "SELECT * FROM ".db_table_name('quota_languagesettings')." WHERE quotals_quota_id = ".db_quote($_POST['quota_id'], true)." AND quotals_language = '$lang'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); if ($result->RecordCount() > 0) { //Now save the language to the database: $query = "UPDATE ".db_table_name('quota_languagesettings')." SET quotals_name='".db_quote($_POST['quota_name'],true)."', quotals_message='".db_quote($_POST['quotals_message_'.$lang],true)."' WHERE quotals_quota_id =".db_quote($_POST['quota_id'],true)." AND quotals_language = '$lang'"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); } else { /* If there is no matching record for this language, create one */ $query = "INSERT INTO ".db_table_name('quota_languagesettings')." (quotals_quota_id,quotals_language,quotals_name,quotals_message,quotals_url,quotals_urldescrip) VALUES ('".db_quote($_POST['quota_id'])."', '$lang', '".db_quote($_POST['quota_name'],true)."', '".db_quote($_POST['quotals_message_'.$lang],true)."', '".QUEXS_URL."rs_quota_end.php"."', '".QUEXS_URL."rs_quota_end.php"."')"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); } } } //End insert language based components $viewquota = "1"; } if($subaction == "insertquotaanswer" && bHasSurveyPermission($surveyid, 'quotas','create')) { array_walk( $_POST, 'db_quote', true); $query = "INSERT INTO ".db_table_name('quota_members')." (sid,qid,quota_id,code) VALUES ('$surveyid','{$_POST['quota_qid']}','{$_POST['quota_id']}','{$_POST['quota_anscode']}')"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); if(isset($_POST['createanother']) && $_POST['createanother'] == "on") { $_POST['action']="quotas"; $_POST['subaction']="new_answer"; $subaction="new_answer"; } else { $viewquota = "1"; } } if($subaction == "quota_delans" && bHasSurveyPermission($surveyid, 'quotas','delete')) { array_walk( $_POST, 'db_quote', true); $query = "DELETE FROM ".db_table_name('quota_members')." WHERE id = '{$_POST['quota_member_id']}' AND qid='{$_POST['quota_qid']}' and code='{$_POST['quota_anscode']}'"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); $viewquota = "1"; } if($subaction == "quota_delquota" && bHasSurveyPermission($surveyid, 'quotas','delete')) { array_walk( $_POST, 'db_quote', true); $query = "DELETE FROM ".db_table_name('quota')." WHERE id='{$_POST['quota_id']}'"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); $query = "DELETE FROM ".db_table_name('quota_languagesettings')." WHERE quotals_quota_id='{$_POST['quota_id']}'"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); $query = "DELETE FROM ".db_table_name('quota_members')." WHERE quota_id='{$_POST['quota_id']}'"; $connect->Execute($query) or safe_die($connect->ErrorMsg()); $viewquota = "1"; } if ($subaction == "quota_editquota" && bHasSurveyPermission($surveyid, 'quotas','update')) { if (isset($_GET['quota_id'])) $_POST['quota_id'] = $_GET['quota_id']; //queXS Addition array_walk( $_POST, 'db_quote', true); $query = "SELECT * FROM ".db_table_name('quota')." WHERE id='{$_POST['quota_id']}'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); $quotainfo = $result->FetchRow(); $quotasoutput .="
".$clang->gT("Edit quota")."
"; $langs = GetAdditionalLanguagesFromSurveyID($surveyid); $baselang = GetBaseLanguageFromSurveyID($surveyid); array_push($langs,$baselang); require_once("../classes/inputfilter/class.inputfilter_clean.php"); $myFilter = new InputFilter('','',1,1,1); $quotasoutput .= '
'."\n\n"; foreach ($langs as $lang) { //Get this one $langquery = "SELECT * FROM ".db_table_name('quota_languagesettings')." WHERE quotals_quota_id='{$_POST['quota_id']}' AND quotals_language = '$lang'"; $langresult = db_execute_assoc($langquery) or safe_die($connect->ErrorMsg()); $langquotainfo = $langresult->FetchRow(); $quotasoutput .= '

'.GetLanguageNameFromCode($lang,false); if ($lang==$baselang) {$quotasoutput .= '('.$clang->gT("Base language").')';} $quotasoutput .= "

"; $quotasoutput.='
'; }; $quotasoutput .= '

'; } $totalquotas=0; $totalcompleted=0; $csvoutput=array(); if (($action == "quotas" && !isset($subaction)) || isset($viewquota)) { $query = "SELECT * FROM ".db_table_name('quota')." , ".db_table_name('quota_languagesettings')." WHERE ".db_table_name('quota').".id = ".db_table_name('quota_languagesettings').".quotals_quota_id AND sid='".$surveyid."' AND quotals_language = '".$baselang."' ORDER BY name"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); //create main quota
and headlines $quotasoutput .='
'.$clang->gT("Survey quotas").'

'; //NOTE: the footer always has to be put BEFORE the tbody tag! $quotasoutput .=' '; //if there are quotas let's proceed if ($result->RecordCount() > 0) { //loop through all quotas while ($quotalisting = $result->FetchRow()) { $quotasoutput .=' '; //headline for quota sub-parts $quotasoutput .=' '; //check how many sub-elements exist for a certain quota $query = "SELECT id,code,qid FROM ".db_table_name('quota_members')." where quota_id='".$quotalisting['id']."'"; $result2 = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); if ($result2->RecordCount() > 0) { //loop through all sub-parts while ($quota_questions = $result2->FetchRow()) { $question_answers = getQuotaAnswers($quota_questions['qid'],$surveyid,$quotalisting['id']); $quotasoutput .=' '; } } } } else { $quotasoutput .=' '; } $quotasoutput .='
'.$clang->gT("Quota name").' '.$clang->gT("Status").' '.$clang->gT("Quota action").' '.$clang->gT("Completed").' '.$clang->gT("Limit").' '.$clang->gT("Action").'
         
'.$quotalisting['name'].' '; if ($quotalisting['active'] == 1) { $quotasoutput .= ''.$clang->gT("Active").''; } else { $quotasoutput .= ''.$clang->gT("Not Active").''; } $quotasoutput .=' '; if ($quotalisting['action'] == 1) { $quotasoutput .= $clang->gT("Terminate survey"); } elseif ($quotalisting['action'] == 2) { $quotasoutput .= $clang->gT("Terminate survey with warning"); } $totalquotas+=$quotalisting['qlimit']; $completed=get_quotaCompletedCount($surveyid, $quotalisting['id']); $highlight=($completed >= $quotalisting['qlimit']) ? "" : "style='color: orange'"; //Incomplete quotas displayed in red $totalcompleted=$totalcompleted+$completed; $csvoutput[]=$quotalisting['name'].",".$quotalisting['qlimit'].",".$completed.",".($quotalisting['qlimit']-$completed)."\r\n"; $quotasoutput .=' '.$completed.' '.$quotalisting['qlimit'].' '; if (bHasSurveyPermission($surveyid, 'quotas','update')) { $quotasoutput .='
'; } if (bHasSurveyPermission($surveyid, 'quotas','delete')) { $quotasoutput .='
'; } $quotasoutput .='
  '.$clang->gT("Question").' '.$clang->gT("Answer").'     '; if (bHasSurveyPermission($surveyid, 'quotas','update')) { $quotasoutput .='
'; } $quotasoutput .='
  '.$question_answers[$quota_questions['code']]['Title'].' '.$question_answers[$quota_questions['code']]['Display'].'    
'.$clang->gT("No quotas have been set for this survey").'.
      '.$totalcompleted.' '.$totalquotas.' '; if (bHasSurveyPermission($surveyid, 'quotas','create')) { $quotasoutput .='
'; } $quotasoutput .='
'; } if(isset($_GET['quickreport']) && $_GET['quickreport']) { header("Content-Disposition: attachment; filename=results-survey".$surveyid.".csv"); header("Content-type: text/comma-separated-values; charset=UTF-8"); header("Pragma: public"); echo $clang->gT("Quota name").",".$clang->gT("Limit").",".$clang->gT("Completed").",".$clang->gT("Remaining")."\r\n"; foreach($csvoutput as $line) { echo $line; } die; } if(($subaction == "new_answer" || ($subaction == "new_answer_two" && !isset($_POST['quota_qid']))) && bHasSurveyPermission($surveyid,'quotas','create')) { if ($subaction == "new_answer_two") $_POST['quota_id'] = $_POST['quota_id']; $allowed_types = "(type ='G' or type ='M' or type ='Y' or type ='A' or type ='B' or type ='I' or type = 'L' or type='O' or type='!')"; $query = "SELECT name FROM ".db_table_name('quota')." WHERE id='".$_POST['quota_id']."'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); while ($quotadetails = $result->FetchRow()) { $quota_name=$quotadetails['name']; } $query = "SELECT qid, title, question FROM ".db_table_name('questions')."q JOIN ".db_table_name('groups')."g on g.gid=q.gid WHERE {$allowed_types} AND g.sid={$surveyid} AND q.language='{$baselang}' AND g.language='{$baselang}' order by group_order, question_order"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); if ($result->RecordCount() == 0) { $quotasoutput .="
".$clang->gT("Add Answer").": ".$clang->gT("Question Selection")."

".$clang->gT("Sorry there are no supported question types in this survey.")."

gT("Continue")."\"/>
"; } else { $quotasoutput .='
'.$clang->gT("Survey Quota").': '.$clang->gT("Add Answer").'

'.sprintf($clang->gt("New Answer for Quota '%s'"), $quota_name).'

'; } } if($subaction == "new_answer_two" && isset($_POST['quota_qid']) && bHasSurveyPermission($surveyid, 'quotas','create')) { array_walk( $_POST, 'db_quote', true); $query = "SELECT name FROM ".db_table_name('quota')." WHERE id='".$_POST['quota_id']."'"; $result = db_execute_assoc($query) or safe_die($connect->ErrorMsg()); while ($quotadetails = $result->FetchRow()) { $quota_name=$quotadetails['name']; } $question_answers = getQuotaAnswers($_POST['quota_qid'],$surveyid,$_POST['quota_id']); $x=0; foreach ($question_answers as $qacheck) { if (isset($qacheck['rowexists'])) $x++; } reset($question_answers); if (count($question_answers) == $x) { $quotasoutput .="
".$clang->gT("Add Answer").": ".$clang->gT("Question Selection")."

".$clang->gT("All answers are already selected in this quota.")."

gT("Continue")."\"/>
"; } else { $quotasoutput .='
'.$clang->gT("Survey Quota").': '.$clang->gT("Add Answer").'

'.sprintf($clang->gt("New Answer for Quota '%s'"), $quota_name).'

'; } } if ($subaction == "new_quota" && bHasSurveyPermission($surveyid, 'quotas','create')) { $quotasoutput.="
".$clang->gT("New quota").'
'; $quotasoutput.='
'; $quotasoutput.=' '; $langs = GetAdditionalLanguagesFromSurveyID($surveyid); $baselang = GetBaseLanguageFromSurveyID($surveyid); array_push($langs,$baselang); require_once("../classes/inputfilter/class.inputfilter_clean.php"); $myFilter = new InputFilter('','',1,1,1); $thissurvey=getSurveyInfo($surveyid); $quotasoutput .= '
'."\n\n"; foreach ($langs as $lang) { $quotasoutput .= '

'.GetLanguageNameFromCode($lang,false); if ($lang==$baselang) {$quotasoutput .= '('.$clang->gT("Base language").')';} $quotasoutput .= "

"; $quotasoutput.='
'; }; $quotasoutput .= '

'; } } ?>