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");