/**
  * 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;
 }
Example #5
0
 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;
 }