24 include_once
'./Services/Xml/classes/class.ilSaxParser.php';
72 $this->meta_log = $DIC->logger()->meta();
76 $this->md_parsing_enabled =
true;
83 $this->md_parsing_enabled = (bool) $a_status;
96 return is_object($this->md) ? $this->md :
false;
112 xml_set_object($a_xml_parser, $this);
113 xml_set_element_handler($a_xml_parser,
'handlerBeginTag',
'handlerEndTag');
114 xml_set_character_data_handler($a_xml_parser,
'handlerCharacterData');
124 include_once
'Services/MetaData/classes/class.ilMDLanguageItem.php';
134 $this->md_in_md =
true;
139 $this->md_gen = &$this->md->addGeneral();
140 $this->md_gen->setStructure($a_attribs[
'Structure']);
141 $this->md_gen->save();
147 $this->md_ide = &$par->addIdentifier();
148 $this->md_ide->setCatalog($a_attribs[
'Catalog']);
149 $this->md_ide->setEntry($a_attribs[
'Entry']);
150 $this->md_ide->save();
161 $this->md_lan = &$par->addLanguage();
163 $this->md_lan->save();
170 if (strtolower(get_class($par)) ==
'ilmdrights' or
171 strtolower(get_class($par)) ==
'ilmdannotation' or
172 strtolower(get_class($par)) ==
'ilmdclassification') {
176 $this->md_des = &$par->addDescription();
177 $this->md_des->setDescriptionLanguage(
new ilMDLanguageItem($a_attribs[
'Language']));
178 $this->md_des->save();
186 if (!in_array(get_class($par), [
"ilMD"])) {
187 $this->md_key = &$par->addKeyword();
188 $this->md_key->setKeywordLanguage(
new ilMDLanguageItem($a_attribs[
'Language']));
189 $this->md_key->save();
201 $this->md_lif = &$par->addLifecycle();
202 $this->md_lif->setStatus($a_attribs[
'Status']);
203 $this->md_lif->save();
214 $this->md_con = &$par->addContribute();
215 $this->md_con->setRole($a_attribs[
'Role']);
216 $this->md_con->save();
223 if (strtolower(get_class($par)) ==
'ilmdcontribute') {
224 $this->md_ent = &$par->addEntity();
225 $this->md_ent->save();
236 case 'Meta-Metadata':
238 $this->md_met = &$par->addMetaMetadata();
239 $this->md_met->setMetaDataScheme($a_attribs[
'MetadataScheme']);
241 $this->md_met->save();
247 $this->md_tec = &$par->addTechnical();
248 $this->md_tec->save();
254 $this->md_for = &$par->addFormat();
255 $this->md_for->save();
264 $this->md_loc = &$par->addLocation();
265 $this->md_loc->setLocationType($a_attribs[
'Type']);
266 $this->md_loc->save();
272 $this->md_req = &$par->addRequirement();
273 $this->md_req->save();
279 $this->md_orc = &$par->addOrComposite();
286 case 'OperatingSystem':
288 $par->setOperatingSystemName($a_attribs[
'Name']);
289 $par->setOperatingSystemMinimumVersion($a_attribs[
'MinimumVersion']);
290 $par->setOperatingSystemMaximumVersion($a_attribs[
'MaximumVersion']);
295 $par->setBrowserName($a_attribs[
'Name']);
296 $par->setBrowserMinimumVersion($a_attribs[
'MinimumVersion']);
297 $par->setBrowserMaximumVersion($a_attribs[
'MaximumVersion']);
300 case 'InstallationRemarks':
302 $par->setInstallationRemarksLanguage(
new ilMDLanguageItem($a_attribs[
'Language']));
305 case 'OtherPlatformRequirements':
307 $par->setOtherPlatformRequirementsLanguage(
new ilMDLanguageItem($a_attribs[
'Language']));
315 $this->md_edu = &$par->addEducational();
316 $this->md_edu->setInteractivityType($a_attribs[
'InteractivityType']);
317 $this->md_edu->setLearningResourceType($a_attribs[
'LearningResourceType']);
318 $this->md_edu->setInteractivityLevel($a_attribs[
'InteractivityLevel']);
319 $this->md_edu->setSemanticDensity($a_attribs[
'SemanticDensity']);
320 $this->md_edu->setIntendedEndUserRole($a_attribs[
'IntendedEndUserRole']);
321 $this->md_edu->setContext($a_attribs[
'Context']);
322 $this->md_edu->setDifficulty($a_attribs[
'Difficulty']);
323 $this->md_edu->save();
327 case 'TypicalAgeRange':
329 $this->md_typ = &$par->addTypicalAgeRange();
330 $this->md_typ->setTypicalAgeRangeLanguage(
new ilMDLanguageItem($a_attribs[
'Language']));
331 $this->md_typ->save();
335 case 'TypicalLearningTime':
340 $this->md_rig = &$par->addRights();
341 $this->md_rig->setCosts($a_attribs[
'Cost']);
342 $this->md_rig->setCopyrightAndOtherRestrictions($a_attribs[
'CopyrightAndOtherRestrictions']);
343 $this->md_rig->save();
349 $this->md_rel = &$par->addRelation();
350 $this->md_rel->setKind($a_attribs[
'Kind']);
351 $this->md_rel->save();
360 $this->md_ide_ = &$par->addIdentifier_();
361 $this->md_ide_->setCatalog($a_attribs[
'Catalog']);
362 $this->md_ide_->setEntry($a_attribs[
'Entry']);
363 $this->md_ide_->save();
369 $this->md_ann = &$par->addAnnotation();
370 $this->md_ann->save();
374 case 'Classification':
376 $this->md_cla = &$par->addClassification();
377 $this->md_cla->setPurpose($a_attribs[
'Purpose']);
378 $this->md_cla->save();
384 $this->md_taxp = &$par->addTaxonPath();
385 $this->md_taxp->save();
396 $this->md_tax = &$par->addTaxon();
397 $this->md_tax->setTaxonLanguage(
new ilMDLanguageItem($a_attribs[
'Language']));
398 $this->md_tax->setTaxonId($a_attribs[
'Id']);
399 $this->md_tax->save();
416 $this->md_parent = array();
417 $this->md_in_md =
false;
446 $par->parseDescriptionFromImport(
460 if (!in_array(get_class($par), [
"ilMD"])) {
493 if (strtolower(get_class($par)) ==
'ilmdentity') {
508 case 'Meta-Metadata':
552 case 'OperatingSystem':
558 case 'InstallationRemarks':
563 case 'OtherPlatformRequirements':
579 case 'TypicalAgeRange':
586 case 'TypicalLearningTime':
618 case 'Classification':
643 $this->md_chr_data =
'';
655 if ($this->
inMetaData() and $a_data !=
"\n") {
657 $a_data = preg_replace(
"/\t+/",
" ", $a_data);
659 $this->md_chr_data .= $a_data;
673 $this->md_parent[] = &$md_obj;
674 $this->meta_log->debug(
'New parent stack (push)...');
675 foreach ($this->md_parent as $class) {
676 $this->meta_log->debug(get_class($class));
681 $this->meta_log->debug(
'New parent stack (pop)....');
682 $class = array_pop($this->md_parent);
683 foreach ((array) $this->md_parent as $class) {
684 $this->meta_log->debug(get_class($class));
686 $this->meta_log->debug(is_object($class) ? get_class($class) :
'null');
691 return $this->md_parent[count($this->md_parent) - 1];
697 foreach ($attribs as $k => $v) {
__construct($a_xml_file='')
Constructor.
trimAndStrip(string $input)
enableMDParsing($a_status)
handlerCharacterData($a_xml_parser, $a_data)
handler for character data
trimAndStripAttribs(array $attribs)
setHandlers($a_xml_parser)
set event handlers
Base class for sax-based expat parsing extended classes need to overwrite the method setHandlers and ...
handlerEndTag($a_xml_parser, $a_name)
handler for end of element
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
handlerBeginTag($a_xml_parser, $a_name, $a_attribs)
handler for begin of element
__construct(Container $dic, ilPlugin $plugin)