19 declare(strict_types=1);
75 $this->meta_log = $DIC->logger()->meta();
78 $this->md_parsing_enabled =
true;
85 $this->md_parsing_enabled = $a_status;
100 return is_object($this->md) ? $this->md : null;
114 xml_set_object($a_xml_parser, $this);
115 xml_set_element_handler($a_xml_parser,
'handlerBeginTag',
'handlerEndTag');
116 xml_set_character_data_handler($a_xml_parser,
'handlerCharacterData');
122 public function handlerBeginTag($a_xml_parser,
string $a_name, array $a_attribs): void
131 $this->md_in_md =
true;
136 $this->md_gen = $this->md->addGeneral();
137 $this->md_gen->setStructure($a_attribs[
'Structure'] ??
'');
138 $this->md_gen->save();
144 $this->md_ide = $par->addIdentifier();
145 $this->md_ide->setCatalog($a_attribs[
'Catalog'] ??
'');
146 $this->md_ide->setEntry($a_attribs[
'Entry'] ??
'');
147 $this->md_ide->save();
158 $this->md_lan = $par->addLanguage();
159 $this->md_lan->setLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
160 $this->md_lan->save();
167 if (strtolower(get_class($par)) ===
'ilmdrights' ||
168 strtolower(get_class($par)) ===
'ilmdannotation' ||
169 strtolower(get_class($par)) ===
'ilmdclassification') {
170 $par->setDescriptionLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
173 $this->md_des = $par->addDescription();
174 $this->md_des->setDescriptionLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
175 $this->md_des->save();
183 if (!$par instanceof
ilMD) {
184 $this->md_key = $par->addKeyword();
185 $this->md_key->setKeywordLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
186 $this->md_key->save();
193 $par->setCoverageLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
198 $this->md_lif = $par->addLifecycle();
199 $this->md_lif->setStatus($a_attribs[
'Status'] ??
'');
200 $this->md_lif->save();
206 $par->setVersionLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
211 $this->md_con = $par->addContribute();
212 $this->md_con->setRole($a_attribs[
'Role'] ??
'');
213 $this->md_con->save();
220 if (strtolower(get_class($par)) ===
'ilmdcontribute') {
221 $this->md_ent = $par->addEntity();
222 $this->md_ent->save();
233 case 'Meta-Metadata':
235 $this->md_met = $par->addMetaMetadata();
236 $this->md_met->setMetaDataScheme($a_attribs[
'MetadataScheme'] ??
'');
237 $this->md_met->setLanguage(
new ilMDLanguageItem((
string) ($a_attribs[
'Language'] ??
"")));
238 $this->md_met->save();
244 $this->md_tec = $par->addTechnical();
245 $this->md_tec->save();
251 $this->md_for = $par->addFormat();
252 $this->md_for->save();
261 $this->md_loc = $par->addLocation();
262 $this->md_loc->setLocationType($a_attribs[
'Type'] ??
'');
263 $this->md_loc->save();
269 $this->md_req = $par->addRequirement();
270 $this->md_req->save();
276 $this->md_orc = $par->addOrComposite();
283 case 'OperatingSystem':
285 $par->setOperatingSystemName($a_attribs[
'Name'] ??
'');
286 $par->setOperatingSystemMinimumVersion($a_attribs[
'MinimumVersion'] ??
'');
287 $par->setOperatingSystemMaximumVersion($a_attribs[
'MaximumVersion'] ??
'');
292 $par->setBrowserName($a_attribs[
'Name'] ??
'');
293 $par->setBrowserMinimumVersion($a_attribs[
'MinimumVersion'] ??
'');
294 $par->setBrowserMaximumVersion($a_attribs[
'MaximumVersion'] ??
'');
297 case 'InstallationRemarks':
299 $par->setInstallationRemarksLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
302 case 'OtherPlatformRequirements':
304 $par->setOtherPlatformRequirementsLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
312 $this->md_edu = $par->addEducational();
313 $this->md_edu->setInteractivityType($a_attribs[
'InteractivityType'] ??
'');
314 $this->md_edu->setLearningResourceType($a_attribs[
'LearningResourceType'] ??
'');
315 $this->md_edu->setInteractivityLevel($a_attribs[
'InteractivityLevel'] ??
'');
316 $this->md_edu->setSemanticDensity($a_attribs[
'SemanticDensity'] ??
'');
317 $this->md_edu->setIntendedEndUserRole($a_attribs[
'IntendedEndUserRole'] ??
'');
318 $this->md_edu->setContext($a_attribs[
'Context'] ??
'');
319 $this->md_edu->setDifficulty($a_attribs[
'Difficulty'] ??
'');
320 $this->md_edu->save();
324 case 'TypicalAgeRange':
326 $this->md_typ = $par->addTypicalAgeRange();
327 $this->md_typ->setTypicalAgeRangeLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
328 $this->md_typ->save();
332 case 'TypicalLearningTime':
337 $this->md_rig = $par->addRights();
338 $this->md_rig->setCosts($a_attribs[
'Cost'] ??
'');
339 $this->md_rig->setCopyrightAndOtherRestrictions($a_attribs[
'CopyrightAndOtherRestrictions'] ??
'');
340 $this->md_rig->save();
346 $this->md_rel = $par->addRelation();
347 $this->md_rel->setKind($a_attribs[
'Kind'] ??
'');
348 $this->md_rel->save();
357 $this->md_ide_ = $par->addIdentifier_();
358 $this->md_ide_->setCatalog($a_attribs[
'Catalog'] ??
'');
359 $this->md_ide_->setEntry($a_attribs[
'Entry'] ??
'');
360 $this->md_ide_->save();
366 $this->md_ann = $par->addAnnotation();
367 $this->md_ann->save();
371 case 'Classification':
373 $this->md_cla = $par->addClassification();
374 $this->md_cla->setPurpose($a_attribs[
'Purpose'] ??
'');
375 $this->md_cla->save();
381 $this->md_taxp = $par->addTaxonPath();
382 $this->md_taxp->save();
388 $par->setSourceLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
393 $this->md_tax = $par->addTaxon();
394 $this->md_tax->setTaxonLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
395 $this->md_tax->setTaxonId($a_attribs[
'Id'] ??
'');
396 $this->md_tax->save();
413 $this->md_parent = array();
414 $this->md_in_md =
false;
443 $par->parseDescriptionFromImport(
457 if (!$par instanceof
ilMD) {
490 if (strtolower(get_class($par)) ===
'ilmdentity') {
505 case 'Meta-Metadata':
549 case 'OperatingSystem':
555 case 'InstallationRemarks':
560 case 'OtherPlatformRequirements':
576 case 'TypicalAgeRange':
583 case 'TypicalLearningTime':
615 case 'Classification':
639 $this->md_chr_data =
'';
651 if ($a_data !==
"\n" && $this->
inMetaData()) {
653 $a_data = preg_replace(
"/\t+/",
" ", $a_data);
655 $this->md_chr_data .= $a_data;
667 $this->md_parent[] = &$md_obj;
668 $this->meta_log->debug(
'New parent stack (push)...');
669 foreach ($this->md_parent as $class) {
670 $this->meta_log->debug(get_class($class));
676 $this->meta_log->debug(
'New parent stack (pop)....');
677 $class = array_pop($this->md_parent);
678 foreach ((array) $this->md_parent as $class) {
679 $this->meta_log->debug(get_class($class));
681 $this->meta_log->debug(is_object($class) ? get_class($class) :
'null');
687 return $this->md_parent[count($this->md_parent) - 1];
693 foreach ($attribs as $k => $v) {
enableMDParsing(bool $a_status)
__construct(?string $a_xml_file='')
trimAndStrip(string $input)
ilMDClassification $md_cla
handlerBeginTag($a_xml_parser, string $a_name, array $a_attribs)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
trimAndStripAttribs(array $attribs)
handlerEndTag($a_xml_parser, string $a_name)
setHandlers($a_xml_parser)
Set event handlers.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
handlerCharacterData($a_xml_parser, string $a_data)
__pushParent(object $md_obj)
__construct(Container $dic, ilPlugin $plugin)
ilMDTypicalAgeRange $md_typ