/** * Get data in TSV format (tab separated text values). * @param $data (array) Array of data. * @return string XML data */ function getDataTSV($data) { $tsv = ''; foreach ($data as $value) { if (is_array($value)) { $tsv .= getDataTSV($value); } else { $tsv .= "\t" . F_text_to_tsv($value); } } return $tsv; }
/** * Export all questions of the selected subject to TSV. * @param $module_id (int) module ID * @param $subject_id (int) topic ID * @param $expmode (int) export mode: 1 = selected topic; 2 = selected module; 3 = all modules. * @return TSV data */ function F_tsv_export_questions($module_id, $subject_id, $expmode) { global $l, $db; require_once '../config/tce_config.php'; require_once '../../shared/code/tce_authorization.php'; require_once '../../shared/code/tce_functions_auth_sql.php'; $module_id = intval($module_id); $subject_id = intval($subject_id); $expmode = intval($expmode); $qtype = array('S', 'M', 'T', 'O'); $tsv = ''; // TSV data to be returned // headers $tsv .= 'M=MODULE'; // MODULE $tsv .= K_TAB . 'module_enabled'; $tsv .= K_TAB . 'module_name'; $tsv .= K_NEWLINE; $tsv .= 'S=SUBJECT'; // SUBJECT $tsv .= K_TAB . 'subject_enabled'; $tsv .= K_TAB . 'subject_name'; $tsv .= K_TAB . 'subject_description'; $tsv .= K_NEWLINE; $tsv .= 'Q=QUESTION'; // QUESTION $tsv .= K_TAB . 'question_enabled'; $tsv .= K_TAB . 'question_description'; $tsv .= K_TAB . 'question_explanation'; $tsv .= K_TAB . 'question_type'; $tsv .= K_TAB . 'question_difficulty'; $tsv .= K_TAB . 'question_position'; $tsv .= K_TAB . 'question_timer'; $tsv .= K_TAB . 'question_fullscreen'; $tsv .= K_TAB . 'question_inline_answers'; $tsv .= K_TAB . 'question_auto_next'; $tsv .= K_NEWLINE; $tsv .= 'A=ANSWER'; // ANSWER $tsv .= K_TAB . 'answer_enabled'; $tsv .= K_TAB . 'answer_description'; $tsv .= K_TAB . 'answer_explanation'; $tsv .= K_TAB . 'answer_isright'; $tsv .= K_TAB . 'answer_position'; $tsv .= K_TAB . 'answer_keyboard_key'; $tsv .= K_NEWLINE; $tsv .= K_NEWLINE; // ---- module $andmodwhere = ''; if ($expmode < 3) { $andmodwhere = 'module_id=' . $module_id . ''; } $sqlm = F_select_modules_sql($andmodwhere); if ($rm = F_db_query($sqlm, $db)) { while ($mm = F_db_fetch_array($rm)) { $tsv .= 'M'; // MODULE $tsv .= K_TAB . intval(F_getBoolean($mm['module_enabled'])); $tsv .= K_TAB . F_text_to_tsv($mm['module_name']); $tsv .= K_NEWLINE; // ---- topic $where_sqls = 'subject_module_id=' . $mm['module_id'] . ''; if ($expmode < 2) { $where_sqls .= ' AND subject_id=' . $subject_id . ''; } $sqls = F_select_subjects_sql($where_sqls); if ($rs = F_db_query($sqls, $db)) { while ($ms = F_db_fetch_array($rs)) { $tsv .= 'S'; // SUBJECT $tsv .= K_TAB . intval(F_getBoolean($ms['subject_enabled'])); $tsv .= K_TAB . F_text_to_tsv($ms['subject_name']); $tsv .= K_TAB . F_text_to_tsv($ms['subject_description']); $tsv .= K_NEWLINE; // ---- questions $sql = 'SELECT * FROM ' . K_TABLE_QUESTIONS . ' WHERE question_subject_id=' . $ms['subject_id'] . ' ORDER BY question_enabled DESC, question_position, question_description'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_array($r)) { $tsv .= 'Q'; // QUESTION $tsv .= K_TAB . intval(F_getBoolean($m['question_enabled'])); $tsv .= K_TAB . F_text_to_tsv($m['question_description']); $tsv .= K_TAB . F_text_to_tsv($m['question_explanation']); $tsv .= K_TAB . $qtype[$m['question_type'] - 1]; $tsv .= K_TAB . $m['question_difficulty']; $tsv .= K_TAB . $m['question_position']; $tsv .= K_TAB . $m['question_timer']; $tsv .= K_TAB . intval(F_getBoolean($m['question_fullscreen'])); $tsv .= K_TAB . intval(F_getBoolean($m['question_inline_answers'])); $tsv .= K_TAB . intval(F_getBoolean($m['question_auto_next'])); $tsv .= K_NEWLINE; // display alternative answers $sqla = 'SELECT * FROM ' . K_TABLE_ANSWERS . ' WHERE answer_question_id=\'' . $m['question_id'] . '\' ORDER BY answer_position,answer_isright DESC'; if ($ra = F_db_query($sqla, $db)) { while ($ma = F_db_fetch_array($ra)) { $tsv .= 'A'; // ANSWER $tsv .= K_TAB . intval(F_getBoolean($ma['answer_enabled'])); $tsv .= K_TAB . F_text_to_tsv($ma['answer_description']); $tsv .= K_TAB . F_text_to_tsv($ma['answer_explanation']); $tsv .= K_TAB . intval(F_getBoolean($ma['answer_isright'])); $tsv .= K_TAB . $ma['answer_position']; $tsv .= K_TAB . $ma['answer_keyboard_key']; $tsv .= K_NEWLINE; } } else { F_display_db_error(); } } // end while for questions } else { F_display_db_error(); } } // end while for topics } else { F_display_db_error(); } } // end while for module } else { F_display_db_error(); } return $tsv; }