17    #region Constants / Config 
  103        $this->external_directory_path  = $ilias->ini_ilias->readVariable(
'clients', 
'datadir');
 
  104        $this->client_id                                = $ilias->client_id;
 
  106        $this->
ilDB                                             = $ilias->db;
 
  110        $this->participantData = 
null;
 
  150        copy($pdf_path, $pdf_new_path);
 
  151        # /home/mbecker/public_html/ilias/trunk-primary/extern/default/tst_data/archive/tst_350/2013/09/19/80_1_root_user_/test_submission.pdf 
  154        file_put_contents($html_new_path, $html_string);
 
  175                                    . self::DIR_SEP . self::QUESTION_PATH_COMPONENT_PREFIX . $question_fi;
 
  176        if (!is_dir($pass_question_directory)) {
 
  177            mkdir($pass_question_directory, 0777, 
true);
 
  180        copy($file_path, $pass_question_directory . self::DIR_SEP . $original_filename);
 
  183            date(self::LOG_DTSGROUP_FORMAT) . self::LOG_ADDITION_STRING
 
  184            . $pass_question_directory . self::DIR_SEP . $original_filename
 
  203        copy($file_path, $new_path);
 
  218        if (!is_dir($best_solution_path)) {
 
  219            mkdir($best_solution_path, 0777, 
true);
 
  222        file_put_contents($best_solution_path . self::DIR_SEP . self::HTML_BEST_SOLUTION_FILENAME, $html_string);
 
  224        copy($pdf_path, $best_solution_path . self::DIR_SEP . self::PDF_BEST_SOLUTION_FILENAME);
 
  227            date(self::LOG_DTSGROUP_FORMAT) . self::LOG_ADDITION_STRING
 
  228                . $best_solution_path . self::DIR_SEP . self::HTML_BEST_SOLUTION_FILENAME
 
  232            date(self::LOG_DTSGROUP_FORMAT) . self::LOG_ADDITION_STRING
 
  233                . $best_solution_path . self::DIR_SEP . self::PDF_BEST_SOLUTION_FILENAME
 
  249        if (!is_dir($best_solution_path)) {
 
  250            mkdir($best_solution_path, 0777, 
true);
 
  254        if (!is_dir($materials_path)) {
 
  255            mkdir($materials_path, 0777, 
true);
 
  258        $question_materials_path = $materials_path . self::DIR_SEP . self::QUESTION_PATH_COMPONENT_PREFIX . $question_fi;
 
  259        if (!is_dir($question_materials_path)) {
 
  260            mkdir($question_materials_path, 0777, 
true);
 
  263        copy($file_path, $question_materials_path . self::DIR_SEP . $orginial_filename);
 
  266            date(self::LOG_DTSGROUP_FORMAT) . self::LOG_ADDITION_STRING
 
  267                . $question_materials_path . self::DIR_SEP . $orginial_filename
 
  286            . self::TEST_RESULT_POSTFIX;
 
  287        copy($pdf_path, $new_path);
 
  301            . self::TEST_OVERVIEW_PDF_FILENAME
 
  303        copy($pdf_path, $new_pdf_path);
 
  304        $html_path = $this->
getTestArchive() . self::DIR_SEP . self::TEST_OVERVIEW_HTML_FILENAME
 
  306        file_put_contents($html_path, $html_string);
 
  343        $test_archive_directory =  $this->external_directory_path . self::DIR_SEP . $this->client_id . self::DIR_SEP . 
'tst_data' 
  345        return $test_archive_directory;
 
  370        $query = 
'SELECT * FROM ass_log WHERE obj_fi = ' . $this->
ilDB->
quote($this->test_obj_id, 
'integer');
 
  376            $outfile_lines .= 
"\r\n" . implode(
"\t", 
$row);
 
  378        file_put_contents($this->
getTestArchive() . self::DIR_SEP . self::TEST_LOG_FILENAME, $outfile_lines);
 
  383        $gui->object = 
$test;
 
  384        $array_of_actives = array();
 
  385        $participants = 
$test->getParticipants();
 
  387        foreach ($participants as 
$key => $value) {
 
  388            $array_of_actives[] = 
$key;
 
  390        $output_template = $gui->createUserResults(
true, 
false, 
true, $array_of_actives);
 
  392        require_once 
'class.ilTestPDFGenerator.php';
 
  428        return $this->external_directory_path . self::DIR_SEP . $this->client_id . self::DIR_SEP . 
'tst_data' 
  429            . self::DIR_SEP . self::EXPORT_DIRECTORY . self::DIR_SEP . 
'tst_' . 
$this->test_obj_id;
 
  443        $zip_output_filename = 
'test_archive_obj_' . $this->test_obj_id . 
'_' . time() . 
'_.zip';
 
  451    #region PassDataDirectory 
  487        foreach ($this->archive_data_index as $data_index_entry) {
 
  488            if ($data_index_entry != 
null && $data_index_entry[
'identifier'] == $active_fi . 
'|' . 
$pass) {
 
  489                array_shift($data_index_entry);
 
  490                return $this->
getTestArchive() . self::DIR_SEP . implode(self::DIR_SEP, $data_index_entry);
 
  513                $user->setFirstname($usrData[
'firstname']);
 
  514                $user->setLastname($usrData[
'lastname']);
 
  515                $user->setMatriculation($usrData[
'matriculation']);
 
  516                $user->setFirstname($usrData[
'firstname']);
 
  526                $user->getFirstname(),
 
  527                $user->getLastname(),
 
  528                $user->getMatriculation()
 
  557    #region PassMaterialsDirectory 
  592            $user->setFirstname($usrData[
'firstname']);
 
  593            $user->setLastname($usrData[
'lastname']);
 
  594            $user->setMatriculation($usrData[
'matriculation']);
 
  595            $user->setFirstname($usrData[
'firstname']);
 
  605            $user->getFirstname(),
 
  606            $user->getLastname(),
 
  607            $user->getMatriculation()
 
  660        if (@file_exists($data_index_file)) {
 
  661            $lines = explode(
"\n", file_get_contents($data_index_file));
 
  662            foreach ($lines as $line) {
 
  663                $line_items = explode(
'|', $line);
 
  664                $line_data[
'identifier'] = $line_items[0] . 
'|' . $line_items[1];
 
  665                $line_data[
'yyyy'] = $line_items[2];
 
  666                $line_data[
'mm'] = $line_items[3];
 
  667                $line_data[
'dd'] = $line_items[4];
 
  668                $line_data[
'directory'] = $line_items[5];
 
  691        $this->archive_data_index[] = $line;
 
  692        $output_contents = 
'';
 
  694        foreach ($this->archive_data_index as $line_data) {
 
  695            if ($line_data[
'identifier'] == 
"|") {
 
  698            $output_contents .= implode(
'|', $line_data) . 
"\n";
 
  701        file_put_contents($this->
getTestArchive() . self::DIR_SEP . self::DATA_INDEX_FILENAME, $output_contents);
 
  720        $date = date_create_from_format(DATE_ISO8601, $date);
 
  722            'identifier' => $active_fi . 
'|' . 
$pass,
 
  723            'yyyy'       => date_format($date, 
'Y'),
 
  724            'mm'         => date_format($date, 
'm'),
 
  725            'dd'         => date_format($date, 
'd'),
 
  726            'directory'  => $active_fi . 
'_' . 
$pass . 
'_' . $user_firstname . 
'_' . $user_lastname . 
'_' . $matriculation
 
  741        if (file_exists($archive)) {
 
  742            $content = file_get_contents($archive) . 
"\n" . 
$message;
 
  747        file_put_contents($archive, $content);
 
  763        if ($handle = opendir($directory)) {
 
  764            while ((
$file = readdir($handle)) !== 
false) {
 
  765                if (!in_array(
$file, array( 
'.', 
'..' )) && !is_dir($directory . 
$file)) {
 
  766                    if ($pattern && strpos(
$file, $pattern) === 0) {
 
date( 'd-M-Y', $objPHPExcel->getProperties() ->getCreated())
An exception for terminatinating execution or to throw for unit testing.
query($sql, $a_handle_error=true)
Query.
fetchAssoc($a_set)
Fetch row as associative array from result set.
quote($a_query, $a_type=null)
Wrapper for quote method.
ensureZipExportDirectoryExists()
handInTestResult($active_fi, $pass, $pdf_path)
Hands in an individual test result for a pass.
handInParticipantSubmission($active_fi, $pass, $pdf_path, $html_string)
Hands in a participants test submission ("a completed test") for archiving.
handInBestSolutionQuestionMaterial($question_fi, $orginial_filename, $file_path)
Hands in a file related to a question in context of the best solution.
const TEST_OVERVIEW_HTML_POSTFIX
const TEST_OVERVIEW_HTML_FILENAME
const DATA_INDEX_FILENAME
const TEST_MATERIALS_PATH_COMPONENT
compressTestArchive()
Generate the test archive for download.
hasPassMaterialsDirectory($active_fi, $pass)
Returns if the pass materials directory exists for a given pass.
countFilesInDirectory($directory, $pattern=null)
Returns the count of files in a directory, eventually matching the given, optional,...
ensureTestArchiveIsAvailable()
Ensures the availability of the test archive directory.
const PDF_SUBMISSION_FILENAME
getTestArchive()
Returns the (theoretical) path to the archive directory of the test, this object is created for.
getZipExportDirectory()
Return the export directory, where zips are placed.
const PASS_MATERIALS_PATH_COMPONENT
handInParticipantQuestionMaterial($active_fi, $pass, $question_fi, $original_filename, $file_path)
Hands in a particpants question material, such as an upload or other binary content.
getPassMaterialsDirectory($active_fi, $pass)
Returns the pass materials directory.
handInTestResultsOverview($html_string, $pdf_path)
Hands in a test results overview.
handInTestBestSolution($html_string, $pdf_path)
Hands in the best solution for a test.
hasPassDataDirectory($active_fi, $pass)
Checks if the directory for pass data is available.
const LOG_DTSGROUP_FORMAT
const HTML_SUBMISSION_FILENAME
const TEST_RESULT_POSTFIX
const PDF_BEST_SOLUTION_FILENAME
setParticipantData($participantData)
const TEST_RESULT_FILENAME
readArchiveDataIndex()
Reads the archive data index.
getPassDataDirectory($active_fi, $pass)
Returns the pass data directory.
hasTestArchive()
Returns if the archive directory structure for the test the object is created for exists.
createZipExportDirectory()
handInParticipantMisc($active_fi, $pass, $original_filename, $file_path)
Hands in a participants file, which is relevant for archiving but an unspecified type.
createPassDataDirectory($active_fi, $pass)
Creates pass data directory.
const TEST_BEST_SOLUTION_PATH_COMPONENT
buildPassDataDirectory($active_fi, $pass)
appendToArchiveDataIndex($date, $active_fi, $pass, $user_firstname, $user_lastname, $matriculation)
Appends a line to the archive data index.
createPassMaterialsDirectory($active_fi, $pass)
Creates pass materials directory.
const HTML_BEST_SOLUTION_FILENAME
ensurePassMaterialsDirectoryIsAvailable($active_fi, $pass)
Ensures the availability of the pass materials directory.
const QUESTION_PATH_COMPONENT_PREFIX
const LOG_CREATION_STRING
updateTestArchive()
Replaces the test-log with the current one.
logArchivingProcess($message)
Logs to the archive log.
hasZipExportDirectory()
Returns if the export directory for zips exists.
const LOG_ADDITION_STRING
createArchiveForTest()
Creates the directory for the test archive.
ensurePassDataDirectoryIsAvailable($active_fi, $pass)
Ensures the availability of the participant data directory.
determinePassDataPath($date, $active_fi, $pass, $user_firstname, $user_lastname, $matriculation)
Determines the pass data path.
const TEST_OVERVIEW_PDF_POSTFIX
const LOG_DELETION_STRING
const TEST_OVERVIEW_PDF_FILENAME
static generatePDF($pdf_output, $output_mode, $filename=null, $purpose=null)
static zip($a_dir, $a_file, $compress_content=false)
zips given directory/file into given zip.file
static makeDirParents($a_dir)
Create a new directory and all parent directories.
const PDF_USER_RESULT
PDF Purposes.
catch(Exception $e) $message
if(!file_exists("$old.txt")) if( $old===$new) if(file_exists("$new.txt")) $file