Array('name'=>'5 Point Choice','size'=>1,'SPSStype'=>'F','Scale'=>3), 'B'=>Array('name'=>'Array (10 Point Choice)','size'=>1,'SPSStype'=>'F','Scale'=>3), 'A'=>Array('name'=>'Array (5 Point Choice)','size'=>1,'SPSStype'=>'F','Scale'=>3), 'F'=>Array('name'=>'Array (Flexible Labels)','size'=>1,'SPSStype'=>'F'), '1'=>Array('name'=>'Array (Flexible Labels) Dual Scale','size'=>1,'SPSStype'=>'F'), 'H'=>Array('name'=>'Array (Flexible Labels) by Column','size'=>1,'SPSStype'=>'F'), 'E'=>Array('name'=>'Array (Increase, Same, Decrease)','size'=>1,'SPSStype'=>'F','Scale'=>2), 'C'=>Array('name'=>'Array (Yes/No/Uncertain)','size'=>1,'SPSStype'=>'F'), 'X'=>Array('name'=>'Boilerplate Question','size'=>1,'SPSStype'=>'A','hide'=>1), 'D'=>Array('name'=>'Date','size'=>10,'SPSStype'=>'SDATE'), 'G'=>Array('name'=>'Gender','size'=>1,'SPSStype'=>'F'), 'U'=>Array('name'=>'Huge Free Text','size'=>1,'SPSStype'=>'A'), 'I'=>Array('name'=>'Language Switch','size'=>1,'SPSStype'=>'A'), '!'=>Array('name'=>'List (Dropdown)','size'=>1,'SPSStype'=>'F'), 'W'=>Array('name'=>'List (Flexible Labels) (Dropdown)','size'=>1,'SPSStype'=>'F'), 'Z'=>Array('name'=>'List (Flexible Labels) (Radio)','size'=>1,'SPSStype'=>'F'), 'L'=>Array('name'=>'List (Radio)','size'=>1,'SPSStype'=>'F'), 'O'=>Array('name'=>'List With Comment','size'=>1,'SPSStype'=>'F'), 'T'=>Array('name'=>'Long free text','size'=>1,'SPSStype'=>'A'), 'K'=>Array('name'=>'Multiple Numerical Input','size'=>1,'SPSStype'=>'F'), 'M'=>Array('name'=>'Multiple Options','size'=>1,'SPSStype'=>'F'), 'P'=>Array('name'=>'Multiple Options With Comments','size'=>1,'SPSStype'=>'F'), 'Q'=>Array('name'=>'Multiple Short Text','size'=>1,'SPSStype'=>'F'), 'N'=>Array('name'=>'Numerical Input','size'=>3,'SPSStype'=>'F','Scale'=>3), 'R'=>Array('name'=>'Ranking','size'=>1,'SPSStype'=>'F'), 'S'=>Array('name'=>'Short free text','size'=>1,'SPSStype'=>'F'), 'Y'=>Array('name'=>'Yes/No','size'=>1,'SPSStype'=>'F'), ':'=>Array('name'=>'Multi flexi numbers','size'=>1,'SPSStype'=>'F','Scale'=>3), ';'=>Array('name'=>'Multi flexi text','size'=>1,'SPSStype'=>'A'), ); if (!isset($surveyid)) {$surveyid=returnglobal('sid');} if (!isset($subaction)) { $exportspssoutput = browsemenubar($clang->gT('Export results')); $exportspssoutput .= "
\n"; $exportspssoutput .= "
".$clang->gT("Export result data to SPSS")."
\n"; $exportspssoutput .= "


\n" ."

".$clang->gT("Instructions for the impatient")."

" ."
    " ."
  1. ".$clang->gT("Download the data and the syntax file.")."
  2. " ."
  3. ".$clang->gT("Open the syntax file in SPSS in Unicode mode").".
  4. " ."
  5. ".$clang->gT("Edit the 4th line and complete the filename with a full path to the downloaded data file.")."
  6. " ."
  7. ".$clang->gT("Choose 'Run/All' from the menu to run the import.")."
  8. " ."

" .$clang->gT("Your data should be imported now.") ."
"; } else { // Get Base Language: $language = GetBaseLanguageFromSurveyID($surveyid); $clang = new limesurvey_lang($language); require_once ("export_data_functions.php"); } if ($subaction=='dldata') { header("Content-Type: application/download; charset=utf-8"); header("Content-Disposition: attachment; filename=survey_".$surveyid."_SPSS_data_file.dat"); header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: no-cache'); sendcacheheaders(); $na = ""; spss_export_data($na); exit; } if ($subaction=='dlstructure') { header("Content-Type: application/download; charset=utf-8"); header("Content-Disposition: attachment; filename=survey_".$surveyid."_SPSS_syntax_file.sps"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: no-cache'); sendcacheheaders(); // Build array that has to be returned $fields = spss_fieldmap(); //Now get the query string with all fields to export $query = spss_getquery(); $result=db_execute_num($query) or safe_die("Couldn't get results
$query
".$connect->ErrorMsg()); //Checked $num_fields = $result->FieldCount(); //Now we check if we need to adjust the size of the field or the type of the field while ($row = $result->FetchRow()) { $fieldno = 0; while ($fieldno < $num_fields) { //Performance improvement, don't recheck fields that have valuelabels if (!isset($fields[$fieldno]['answers'])) { $strTmp=mb_substr(strip_tags_full($row[$fieldno]), 0, $length_data); $len = mb_strlen($strTmp); if($len > $fields[$fieldno]['size']) $fields[$fieldno]['size'] = $len; if (trim($strTmp) != ''){ if ($fields[$fieldno]['SPSStype']=='F' && (my_is_numeric($strTmp)===false || $fields[$fieldno]['size']>16)) { $fields[$fieldno]['SPSStype']='A'; } } } $fieldno++; } } /** * End of DATA print out * * Now $fields contains accurate length data, and the DATA LIST can be rendered -- then the contents of the temp file can * be sent to the client. */ echo $headerComment; echo "SET UNICODE=ON.\n" ."GET DATA\n" ."/TYPE=TXT\n" ."/FILE='survey_".$surveyid."_SPSS_data_file.dat'\n" ."/DELCASE=LINE\n" ."/DELIMITERS=\",\"\n" ."/QUALIFIER=\"'\"\n" ."/ARRANGEMENT=DELIMITED\n" ."/FIRSTCASE=1\n" ."/IMPORTCASE=ALL\n" ."/VARIABLES="; foreach ($fields as $field){ if($field['SPSStype'] == 'DATETIME23.2') $field['size']=''; if($field['SPSStype']=='F' && ($field['LStype'] == 'N' || $field['LStype']=='K')) { $field['size'].='.'.($field['size']-1); } if (!$field['hide']) echo "\n {$field['id']} {$field['SPSStype']}{$field['size']}"; } echo ".\nCACHE.\n" ."EXECUTE.\n"; //Create the variable labels: echo "*Define Variable Properties.\n"; foreach ($fields as $field) { if (!$field['hide']) echo "VARIABLE LABELS " . $field['id'] . " \"" . addslashes(strip_tags_full(mb_substr($field['VariableLabel'],0,$length_varlabel))) . "\".\n"; } // Create our Value Labels! echo "*Define Value labels.\n"; foreach ($fields as $field) { if (isset($field['answers'])) { $answers = $field['answers']; //print out the value labels! echo "VALUE LABELS {$field['id']}\n"; $i=0; foreach ($answers as $answer) { $i++; if ($field['SPSStype']=="F" && my_is_numeric($answer['code'])) { $str = "{$answer['code']}"; } else { $str = "\"{$answer['code']}\""; } if ($i < count($answers)) { echo " $str \"{$answer['value']}\"\n"; } else { echo " $str \"{$answer['value']}\".\n"; } } } } foreach ($fields as $field){ if($field['scale']!=='') { switch ($field['scale']) { case 2: echo "VARIABLE LEVEL {$field['id']}(ORDINAL).\n"; break; case 3: echo "VARIABLE LEVEL {$field['id']}(SCALE).\n"; } } } //Rename the Variables (in case somethings goes wrong, we still have the OLD values foreach ($fields as $field){ if (isset($field['sql_name']) && $field['hide']===0) { $ftitle = $field['title']; if (!preg_match ("/^([a-z]|[A-Z])+.*$/", $ftitle)) { $ftitle = "q_" . $ftitle; } $ftitle = str_replace(array(" ","-",":",";","!","/","\\"), array("_","_hyph_","_dd_","_dc_","_excl_","_fs_","_bs_"), $ftitle); if ($ftitle != $field['title']) echo "* Variable name was incorrect and was changed from {$field['title']} to $ftitle .\n"; echo "RENAME VARIABLE ( " . $field['id'] . " = " . $ftitle . " ).\n"; } } exit; } ?>