4 require_once
'./Modules/Test/classes/inc.AssessmentConstants.php';
5 require_once
'./Services/Utilities/classes/class.ilFormat.php';
46 $this->test_obj =& $a_test_obj;
51 $this->mode = $a_mode;
54 $this->inst_id = IL_INST_ID;
57 $this->export_dir = $this->test_obj->getExportDirectory();
61 $this->subdir = $date.
"__".$this->inst_id.
"__".
62 "tst__results_".$this->test_obj->getId();
65 $this->subdir = $date.
"__".$this->inst_id.
"__".
66 "test__aggregated__results_".$this->test_obj->getId();
69 $this->subdir = $date.
"__".$this->inst_id.
"__".
70 "tst".
"_".$this->test_obj->getId();
71 $this->filename = $this->subdir.
".xml";
72 $this->resultsfile = $date.
"__".$this->inst_id.
"__".
73 "results".
"_".$this->test_obj->getId().
".xml";
74 $this->qti_filename = $date.
"__".$this->inst_id.
"__".
75 "qti".
"_".$this->test_obj->getId().
".xml";
78 $this->filename = $this->subdir.
".".$this->
getExtension();
82 switch ($this->mode) {
124 $expDir = $this->test_obj->getExportDirectory();
127 $this->test_obj->createExportDirectory();
128 include_once
"./Services/Utilities/classes/class.ilUtil.php";
131 $expLog =
new ilLog($expDir,
"export.log");
133 $expLog->setLogFormat(
"");
134 $expLog->write(date(
"[y-m-d H:i:s] ").
"Start Export Of Results");
137 $file = fopen($this->export_dir.
"/".$this->filename,
"w");
142 @copy($excelfile, $this->export_dir .
"/" . str_replace($this->
getExtension(),
"xls", $this->filename));
145 $expLog->write(date(
"[y-m-d H:i:s] ").
"Finished Export of Results");
157 $data = $this->test_obj->getAggregatedResultsData();
158 include_once
"./Services/Excel/classes/class.ilExcelWriterAdapter.php";
161 $testname =
ilUtil::getASCIIFilename(preg_replace(
"/\s/",
"_", $this->test_obj->getTitle() .
'_aggregated')) .
".xls";
162 $workbook = $adapter->getWorkbook();
163 $workbook->setVersion(8);
165 $format_percent =& $workbook->addFormat();
166 $format_percent->setNumFormat(
"0.00%");
167 $format_title =& $workbook->addFormat();
168 $format_title->setBold();
169 $format_title->setColor(
'black');
170 $format_title->setPattern(1);
171 $format_title->setFgColor(
'silver');
172 include_once
"./Services/Excel/classes/class.ilExcelUtils.php";
179 foreach (
$data[
"overview"] as $key => $value)
195 foreach (
$data[
"questions"] as $key => $value)
225 $data = $this->test_obj->getAggregatedResultsData();
227 array_push($rows, array(
228 $this->lng->txt(
"result"),
229 $this->lng->txt(
"value")
231 foreach (
$data[
"overview"] as $key => $value)
233 array_push($rows, array(
238 array_push($rows, array(
239 $this->lng->txt(
"question_title"),
240 $this->lng->txt(
"average_reached_points"),
241 $this->lng->txt(
"points"),
242 $this->lng->txt(
"percentage"),
243 $this->lng->txt(
"number_of_answers")
245 foreach (
$data[
"questions"] as $key => $value)
247 array_push($rows, array(
257 foreach ($rows as $evalrow)
259 $csvrow =& $this->test_obj->processCSVRow($evalrow, TRUE,
$separator);
283 public function exportToExcel($deliver = TRUE, $filterby =
"", $filtertext =
"", $passedonly = FALSE)
287 require_once
'./Services/Excel/classes/class.ilExcelWriterAdapter.php';
290 $testname = $this->test_obj->getTitle();
294 $testname .=
'_results';
298 $workbook = $adapter->getWorkbook();
299 $workbook->setVersion(8);
301 $format_bold =& $workbook->addFormat();
302 $format_bold->setBold();
303 $format_percent =& $workbook->addFormat();
304 $format_percent->setNumFormat(
"0.00%");
305 $format_datetime =& $workbook->addFormat();
306 $format_datetime->setNumFormat(
"DD/MM/YYYY hh:mm:ss");
307 $format_title =& $workbook->addFormat();
308 $format_title->setBold();
309 $format_title->setColor(
'black');
310 $format_title->setPattern(1);
311 $format_title->setFgColor(
'silver');
312 require_once
'./Services/Excel/classes/class.ilExcelUtils.php';
314 $additionalFields = $this->test_obj->getEvaluationAdditionalFields();
318 if ($this->test_obj->getAnonymity())
327 if (count($additionalFields))
329 foreach ($additionalFields as $fieldname)
337 if ($this->test_obj->ects_output)
359 $data =& $this->test_obj->getCompleteEvaluationData(TRUE, $filterby, $filtertext);
360 $firstrowwritten =
false;
361 foreach (
$data->getParticipants() as $active_id => $userdata)
366 if (
$data->getParticipant($active_id)->getPassed() == FALSE)
374 if ($this->test_obj->isRandomTest() || $this->test_obj->getShuffleQuestions())
379 if ($this->test_obj->getAnonymity())
388 if (count($additionalFields))
391 foreach ($additionalFields as $fieldname)
393 if (strcmp($fieldname,
"gender") == 0)
406 if ($this->test_obj->ects_output)
412 $worksheet->write(
$row, $col++,
$data->getParticipant($active_id)->getQuestionsWorkedThroughInPercent() / 100.0, $format_percent);
413 $time =
$data->getParticipant($active_id)->getTimeOfWork();
414 $time_seconds = $time;
415 $time_hours = floor($time_seconds/3600);
416 $time_seconds -= $time_hours * 3600;
417 $time_minutes = floor($time_seconds/60);
418 $time_seconds -= $time_minutes * 60;
420 $time =
$data->getParticipant($active_id)->getQuestionsWorkedThrough() ?
$data->getParticipant($active_id)->getTimeOfWork() /
$data->getParticipant($active_id)->getQuestionsWorkedThrough() : 0;
421 $time_seconds = $time;
422 $time_hours = floor($time_seconds/3600);
423 $time_seconds -= $time_hours * 3600;
424 $time_minutes = floor($time_seconds/60);
425 $time_seconds -= $time_minutes * 60;
427 $fv = getdate(
$data->getParticipant($active_id)->getFirstVisit());
436 $worksheet->write(
$row, $col++, $firstvisit, $format_datetime);
437 $lv = getdate(
$data->getParticipant($active_id)->getLastVisit());
446 $worksheet->write(
$row, $col++, $lastvisit, $format_datetime);
448 $median =
$data->getStatistics()->getStatistics()->median();
449 $pct =
$data->getParticipant($active_id)->getMaxpoints() ? $median /
$data->getParticipant($active_id)->getMaxpoints() * 100.0 : 0;
450 $mark = $this->test_obj->mark_schema->getMatchingMark($pct);
451 $mark_short_name =
"";
452 if (is_object($mark))
454 $mark_short_name = $mark->getShortName();
463 $worksheet->write(
$row, $col++,
$data->getParticipant($active_id)->getBestPass() + 1);
467 $worksheet->write(
$row, $col++,
$data->getParticipant($active_id)->getLastPass() + 1);
473 $finishdate = $this->test_obj->getPassFinishDate($active_id,
$pass);
479 if ($this->test_obj->isRandomTest() || $this->test_obj->getShuffleQuestions())
485 if (is_object(
$data->getParticipant($active_id)) && is_array(
$data->getParticipant($active_id)->getQuestions(
$pass)))
487 foreach (
$data->getParticipant($active_id)->getQuestions(
$pass) as $question)
489 $question_data =
$data->getParticipant($active_id)->getPass(
$pass)->getAnsweredQuestionByQuestionId($question[
"id"]);
491 if ($this->test_obj->isRandomTest() || $this->test_obj->getShuffleQuestions())
497 if (
$pass == 0 && !$firstrowwritten)
504 $firstrowwritten =
true;
511 if ($this->test_obj->getExportSettingsSingleChoiceShort() && !$this->test_obj->isRandomTest() && $this->test_obj->hasSingleChoiceQuestions())
514 $titles =& $this->test_obj->getQuestionTitlesAndIndexes();
515 $positions = array();
518 foreach ($titles as $id => $title)
520 $positions[$id] = $pos;
523 $usernames = array();
524 $participantcount = count(
$data->getParticipants());
525 $allusersheet =
false;
527 $resultsheet =& $workbook->addWorksheet($this->lng->txt(
"eval_all_users"));
532 if (count($additionalFields))
534 foreach ($additionalFields as $fieldname)
536 if (strcmp($fieldname,
"matriculation") == 0)
543 foreach ($titles as $title)
549 foreach (
$data->getParticipants() as $active_id => $userdata)
552 if (array_key_exists($username, $usernames))
554 $usernames[$username]++;
555 $username .=
" ($i)";
559 $usernames[$username] = 1;
562 $resultsheet->write(
$row, $col++, $username);
563 $resultsheet->write(
$row, $col++, $userdata->getLogin());
564 if (count($additionalFields))
567 foreach ($additionalFields as $fieldname)
569 if (strcmp($fieldname,
"matriculation") == 0)
571 if (strlen($userfields[$fieldname]))
583 $pass = $userdata->getScoredPass();
584 if (is_object($userdata) && is_array($userdata->getQuestions(
$pass)))
586 foreach ($userdata->getQuestions(
$pass) as $question)
588 $objQuestion =& $this->test_obj->_instanciateQuestion($question[
"aid"]);
589 if (is_object($objQuestion) && strcmp($objQuestion->getQuestionType(),
'assSingleChoice') == 0)
591 $solution = $objQuestion->getSolutionValues($active_id,
$pass);
592 $pos = $positions[$question[
"aid"]];
593 $selectedanswer =
"x";
594 foreach ($objQuestion->getAnswers() as $id => $answer)
596 if (strlen($solution[0][
"value1"]) && $id == $solution[0][
"value1"])
598 $selectedanswer = $answer->getAnswertext();
607 if ($this->test_obj->isSingleChoiceTestWithoutShuffle())
612 $usernames = array();
613 $allusersheet =
false;
615 $resultsheet =& $workbook->addWorksheet($this->lng->txt(
"eval_all_users") .
" (2)");
620 if (count($additionalFields))
622 foreach ($additionalFields as $fieldname)
624 if (strcmp($fieldname,
"matriculation") == 0)
631 foreach ($titles as $title)
637 foreach (
$data->getParticipants() as $active_id => $userdata)
640 if (array_key_exists($username, $usernames))
642 $usernames[$username]++;
643 $username .=
" ($i)";
647 $usernames[$username] = 1;
650 $resultsheet->write(
$row, $col++, $username);
651 $resultsheet->write(
$row, $col++, $userdata->getLogin());
652 if (count($additionalFields))
655 foreach ($additionalFields as $fieldname)
657 if (strcmp($fieldname,
"matriculation") == 0)
659 if (strlen($userfields[$fieldname]))
671 $pass = $userdata->getScoredPass();
672 if (is_object($userdata) && is_array($userdata->getQuestions(
$pass)))
674 foreach ($userdata->getQuestions(
$pass) as $question)
676 $objQuestion =& $this->test_obj->_instanciateQuestion($question[
"aid"]);
677 if (is_object($objQuestion) && strcmp($objQuestion->getQuestionType(),
'assSingleChoice') == 0)
679 $solution = $objQuestion->getSolutionValues($active_id,
$pass);
680 $pos = $positions[$question[
"aid"]];
681 $selectedanswer = chr(65+$solution[0][
"value1"]);
693 $usernames = array();
694 $participantcount = count(
$data->getParticipants());
695 $allusersheet =
false;
698 foreach (
$data->getParticipants() as $active_id => $userdata)
703 if (array_key_exists($username, $usernames))
705 $usernames[$username]++;
706 $username .=
" ($i)";
710 $usernames[$username] = 1;
712 if ($participantcount > 250) {
713 if (!$allusersheet || ($pages-1) < floor(
$row / 64000)) {
714 $resultsheet =& $workbook->addWorksheet($this->lng->txt(
"eval_all_users") . (($pages > 0) ?
" (".($pages+1).
")" :
""));
715 $allusersheet =
true;
720 $resultsheet =& $workbook->addWorksheet(utf8_decode($username));
722 if (method_exists($resultsheet,
"writeString"))
724 $pass = $userdata->getScoredPass();
728 if (is_object($userdata) && is_array($userdata->getQuestions(
$pass)))
730 foreach ($userdata->getQuestions(
$pass) as $question)
732 require_once
"./Modules/TestQuestionPool/classes/class.assQuestion.php";
734 if (is_object($question))
736 $row = $question->setExportDetailsXLS($resultsheet,
$row, $active_id,
$pass, $format_title, $format_bold);
764 function exportToCSV($deliver = TRUE, $filterby =
"", $filtertext =
"", $passedonly = FALSE)
773 if ($this->test_obj->getAnonymity())
775 array_push($datarow, $this->lng->txt(
"counter"));
780 array_push($datarow, $this->lng->txt(
"name"));
782 array_push($datarow, $this->lng->txt(
"login"));
785 $additionalFields = $this->test_obj->getEvaluationAdditionalFields();
786 if (count($additionalFields))
788 foreach ($additionalFields as $fieldname)
790 array_push($datarow, $this->lng->txt($fieldname));
794 array_push($datarow, $this->lng->txt(
"tst_stat_result_resultspoints"));
796 array_push($datarow, $this->lng->txt(
"maximum_points"));
798 array_push($datarow, $this->lng->txt(
"tst_stat_result_resultsmarks"));
800 if ($this->test_obj->ects_output)
802 array_push($datarow, $this->lng->txt(
"ects_grade"));
805 array_push($datarow, $this->lng->txt(
"tst_stat_result_qworkedthrough"));
807 array_push($datarow, $this->lng->txt(
"tst_stat_result_qmax"));
809 array_push($datarow, $this->lng->txt(
"tst_stat_result_pworkedthrough"));
811 array_push($datarow, $this->lng->txt(
"tst_stat_result_timeofwork"));
813 array_push($datarow, $this->lng->txt(
"tst_stat_result_atimeofwork"));
815 array_push($datarow, $this->lng->txt(
"tst_stat_result_firstvisit"));
817 array_push($datarow, $this->lng->txt(
"tst_stat_result_lastvisit"));
820 array_push($datarow, $this->lng->txt(
"tst_stat_result_mark_median"));
822 array_push($datarow, $this->lng->txt(
"tst_stat_result_rank_participant"));
824 array_push($datarow, $this->lng->txt(
"tst_stat_result_rank_median"));
826 array_push($datarow, $this->lng->txt(
"tst_stat_result_total_participants"));
828 array_push($datarow, $this->lng->txt(
"tst_stat_result_median"));
830 array_push($datarow, $this->lng->txt(
"scored_pass"));
833 array_push($datarow, $this->lng->txt(
"pass"));
836 $data =& $this->test_obj->getCompleteEvaluationData(TRUE, $filterby, $filtertext);
837 $headerrow = $datarow;
839 foreach (
$data->getParticipants() as $active_id => $userdata)
841 $datarow = $headerrow;
845 if (
$data->getParticipant($active_id)->getPassed() == FALSE)
853 if ($this->test_obj->getAnonymity())
855 array_push($datarow2, $counter);
859 array_push($datarow2,
$data->getParticipant($active_id)->getName());
860 array_push($datarow2,
$data->getParticipant($active_id)->getLogin());
862 if (count($additionalFields))
865 foreach ($additionalFields as $fieldname)
867 if (strcmp($fieldname,
"gender") == 0)
869 array_push($datarow2, $this->lng->txt(
"gender_" . $userfields[$fieldname]));
873 array_push($datarow2, $userfields[$fieldname]);
877 array_push($datarow2,
$data->getParticipant($active_id)->getReached());
878 array_push($datarow2,
$data->getParticipant($active_id)->getMaxpoints());
879 array_push($datarow2,
$data->getParticipant($active_id)->getMark());
880 if ($this->test_obj->ects_output)
882 array_push($datarow2,
$data->getParticipant($active_id)->getECTSMark());
884 array_push($datarow2,
$data->getParticipant($active_id)->getQuestionsWorkedThrough());
885 array_push($datarow2,
$data->getParticipant($active_id)->getNumberOfQuestions());
886 array_push($datarow2,
$data->getParticipant($active_id)->getQuestionsWorkedThroughInPercent() / 100.0);
887 $time =
$data->getParticipant($active_id)->getTimeOfWork();
888 $time_seconds = $time;
889 $time_hours = floor($time_seconds/3600);
890 $time_seconds -= $time_hours * 3600;
891 $time_minutes = floor($time_seconds/60);
892 $time_seconds -= $time_minutes * 60;
893 array_push($datarow2, sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds));
894 $time =
$data->getParticipant($active_id)->getQuestionsWorkedThrough() ?
$data->getParticipant($active_id)->getTimeOfWork() /
$data->getParticipant($active_id)->getQuestionsWorkedThrough() : 0;
895 $time_seconds = $time;
896 $time_hours = floor($time_seconds/3600);
897 $time_seconds -= $time_hours * 3600;
898 $time_minutes = floor($time_seconds/60);
899 $time_seconds -= $time_minutes * 60;
900 array_push($datarow2, sprintf(
"%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds));
902 $fv =
$data->getParticipant($active_id)->getFirstVisit();
903 $lv =
$data->getParticipant($active_id)->getLastVisit();
904 foreach(array($fv, $lv) as $ts)
909 array_push($datarow2, $visit);
913 array_push($datarow2,
"");
917 $median =
$data->getStatistics()->getStatistics()->median();
918 $pct =
$data->getParticipant($active_id)->getMaxpoints() ? $median /
$data->getParticipant($active_id)->getMaxpoints() * 100.0 : 0;
919 $mark = $this->test_obj->mark_schema->getMatchingMark($pct);
920 $mark_short_name =
"";
921 if (is_object($mark))
923 $mark_short_name = $mark->getShortName();
925 array_push($datarow2, $mark_short_name);
926 array_push($datarow2,
$data->getStatistics()->getStatistics()->rank(
$data->getParticipant($active_id)->getReached()));
927 array_push($datarow2,
$data->getStatistics()->getStatistics()->rank_median());
928 array_push($datarow2,
$data->getStatistics()->getStatistics()->count());
929 array_push($datarow2, $median);
932 array_push($datarow2,
$data->getParticipant($active_id)->getBestPass() + 1);
936 array_push($datarow2,
$data->getParticipant($active_id)->getLastPass() + 1);
940 $finishdate = $this->test_obj->getPassFinishDate($active_id,
$pass);
945 for ($i = 1; $i < $col-1; $i++)
947 array_push($datarow2,
"");
948 array_push($datarow,
"");
950 array_push($datarow,
"");
952 array_push($datarow2,
$pass+1);
953 if (is_object(
$data->getParticipant($active_id)) && is_array(
$data->getParticipant($active_id)->getQuestions(
$pass)))
955 foreach (
$data->getParticipant($active_id)->getQuestions(
$pass) as $question)
957 $question_data =
$data->getParticipant($active_id)->getPass(
$pass)->getAnsweredQuestionByQuestionId($question[
"id"]);
958 array_push($datarow2, $question_data[
"reached"]);
959 array_push($datarow, preg_replace(
"/<.*?>/",
"",
$data->getQuestionTitle($question[
"id"])));
962 if ($this->test_obj->isRandomTest() || $this->test_obj->getShuffleQuestions() || ($counter == 1 &&
$pass == 0))
964 array_push($rows, $datarow);
967 array_push($rows, $datarow2);
976 foreach ($rows as $evalrow)
978 $csvrow =& $this->test_obj->processCSVRow($evalrow, TRUE,
$separator);
999 $ilBench->start(
"TestExport",
"buildExportFile");
1001 include_once(
"./Services/Xml/classes/class.ilXmlWriter.php");
1005 $this->xml->
xmlSetDtdDef(
"<!DOCTYPE Test SYSTEM \"http://www.ilias.uni-koeln.de/download/dtd/ilias_co.dtd\">");
1008 $this->xml->xmlSetGenCmt(
"Export of ILIAS Test ".
1009 $this->test_obj->getId().
" of installation ".$this->inst.
".");
1012 $this->xml->xmlHeader();
1015 $this->test_obj->createExportDirectory();
1016 include_once
"./Services/Utilities/classes/class.ilUtil.php";
1021 $expDir = $this->test_obj->getExportDirectory();
1022 include_once
"./Services/Logging/classes/class.ilLog.php";
1023 $expLog =
new ilLog($expDir,
"export.log");
1025 $expLog->setLogFormat(
"");
1026 $expLog->write(date(
"[y-m-d H:i:s] ").
"Start Export");
1029 $qti_file = fopen($this->export_dir.
"/".$this->subdir.
"/".$this->qti_filename,
"w");
1030 fwrite($qti_file, $this->test_obj->toXML());
1034 $ilBench->start(
"TestExport",
"buildExportFile_getXML");
1035 $this->test_obj->exportPagesXML($this->xml, $this->inst_id,
1036 $this->export_dir.
"/".$this->subdir, $expLog);
1037 $ilBench->stop(
"TestExport",
"buildExportFile_getXML");
1047 $ilBench->start(
"TestExport",
"buildExportFile_dumpToFile");
1048 $this->xml->xmlDumpFile($this->export_dir.
"/".$this->subdir.
"/".$this->filename
1050 $ilBench->stop(
"TestExport",
"buildExportFile_dumpToFile");
1052 if (@file_exists(
"./Modules/Test/classes/class.ilTestResultsToXML.php"))
1055 include_once
"./Modules/Test/classes/class.ilTestResultsToXML.php";
1056 $resultwriter =
new ilTestResultsToXML($this->test_obj->getTestId(), $this->test_obj->getAnonymity());
1057 $ilBench->start(
"TestExport",
"buildExportFile_results");
1058 $resultwriter->
xmlDumpFile($this->export_dir.
"/".$this->subdir.
"/".$this->resultsfile,
false);
1059 $ilBench->stop(
"TestExport",
"buildExportFile_results");
1063 $ilBench->start(
"QuestionpoolExport",
"buildExportFile_saveAdditionalMobs");
1065 $ilBench->stop(
"QuestionpoolExport",
"buildExportFile_saveAdditionalMobs");
1068 $ilBench->start(
"TestExport",
"buildExportFile_zipFile");
1070 $this->export_dir.
"/".$this->subdir.
".zip");
1071 $ilBench->stop(
"TestExport",
"buildExportFile_zipFile");
1074 $this->xml->_XmlWriter;
1076 $expLog->write(date(
"[y-m-d H:i:s] ").
"Finished Export");
1077 $ilBench->stop(
"TestExport",
"buildExportFile");
1079 return $this->export_dir.
"/".$this->subdir.
".zip";
1084 include_once(
"./Services/MediaObjects/classes/class.ilObjMediaObject.php");
1087 foreach (
$mobs as $mob)
1092 $mob_obj->exportFiles($a_export_dir);
1096 foreach ($this->test_obj->questions as $question_id)
1099 foreach (
$mobs as $mob)
1104 $mob_obj->exportFiles($a_export_dir);
static deliverData($a_data, $a_filename, $mime="application/octet-stream", $charset="")
deliver data for download via browser.
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
exportToExcel($deliver=TRUE, $filterby="", $filtertext="", $passedonly=FALSE)
Exports the evaluation data to the Microsoft Excel file format.
aggregatedResultsToExcel($deliver=TRUE)
Exports the aggregated results to the Microsoft Excel file format.
xmlSetDtdDef($dtdDef)
Sets dtd definition.
_lookupFields($a_user_id)
lookup fields (deprecated; use more specific methods instead)
_convert_text($a_text, $a_target="has been removed")
buildExportFileXML()
build xml export file
Test results to XML class.
aggregatedResultsToCSV($deliver=TRUE)
Exports the aggregated results to CSV.
exportToCSV($deliver=TRUE, $filterby="", $filtertext="", $passedonly=FALSE)
Exports the evaluation data to the CSV file format.
static getASCIIFilename($a_filename)
convert utf8 to ascii filename
__construct(&$a_test_obj, $a_mode="xml")
Constructor.
Class ilExcelWriterAdapter.
buildExportFile()
build export file (complete zip file)
exportXHTMLMediaObjects($a_export_dir)
redirection script todo: (a better solution should control the processing via a xml file) ...
static deliverFile($a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
static zip($a_dir, $a_file, $compress_content=false)
zips given directory/file into given zip.file
static makeDir($a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
static ilTempnam()
Create a temporary file in an ILIAS writable directory.
buildExportResultFile()
build xml export file
static excelTime($year="", $month="", $day="", $hour="", $minute="", $second="")
Calculates a Microsoft Excel date/time value.
xmlDumpFile($file, $format=TRUE)