diff --git a/application/helpers/expressions/em_manager_helper.php b/application/helpers/expressions/em_manager_helper.php
index 58fabc05470..a4b7a034244 100644
--- a/application/helpers/expressions/em_manager_helper.php
+++ b/application/helpers/expressions/em_manager_helper.php
@@ -2840,42 +2840,37 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
{
continue; // not an SGQA value
}
- $sgqa = $q->fieldname;
$type = $fielddata['type'];
$mandatory = $q->mandatory;
- $fieldNameParts = explode('X',$sgqa);
+ $fieldNameParts = explode('X',$q->fieldname);
$groupNum = $fieldNameParts[1];
$aid = (isset($q->aid) ? $q->aid : '');
$sqid = (isset($q->sqid) ? $q->sqid : '');
$questionId = $fieldNameParts[2];
- $questionNum = $q->id;
$relevance = (isset($q->relevance)) ? $q->relevance : 1;
$grelevance = (isset($q->grelevance)) ? $q->grelevance : 1;
- $hidden = (isset($qattr[$questionNum]['hidden'])) ? ($qattr[$questionNum]['hidden'] == '1') : false;
+ $hidden = (isset($qattr[$q->id]['hidden'])) ? ($qattr[$q->id]['hidden'] == '1') : false;
$scale_id = (isset($q->scale)) ? $q->scale : '0';
- $preg = (isset($q->preg)) ? $q->preg : NULL; // a perl regular exrpession validation function
+ $preg = (isset($q->preg) && trim($preg) != '') ? $q->preg : NULL; // a perl regular exrpession validation function
$defaultValue = (isset($q->default) ? $q->default : NULL);
- if (trim($preg) == '') {
- $preg = NULL;
- }
$help = (isset($q->help)) ? $q->help: '';
$other = (isset($q->other)) ? $q->other : '';
- if (isset($this->questionId2groupSeq[$questionNum])) {
- $groupSeq = $this->questionId2groupSeq[$questionNum];
+ if (isset($this->questionId2groupSeq[$q->id])) {
+ $groupSeq = $this->questionId2groupSeq[$q->id];
}
else {
$groupSeq = (isset($q->groupcount)) ? $q->groupcount : -1;
- $this->questionId2groupSeq[$questionNum] = $groupSeq;
+ $this->questionId2groupSeq[$q->id] = $groupSeq;
}
- if (isset($this->questionId2questionSeq[$questionNum])) {
- $questionSeq = $this->questionId2questionSeq[$questionNum];
+ if (isset($this->questionId2questionSeq[$q->id])) {
+ $questionSeq = $this->questionId2questionSeq[$q->id];
}
else {
$questionSeq = (isset($q->questioncount)) ? $q->questioncount : -1;
- $this->questionId2questionSeq[$questionNum] = $questionSeq;
+ $this->questionId2questionSeq[$q->id] = $questionSeq;
}
if (!isset($this->groupSeqInfo[$groupSeq])) {
@@ -2890,16 +2885,16 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
// Create list of codes associated with each question
- $codeList = (isset($this->qid2code[$questionNum]) ? $this->qid2code[$questionNum] : '');
+ $codeList = (isset($this->qid2code[$q->id]) ? $this->qid2code[$q->id] : '');
if ($codeList == '')
{
- $codeList = $sgqa;
+ $codeList = $q->fieldname;
}
else
{
- $codeList .= '|' . $sgqa;
+ $codeList .= '|' . $q->fieldname;
}
- $this->qid2code[$questionNum] = $codeList;
+ $this->qid2code[$q->id] = $codeList;
$readWrite = 'Y';
@@ -2921,213 +2916,37 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
}
// Set $varName (question code / questions.title), $rowdivid, $csuffix, $sqsuffix, and $question
- $rowdivid=NULL; // so that blank for types not needing it.
- $sqsuffix='';
- switch($type)
- {
- case '!': //List - dropdown
- case '5': //5 POINT CHOICE radio-buttons
- case 'D': //DATE
- case 'G': //GENDER drop-down list
- case 'I': //Language Question
- case 'L': //LIST drop-down/radio-button list
- case 'N': //NUMERICAL QUESTION TYPE
- case 'O': //LIST WITH COMMENT drop-down/radio-button list + textarea
- case 'S': //SHORT FREE TEXT
- case 'T': //LONG FREE TEXT
- case 'U': //HUGE FREE TEXT
- case 'X': //BOILERPLATE QUESTION
- case 'Y': //YES/NO radio-buttons
- case '|': //File Upload
- case '*': //Equation
- $csuffix = '';
- $sqsuffix = '';
- $varName = $q->title;
- if ($q->aid != '') {
- $varName .= '_' . $q->aid;
- }
- $question = $q->text;
- break;
- case '1': //Array (Flexible Labels) dual scale
- $csuffix = $q->aid . '#' . $q->scale;
- $sqsuffix = '_' . $q->aid;
- $varName = $q->title . '_' . $q->aid . '_' . $q->scale;;
- $question = $q->sq . '[' . $q->scalename . ']';
- // $question = $q->text . ': ' . $q->sq . '[' . $q->scalename . ']';
- $rowdivid = substr($sgqa,0,-2);
- break;
- case 'A': //ARRAY (5 POINT CHOICE) radio-buttons
- case 'B': //ARRAY (10 POINT CHOICE) radio-buttons
- case 'C': //ARRAY (YES/UNCERTAIN/NO) radio-buttons
- case 'E': //ARRAY (Increase/Same/Decrease) radio-buttons
- case 'F': //ARRAY (Flexible) - Row Format
- case 'H': //ARRAY (Flexible) - Column Format // note does not have javatbd equivalent - so array filters don't work on it
- case 'K': //MULTIPLE NUMERICAL QUESTION // note does not have javatbd equivalent - so array filters don't work on it, but need rowdivid to process validations
- case 'M': //Multiple choice checkbox
- case 'P': //Multiple choice with comments checkbox + text
- case 'Q': //MULTIPLE SHORT TEXT // note does not have javatbd equivalent - so array filters don't work on it
- case 'R': //RANKING STYLE // note does not have javatbd equivalent - so array filters don't work on it
- $csuffix = $q->aid;
- $varName = $q->title . '_' . $q->aid;
- $question = $q->sq;
- // $question = $q->text . ': ' . $q->sq;
- if ($type != 'H') {
- if ($type == 'P' && preg_match("/comment$/", $sgqa)) {
- // $rowdivid = substr($sgqa,0,-7);
- }
- else {
- $sqsuffix = '_' . $q->aid;
- $rowdivid = $sgqa;
- }
- }
- break;
- case ':': //ARRAY (Multi Flexi) 1 to 10
- case ';': //ARRAY (Multi Flexi) Text
- $csuffix = $q->aid;
- $sqsuffix = '_' . substr($q->aid,0,strpos($q->aid,'_'));
- $varName = $q->title . '_' . $q->aid;
- $question = $q->sq1 . '[' . $q->sq2 . ']';
- // $question = $q->text . ': ' . $q->sq1 . '[' . $q->sq2 . ']';
- $rowdivid = substr($sgqa,0,strpos($sgqa,'_'));
- break;
- }
+ $csuffix = $q->getCsuffix();
+ $sqsuffix = $q->getSqsuffix();
+ $varName = $q->getVarName();
+ $question = $q->getQuestion();
+ $rowdivid = $q->getRowDivID();
// $onlynum
- $onlynum=false; // the default
- switch($type)
- {
- case 'K': //MULTIPLE NUMERICAL QUESTION
- case 'N': //NUMERICAL QUESTION TYPE
- case ':': //ARRAY (Multi Flexi) 1 to 10
- $onlynum=true;
- break;
- case '*': // Equation
- case ';': //ARRAY (Multi Flexi) Text
- case 'Q': //MULTIPLE SHORT TEXT
- case 'S': //SHORT FREE TEXT
- if (isset($qattr[$questionNum]['numbers_only']) && $qattr[$questionNum]['numbers_only']=='1')
- {
- $onlynum=true;
- }
- break;
- case 'L': //LIST drop-down/radio-button list
- case 'M': //Multiple choice checkbox
- case 'P': //Multiple choice with comments checkbox + text
- if (isset($qattr[$questionNum]['other_numbers_only']) && $qattr[$questionNum]['other_numbers_only']=='1' && preg_match('/other$/',$sgqa))
- {
- $onlynum=true;
- }
- break;
- default:
- break;
- }
+ $onlynum=$q->onlyNumeric();
// Set $jsVarName_on (for on-page variables - e.g. answerSGQA) and $jsVarName (for off-page variables; the primary name - e.g. javaSGQA)
- switch($type)
- {
- case 'R': //RANKING STYLE
- $jsVarName_on = 'answer' . $sgqa;
- $jsVarName = 'java' . $sgqa;
- break;
- case 'D': //DATE
- case 'N': //NUMERICAL QUESTION TYPE
- case 'S': //SHORT FREE TEXT
- case 'T': //LONG FREE TEXT
- case 'U': //HUGE FREE TEXT
- case 'Q': //MULTIPLE SHORT TEXT
- case 'K': //MULTIPLE NUMERICAL QUESTION
- case 'X': //BOILERPLATE QUESTION
- $jsVarName_on = 'answer' . $sgqa;
- $jsVarName = 'java' . $sgqa;
- break;
- case '!': //List - dropdown
- if (preg_match("/other$/",$sgqa))
- {
- $jsVarName = 'java' . $sgqa;
- $jsVarName_on = 'othertext' . substr($sgqa,0,-5);
- }
- else
- {
- $jsVarName = 'java' . $sgqa;
- $jsVarName_on = $jsVarName;
- }
- break;
- case 'L': //LIST drop-down/radio-button list
- if (preg_match("/other$/",$sgqa))
- {
- $jsVarName = 'java' . $sgqa;
- $jsVarName_on = 'answer' . $sgqa . "text";
- }
- else
- {
- $jsVarName = 'java' . $sgqa;
- $jsVarName_on = $jsVarName;
- }
- break;
- case '5': //5 POINT CHOICE radio-buttons
- case 'G': //GENDER drop-down list
- case 'I': //Language Question
- case 'Y': //YES/NO radio-buttons
- case '*': //Equation
- case '1': //Array (Flexible Labels) dual scale
- case 'A': //ARRAY (5 POINT CHOICE) radio-buttons
- case 'B': //ARRAY (10 POINT CHOICE) radio-buttons
- case 'C': //ARRAY (YES/UNCERTAIN/NO) radio-buttons
- case 'E': //ARRAY (Increase/Same/Decrease) radio-buttons
- case 'F': //ARRAY (Flexible) - Row Format
- case 'H': //ARRAY (Flexible) - Column Format
- case 'M': //Multiple choice checkbox
- case 'O': //LIST WITH COMMENT drop-down/radio-button list + textarea
- if ($type == 'O' && preg_match('/_comment$/', $varName))
- {
- $jsVarName_on = 'answer' . $sgqa;
- }
- else
- {
- $jsVarName_on = 'java' . $sgqa;
- }
- $jsVarName = 'java' . $sgqa;
- break;
- case ':': //ARRAY (Multi Flexi) 1 to 10
- case ';': //ARRAY (Multi Flexi) Text
- $jsVarName = 'java' . $sgqa;
- $jsVarName_on = 'answer' . $sgqa;;
- break;
- case '|': //File Upload
- $jsVarName = $sgqa;
- $jsVarName_on = $jsVarName;
- break;
- case 'P': //Multiple choice with comments checkbox + text
- if (preg_match("/(other|comment)$/",$sgqa))
- {
- $jsVarName_on = 'answer' . $sgqa; // is this true for survey.php and not for group.php?
- $jsVarName = 'java' . $sgqa;
- }
- else
- {
- $jsVarName = 'java' . $sgqa;
- $jsVarName_on = $jsVarName;
- }
- break;
- }
+ $jsVarName_on = $q->jsVarNameOn();
+ $jsVarName = $q->jsVarName();
+
if (!is_null($rowdivid) || $type == 'L' || $type == 'N' || $type == '!' || !is_null($preg)
|| $type == 'S' || $type == 'T' || $type == 'U' || $type == '|') {
- if (!isset($q2subqInfo[$questionNum])) {
- $q2subqInfo[$questionNum] = array(
- 'qid' => $questionNum,
+ if (!isset($q2subqInfo[$q->id])) {
+ $q2subqInfo[$q->id] = array(
+ 'qid' => $q->id,
'qseq' => $questionSeq,
'gseq' => $groupSeq,
- 'sgqa' => $surveyid . 'X' . $groupNum . 'X' . $questionNum,
+ 'sgqa' => $surveyid . 'X' . $groupNum . 'X' . $q->id,
'mandatory'=>$mandatory,
'varName' => $varName,
'type' => $type,
- 'fieldname' => $sgqa,
+ 'fieldname' => $q->fieldname,
'preg' => $preg,
'rootVarName' => $q->title,
);
}
- if (!isset($q2subqInfo[$questionNum]['subqs'])) {
- $q2subqInfo[$questionNum]['subqs'] = array();
+ if (!isset($q2subqInfo[$q->id]['subqs'])) {
+ $q2subqInfo[$q->id]['subqs'] = array();
}
if ($type == 'L' || $type == '!')
{
@@ -3139,8 +2958,8 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
if ($parts[1] == '-oth-') {
$parts[1] = 'other';
}
- $q2subqInfo[$questionNum]['subqs'][] = array(
- 'rowdivid' => $surveyid . 'X' . $groupNum . 'X' . $questionNum . $parts[1],
+ $q2subqInfo[$q->id]['subqs'][] = array(
+ 'rowdivid' => $surveyid . 'X' . $groupNum . 'X' . $q->id . $parts[1],
'varName' => $varName,
'sqsuffix' => '_' . $parts[1],
);
@@ -3150,16 +2969,16 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
else if ($type == 'N'
|| $type == 'S' || $type == 'T' || $type == 'U') // for $preg
{
- $q2subqInfo[$questionNum]['subqs'][] = array(
+ $q2subqInfo[$q->id]['subqs'][] = array(
'varName' => $varName,
- 'rowdivid' => $surveyid . 'X' . $groupNum . 'X' . $questionNum,
- 'jsVarName' => 'java' . $surveyid . 'X' . $groupNum . 'X' . $questionNum,
+ 'rowdivid' => $surveyid . 'X' . $groupNum . 'X' . $q->id,
+ 'jsVarName' => 'java' . $surveyid . 'X' . $groupNum . 'X' . $q->id,
'jsVarName_on' => $jsVarName_on,
);
}
else
{
- $q2subqInfo[$questionNum]['subqs'][] = array(
+ $q2subqInfo[$q->id]['subqs'][] = array(
'rowdivid' => $rowdivid,
'varName' => $varName,
'jsVarName_on' => $jsVarName_on,
@@ -3186,7 +3005,7 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
'readWrite'=>$readWrite,
'hidden'=>$hidden,
'question'=>$question,
- 'qid'=>$questionNum,
+ 'qid'=>$q->id,
'gid'=>$groupNum,
'grelevance'=>$grelevance,
'relevance'=>$relevance,
@@ -3194,7 +3013,7 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
'qseq'=>$questionSeq,
'gseq'=>$groupSeq,
'type'=>$type,
- 'sgqa'=>$sgqa,
+ 'sgqa'=>$q->fieldname,
'ansList'=>$ansList,
'ansArray'=>$ansArray,
'scale_id'=>$scale_id,
@@ -3208,7 +3027,7 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
$this->questionSeq2relevance[$questionSeq] = array(
'relevance'=>$relevance,
'grelevance'=>$grelevance,
- 'qid'=>$questionNum,
+ 'qid'=>$q->id,
'qseq'=>$questionSeq,
'gseq'=>$groupSeq,
'jsResultVar_on'=>$jsVarName_on,
@@ -3229,21 +3048,21 @@ private function setVariableAndTokenMappingsForExpressionManager($surveyid,$forc
'sqid'=>$sqid,
);
- $this->knownVars[$sgqa] = $varInfo_Code;
- $this->qcode2sgqa[$varName]=$sgqa;
+ $this->knownVars[$q->fieldname] = $varInfo_Code;
+ $this->qcode2sgqa[$varName]=$q->fieldname;
- $this->jsVar2qid[$jsVarName] = $questionNum;
- $this->qcode2sgq[$q->title] = $surveyid . 'X' . $groupNum . 'X' . $questionNum;
+ $this->jsVar2qid[$jsVarName] = $q->id;
+ $this->qcode2sgq[$q->title] = $surveyid . 'X' . $groupNum . 'X' . $q->id;
// Create JavaScript arrays
$this->alias2varName[$varName] = array('jsName'=>$jsVarName, 'jsPart' => "'" . $varName . "':'" . $jsVarName . "'");
- $this->alias2varName[$sgqa] = array('jsName'=>$jsVarName, 'jsPart' => "'" . $sgqa . "':'" . $jsVarName . "'");
+ $this->alias2varName[$q->fieldname] = array('jsName'=>$jsVarName, 'jsPart' => "'" . $q->fieldname . "':'" . $jsVarName . "'");
$this->varNameAttr[$jsVarName] = "'" . $jsVarName . "':{ "
. "'jsName':'" . $jsVarName
. "','jsName_on':'" . $jsVarName_on
- . "','sgqa':'" . $sgqa
- . "','qid':" . $questionNum
+ . "','sgqa':'" . $q->fieldname
+ . "','qid':" . $q->id
. ",'gid':" . $groupNum
// . ",'mandatory':'" . $mandatory
// . "','question':'" . htmlspecialchars(preg_replace('/[[:space:]]/',' ',$question),ENT_QUOTES)
diff --git a/application/modules/ArrayQuestion.php b/application/modules/ArrayQuestion.php
index d571bf8dfac..3a086b6ce4b 100644
--- a/application/modules/ArrayQuestion.php
+++ b/application/modules/ArrayQuestion.php
@@ -2,7 +2,7 @@
abstract class ArrayQuestion extends QuestionModule
{
protected $children;
-
+
protected function getChildren()
{
if ($this->children) return $this->children;
@@ -53,5 +53,35 @@ public function createFieldmap($type=null)
}
return $map;
}
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
+ public function getCsuffix()
+ {
+ return $this->aid;
+ }
+
+ public function getSqsuffix()
+ {
+ return '_' . $this->aid;
+ }
+
+ public function getVarName()
+ {
+ return $this->title . '_' . $this->aid;
+ }
+
+ public function getQuestion()
+ {
+ return $this->sq;
+ }
+
+ public function getRowDivID()
+ {
+ return $this->fieldname;
+ }
}
?>
\ No newline at end of file
diff --git a/application/modules/CheckQuestion.php b/application/modules/CheckQuestion.php
index 2157d826dcc..3882204d88e 100644
--- a/application/modules/CheckQuestion.php
+++ b/application/modules/CheckQuestion.php
@@ -276,7 +276,7 @@ protected function getChildren()
$ansquery = "SELECT * FROM {{questions}} WHERE parent_qid=$this->id AND scale_id=0 AND language='".$_SESSION['survey_'.$this->surveyid]['s_lang']."' ORDER BY question_order";
}
$ansresult = dbExecuteAssoc($ansquery)->readAll(); //Checked
-
+
if (trim($aQuestionAttributes['exclude_all_others'])!='' && $aQuestionAttributes['random_order']==1)
{
//if exclude_all_others is set then the related answer should keep its position at all times
@@ -296,7 +296,7 @@ protected function getChildren()
}
return $this->children = $ansresult;
}
-
+
protected function getOther()
{
if ($this->other) return $this->other;
@@ -320,7 +320,7 @@ public function getTitle()
}
return $this->text;
}
-
+
public function getHelp()
{
$clang=Yii::app()->lang;
@@ -336,7 +336,7 @@ public function getHelp()
}
return '';
}
-
+
public function createFieldmap($type=null)
{
$clang = Yii::app()->lang;
@@ -399,21 +399,21 @@ public function createFieldmap($type=null)
$other['q']=$q;
$map[$other['fieldname']]=$other;
}
-
+
return $map;
}
-
+
public function getExtendedAnswer($value, $language)
{
if($value=="Y") return $language->gT("Yes")." [$value]";
return $value;
}
-
+
public function getQuotaValue($value)
{
return array($this->surveyid.'X'.$this->gid.'X'.$this->id.$value => 'Y');
}
-
+
public function setAssessment()
{
if (isset($_SESSION['survey_'.$this->surveyid][$this->fieldname]) && $_SESSION['survey_'.$this->surveyid][$this->fieldname] == "Y")
@@ -425,7 +425,7 @@ public function setAssessment()
}
return true;
}
-
+
public function getDBField()
{
if ($this->aid != 'other' && strpos($this->aid,'comment')===false && strpos($this->aid,'othercomment')===false)
@@ -437,7 +437,7 @@ public function getDBField()
return "text";
}
}
-
+
public function prepareConditions($row)
{
if (preg_match("/^\+(.*)$/",$row['cfieldname'],$cfieldnamematch))
@@ -450,7 +450,7 @@ public function prepareConditions($row)
"subqid"=>$cfieldnamematch[1].'NAOK'
);
}
-
+
return array("cfieldname"=>$rows['cfieldname'].$rows['value'],
"value"=>$row['value'],
"matchfield"=>$row['cfieldname'],
@@ -474,7 +474,7 @@ public function transformResponseValue($export, $value, $options)
}
return parent::transformResponseValue($export, $value, $options);
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
if (mb_substr($this->fieldname, -5, 5) == 'other' || mb_substr($this->fieldname, -7, 7) == 'comment')
@@ -497,7 +497,7 @@ public function getFullAnswer($answerCode, $export, $survey)
}
}
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
//This section creates differing output from the old code base, but I do think
@@ -538,7 +538,7 @@ public function getFieldSubHeading($survey, $export, $code)
return ' '.$export->getCommentSubHeading();
}
}
-
+
public function getSPSSAnswers()
{
if ($this->aid == 'other' || strpos($this->aid,'comment') !== false) return array();
@@ -546,7 +546,7 @@ public function getSPSSAnswers()
$answers[] = array('code'=>0, 'value'=>$clang->gT('Not Selected'));
return $answers;
}
-
+
public function getSPSSData($data, $iLength, $na)
{
if ($this->aid == 'other' || strpos($this->aid,'comment') !== false)
@@ -558,7 +558,43 @@ public function getSPSSData($data, $iLength, $na)
return "'0'";
}
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
+ public function onlyNumeric()
+ {
+ $attributes = $this->getAttributeValues();
+ return array_key_exists('other_numbers_only', $attributes) && $attributes['numbers_only'] == 1 && preg_match('/other$/',$this->fieldname);
+ }
+
+ public function getCsuffix()
+ {
+ return $this->aid;
+ }
+
+ public function getSqsuffix()
+ {
+ return '_' . $this->aid;
+ }
+
+ public function getVarName()
+ {
+ return $this->title . '_' . $this->aid;
+ }
+
+ public function getQuestion()
+ {
+ return $this->sq;
+ }
+
+ public function getRowDivID()
+ {
+ return $this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("array_filter","array_filter_exclude","array_filter_style","assessment_value","display_columns","em_validation_q","em_validation_q_tip","exclude_all_others","exclude_all_others_auto","statistics_showgraph","hide_tip","hidden","max_answers","min_answers","other_numbers_only","other_replace_text","page_break","public_statistics","random_order","parent_order","scale_export","random_group");
diff --git a/application/modules/ColumnRadioArrayQuestion.php b/application/modules/ColumnRadioArrayQuestion.php
index 7110aebb025..b18354b26df 100644
--- a/application/modules/ColumnRadioArrayQuestion.php
+++ b/application/modules/ColumnRadioArrayQuestion.php
@@ -139,7 +139,17 @@ public function getAnswerHTML()
//public function getDataEntry($idrow, $fnames, $language) - inherited
//public function getInputNames() - inherited
-
+
+ public function getSqsuffix()
+ {
+ return '';
+ }
+
+ public function getRowDivID()
+ {
+ return null;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","public_statistics","random_order","parent_order","scale_export","random_group");
diff --git a/application/modules/CommentCheckQuestion.php b/application/modules/CommentCheckQuestion.php
index b79d1005552..b1beff8302c 100644
--- a/application/modules/CommentCheckQuestion.php
+++ b/application/modules/CommentCheckQuestion.php
@@ -64,7 +64,7 @@ public function getAnswerHTML()
$answer_main = '';
$fn = 1;
-
+
if($this->getOther() == 'Y')
{
$label_width = 25;
@@ -207,9 +207,9 @@ public function getDataEntry($idrow, &$fnames, $language)
}
//public function getTitle() - inherited
-
+
//public function getHelp() - inherited
-
+
public function createFieldmap($type=null)
{
$clang = Yii::app()->lang;
@@ -238,12 +238,44 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getQuotaValue($value)
{
return false;
}
-
+
+ public function jsVarNameOn()
+ {
+ if (preg_match("/(other|comment)$/",$this->fieldname))
+ {
+ return 'answer' . $this->fieldname;
+ }
+ else
+ {
+ return $jsVarName;
+ }
+ }
+
+ public function getSqsuffix()
+ {
+ if (preg_match("/comment$/", $q->fieldname))
+ {
+ return '';
+ } else {
+ return '_' . $this->aid;
+ }
+ }
+
+ public function getRowDivID()
+ {
+ if (preg_match("/comment$/", $q->fieldname))
+ {
+ return null;
+ } else {
+ return $this->fieldname;
+ }
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("array_filter","array_filter_exclude","array_filter_style","assessment_value","em_validation_q","em_validation_q_tip","exclude_all_others","exclude_all_others_auto","statistics_showgraph","hide_tip","hidden","max_answers","min_answers","other_comment_mandatory","other_numbers_only","other_replace_text","page_break","public_statistics","random_order","parent_order","scale_export","random_group");
diff --git a/application/modules/CommentListQuestion.php b/application/modules/CommentListQuestion.php
index a34064e67f6..3f1a72c7c64 100644
--- a/application/modules/CommentListQuestion.php
+++ b/application/modules/CommentListQuestion.php
@@ -184,11 +184,11 @@ public function getDataEntry($idrow, &$fnames, $language)
.htmlspecialchars($idrow[$q->fieldname]) . "\n";
return $output;
}
-
+
//public function getTitle() - inherited
-
+
//public function getHelp() - inherited
-
+
public function createFieldmap($type=null)
{
$clang = Yii::app()->lang;
@@ -206,7 +206,7 @@ public function createFieldmap($type=null)
$map[$comment['fieldname']]=$comment;
return $map;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
$answers = $survey->getAnswers($this->id);
@@ -221,7 +221,7 @@ public function getFullAnswer($answerCode, $export, $survey)
return $answerCode;
}
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
if ($this->aid == 'comment')
@@ -230,7 +230,19 @@ public function getFieldSubHeading($survey, $export, $code)
}
return '';
}
-
+
+ public function jsVarNameOn()
+ {
+ if ($this->aid == 'comment')
+ {
+ return 'answer' . $this->fieldname;
+ }
+ else
+ {
+ return 'java' . $this->fieldname;
+ }
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("alphasort","statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","public_statistics","random_order","parent_order","use_dropdown","scale_export","random_group");
diff --git a/application/modules/DateQuestion.php b/application/modules/DateQuestion.php
index 6a6493c9c1f..7e3e1f7adb6 100644
--- a/application/modules/DateQuestion.php
+++ b/application/modules/DateQuestion.php
@@ -274,24 +274,24 @@ public function filter($value, $type)
return $datetimeobj->convert("Y-m-d H:i:s");
}
}
-
+
public function getExtendedAnswer($value, $language)
{
$qidattributes = getQuestionAttributeValues($this->id);
$dateformatdetails = getDateFormatDataForQID($qidattributes, $this->surveyid);
return convertDateTimeFormat($value,"Y-m-d H:i:s",$dateformatdetails['phpdate']);
}
-
+
public function loadAnswer($value)
{
return $value==null?'':$value;
}
-
+
public function getDBField()
{
return 'datetime';
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("dropdown_dates","dropdown_dates_year_min","dropdown_dates_year_max","statistics_showgraph","statistics_graphtype","hide_tip","hidden","reverse","page_break","date_format","dropdown_dates_minute_step","dropdown_dates_month_style","random_group");
diff --git a/application/modules/DisplayQuestion.php b/application/modules/DisplayQuestion.php
index 1bbae1e9765..612848cdb71 100644
--- a/application/modules/DisplayQuestion.php
+++ b/application/modules/DisplayQuestion.php
@@ -12,7 +12,7 @@ public function getAnswerHTML()
}
$answer .= '';
-
+
return $answer;
}
@@ -20,12 +20,12 @@ public function getDataEntry($idrow, &$fnames, $language)
{
return "";
}
-
+
public function getDBField()
{
return 'VARCHAR(1)';
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","time_limit","time_limit_action","time_limit_disable_next","time_limit_disable_prev","time_limit_countdown_message","time_limit_timer_style","time_limit_message_delay","time_limit_message","time_limit_message_style","time_limit_warning","time_limit_warning_display_time","time_limit_warning_message","time_limit_warning_style","time_limit_warning_2","time_limit_warning_2_display_time","time_limit_warning_2_message","time_limit_warning_2_style","random_group");
diff --git a/application/modules/DualRadioArrayQuestion.php b/application/modules/DualRadioArrayQuestion.php
index 85042cfcd91..d5b68f41d80 100644
--- a/application/modules/DualRadioArrayQuestion.php
+++ b/application/modules/DualRadioArrayQuestion.php
@@ -647,7 +647,7 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
if (mb_substr($this->fieldname, -1) == 0)
@@ -668,7 +668,7 @@ public function getFullAnswer($answerCode, $export, $survey)
return null;
}
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
$answerScale = substr($this->fieldname, -1) + 1;
@@ -682,7 +682,32 @@ public function getFieldSubHeading($survey, $export, $code)
}
return '';
}
-
+
+ public function getCsuffix()
+ {
+ return $this->aid . '#' . $this->scale;
+ }
+
+ public function getSqsuffix()
+ {
+ return '_' . $this->aid;
+ }
+
+ public function getVarName()
+ {
+ return $this->title . '_' . $this->aid . '_' . $this->scale;
+ }
+
+ public function getQuestion()
+ {
+ return $this->sq . '[' . $this->scalename . ']';
+ }
+
+ public function getRowDivID()
+ {
+ return substr($this->fieldname,0,-2);
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","repeat_headings","array_filter","array_filter_exclude","array_filter_style","dropdown_prepostfix","dropdown_separators","dualscale_headerA","dualscale_headerB","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","parent_order","use_dropdown","scale_export","random_group");
diff --git a/application/modules/EquationQuestion.php b/application/modules/EquationQuestion.php
index d9ee62cfa76..a106a28e894 100644
--- a/application/modules/EquationQuestion.php
+++ b/application/modules/EquationQuestion.php
@@ -23,12 +23,23 @@ public function retrieveText()
{
return '
' . $this->text . '
';
}
-
+
public function getDBField()
{
return 'text';
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
+ public function onlyNumeric()
+ {
+ $attributes = $this->getAttributeValues();
+ return array_key_exists('numbers_only', $attributes) && $attributes['numbers_only'] == 1;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hidden","numbers_only","page_break","public_statistics","scale_export");
diff --git a/application/modules/FileQuestion.php b/application/modules/FileQuestion.php
index 655ee1d7927..c0748be2d25 100644
--- a/application/modules/FileQuestion.php
+++ b/application/modules/FileQuestion.php
@@ -204,7 +204,7 @@ public function getFileValidationMessage()
}
return $qtitle;
}
-
+
public function createFieldmap($type=null)
{
$clang = Yii::app()->lang;
@@ -241,12 +241,12 @@ public function createFieldmap($type=null)
$map[$fieldname2]=$field2;
return $map;
}
-
+
public function fileUpload()
{
return true;
}
-
+
public function filter($value, $type)
{
switch ($type)
@@ -293,7 +293,7 @@ public function filter($value, $type)
}
}
}
-
+
public function getExtendedAnswer($value, $language)
{
if (substr($this->fieldname, -9) == 'filecount') return $language->gT("File count")." [$value]";
@@ -310,7 +310,7 @@ public function getExtendedAnswer($value, $language)
}
return '';
}
-
+
public function getDBField()
{
if (strpos($this->fieldname, "_"))
@@ -318,7 +318,17 @@ public function getDBField()
else
return "text";
}
-
+
+ public function jsVarNameOn()
+ {
+ return $this->fieldname;
+ }
+
+ public function jsVarName()
+ {
+ return $this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","show_title","show_comment","max_filesize","max_num_of_files","min_num_of_files","allowed_filetypes","random_group");
diff --git a/application/modules/FiveListQuestion.php b/application/modules/FiveListQuestion.php
index b13d72f6897..70c0c31be7d 100644
--- a/application/modules/FiveListQuestion.php
+++ b/application/modules/FiveListQuestion.php
@@ -125,7 +125,7 @@ public function getAnswerHTML()
";
}
-
+
return $answer;
}
@@ -138,17 +138,22 @@ public function getDataEntry($idrow, &$fnames, $language)
}
return $output;
}
-
+
public function getDBField()
{
return 'VARCHAR(1)';
}
-
+
public function getSPSSAnswers()
{
return array();
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","public_statistics","slider_rating","random_group");
diff --git a/application/modules/FiveRadioArrayQuestion.php b/application/modules/FiveRadioArrayQuestion.php
index d823549cbbd..db3974aa82c 100644
--- a/application/modules/FiveRadioArrayQuestion.php
+++ b/application/modules/FiveRadioArrayQuestion.php
@@ -167,33 +167,33 @@ public function getDataEntry($idrow, &$fnames, $language)
}
//public function getInputNames() - inherited
-
+
public function getExtendedAnswer($value, $language)
{
return $value;
}
-
+
public function getQuotaValue($value)
{
$value = explode('-',$value);
return array($this->surveyid.'X'.$this->gid.'X'.$value[0] => $value[1]);
}
-
+
public function setAssessment()
{
return false;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
return $answerCode;
}
-
+
public function getAnswerArray($em)
{
return null;
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","parent_order","random_group");
diff --git a/application/modules/GenderQuestion.php b/application/modules/GenderQuestion.php
index d591343d12a..14b30d56082 100644
--- a/application/modules/GenderQuestion.php
+++ b/application/modules/GenderQuestion.php
@@ -54,7 +54,7 @@ public function getDataEntry($idrow, &$fnames, $language)
);
return CHtml::listBox($this->fieldname, $idrow[$this->fieldname], $select_options);
}
-
+
public function getExtendedAnswer($value, $language)
{
switch($value)
@@ -64,17 +64,17 @@ public function getExtendedAnswer($value, $language)
default: return $language->gT("No answer")." [$value]";
}
}
-
+
public function getQuotaValue($value)
{
return array($this->surveyid.'X'.$this->gid.'X'.$this->id => $value);
}
-
+
public function getDBField()
{
return 'VARCHAR(1)';
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
switch ($answerCode)
@@ -87,14 +87,14 @@ public function getFullAnswer($answerCode, $export, $survey)
return $export->translator->translate('N/A', $export->languageCode);
}
}
-
+
public function getSPSSAnswers()
{
$answers[] = array('code'=>1, 'value'=>$clang->gT('Female'));
$answers[] = array('code'=>2, 'value'=>$clang->gT('Male'));
return $answers;
}
-
+
public function getSPSSData($data, $iLength, $na)
{
if ($data == 'F')
@@ -106,13 +106,18 @@ public function getSPSSData($data, $iLength, $na)
return $na;
}
}
-
+
public function getAnswerArray($em)
{
$clang = Yii::app()->lang;
return array('M' => $clang->gT("Male"), 'F' => $clang->gT("Female"));
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("display_columns","statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","public_statistics","scale_export","random_group");
diff --git a/application/modules/HugeTextQuestion.php b/application/modules/HugeTextQuestion.php
index 767c55cb74d..5f4ab529035 100644
--- a/application/modules/HugeTextQuestion.php
+++ b/application/modules/HugeTextQuestion.php
@@ -78,12 +78,12 @@ public function getDataEntry($idrow, &$fnames, $language)
return "\t\n";
}
-
+
public function getDBField()
{
return 'test';
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("display_rows","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","statistics_showgraph","statistics_graphtype","hide_tip","hidden","maximum_chars","page_break","text_input_width","time_limit","time_limit_action","time_limit_disable_next","time_limit_disable_prev","time_limit_countdown_message","time_limit_timer_style","time_limit_message_delay","time_limit_message","time_limit_message_style","time_limit_warning","time_limit_warning_display_time","time_limit_warning_message","time_limit_warning_style","time_limit_warning_2","time_limit_warning_2_display_time","time_limit_warning_2_message","time_limit_warning_2_style","random_group");
diff --git a/application/modules/IDRadioArrayQuestion.php b/application/modules/IDRadioArrayQuestion.php
index dda8d532437..693e879e24f 100644
--- a/application/modules/IDRadioArrayQuestion.php
+++ b/application/modules/IDRadioArrayQuestion.php
@@ -185,7 +185,7 @@ public function getDataEntry($idrow, &$fnames, $language)
}
//public function getInputNames() - inherited
-
+
public function getExtendedAnswer($value, $language)
{
switch($value)
@@ -196,12 +196,12 @@ public function getExtendedAnswer($value, $language)
default: return $value;
}
}
-
+
public function setAssessment()
{
return false;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
switch ($answerCode)
@@ -214,7 +214,7 @@ public function getFullAnswer($answerCode, $export, $survey)
return $export->translator->translate('Decrease', $export->languageCode);
}
}
-
+
public function getSPSSAnswers()
{
$answers[] = array('code'=>1, 'value'=>$clang->gT('Increase'));
@@ -222,7 +222,7 @@ public function getSPSSAnswers()
$answers[] = array('code'=>3, 'value'=>$clang->gT('Decrease'));
return $answers;
}
-
+
public function getSPSSData($data, $iLength, $na)
{
if ($data == 'I')
@@ -236,13 +236,13 @@ public function getSPSSData($data, $iLength, $na)
return $na;
}
}
-
+
public function getAnswerArray($em)
{
$clang = Yii::app()->lang;
return array('I' => $clang->gT("Increase"), 'S' => $clang->gT("Same"), 'D' => $clang->gT("Decrease"));
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","parent_order","scale_export","random_group");
diff --git a/application/modules/LanguageQuestion.php b/application/modules/LanguageQuestion.php
index d235d776b13..69205fd6843 100644
--- a/application/modules/LanguageQuestion.php
+++ b/application/modules/LanguageQuestion.php
@@ -70,17 +70,22 @@ public function getExtendedAnswer($value, $language)
}
return $value;
}
-
+
public function getQuotaValue($value)
{
return array($this->surveyid.'X'.$this->gid.'X'.$this->id => $value);
}
-
+
public function getDBField()
{
return 'VARCHAR(20)';
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","random_group");
diff --git a/application/modules/ListQuestion.php b/application/modules/ListQuestion.php
index 6c212126409..68230a92436 100644
--- a/application/modules/ListQuestion.php
+++ b/application/modules/ListQuestion.php
@@ -62,7 +62,7 @@ public function getAnswerHTML()
$wrapper = setupColumns($dcols , $anscount,"answers-list radio-list","answer-item radio-item");
$answer = $wrapper['whole-start'];
-
+
//Time Limit Code
if (trim($aQuestionAttributes['time_limit'])!='')
{
@@ -332,10 +332,10 @@ public function getTitle()
{
return $this->text . "
\n".$clang->gT('Choose one of the following answers').'';
}
-
+
return $this->text;
}
-
+
public function getHelp()
{
$clang=Yii::app()->lang;
@@ -344,10 +344,10 @@ public function getHelp()
{
return $clang->gT('Choose one of the following answers');
}
-
+
return '';
}
-
+
public function createFieldmap($type=null)
{
$clang = Yii::app()->lang;
@@ -372,7 +372,7 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getExtendedAnswer($value, $language)
{
if ($value == "-oth-")
@@ -387,12 +387,12 @@ public function getExtendedAnswer($value, $language)
}
return $value;
}
-
+
public function getQuotaValue($value)
{
return array($this->surveyid.'X'.$this->gid.'X'.$this->id => $value);
}
-
+
public function setAssessment()
{
$this->assessment_value = 0;
@@ -408,7 +408,7 @@ public function setAssessment()
}
return true;
}
-
+
public function getDBField()
{
if ($this->aid != 'other' && strpos($this->aid,'comment')===false && strpos($this->aid,'othercomment')===false)
@@ -420,7 +420,7 @@ public function getDBField()
return "text";
}
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
if (mb_substr($this->fieldname, -5, 5) == 'other')
@@ -447,7 +447,7 @@ public function getFullAnswer($answerCode, $export, $survey)
}
}
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
if ($this->aid == 'other')
@@ -456,7 +456,7 @@ public function getFieldSubHeading($survey, $export, $code)
}
return '';
}
-
+
public function getSPSSAnswers()
{
global $language, $length_vallabel;
@@ -476,7 +476,7 @@ public function getSPSSAnswers()
return $answers;
}
}
-
+
public function getAnswerArray($em)
{
$ansArray = (isset($em->qans[$this->id]) ? $em->qans[$this->id] : NULL);
@@ -500,7 +500,25 @@ public function getAnswerArray($em)
}
return $ansArray;
}
-
+
+ public function jsVarNameOn()
+ {
+ if (preg_match("/other$/",$this->fieldname))
+ {
+ return 'answer' . $this->fieldname . 'text';
+ }
+ else
+ {
+ return 'java' . $this->fieldname;
+ }
+ }
+
+ public function onlyNumeric()
+ {
+ $attributes = $this->getAttributeValues();
+ return array_key_exists('other_numbers_only', $attributes) && $attributes['numbers_only'] == 1 && preg_match('/other$/',$this->fieldname);
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("alphasort","array_filter","array_filter_exclude","array_filter_style","display_columns","statistics_showgraph","statistics_graphtype","hide_tip","hidden","other_comment_mandatory","other_numbers_only","other_replace_text","page_break","public_statistics","random_order","parent_order","scale_export","random_group","time_limit","time_limit_action","time_limit_disable_next","time_limit_disable_prev","time_limit_countdown_message","time_limit_timer_style","time_limit_message_delay","time_limit_message","time_limit_message_style","time_limit_warning","time_limit_warning_display_time","time_limit_warning_message","time_limit_warning_style","time_limit_warning_2","time_limit_warning_2_display_time","time_limit_warning_2_message","time_limit_warning_2_style");
diff --git a/application/modules/LongTextQuestion.php b/application/modules/LongTextQuestion.php
index 6243403c697..54f029002da 100644
--- a/application/modules/LongTextQuestion.php
+++ b/application/modules/LongTextQuestion.php
@@ -82,12 +82,12 @@ public function getDataEntry($idrow, &$fnames, $language)
return "\t\n";
}
-
+
public function getDBField()
{
return 'text';
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("display_rows","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","statistics_showgraph","statistics_graphtype","hide_tip","hidden","maximum_chars","page_break","text_input_width","time_limit","time_limit_action","time_limit_disable_next","time_limit_disable_prev","time_limit_countdown_message","time_limit_timer_style","time_limit_message_delay","time_limit_message","time_limit_message_style","time_limit_warning","time_limit_warning_display_time","time_limit_warning_message","time_limit_warning_style","time_limit_warning_2","time_limit_warning_2_display_time","time_limit_warning_2_message","time_limit_warning_2_style","random_group");
diff --git a/application/modules/MultinumericalQuestion.php b/application/modules/MultinumericalQuestion.php
index 76e3f327f9a..891446ed552 100644
--- a/application/modules/MultinumericalQuestion.php
+++ b/application/modules/MultinumericalQuestion.php
@@ -185,7 +185,7 @@ public function getAnswerHTML()
$sliderleft="$sliderleft
";
$sliderright="$sliderright
";
}
-
+
// color code missing mandatory questions red
if ($this->mandatory=='Y' && (($_SESSION['survey_'.$this->surveyid]['step'] == $_SESSION['survey_'.$this->surveyid]['prevstep'])
|| ($_SESSION['survey_'.$this->surveyid]['maxstep'] > $_SESSION['survey_'.$this->surveyid]['step']))
@@ -352,7 +352,7 @@ protected function getChildren()
}
return $this->children = dbExecuteAssoc($ansquery)->readAll(); //Checked
}
-
+
public function createFieldmap($type=null)
{
$map = array();
@@ -390,7 +390,7 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function filter($value, $type)
{
if (trim($value)=='') {
@@ -406,22 +406,27 @@ public function filter($value, $type)
return $value;
}
}
-
+
public function loadAnswer($value)
{
return $value==null?'':$value;
}
-
+
public function getDBField()
{
return 'float';
}
-
+
public function adjustSize($size)
{
return $size . '.' . ($size-1);
}
-
+
+ public function onlyNumeric()
+ {
+ return true;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("array_filter","array_filter_exclude","array_filter_style","equals_num_value","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","max_num_value","max_num_value_n","maximum_chars","min_answers","min_num_value","min_num_value_n","page_break","prefix","public_statistics","random_order","parent_order","slider_layout","slider_min","slider_max","slider_accuracy","slider_default","slider_middlestart","slider_showminmax","slider_separator","suffix","text_input_width","random_group","value_range_allows_missing");
diff --git a/application/modules/MultitextQuestion.php b/application/modules/MultitextQuestion.php
index 0a50cebce49..c12f5ae44e7 100644
--- a/application/modules/MultitextQuestion.php
+++ b/application/modules/MultitextQuestion.php
@@ -137,7 +137,7 @@ public function getAnswerHTML()
{
$myfname = $this->fieldname.$ansrow['title'];
if ($ansrow['question'] == "") {$ansrow['question'] = " ";}
-
+
// color code missing mandatory questions red
if ($this->mandatory=='Y' && (($_SESSION['survey_'.$this->surveyid]['step'] == $_SESSION['survey_'.$this->surveyid]['prevstep'])
|| ($_SESSION['survey_'.$this->surveyid]['maxstep'] > $_SESSION['survey_'.$this->surveyid]['step']))
@@ -201,7 +201,7 @@ protected function getChildren()
}
return $this->children = dbExecuteAssoc($ansquery)->readAll(); //Checked
}
-
+
public function createFieldmap($type=null)
{
$map = array();
@@ -238,12 +238,43 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getDBField()
{
return 'text';
}
-
+
+ public function onlyNumeric()
+ {
+ $attributes = $this->getAttributeValues();
+ return array_key_exists('numbers_only', $attributes) && $attributes['numbers_only'] == 1;
+ }
+
+ public function getCsuffix()
+ {
+ return $this->aid;
+ }
+
+ public function getSqsuffix()
+ {
+ return '_' . $this->aid;
+ }
+
+ public function getVarName()
+ {
+ return $this->title . '_' . $this->aid;
+ }
+
+ public function getQuestion()
+ {
+ return $this->sq;
+ }
+
+ public function getRowDivID()
+ {
+ return $this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("array_filter","array_filter_exclude","array_filter_style","display_rows","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","maximum_chars","min_answers","numbers_only","page_break","prefix","random_order","parent_order","suffix","text_input_width","random_group");
diff --git a/application/modules/NumberArrayQuestion.php b/application/modules/NumberArrayQuestion.php
index ec94339aea0..93b98941509 100644
--- a/application/modules/NumberArrayQuestion.php
+++ b/application/modules/NumberArrayQuestion.php
@@ -411,7 +411,7 @@ public function getDataEntry($idrow, &$fnames, $language)
}
//public function getInputNames() - inherited
-
+
public function createFieldmap($type=null)
{
$map = array();
@@ -458,12 +458,12 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getDBField()
{
return 'text';
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
//The headers created by this section of code are significantly different from
@@ -490,7 +490,7 @@ public function getFieldSubHeading($survey, $export, $code)
return ' ['.$export->stripTagsFull($scaleZeroText).
']['.$export->stripTagsFull($scaleOneText).']';
}
-
+
public function getSPSSAnswers()
{
$answers = array();
@@ -524,7 +524,32 @@ public function getSPSSAnswers()
}
return $answers;
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'answer'.$this->fieldname;
+ }
+
+ public function onlyNumeric()
+ {
+ return true;
+ }
+
+ public function getSqsuffix()
+ {
+ return '_' . substr($this->aid,0,strpos($this->aid,'_'));
+ }
+
+ public function getQuestion()
+ {
+ return $this->sq1 . '[' . $this->sq2 . ']';
+ }
+
+ public function getRowDivID()
+ {
+ return substr($this->fieldname,0,strpos($this->fieldname,'_'));
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","repeat_headings","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","maximum_chars","min_answers","multiflexible_max","multiflexible_min","multiflexible_step","multiflexible_checkbox","reverse","input_boxes","page_break","public_statistics","random_order","parent_order","scale_export","random_group");
diff --git a/application/modules/NumericalQuestion.php b/application/modules/NumericalQuestion.php
index d409b7b693f..6f327a6a8fd 100644
--- a/application/modules/NumericalQuestion.php
+++ b/application/modules/NumericalQuestion.php
@@ -111,22 +111,27 @@ public function filter($value, $type)
return $value;
}
}
-
+
public function loadAnswer($value)
{
return $value==null?'':$value;
}
-
+
public function getDBField()
{
return 'decimal (30,10)';
}
-
+
public function adjustSize($size)
{
return $size . '.' . ($size-1);
}
-
+
+ public function onlyNumeric()
+ {
+ return true;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_num_value_n","maximum_chars","min_num_value_n","num_value_int_only","page_break","prefix","public_statistics","suffix","text_input_width","random_group");
diff --git a/application/modules/QuestionModule.php b/application/modules/QuestionModule.php
index be8c52c1deb..fcfc63a6217 100644
--- a/application/modules/QuestionModule.php
+++ b/application/modules/QuestionModule.php
@@ -10,7 +10,7 @@ public function __construct($data = array())
foreach($data as $key => $datum)
$this->$key = $datum;
}
-
+
public function __get($name)
{
if (array_key_exists($name, $this->data)) {
@@ -22,22 +22,22 @@ public function __get($name)
E_USER_NOTICE);
return null;
}
-
+
public function __set($name, $value)
{
$this->data[$name] = $value;
}
-
+
public function __isset($name)
{
return isset($this->data[$name]);
}
-
+
public function __unset($name)
{
unset($this->data[$name]);
}
-
+
abstract public function getAnswerHTML();
abstract public function getDataEntry($idrow, &$fnames, $language);
@@ -98,22 +98,22 @@ public function getAttributeValues()
}
return $this->attributes=$aResultAttributes;
}
-
+
public function getTitle()
{
return $this->text;
}
-
+
public function getHelp()
{
return '';
}
-
+
public function getFileValidationMessage()
{
return '';
}
-
+
public function mandatoryPopup($notanswered=null)
{
global $showpopups;
@@ -125,7 +125,7 @@ public function mandatoryPopup($notanswered=null)
}
return false;
}
-
+
public function getPopup($notanswered=null)
{
global $showpopups;
@@ -144,7 +144,7 @@ public function getPopup($notanswered=null)
}
return false;
}
-
+
public function createFieldmap($type=null)
{
$map['fieldname']=$this->fieldname;
@@ -166,54 +166,54 @@ public function createFieldmap($type=null)
$map['q']=$q;
return array($this->fieldname=>$map);
}
-
+
public function fileUpload()
{
return false;
}
-
+
public function filter($value, $type)
{
return $value;
}
-
+
public function getExtendedAnswer($value, $language)
{
return $value;
}
-
+
public function getQuotaValue($value)
{
return false;
}
-
+
public function retrieveText()
{
return $this->text;
}
-
+
public function loadAnswer($value)
{
return $value;
}
-
+
public function setAssessment()
{
return false;
}
-
+
public function getDBField()
{
return 'VARCHAR(5)';
}
-
+
public function prepareConditions($row)
{
if (preg_match("/^\+(.*)$/",$row['cfieldname'],$cfieldnamematch))
{ // this condition uses a single checkbox as source
$row['cfieldname'] = $cfieldnamematch[1];
}
-
+
return array("cfieldname"=>$row['cfieldname'],
"value"=>$row['value'],
"matchfield"=>$row['cfieldname'],
@@ -222,17 +222,17 @@ public function prepareConditions($row)
"subqid"=>$row['cfieldname'].'NAOK'
);
}
-
+
public function transformResponseValue($export, $value, $options)
{
return $export->stripTagsFull($value);
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
return $answerCode;
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
if ($code && isset($this->aid) && !empty($this->aid)) return '['.$this->aid.']';
@@ -254,12 +254,12 @@ public function getFieldSubHeading($survey, $export, $code)
}
return '';
}
-
+
public function getSPSSAnswers()
{
return array();
}
-
+
public function getSPSSData($data, $iLength, $na)
{
$strTmp=mb_substr(stripTagsFull($data), 0, $iLength);
@@ -272,18 +272,58 @@ public function getSPSSData($data, $iLength, $na)
return $na;
}
}
-
+
public function getAnswerArray($em)
{
return null;
}
-
+
public function adjustSize($size)
{
return $size;
}
-
- abstract public function availableAttributes($attr = false);
+
+ public function jsVarNameOn()
+ {
+ return 'answer'.$this->fieldname;
+ }
+
+ public function jsVarName()
+ {
+ return 'java'.$this->fieldname;
+ }
+
+ public function onlyNumeric()
+ {
+ return false;
+ }
+
+ public function getCsuffix()
+ {
+ return '';
+ }
+
+ public function getSqsuffix()
+ {
+ return '';
+ }
+
+ public function getVarName()
+ {
+ return $this->title . ($this->aid != '' ? '_' . $this->aid : '');
+ }
+
+ public function getQuestion()
+ {
+ return $this->text;
+ }
+
+ public function getRowDivID()
+ {
+ return null;
+ }
+
+ abstract public function availableAttributes($attr = false);
abstract public function questionProperties($prop = false);
}
?>
\ No newline at end of file
diff --git a/application/modules/RadioArrayQuestion.php b/application/modules/RadioArrayQuestion.php
index 5e9dc353c79..daf7524c50b 100644
--- a/application/modules/RadioArrayQuestion.php
+++ b/application/modules/RadioArrayQuestion.php
@@ -368,7 +368,7 @@ public function getExtendedAnswer($value, $language)
}
return $value;
}
-
+
public function setAssessment()
{
$this->assessment_value = 0;
@@ -384,13 +384,13 @@ public function setAssessment()
}
return true;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
$answers = $survey->getAnswers($this->id, 0);
return (isset($answers[$answerCode])) ? $answers[$answerCode]['answer'] : "";
}
-
+
public function getSPSSAnswers()
{
global $language, $length_vallabel;
@@ -408,12 +408,12 @@ public function getSPSSAnswers()
}
return $answers;
}
-
+
public function getAnswerArray($em)
{
return (isset($em->qans[$this->id]) ? $em->qans[$this->id] : NULL);
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","repeat_headings","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","parent_order","use_dropdown","scale_export","random_group");
diff --git a/application/modules/RankingQuestion.php b/application/modules/RankingQuestion.php
index 04c36b9b02e..17f8191adab 100644
--- a/application/modules/RankingQuestion.php
+++ b/application/modules/RankingQuestion.php
@@ -280,7 +280,7 @@ protected function getAnswers()
}
return $this->answers = dbExecuteAssoc($ansquery)->readAll(); //Checked
}
-
+
public function createFieldmap($type=null)
{
$clang = Yii::app()->lang;
@@ -312,7 +312,7 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getExtendedAnswer($value, $language)
{
if ($value == "-oth-")
@@ -327,7 +327,7 @@ public function getExtendedAnswer($value, $language)
}
return $value;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
$answers = $survey->getAnswers($this->id);
@@ -340,12 +340,12 @@ public function getFullAnswer($answerCode, $export, $survey)
return null;
}
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
return ' ['.$export->translate('Ranking', $export->languageCode).' '.$this->aid.']';
}
-
+
public function getSPSSAnswers()
{
global $language, $length_vallabel;
@@ -361,12 +361,12 @@ public function getSPSSAnswers()
}
return $answers;
}
-
+
public function getAnswerArray($em)
{
return (isset($em->qans[$this->id]) ? $em->qans[$this->id] : NULL);
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","showpopups","samechoiceheight","samelistheight", "parent_order","rank_title","choice_title","random_group");
diff --git a/application/modules/SelectQuestion.php b/application/modules/SelectQuestion.php
index 7da1480477e..9fdfa1abb77 100644
--- a/application/modules/SelectQuestion.php
+++ b/application/modules/SelectQuestion.php
@@ -25,7 +25,7 @@ public function getAnswerHTML()
{
$optCategorySeparator = $aQuestionAttributes['category_separator'];
}
-
+
//Time Limit Code
if (trim($aQuestionAttributes['time_limit'])!='')
{
@@ -255,18 +255,30 @@ protected function getOther()
$result = Yii::app()->db->createCommand($query)->query()->readAll();
return $this->other = $result[0]['other']; //Checked
}
-
+
//public function getTitle() - inherited
-
+
//public function getHelp() - inherited
-
+
//public function createFieldmap($type=null) - inherited
-
+
public function getQuotaValue($value)
{
return array($this->surveyid.'X'.$this->gid.'X'.$this->id => $value);
}
-
+
+ public function jsVarNameOn()
+ {
+ if (preg_match("/other$/",$this->fieldname))
+ {
+ return 'othertext' . substr($this->fieldname,0,-5);
+ }
+ else
+ {
+ return 'java' . $this->fieldname;
+ }
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("alphasort","category_separator","statistics_showgraph","statistics_graphtype","hide_tip","hidden","other_comment_mandatory","other_replace_text","page_break","public_statistics","random_order","parent_order","dropdown_size","dropdown_prefix","scale_export","random_group","time_limit","time_limit_action","time_limit_disable_next","time_limit_disable_prev","time_limit_countdown_message","time_limit_timer_style","time_limit_message_delay","time_limit_message","time_limit_message_style","time_limit_warning","time_limit_warning_display_time","time_limit_warning_message","time_limit_warning_style","time_limit_warning_2","time_limit_warning_2_display_time","time_limit_warning_2_message","time_limit_warning_2_style");
diff --git a/application/modules/ShortTextQuestion.php b/application/modules/ShortTextQuestion.php
index 1cc403fb9a8..119f16164bd 100644
--- a/application/modules/ShortTextQuestion.php
+++ b/application/modules/ShortTextQuestion.php
@@ -202,13 +202,19 @@ public function getDataEntry($idrow, &$fnames, $language)
return "\t\n";
}
-
+
public function getDBField()
{
if (Yii::app()->db->driverName == 'mysql' || Yii::app()->db->driverName == 'mysqli') return 'text';
return 'string';
}
-
+
+ public function onlyNumeric()
+ {
+ $attributes = $this->getAttributeValues();
+ return array_key_exists('numbers_only', $attributes) && $attributes['numbers_only'] == 1;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("display_rows","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","location_city","location_state","location_postal","location_country","statistics_showmap","statistics_showgraph","statistics_graphtype","location_mapservice","location_mapwidth","location_mapheight","location_nodefaultfromip","location_defaultcoordinates","location_mapzoom","hide_tip","hidden","maximum_chars","numbers_only","page_break","prefix","suffix","text_input_width","time_limit","time_limit_action","time_limit_disable_next","time_limit_disable_prev","time_limit_countdown_message","time_limit_timer_style","time_limit_message_delay","time_limit_message","time_limit_message_style","time_limit_warning","time_limit_warning_display_time","time_limit_warning_message","time_limit_warning_style","time_limit_warning_2","time_limit_warning_2_display_time","time_limit_warning_2_message","time_limit_warning_2_style","random_group");
diff --git a/application/modules/TenRadioArrayQuestion.php b/application/modules/TenRadioArrayQuestion.php
index a1af7f84774..e2b746080fc 100644
--- a/application/modules/TenRadioArrayQuestion.php
+++ b/application/modules/TenRadioArrayQuestion.php
@@ -143,38 +143,38 @@ public function getDataEntry($idrow, &$fnames, $language)
}
//public function getInputNames() - inherited
-
+
public function getExtendedAnswer($value, $language)
{
return $value;
}
-
+
public function getQuotaValue($value)
{
$value = explode('-',$value);
return array($this->surveyid.'X'.$this->gid.'X'.$value[0] => $value[1]);
}
-
+
public function setAssessment()
{
return false;
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
return $answerCode;
}
-
+
public function getSPSSAnswers()
{
return array();
}
-
+
public function getAnswerArray($em)
{
return null;
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","parent_order","random_group");
diff --git a/application/modules/TextArrayQuestion.php b/application/modules/TextArrayQuestion.php
index b5e4738d051..b6912bc98e3 100644
--- a/application/modules/TextArrayQuestion.php
+++ b/application/modules/TextArrayQuestion.php
@@ -388,7 +388,7 @@ public function getDataEntry($idrow, &$fnames, $language)
}
//public function getInputNames() - inherited
-
+
public function createFieldmap($type=null)
{
$map = array();
@@ -435,12 +435,12 @@ public function createFieldmap($type=null)
}
return $map;
}
-
+
public function getDBField()
{
return 'text';
}
-
+
public function getFieldSubHeading($survey, $export, $code)
{
//The headers created by this section of code are significantly different from
@@ -467,7 +467,33 @@ public function getFieldSubHeading($survey, $export, $code)
return ' ['.$export->stripTagsFull($scaleZeroText).
']['.$export->stripTagsFull($scaleOneText).']';
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'answer'.$this->fieldname;
+ }
+
+ public function onlyNumeric()
+ {
+ $attributes = $this->getAttributeValues();
+ return array_key_exists('numbers_only', $attributes) && $attributes['numbers_only'] == 1;
+ }
+
+ public function getSqsuffix()
+ {
+ return '_' . substr($this->aid,0,strpos($this->aid,'_'));
+ }
+
+ public function getQuestion()
+ {
+ return $this->sq1 . '[' . $this->sq2 . ']';
+ }
+
+ public function getRowDivID()
+ {
+ return substr($this->fieldname,0,strpos($this->fieldname,'_'));
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","repeat_headings","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","em_validation_sq","em_validation_sq_tip","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","maximum_chars","min_answers","numbers_only","show_totals","show_grand_total","page_break","random_order","parent_order","text_input_width","random_group");
diff --git a/application/modules/YNQuestion.php b/application/modules/YNQuestion.php
index 72048838bf7..2e1cd48f848 100644
--- a/application/modules/YNQuestion.php
+++ b/application/modules/YNQuestion.php
@@ -59,7 +59,7 @@ public function getDataEntry($idrow, &$fnames, $language)
."\t\n";
return $output;
}
-
+
public function getExtendedAnswer($value, $language)
{
switch($value)
@@ -69,17 +69,17 @@ public function getExtendedAnswer($value, $language)
default: return $language->gT("No answer")." [$value]";
}
}
-
+
public function getQuotaValue($value)
{
return array($this->surveyid.'X'.$this->gid.'X'.$this->id => $value);
}
-
+
public function getDBField()
{
return 'VARCHAR(1)';
}
-
+
public function transformResponseValues($value, $options)
{
if ($value == 'N' && $options->convertN)
@@ -94,7 +94,7 @@ public function transformResponseValues($value, $options)
}
return parent::transformResponseValues($value, $options);
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
switch ($answerCode)
@@ -107,14 +107,14 @@ public function getFullAnswer($answerCode, $export, $survey)
return $export->translator->translate('N/A', $export->languageCode);
}
}
-
+
public function getSPSSAnswers()
{
$answers[] = array('code'=>1, 'value'=>$clang->gT('Yes'));
$answers[] = array('code'=>2, 'value'=>$clang->gT('No'));
return $answers;
}
-
+
public function getSPSSData($data, $iLength, $na)
{
if ($data == 'Y')
@@ -126,13 +126,18 @@ public function getSPSSData($data, $iLength, $na)
return $na;
}
}
-
+
public function getAnswerArray($em)
{
$clang = Yii::app()->lang;
return array('Y' => $clang->gT("Yes"), 'N' => $clang->gT("No"));
}
-
+
+ public function jsVarNameOn()
+ {
+ return 'java'.$this->fieldname;
+ }
+
public function availableAttributes($attr = false)
{
$attrs=array("statistics_showgraph","statistics_graphtype","hide_tip","hidden","page_break","public_statistics","scale_export","random_group");
diff --git a/application/modules/YNRadioArrayQuestion.php b/application/modules/YNRadioArrayQuestion.php
index 950225bd979..f47da65fbef 100644
--- a/application/modules/YNRadioArrayQuestion.php
+++ b/application/modules/YNRadioArrayQuestion.php
@@ -180,7 +180,7 @@ public function getExtendedAnswer($value, $language)
default: return $value;
}
}
-
+
public function getFullAnswer($answerCode, $export, $survey)
{
switch ($answerCode)
@@ -193,7 +193,7 @@ public function getFullAnswer($answerCode, $export, $survey)
return $export->translator->translate('Uncertain', $export->languageCode);
}
}
-
+
public function getSPSSData($data, $iLength, $na)
{
if ($data == 'Y')
@@ -207,7 +207,7 @@ public function getSPSSData($data, $iLength, $na)
return $na;
}
}
-
+
public function getSPSSAnswers()
{
$answers[] = array('code'=>1, 'value'=>$clang->gT('Yes'));
@@ -215,13 +215,13 @@ public function getSPSSAnswers()
$answers[] = array('code'=>3, 'value'=>$clang->gT('Uncertain'));
return $answers;
}
-
+
public function getAnswerArray($em)
{
$clang = Yii::app()->lang;
return array('Y' => $clang->gT("Yes"), 'N' => $clang->gT("No"), 'U' => $clang->gT("Uncertain"));
}
-
+
public function availableAttributes($attr = false)
{
$attrs=array("answer_width","array_filter","array_filter_exclude","array_filter_style","em_validation_q","em_validation_q_tip","exclude_all_others","statistics_showgraph","statistics_graphtype","hide_tip","hidden","max_answers","min_answers","page_break","public_statistics","random_order","parent_order","scale_export","random_group");