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;
121 public function handlerBeginTag($a_xml_parser,
string $a_name, array $a_attribs): void
130 $this->md_in_md =
true;
135 $this->md_gen = $this->md->addGeneral();
136 $this->md_gen->setStructure($a_attribs[
'Structure'] ??
'');
137 $this->md_gen->save();
143 $this->md_ide = $par->addIdentifier();
144 $this->md_ide->setCatalog($a_attribs[
'Catalog'] ??
'');
145 $this->md_ide->setEntry($a_attribs[
'Entry'] ??
'');
146 $this->md_ide->save();
157 $this->md_lan = $par->addLanguage();
158 $this->md_lan->setLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
159 $this->md_lan->save();
166 if (strtolower(get_class($par)) ===
'ilmdrights' ||
167 strtolower(get_class($par)) ===
'ilmdannotation' ||
168 strtolower(get_class($par)) ===
'ilmdclassification') {
169 $par->setDescriptionLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
172 $this->md_des = $par->addDescription();
173 $this->md_des->setDescriptionLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
174 $this->md_des->save();
182 if (!$par instanceof
ilMD) {
183 $this->md_key = $par->addKeyword();
184 $this->md_key->setKeywordLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
185 $this->md_key->save();
192 $par->setCoverageLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
197 $this->md_lif = $par->addLifecycle();
198 $this->md_lif->setStatus($a_attribs[
'Status'] ??
'');
199 $this->md_lif->save();
205 $par->setVersionLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
210 $this->md_con = $par->addContribute();
211 $this->md_con->setRole($a_attribs[
'Role'] ??
'');
212 $this->md_con->save();
219 if (strtolower(get_class($par)) ===
'ilmdcontribute') {
220 $this->md_ent = $par->addEntity();
221 $this->md_ent->save();
232 case 'Meta-Metadata':
234 $this->md_met = $par->addMetaMetadata();
235 $this->md_met->setMetaDataScheme($a_attribs[
'MetadataScheme'] ??
'');
236 $this->md_met->setLanguage(
new ilMDLanguageItem((
string) ($a_attribs[
'Language'] ??
"")));
237 $this->md_met->save();
243 $this->md_tec = $par->addTechnical();
244 $this->md_tec->save();
250 $this->md_for = $par->addFormat();
251 $this->md_for->save();
260 $this->md_loc = $par->addLocation();
261 $this->md_loc->setLocationType($a_attribs[
'Type'] ??
'');
262 $this->md_loc->save();
268 $this->md_req = $par->addRequirement();
269 $this->md_req->save();
275 $this->md_orc = $par->addOrComposite();
282 case 'OperatingSystem':
284 $par->setOperatingSystemName($a_attribs[
'Name'] ??
'');
285 $par->setOperatingSystemMinimumVersion($a_attribs[
'MinimumVersion'] ??
'');
286 $par->setOperatingSystemMaximumVersion($a_attribs[
'MaximumVersion'] ??
'');
291 $par->setBrowserName($a_attribs[
'Name'] ??
'');
292 $par->setBrowserMinimumVersion($a_attribs[
'MinimumVersion'] ??
'');
293 $par->setBrowserMaximumVersion($a_attribs[
'MaximumVersion'] ??
'');
296 case 'InstallationRemarks':
298 $par->setInstallationRemarksLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
301 case 'OtherPlatformRequirements':
303 $par->setOtherPlatformRequirementsLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
311 $this->md_edu = $par->addEducational();
312 $this->md_edu->setInteractivityType($a_attribs[
'InteractivityType'] ??
'');
313 $this->md_edu->setLearningResourceType($a_attribs[
'LearningResourceType'] ??
'');
314 $this->md_edu->setInteractivityLevel($a_attribs[
'InteractivityLevel'] ??
'');
315 $this->md_edu->setSemanticDensity($a_attribs[
'SemanticDensity'] ??
'');
316 $this->md_edu->setIntendedEndUserRole($a_attribs[
'IntendedEndUserRole'] ??
'');
317 $this->md_edu->setContext($a_attribs[
'Context'] ??
'');
318 $this->md_edu->setDifficulty($a_attribs[
'Difficulty'] ??
'');
319 $this->md_edu->save();
323 case 'TypicalAgeRange':
325 $this->md_typ = $par->addTypicalAgeRange();
326 $this->md_typ->setTypicalAgeRangeLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
327 $this->md_typ->save();
331 case 'TypicalLearningTime':
336 $this->md_rig = $par->addRights();
337 $this->md_rig->setCosts($a_attribs[
'Cost'] ??
'');
338 $this->md_rig->setCopyrightAndOtherRestrictions($a_attribs[
'CopyrightAndOtherRestrictions'] ??
'');
339 $this->md_rig->save();
345 $this->md_rel = $par->addRelation();
346 $this->md_rel->setKind($a_attribs[
'Kind'] ??
'');
347 $this->md_rel->save();
356 $this->md_ide_ = $par->addIdentifier_();
357 $this->md_ide_->setCatalog($a_attribs[
'Catalog'] ??
'');
358 $this->md_ide_->setEntry($a_attribs[
'Entry'] ??
'');
359 $this->md_ide_->save();
365 $this->md_ann = $par->addAnnotation();
366 $this->md_ann->save();
370 case 'Classification':
372 $this->md_cla = $par->addClassification();
373 $this->md_cla->setPurpose($a_attribs[
'Purpose'] ??
'');
374 $this->md_cla->save();
380 $this->md_taxp = $par->addTaxonPath();
381 $this->md_taxp->save();
387 $par->setSourceLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
392 $this->md_tax = $par->addTaxon();
393 $this->md_tax->setTaxonLanguage(
new ilMDLanguageItem($a_attribs[
'Language'] ??
''));
394 $this->md_tax->setTaxonId($a_attribs[
'Id'] ??
'');
395 $this->md_tax->save();
412 $this->md_parent = array();
413 $this->md_in_md =
false;
442 $par->parseDescriptionFromImport(
456 if (!$par instanceof
ilMD) {
489 if (strtolower(get_class($par)) ===
'ilmdentity') {
504 case 'Meta-Metadata':
548 case 'OperatingSystem':
554 case 'InstallationRemarks':
559 case 'OtherPlatformRequirements':
575 case 'TypicalAgeRange':
582 case 'TypicalLearningTime':
614 case 'Classification':
638 $this->md_chr_data =
'';
650 if ($a_data !==
"\n" && $this->
inMetaData()) {
652 $a_data = preg_replace(
"/\t+/",
" ", $a_data);
654 $this->md_chr_data .= $a_data;
666 $this->md_parent[] = &$md_obj;
667 $this->meta_log->debug(
'New parent stack (push)...');
668 foreach ($this->md_parent as $class) {
669 $this->meta_log->debug(get_class($class));
675 $this->meta_log->debug(
'New parent stack (pop)....');
676 $class = array_pop($this->md_parent);
677 foreach ((array) $this->md_parent as $class) {
678 $this->meta_log->debug(get_class($class));
680 $this->meta_log->debug(is_object($class) ? get_class($class) :
'null');
686 return $this->md_parent[count($this->md_parent) - 1];
692 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...
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
handlerCharacterData($a_xml_parser, string $a_data)
__pushParent(object $md_obj)
__construct(Container $dic, ilPlugin $plugin)
ilMDTypicalAgeRange $md_typ