Ejemplo n.º 1
0
 /**
  * This function generates an array containing the fieldcode, and matching data in the same order as the activate script
  *
  * @param string $surveyId The Survey ID
  * @param mixed $style 'short' (default) or 'full' - full creates extra information like default values
  * @param mixed $force_refresh - Forces to really refresh the array, not just take the session copy
  * @param int $questionid Limit to a certain qid only (for question preview) - default is false
  * @return array
  */
 public static function createFieldMap(LimeSurvey $survey, $style = 'short', $force_refresh = false, $questionid = false, $sQuestionLanguage = null)
 {
     //        global $dbprefix, $connect, $globalfieldmap, $clang, $aDuplicateQIDs;
     //        $surveyid=sanitize_int($surveyid);
     //checks to see if fieldmap has already been built for this page.
     //        if (isset(static::$globalfieldmap[$survey->sid][$style]['ru']) && $force_refresh==false) {
     //            return static::$globalfieldmap[$survey->sid][$style]['ru'];
     //        }
     $fieldmap["id"] = array("fieldname" => "id", 'sid' => $survey->sid, 'type' => "id", "gid" => "", "qid" => "", "aid" => "");
     if ($style == "full") {
         $fieldmap["id"]['title'] = "";
         $fieldmap["id"]['question'] = "ID";
         //"Response ID";
         $fieldmap["id"]['group_name'] = "";
     }
     $fieldmap["submitdate"] = array("fieldname" => "submitdate", 'type' => "submitdate", 'sid' => $survey->sid, "gid" => "", "qid" => "", "aid" => "");
     if ($style == "full") {
         $fieldmap["submitdate"]['title'] = "";
         $fieldmap["submitdate"]['question'] = "Дата завершения";
         //"Date submitted";
         $fieldmap["submitdate"]['group_name'] = "";
     }
     $fieldmap["lastpage"] = array("fieldname" => "lastpage", 'sid' => $survey->sid, 'type' => "lastpage", "gid" => "", "qid" => "", "aid" => "");
     if ($style == "full") {
         $fieldmap["lastpage"]['title'] = "";
         $fieldmap["lastpage"]['question'] = "Последняя страница";
         //"Last page";
         $fieldmap["lastpage"]['group_name'] = "";
     }
     $fieldmap["startlanguage"] = array("fieldname" => "startlanguage", 'sid' => $survey->sid, 'type' => "startlanguage", "gid" => "", "qid" => "", "aid" => "");
     if ($style == "full") {
         $fieldmap["startlanguage"]['title'] = "";
         $fieldmap["startlanguage"]['question'] = "Язык";
         //"Start language";
         $fieldmap["startlanguage"]['group_name'] = "";
     }
     //Check for any additional fields for this survey and create necessary fields (token and datestamp and ipaddr)
     $pquery = "SELECT anonymized, datestamp, ipaddr, refurl FROM {$survey->tableName()} WHERE sid={$survey->sid}";
     $presult = $survey->getDbConnection()->createCommand($pquery)->queryAll();
     //Checked
     foreach ($presult as $prow) {
         if ($prow['anonymized'] == "N") {
             $fieldmap["token"] = array("fieldname" => "token", 'sid' => $survey->sid, 'type' => "token", "gid" => "", "qid" => "", "aid" => "");
             if ($style == "full") {
                 $fieldmap["token"]['title'] = "";
                 $fieldmap["token"]['question'] = "Token";
                 //"Token";
                 $fieldmap["token"]['group_name'] = "";
             }
         }
         if ($prow['datestamp'] == "Y") {
             $fieldmap["datestamp"] = array("fieldname" => "datestamp", 'type' => "datestamp", 'sid' => $survey->sid, "gid" => "", "qid" => "", "aid" => "");
             if ($style == "full") {
                 $fieldmap["datestamp"]['title'] = "";
                 $fieldmap["datestamp"]['question'] = "Дата последнего действия";
                 //"Date last action";
                 $fieldmap["datestamp"]['group_name'] = "";
             }
             $fieldmap["startdate"] = array("fieldname" => "startdate", 'type' => "startdate", 'sid' => $survey->sid, "gid" => "", "qid" => "", "aid" => "");
             if ($style == "full") {
                 $fieldmap["startdate"]['title'] = "";
                 $fieldmap["startdate"]['question'] = "Дата начала";
                 //"Date started";
                 $fieldmap["startdate"]['group_name'] = "";
             }
         }
         if ($prow['ipaddr'] == "Y") {
             $fieldmap["ipaddr"] = array("fieldname" => "ipaddr", 'type' => "ipaddress", 'sid' => $survey->sid, "gid" => "", "qid" => "", "aid" => "");
             if ($style == "full") {
                 $fieldmap["ipaddr"]['title'] = "";
                 $fieldmap["ipaddr"]['question'] = "IP";
                 //"IP address";
                 $fieldmap["ipaddr"]['group_name'] = "";
             }
         }
         // Add 'refurl' to fieldmap.
         if ($prow['refurl'] == "Y") {
             $fieldmap["refurl"] = array("fieldname" => "refurl", 'type' => "url", 'sid' => $survey->sid, "gid" => "", "qid" => "", "aid" => "");
             if ($style == "full") {
                 $fieldmap["refurl"]['title'] = "";
                 $fieldmap["refurl"]['question'] = "referal URL";
                 //"Referrer URL";
                 $fieldmap["refurl"]['group_name'] = "";
             }
         }
     }
     //Get list of questions
     if (is_null($sQuestionLanguage)) {
         $s_lang = 'ru';
         //GetBaseLanguageFromSurveyID($surveyId);
     } else {
         $s_lang = $sQuestionLanguage;
     }
     $qtypes = static::getqtypelist('', 'array');
     $aquery = "SELECT *, " . " (SELECT count(1) FROM lime_conditions c\n" . " WHERE questions.qid = c.qid) AS hasconditions,\n" . " (SELECT count(1) FROM lime_conditions c\n" . " WHERE questions.qid = c.cqid) AS usedinconditions\n" . " FROM lime_questions as questions, lime_groups as groups" . " WHERE questions.gid=groups.gid AND " . " questions.sid={$survey->sid} AND " . " questions.language='{$s_lang}' AND " . " questions.parent_qid=0 AND " . " groups.language='{$s_lang}' ";
     if ($questionid !== false) {
         $aquery .= " and questions.qid={$questionid} ";
     }
     $aquery .= " ORDER BY group_order, question_order";
     $aresult = $survey->getDbConnection()->createCommand($aquery)->queryAll();
     //Checked
     foreach ($aresult as $arow) {
         //With each question, create the appropriate field(s)
         if ($arow['hasconditions'] > 0) {
             $conditions = "Y";
         } else {
             $conditions = "N";
         }
         if ($arow['usedinconditions'] > 0) {
             $usedinconditions = "Y";
         } else {
             // This question is not directly used in a condition, however we should
             // check if its SGQA code is not used as a value in another condition
             // as a @SGQA@ code
             $atsgqaQuery = "SELECT count(1) as sgqausedincondition " . "FROM lime_questions as q, " . "lime_conditions as c " . "WHERE c.qid=q.qid AND q.sid=" . $arow['sid'] . " AND " . "c.value like '@" . $arow['sid'] . "X" . $arow['gid'] . "X" . $arow['qid'] . "%'";
             $atsgqaRow = $survey->getDbConnection()->createCommand($atsgqaQuery)->queryRow();
             //Checked
             if ($atsgqaRow['sgqausedincondition'] == 0) {
                 $usedinconditions = "N";
             } else {
                 $usedinconditions = "Y";
             }
         }
         // Field identifier
         // GXQXSXA
         // G=Group  Q=Question S=Subquestion A=Answer Option
         // If S or A don't exist then set it to 0
         // Implicit (subqestion intermal to a question type ) or explicit qubquestions/answer count starts at 1
         // Types "L", "!" , "O", "D", "G", "N", "X", "Y", "5","S","T","U"
         if ($qtypes[$arow['type']]['subquestions'] == 0 && $arow['type'] != "R" && $arow['type'] != "|") {
             $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}";
             if (isset($fieldmap[$fieldname])) {
                 $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
             }
             $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => "{$arow['type']}", 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => "");
             if ($style == "full") {
                 $fieldmap[$fieldname]['title'] = $arow['title'];
                 $fieldmap[$fieldname]['question'] = $arow['question'];
                 $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                 $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                 $fieldmap[$fieldname]['hasconditions'] = $conditions;
                 $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 if ($qtypes[$arow['type']]['hasdefaultvalues']) {
                     if ($arow['same_default']) {
                         $fieldmap[$fieldname]['defaultvalue'] = $survey->getDbConnection()->createCommand("SELECT defaultvalue FROM lime_defaultvalues WHERE qid={$arow['qid']} AND scale_id=0 AND language='ru'")->queryScalar();
                     } else {
                         $fieldmap[$fieldname]['defaultvalue'] = $survey->getDbConnection()->createCommand("SELECT defaultvalue FROM lime_defaultvalues WHERE qid={$arow['qid']} AND scale_id=0 AND language='ru'")->queryScalar();
                     }
                 }
             }
             switch ($arow['type']) {
                 case "L":
                     //RADIO LIST
                 //RADIO LIST
                 case "!":
                     //DROPDOWN LIST
                     if ($arow['other'] == "Y") {
                         $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}other";
                         if (isset($fieldmap[$fieldname])) {
                             $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                         }
                         $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => "other");
                         // dgk bug fix line above. aid should be set to "other" for export to append to the field name in the header line.
                         if ($style == "full") {
                             $fieldmap[$fieldname]['title'] = $arow['title'];
                             $fieldmap[$fieldname]['question'] = $arow['question'];
                             $fieldmap[$fieldname]['subquestion'] = "Other";
                             $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                             $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                             $fieldmap[$fieldname]['hasconditions'] = $conditions;
                             $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                             if ($arow['same_default']) {
                                 $fieldmap[$fieldname]['defaultvalue'] = $survey->getDbConnection()->createCommand("SELECT defaultvalue FROM lime_defaultvalues WHERE qid={$arow['qid']} AND scale_id=0 AND language='ru' and specialtype='other'")->queryScalar();
                             }
                         }
                     }
                     break;
                 case "O":
                     //DROPDOWN LIST WITH COMMENT
                     $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}comment";
                     if (isset($fieldmap[$fieldname])) {
                         $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                     }
                     $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => "comment");
                     // dgk bug fix line below. aid should be set to "comment" for export to append to the field name in the header line. Also needed set the type element correctly.
                     if ($style == "full") {
                         $fieldmap[$fieldname]['title'] = $arow['title'];
                         $fieldmap[$fieldname]['question'] = $arow['question'];
                         $fieldmap[$fieldname]['subquestion'] = "Comment";
                         $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                         $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                         $fieldmap[$fieldname]['hasconditions'] = $conditions;
                         $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                     }
                     break;
             }
         } elseif ($qtypes[$arow['type']]['subquestions'] == 2 && $qtypes[$arow['type']]['answerscales'] == 0) {
             //MULTI FLEXI
             $abrows = static::getSubQuestions($survey, $arow['qid'], $s_lang);
             //Now first process scale=1
             $answerset = array();
             foreach ($abrows as $key => $abrow) {
                 if ($abrow['scale_id'] == 1) {
                     $answerset[] = $abrow;
                     unset($abrows[$key]);
                 }
             }
             reset($abrows);
             foreach ($abrows as $abrow) {
                 foreach ($answerset as $answer) {
                     $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$abrow['title']}_{$answer['title']}";
                     if (isset($fieldmap[$fieldname])) {
                         $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                     }
                     $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => $abrow['title'] . "_" . $answer['title'], "sqid" => $abrow['qid']);
                     if ($abrow['other'] == "Y") {
                         $alsoother = "Y";
                     }
                     if ($style == "full") {
                         $fieldmap[$fieldname]['title'] = $arow['title'];
                         $fieldmap[$fieldname]['question'] = $arow['question'];
                         $fieldmap[$fieldname]['subquestion1'] = $abrow['question'];
                         $fieldmap[$fieldname]['subquestion2'] = $answer['question'];
                         $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                         $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                         $fieldmap[$fieldname]['hasconditions'] = $conditions;
                         $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                     }
                 }
             }
             unset($answerset);
         } elseif ($arow['type'] == "1") {
             $abrows = static::getSubQuestions($survey, $arow['qid'], $s_lang);
             foreach ($abrows as $abrow) {
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$abrow['title']}#0";
                 if (isset($fieldmap[$fieldname])) {
                     $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                 }
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => $abrow['title'], "scale_id" => 0);
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = $arow['question'];
                     $fieldmap[$fieldname]['subquestion'] = $abrow['question'];
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['scale'] = 'Scale 1';
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 }
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$abrow['title']}#1";
                 if (isset($fieldmap[$fieldname])) {
                     $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                 }
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => $abrow['title'], "scale_id" => 1);
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = $arow['question'];
                     $fieldmap[$fieldname]['subquestion'] = $abrow['question'];
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['scale'] = 'Scale 2';
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 }
             }
         } elseif ($arow['type'] == "R") {
             //MULTI ENTRY
             $slots = $survey->getDbConnection()->createCommand("select count(code) from lime_answers where qid={$arow['qid']} and language='{$s_lang}'")->queryScalar();
             for ($i = 1; $i <= $slots; $i++) {
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$i}";
                 if (isset($fieldmap[$fieldname])) {
                     $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                 }
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => $i);
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = $arow['question'];
                     $fieldmap[$fieldname]['subquestion'] = sprintf('Rank %s', $i);
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 }
             }
         } elseif ($arow['type'] == "|") {
             $abquery = "SELECT value FROM lime_question_attributes" . " WHERE attribute='max_num_of_files' AND qid=" . $arow['qid'];
             $abrow = $survey->getDbConnection()->createCommand($abquery)->queryRow();
             for ($i = 1; $i <= $abrow['value']; $i++) {
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}";
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => '');
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = $arow['question'];
                     $fieldmap[$fieldname]['max_files'] = $abrow['value'];
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 }
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}" . "_filecount";
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => "filecount");
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = "filecount - " . $arow['question'];
                     //$fieldmap[$fieldname]['subquestion']="Comment";
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 }
             }
         } else {
             //MULTI ENTRY
             $abrows = static::getSubQuestions($survey, $arow['qid'], $s_lang);
             foreach ($abrows as $abrow) {
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$abrow['title']}";
                 if (isset($fieldmap[$fieldname])) {
                     $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                 }
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => $abrow['title']);
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = $arow['question'];
                     $fieldmap[$fieldname]['subquestion'] = $abrow['question'];
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                     if ($arow['same_default']) {
                         $fieldmap[$fieldname]['defaultvalue'] = $survey->getDbConnection()->createCommand("SELECT defaultvalue FROM lime_defaultvalues WHERE sqid={$abrow['qid']} and qid={$arow['qid']} AND scale_id=0 AND language='ru'")->queryScalar();
                     }
                 }
                 if ($arow['type'] == "P") {
                     $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}{$abrow['title']}comment";
                     if (isset($fieldmap[$fieldname])) {
                         $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                     }
                     $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => $abrow['title'] . "comment");
                     if ($style == "full") {
                         $fieldmap[$fieldname]['title'] = $arow['title'];
                         $fieldmap[$fieldname]['question'] = $arow['question'];
                         $fieldmap[$fieldname]['subquestion'] = 'Comment';
                         $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                         $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                         $fieldmap[$fieldname]['hasconditions'] = $conditions;
                         $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                     }
                 }
             }
             if ($arow['other'] == "Y" && ($arow['type'] == "M" || $arow['type'] == "P")) {
                 $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}other";
                 if (isset($fieldmap[$fieldname])) {
                     $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                 }
                 $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => "other");
                 if ($style == "full") {
                     $fieldmap[$fieldname]['title'] = $arow['title'];
                     $fieldmap[$fieldname]['question'] = $arow['question'];
                     $fieldmap[$fieldname]['subquestion'] = 'Other';
                     $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                     $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                     $fieldmap[$fieldname]['hasconditions'] = $conditions;
                     $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                 }
                 if ($arow['type'] == "P") {
                     $fieldname = "{$arow['sid']}X{$arow['gid']}X{$arow['qid']}othercomment";
                     if (isset($fieldmap[$fieldname])) {
                         $aDuplicateQIDs[$arow['qid']] = array('fieldname' => $fieldname, 'question' => $arow['question'], 'gid' => $arow['gid']);
                     }
                     $fieldmap[$fieldname] = array("fieldname" => $fieldname, 'type' => $arow['type'], 'sid' => $survey->sid, "gid" => $arow['gid'], "qid" => $arow['qid'], "aid" => "othercomment");
                     if ($style == "full") {
                         $fieldmap[$fieldname]['title'] = $arow['title'];
                         $fieldmap[$fieldname]['question'] = $arow['question'];
                         $fieldmap[$fieldname]['subquestion'] = 'Other comment';
                         $fieldmap[$fieldname]['group_name'] = $arow['group_name'];
                         $fieldmap[$fieldname]['mandatory'] = $arow['mandatory'];
                         $fieldmap[$fieldname]['hasconditions'] = $conditions;
                         $fieldmap[$fieldname]['usedinconditions'] = $usedinconditions;
                     }
                 }
             }
         }
     }
     if (isset($fieldmap)) {
         $globalfieldmap[$survey->sid][$style]['ru'] = $fieldmap;
         return $fieldmap;
     }
     return array();
 }