/** * Get xml representation * * @param string entity * @param string schema version * @param string id * @return string xml string */ public function getXmlRepresentation($a_entity, $a_schema_version, $a_id) { $parts = explode(":", $a_id); if (sizeof($parts) != 2) { return; } $obj_id = $parts[0]; $rec_id = $parts[1]; // any data for current record and object? include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php'; $raw = ilAdvancedMDValues::findByObjectId($obj_id); if (!$raw) { return; } // gather sub-item data from value entries $sub_items = array(); foreach ($raw as $item) { $sub_items[$item["sub_type"]][] = $item["sub_id"]; } // gather all relevant data $items = array(); foreach ($sub_items as $sub_type => $sub_ids) { foreach (array_unique($sub_ids) as $sub_id) { $values_record = new ilAdvancedMDValues($rec_id, $obj_id, $sub_type, $sub_id); $defs = $values_record->getDefinitions(); $values_record->read(); foreach ($values_record->getADTGroup()->getElements() as $element_id => $element) { if (!$element->isNull()) { $def = $defs[$element_id]; $items[$rec_id][] = array('id' => $def->getImportId(), 'sub_type' => $sub_type, 'sub_id' => $sub_id, 'value' => $def->getValueForXML($element)); } } } } // we only want non-empty fields if (sizeof($items)) { $xml = new ilXmlWriter(); foreach ($items as $record_id => $record_items) { // no need to state record id here $xml->xmlStartTag('AdvancedMetaData'); foreach ($record_items as $item) { $xml->xmlElement('Value', array('id' => $item['id'], 'sub_type' => $item['sub_type'], 'sub_id' => $item['sub_id']), $item['value']); } $xml->xmlEndTag('AdvancedMetaData'); } return $xml->xmlDumpMem(false); } }
/** * Fill data section */ function fillDataSection() { global $lng; $btpl = new ilTemplate("tpl.wiki_advmd_block.html", true, true, "Modules/Wiki"); // see ilAdvancedMDRecordGUI::parseInfoPage() $old_dt = ilDatePresentation::useRelativeDates(); ilDatePresentation::setUseRelativeDates(false); include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php'; include_once 'Services/ADT/classes/class.ilADTFactory.php'; $values = new ilAdvancedMDValues($this->record->getRecordId(), $this->obj_id, "wpg", $this->page_id); // this correctly binds group and definitions $values->read(); $defs = $values->getDefinitions(); foreach ($values->getADTGroup()->getElements() as $element_id => $element) { $btpl->setCurrentBlock("item"); $btpl->setVariable("CAPTION", $defs[$element_id]->getTitle()); if ($element->isNull()) { $value = "-"; } else { $value = ilADTFactory::getInstance()->getPresentationBridgeForInstance($element); if ($element instanceof ilADTLocation) { $value->setSize("100%", "200px"); } $value = $value->getHTML(); } $btpl->setVariable("VALUE", $value); $btpl->parseCurrentBlock(); } /* if ($this->isHidden()) { $btpl->setVariable("HIDDEN_INFO", $lng->txt("wiki_adv_md_hidden")); } */ $this->setDataSection($btpl->get()); ilDatePresentation::setUseRelativeDates($old_dt); return; }
/** * Parse property form in editor mode */ protected function parseEditor() { include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php'; if ($this->getSelectedOnly()) { $recs = ilAdvancedMDRecord::_getSelectedRecordsByObject($this->obj_type, $this->obj_id, $this->sub_type); } else { $recs = ilAdvancedMDRecord::_getActivatedRecordsByObjectType($this->obj_type, $this->sub_type); } include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php'; $this->editor_form = array(); foreach ($recs as $record_obj) { /* :TODO: if($this->handleECSDefinitions($def)) { continue; } */ $record_id = $record_obj->getRecordId(); $values = new ilAdvancedMDValues($record_id, $this->obj_id, $this->sub_type, $this->sub_id); $values->read(); $adt_group_form = ilADTFactory::getInstance()->getFormBridgeForInstance($values->getADTGroup()); $adt_group_form->setForm($this->form); $adt_group_form->setTitle($record_obj->getTitle()); $adt_group_form->setInfo($record_obj->getDescription()); foreach ($values->getDefinitions() as $def) { $element = $adt_group_form->getElement($def->getFieldId()); $element->setTitle($def->getTitle()); $element->setInfo($def->getDescription()); // definition may customize ADT form element $def->prepareElementForEditor($element); if ($values->isDisabled($def->getFieldId())) { $element->setDisabled(true); } } $adt_group_form->addToForm(); $this->editor_form[$record_id] = array("values" => $values, "form" => $adt_group_form); } }
/** * Add Advanced Meta Data Information to the Info Screen * * @param ilInfoScreenGUI $info */ protected function parseInfoScreen(ilInfoScreenGUI $info) { include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDValues.php'; include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php'; include_once 'Services/ADT/classes/class.ilADTFactory.php'; $type = $this->object->getOrgUnitType(); if (!$type) { return; } $assigned_record_ids = $type->getAssignedAdvancedMDRecordIds(); foreach (ilAdvancedMDValues::getInstancesForObjectId($this->object->getId(), 'orgu') as $record_id => $a_values) { // Skip record ids not assigned to the type if (!in_array($record_id, $assigned_record_ids)) { continue; } // Note that we have to do this because with the instances above the sub-type and sub-id are missing... $a_values = new ilAdvancedMDValues($record_id, $this->object->getId(), 'orgu_type', $this->object->getOrgUnitTypeId()); // this correctly binds group and definitions $a_values->read(); $info->addSection(ilAdvancedMDRecord::_lookupTitle($record_id)); $defs = $a_values->getDefinitions(); foreach ($a_values->getADTGroup()->getElements() as $element_id => $element) { if (!$element->isNull()) { $info->addProperty($defs[$element_id]->getTitle(), ilADTFactory::getInstance()->getPresentationBridgeForInstance($element)->getHTML()); } } } }