/**
  * Perform advanced meta data search
  *
  * @access private
  * @param obj result object
  * 
  */
 private function searchAdvancedMD($res)
 {
     include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php';
     foreach ($_POST as $key => $value) {
         if (!is_numeric($key)) {
             continue;
         }
         if (!$value) {
             continue;
         }
         $def = ilAdvancedMDFieldDefinition::_getInstanceByFieldId($key);
         include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
         include_once 'Services/Search/classes/class.ilQueryParser.php';
         if ($def->getFieldType() == ilAdvancedMDFieldDefinition::TYPE_SELECT) {
             $value = (int) $value;
             $options = $def->getFieldValues();
             if (!isset($options[$value - 1])) {
                 continue;
             }
             $value = $options[$value - 1];
         }
         if ($def->getFieldType() == ilAdvancedMDFieldDefinition::TYPE_DATE) {
             $start = $this->toUnixTime($_POST['date_start'][$key]['date']);
             $end = $this->toUnixTime($_POST['date_end'][$key]['date']);
         }
         if ($def->getFieldType() == ilAdvancedMDFieldDefinition::TYPE_DATETIME) {
             $start = $this->toUnixTime($_POST['date_start'][$key]['date'], $_POST['date_start'][$key]['time']);
             $end = $this->toUnixTime($_POST['date_end'][$key]['date'], $_POST['date_end'][$key]['time']);
         }
         $query_parser = new ilQueryParser(ilUtil::stripSlashes($value));
         if ($_POST['boolean'][$key] == 1) {
             $query_parser->setCombination('and');
         } else {
             $query_parser->setCombination('or');
         }
         $query_parser->parse();
         $adv_md_search = ilObjectSearchFactory::_getAdvancedMDSearchInstance($query_parser);
         $adv_md_search->setDefinition($def);
         $adv_md_search->setTimeRange($start, $end);
         $adv_md_search->setFilter($this->filter);
         $res_field = $adv_md_search->performSearch();
         $this->__storeEntries($res, $res_field);
     }
     return $res;
 }
 /**
  * Perform advanced meta data search
  *
  * @access private
  * @param obj result object
  * 
  */
 private function searchAdvancedMD($res)
 {
     $this->initFormSearch();
     include_once 'Services/AdvancedMetaData/classes/class.ilAdvancedMDFieldDefinition.php';
     foreach (array_keys($this->options) as $key) {
         if (substr($key, 0, 3) != 'adv') {
             continue;
         }
         // :TODO: ?
         if (!$key) {
             continue;
         }
         $field_id = substr($key, 4);
         $field = ilAdvancedMDFieldDefinition::getInstance($field_id);
         $field_form = ilADTFactory::getInstance()->getSearchBridgeForDefinitionInstance($field->getADTDefinition(), true, false);
         $field_form->setElementId("query[" . $key . "]");
         $field_form->setForm($this->form);
         // reload search values
         $field_form->importFromPost($this->options);
         $field_form->validate();
         $parser_value = $field->getSearchQueryParserValue($field_form);
         include_once 'Services/Search/classes/class.ilQueryParser.php';
         include_once 'Services/Search/classes/class.ilObjectSearchFactory.php';
         $adv_md_search = ilObjectSearchFactory::_getAdvancedMDSearchInstance(new ilQueryParser($parser_value));
         $adv_md_search->setFilter($this->filter);
         $adv_md_search->setDefinition($field);
         $adv_md_search->setSearchElement($field_form);
         $res_field = $adv_md_search->performSearch();
         if ($res_field instanceof ilSearchResult) {
             $this->__storeEntries($res, $res_field);
         }
     }
 }