/**
  * @param $found
  *
  * @return string
  */
 public function doExtReplace($found)
 {
     $ref_rec_ids = $this->record_obj->getRecordFieldValue($this->currentField->getId());
     if (!is_array($ref_rec_ids)) {
         $ref_rec_ids = array($ref_rec_ids);
     }
     if (!count($ref_rec_ids) || !$ref_rec_ids) {
         return;
     }
     $ref_recs = array();
     foreach ($ref_rec_ids as $ref_rec_id) {
         $ref_recs[] = ilDataCollectionCache::getRecordCache($ref_rec_id);
     }
     $field = $ref_recs[0]->getTable()->getFieldByTitle($found[1]);
     $tpl = new ilTemplate("tpl.reference_list.html", true, true, "Modules/DataCollection");
     $tpl->setCurrentBlock("reference_list");
     if (!$field) {
         if (ilObjDataCollectionAccess::_hasWriteAccess($this->dcl_gui_object->ref_id)) {
             ilUtil::sendInfo("Bad Viewdefinition at [ext tableOf=\"" . $found[1] . "\" ...]", true);
         }
         return;
     }
     foreach ($ref_recs as $ref_record) {
         $tpl->setCurrentBlock("reference");
         $tpl->setVariable("CONTENT", $ref_record->getRecordFieldHTML($field->getId()));
         $tpl->parseCurrentBlock();
     }
     //$ref_rec->getRecordFieldHTML($field->getId())
     if ($field) {
         return $tpl->get();
     }
 }
 static function passThroughFilter(ilDataCollectionRecord $record, ilDataCollectionField $field, $filter)
 {
     $pass = false;
     $type_id = $field->getDatatypeId();
     $value = $record->getRecordFieldValue($field->getId());
     switch ($type_id) {
         case ilDataCollectionDatatype::INPUTFORMAT_TEXT:
             if (!$filter || strpos(strtolower($value), strtolower($filter)) !== false) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_NUMBER:
             if ((!$filter['from'] || $value >= $filter['from']) && (!$filter['to'] || $value <= $filter['to'])) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_BOOLEAN:
             if ($filter == "checked" && $value == 1 || $filter == "not_checked" && $value == 0 || $filter == '' || !$filter) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_DATETIME:
             if ((!$filter['from'] || $value >= $filter['from']) && (!$filter['to'] || $value <= $filter['to'])) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_FILE:
             if (!ilObject2::_exists($value) || ilObject2::_lookupType($value, false) != "file") {
                 $pass = true;
                 break;
             }
             $file_obj = new ilObjFile($value, false);
             $file_name = $file_obj->getTitle();
             if (!$filter || strpos(strtolower($file_name), strtolower($filter)) !== false) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_REFERENCE:
             $props = $field->getProperties();
             if ($filter && $props[ilDataCollectionField::PROPERTYID_N_REFERENCE] && is_array($value) && in_array($filter, $value)) {
                 $pass = true;
             }
             if (!$filter || $filter == $value) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_RATING:
             if (!$filter || $filter <= $value['avg']) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_ILIAS_REF:
             $obj_id = ilObject::_lookupObjId($value);
             if (!$filter || strpos(strtolower(ilObject::_lookupTitle($obj_id)), strtolower($filter)) !== false) {
                 $pass = true;
             }
             break;
         case ilDataCollectionDatatype::INPUTFORMAT_MOB:
             $m_obj = new ilObjMediaObject($value, false);
             $file_name = $m_obj->getTitle();
             if (!$filter || strpos(strtolower($file_name), strtolower($filter)) !== false) {
                 $pass = true;
             }
             break;
     }
     //for the fields owner and last edit by, we check the name, not the ID
     if (($field->getId() == "owner" || $field->getId() == "last_edit_by") && $filter) {
         $pass = false;
         $user = new ilObjUser($value);
         if (strpos($user->getFullname(), $filter) !== false) {
             $pass = true;
         }
     }
     return $pass;
 }