ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
ilSurveyImporter Class Reference

Importer class for files. More...

+ Inheritance diagram for ilSurveyImporter:
+ Collaboration diagram for ilSurveyImporter:

Public Member Functions

 __construct ()
 Constructor. More...
 
 init ()
 Init. More...
 
 setSurvey (ilObjSurvey $a_val)
 Set current survey object (being imported). More...
 
 getSurvey ()
 Get current survey object. More...
 
 importXmlRepresentation ($a_entity, $a_id, $a_xml, $a_mapping)
 Import XML. More...
 
- Public Member Functions inherited from ilXmlImporter
 __construct ()
 Constructor. More...
 
 setImport ($a_val)
 Set import. More...
 
 getImport ()
 Get import. More...
 
 init ()
 Init. More...
 
 setInstallId ($a_val)
 Set installation id. More...
 
 getInstallId ()
 Get installation id. More...
 
 setInstallUrl ($a_val)
 Set installation url. More...
 
 getInstallUrl ()
 Get installation url. More...
 
 setSchemaVersion ($a_val)
 Set schema version. More...
 
 getSchemaVersion ()
 Get schema version. More...
 
 setImportDirectory ($a_val)
 Set import directory. More...
 
 getImportDirectory ()
 Get import directory. More...
 
 setSkipEntities ($a_val)
 Set skip entities. More...
 
 getSkipEntities ()
 Get skip entities. More...
 
 exportedFromSameInstallation ()
 Is exporting and importing installation identical? More...
 
 importXmlRepresentation ($a_entity, $a_id, $a_xml, $a_mapping)
 Import xml representation. More...
 
 finalProcessing ($a_mapping)
 Final processing. More...
 
 afterContainerImportProcessing (ilImportMapping $mapping)
 Called after all container objects have been implemented. More...
 

Protected Member Functions

 parseXmlFileNames ()
 Create qti and xml file name. More...
 

Protected Attributes

 $log
 
 $svy_log
 
- Protected Attributes inherited from ilXmlImporter
 $skip_entities = array()
 
 $imp
 

Static Protected Attributes

static $survey
 

Detailed Description

Importer class for files.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

Definition at line 10 of file class.ilSurveyImporter.php.

Constructor & Destructor Documentation

◆ __construct()

ilSurveyImporter::__construct ( )

Constructor.

Definition at line 21 of file class.ilSurveyImporter.php.

References $DIC, and ILIAS\GlobalScreen\Provider\__construct().

22  {
24  global $DIC;
25 
26  $this->log = $DIC["ilLog"];
27  }
__construct(Container $dic, ilPlugin $plugin)
$DIC
Definition: xapitoken.php:46
+ Here is the call graph for this function:

Member Function Documentation

◆ getSurvey()

ilSurveyImporter::getSurvey ( )

Get current survey object.

Returns
ilObjSurvey survey

Definition at line 72 of file class.ilSurveyImporter.php.

73  {
74  return self::$survey;
75  }

◆ importXmlRepresentation()

ilSurveyImporter::importXmlRepresentation (   $a_entity,
  $a_id,
  $a_xml,
  $a_mapping 
)

Import XML.

Parameters
$a_entity
$a_id
$a_xml
ilImportMapping$a_mapping
Returns
bool|string
Exceptions
ilDatabaseException
ilImportException
ilObjectNotFoundException

Definition at line 89 of file class.ilSurveyImporter.php.

References $_SESSION, $GLOBALS, $parser, SurveyQuestion\_instanciateQuestion(), ilRTE\_replaceMediaObjectImageSrc(), ilObjMediaObject\_saveTempFileAsMediaObject(), ilObjMediaObject\_saveUsage(), ilXmlImporter\getImport(), ilObjectFactory\getInstanceByObjId(), ilXmlImporter\getSchemaVersion(), parseXmlFileNames(), and setSurvey().

90  {
91  if ($a_entity == "svy") {
92  // Container import => test object already created
93  if ($new_id = $a_mapping->getMapping('Services/Container', 'objs', $a_id)) {
94  $newObj = ilObjectFactory::getInstanceByObjId($new_id, false);
95  #$newObj->setImportDirectory(dirname(rtrim($this->getImportDirectory(),'/')));
96  } else { // case ii, non container
97  $new_id = $a_mapping->getMapping("Modules/Survey", "svy", 0);
98  $newObj = ilObjectFactory::getInstanceByObjId($new_id, false);
99  }
100  $this->setSurvey($newObj);
101 
102 
103  list($xml_file) = $this->parseXmlFileNames();
104 
105  if (!@file_exists($xml_file)) {
106  $GLOBALS['ilLog']->write(__METHOD__ . ': Cannot find xml definition: ' . $xml_file);
107  return false;
108  }
109  $GLOBALS['ilLog']->write("getQuestionPoolID = " . $this->getImport()->getConfig("Modules/Survey")->getQuestionPoolID());
110 
111  $import = new SurveyImportParser($this->getImport()->getConfig("Modules/Survey")->getQuestionPoolID(), $xml_file, true, $a_mapping);
112 
113  $import->setSurveyObject($newObj);
114  $import->startParsing();
115 
116  $this->svy_log->debug("is array import_mob_xml: -" . is_array($_SESSION["import_mob_xhtml"]) . "-");
117 
118  // this is "written" by Services/Survey/classes/class.ilSurveyImportParser
119  if (is_array($_SESSION["import_mob_xhtml"])) {
120  foreach ($_SESSION["import_mob_xhtml"] as $mob) {
121  $this->svy_log->debug("import mob xhtml, type: " . $mob["type"] . ", id: " . $mob["mob"]);
122 
123  if (!$mob["type"]) {
124  $mob["type"] = "svy:html";
125  }
126 
127  $importfile = dirname($xml_file) . "/" . $mob["uri"];
128  $this->svy_log->debug("import file: " . $importfile);
129 
130  if (file_exists($importfile)) {
131  $media_object = ilObjMediaObject::_saveTempFileAsMediaObject(basename($importfile), $importfile, false);
132 
133  // survey mob
134  if ($mob["type"] == "svy:html") {
135  ilObjMediaObject::_saveUsage($media_object->getId(), "svy:html", $newObj->getId());
136  $this->svy_log->debug("old introduction: " . $newObj->getIntroduction());
137  $newObj->setIntroduction(str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $newObj->getIntroduction()));
138  $newObj->setOutro(str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $newObj->getOutro()));
139 
140  $this->svy_log->debug("new introduction: " . $newObj->getIntroduction());
141  } elseif ($import->questions[$mob["id"]]) {
142  $new_qid = $import->questions[$mob["id"]];
143  ilObjMediaObject::_saveUsage($media_object->getId(), $mob["type"], $new_qid);
144  $new_question = SurveyQuestion::_instanciateQuestion($new_qid);
145  $qtext = $new_question->getQuestiontext();
146 
147  $this->svy_log->debug("old question text: " . $qtext);
148 
149  $qtext = ilRTE::_replaceMediaObjectImageSrc($qtext, 0);
150  $qtext = str_replace("src=\"" . $mob["mob"] . "\"", "src=\"" . "il_" . IL_INST_ID . "_mob_" . $media_object->getId() . "\"", $qtext);
151  $qtext = ilRTE::_replaceMediaObjectImageSrc($qtext, 1);
152  $new_question->setQuestiontext($qtext);
153  $new_question->saveToDb();
154 
155  $this->svy_log->debug("new question text: " . $qtext);
156 
157  // also fix existing original in pool
158  if ($new_question->getOriginalId()) {
159  $pool_question = SurveyQuestion::_instanciateQuestion($new_question->getOriginalId());
160  $pool_question->setQuestiontext($qtext);
161  $pool_question->saveToDb();
162  }
163  }
164  } else {
165  $this->svy_log->error("Error: Could not open XHTML mob file for test introduction during test import. File $importfile does not exist!");
166  }
167  }
168  $newObj->setIntroduction(ilRTE::_replaceMediaObjectImageSrc($newObj->getIntroduction(), 1));
169  $newObj->setOutro(ilRTE::_replaceMediaObjectImageSrc($newObj->getOutro(), 1));
170  $newObj->saveToDb();
171  }
172  $a_mapping->addMapping("Modules/Survey", "svy", (int) $a_id, (int) $newObj->getId());
173  return $newObj->getId();
174  } else {
176  $a_entity,
177  $this->getSchemaVersion(),
178  $a_xml,
179  $this->ds,
180  $a_mapping
181  );
182  }
183 
184  return true;
185  }
getSchemaVersion()
Get schema version.
$_SESSION["AccountId"]
Survey Question Import Parser.
static _saveTempFileAsMediaObject($name, $tmp_name, $upload=true)
Create new media object and update page in db and return new media object.
Manifest parser for ILIAS standard export files.
static _replaceMediaObjectImageSrc($a_text, $a_direction=0, $nic=IL_INST_ID)
Replaces image source from mob image urls with the mob id or replaces mob id with the correct image s...
setSurvey(ilObjSurvey $a_val)
Set current survey object (being imported).
getImport()
Get import.
parseXmlFileNames()
Create qti and xml file name.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
static _instanciateQuestion($question_id)
Creates an instance of a question with a given question id.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
$parser
Definition: BPMN2Parser.php:23
static _saveUsage($a_mob_id, $a_type, $a_id, $a_usage_hist_nr=0, $a_lang="-")
Save usage of mob within another container (e.g.
+ Here is the call graph for this function:

◆ init()

ilSurveyImporter::init ( )

Init.

Parameters

Definition at line 45 of file class.ilSurveyImporter.php.

References ilLoggerFactory\getLogger().

46  {
47  $this->ds = new ilSurveyDataSet();
48  $this->ds->setDSPrefix("ds");
49  $this->ds->setImport($this);
50 
51  $this->svy_log = ilLoggerFactory::getLogger("svy");
52  }
Survey Data set class.
static getLogger($a_component_id)
Get component logger.
+ Here is the call graph for this function:

◆ parseXmlFileNames()

ilSurveyImporter::parseXmlFileNames ( )
protected

Create qti and xml file name.

Returns
array

Definition at line 192 of file class.ilSurveyImporter.php.

References $GLOBALS, $xml, and ilXmlImporter\getImportDirectory().

Referenced by importXmlRepresentation().

193  {
194  $GLOBALS['ilLog']->write(__METHOD__ . ': ' . $this->getImportDirectory());
195 
196  $basename = basename($this->getImportDirectory());
197  $xml = $this->getImportDirectory() . '/' . $basename . '.xml';
198 
199  return array($xml);
200  }
getImportDirectory()
Get import directory.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
$xml
Definition: metadata.php:332
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setSurvey()

ilSurveyImporter::setSurvey ( ilObjSurvey  $a_val)

Set current survey object (being imported).

This is done statically, since the survey import uses multiple input files being processed for every survey and all of these need the current survey object (ilSurveyImporter is intantiated multiple times)

Parameters
ilObjSurvey$a_valsurvey

Definition at line 62 of file class.ilSurveyImporter.php.

Referenced by importXmlRepresentation().

63  {
64  self::$survey = $a_val;
65  }
+ Here is the caller graph for this function:

Field Documentation

◆ $log

ilSurveyImporter::$log
protected

Definition at line 15 of file class.ilSurveyImporter.php.

◆ $survey

ilSurveyImporter::$survey
staticprotected

Definition at line 32 of file class.ilSurveyImporter.php.

◆ $svy_log

ilSurveyImporter::$svy_log
protected

Definition at line 37 of file class.ilSurveyImporter.php.


The documentation for this class was generated from the following file: