/** * Get all advanced metadata fields */ function getAllFields() { $fields = array(); include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php'; $recs = ilAdvancedMDRecord::_getSelectedRecordsByObject("glo", $this->glo_id, "term"); foreach ($recs as $record_obj) { include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php'; foreach (ilAdvancedMDFieldDefinition::_getDefinitionsByRecordId($record_obj->getRecordId()) as $def) { $fields[$def->getFieldId()] = array("id" => $def->getFieldId(), "title" => $def->getTitle(), "type" => $def->getFieldType()); } } return $fields; }
public static function getRecords($a_wiki_obj_id) { if (!array_key_exists($a_wiki_obj_id, self::$records)) { include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDRecord.php'; self::$records[$a_wiki_obj_id] = ilAdvancedMDRecord::_getSelectedRecordsByObject("wiki", $a_wiki_obj_id, "wpg"); } return self::$records[$a_wiki_obj_id]; }
/** * Query data for given object records * * @param * @return */ public static function queryForRecords($a_obj_id, $a_subtype, $a_records, $a_obj_id_key, $a_obj_subid_key, array $a_amet_filter = null) { $result = array(); if (!is_array($a_obj_id)) { $a_obj_id = array($a_obj_id); } $sub_obj_ids = array(); foreach ($a_records as $rec) { $sub_obj_ids[] = $rec[$a_obj_subid_key]; } // preload adv data for object id(s) ilADTFactory::getInstance()->initActiveRecordByType(); ilADTActiveRecordByType::preloadByPrimary("adv_md_values", array("obj_id" => array("integer", $a_obj_id), "sub_type" => array("text", $a_subtype), "sub_id" => array("integer", $sub_obj_ids))); $record_groups = array(); foreach ($a_records as $rec) { $obj_id = $rec[$a_obj_id_key]; $sub_id = $rec[$a_obj_subid_key]; // only active amet records for glossary foreach (ilAdvancedMDRecord::_getSelectedRecordsByObject(ilObject::_lookupType($obj_id), $obj_id, $a_subtype) as $adv_record) { $record_id = $adv_record->getRecordId(); if (!isset($record_groups[$record_id])) { $defs = ilAdvancedMDFieldDefinition::getInstancesByRecordId($record_id); $record_groups[$record_id] = ilAdvancedMDFieldDefinition::getADTGroupForDefinitions($defs); $record_groups[$record_id] = ilADTFactory::getInstance()->getDBBridgeForInstance($record_groups[$record_id]); $record_groups[$record_id]->setTable("adv_md_values"); } // prepare ADT group for record id $record_groups[$record_id]->setPrimary(array("obj_id" => array("integer", $obj_id), "sub_type" => array("text", $a_subtype), "sub_id" => array("integer", $sub_id))); // multi-enum fakes single in adv md foreach ($record_groups[$record_id]->getElements() as $element) { if ($element->getADT()->getType() == "MultiEnum") { $element->setFakeSingle(true); } } // read (preloaded) data $active_record = new ilADTActiveRecordByType($record_groups[$record_id]); $active_record->setElementIdColumn("field_id", "integer"); $active_record->read(); $adt_group = $record_groups[$record_id]->getADT(); // filter against amet values if ($a_amet_filter) { foreach ($a_amet_filter as $field_id => $element) { if ($adt_group->hasElement($field_id)) { if (!$element->isInCondition($adt_group->getElement($field_id))) { continue 3; } } } } // add amet values to glossary term record foreach ($adt_group->getElements() as $element_id => $element) { if (!$element->isNull()) { // we are reusing the ADT group for all $a_records, so we need to clone $pb = ilADTFactory::getInstance()->getPresentationBridgeForInstance(clone $element); $rec["md_" . $element_id] = $pb->getSortable(); $rec["md_" . $element_id . "_presentation"] = $pb; } else { $rec["md_" . $element_id] = null; } } } $results[] = $rec; } return $results; }
/** * Parse table cells */ private function parseTableCells() { global $ilUser; $data = $this->getRowData(); $html = ""; 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); } foreach ($recs as $record_obj) { include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php'; foreach (ilAdvancedMDFieldDefinition::_getDefinitionsByRecordId($record_obj->getRecordId()) as $def) { if ($this->handleECSDefinitions($def)) { continue; } $html .= "<td class='std'>" . $data['md_' . $def->getFieldId()] . "</td>"; } } return $html; }
protected function findPages($a_list_id) { global $ilDB; $list_values = $this->getFieldValues($a_list_id); $wiki_id = $this->getPage()->getWikiId(); $found_result = array(); // only search in active fields $found_ids = null; $recs = ilAdvancedMDRecord::_getSelectedRecordsByObject("wiki", $wiki_id, "wpg"); foreach ($recs as $record) { foreach (ilAdvancedMDFieldDefinition::getInstancesByRecordId($record->getRecordId(), true) as $field) { if (isset($list_values[$field->getFieldId()])) { $field_form = ilADTFactory::getInstance()->getSearchBridgeForDefinitionInstance($field->getADTDefinition(), true, false); $field->setSearchValueSerialized($field_form, $list_values[$field->getFieldId()]); $found_pages = $field->searchSubObjects($field_form, $wiki_id, "wpg"); if (is_array($found_ids)) { $found_ids = array_intersect($found_ids, $found_pages); } else { $found_ids = $found_pages; } } } } if (sizeof($found_ids)) { $sql = "SELECT id,title FROM il_wiki_page" . " WHERE " . $ilDB->in("id", $found_ids, "", "integer") . " ORDER BY title"; $set = $ilDB->query($sql); while ($row = $ilDB->fetchAssoc($set)) { $found_result[$row["id"]] = $row["title"]; } } return $found_result; }