'false', 'qt' => $requestHandler, ); try { $results = $solr->search($query, 0, 10,$additionalParams); }catch (Exception $e) { drupal_set_message(t('error searching ').$e->getMessage()); } if(empty($results)){ drupal_set_message(t('Error searching solr index. Is the solr search block configured properly?'),'error'); return ' '; } header('content-type: text/plain'); $matches = array(); foreach($results->response->docs as $doc) { $item = new fedora_item($doc->id); $mods = $item->get_datastream_dissemination('MODS'); if (trim($mods) != '') { $modsDom = new DomDocument(); $modsDom->loadXML($mods); $xpath = new DOMXPath($modsDom); $xpath->registerNamespace("php", "http://php.net/xpath"); $xpath->registerPHPFunctions(); // echo $mods; $nodeList = $xpath->evaluate('/mods:mods/mods:name'); foreach ($nodeList as $node) { $type=$node->getAttribute('type'); $title=null; $name =null; $given=null; $family=null; $date = null; $nameParts = $node->getElementsByTagName('namePart'); foreach ($nameParts as $part) { switch ($part->getAttribute('type')) { case 'given': $given = $part->nodeValue; break; case 'family': $family = $part->nodeValue; break; case 'termsOfAddress': $title= $part->nodeValue; break; case 'date': $date = $part->nodeValue; break; default: $name = $part->nodeValue; break; } } if ($name == null && isset($given) && isset($family)) { $name = (isset($title)?$title.' ':'').$family.', '.$given; } $role =null; $roleTerm = $node->getElementsByTagName('roleTerm'); if ($roleTerm->length > 0) { $role=$roleTerm->item(0)->nodeValue; } if (strpos(strtolower($name),$string)!==FALSE) { $display = $name; $matches[json_encode(array('type'=>trim($type),'name'=>trim($name),'role'=>trim($role),'date'=>trim($date)))]= $display.' - '.$role.' '.$date; } } } } drupal_json($matches); exit(); } function ife_autocomplete_marcrelator($collection, $string='') { $moduleRoot = drupal_get_path('module', 'islandora_form_elements'); if ($string == '') { $string = $collection; $collection = FALSE; } $string=ucfirst(trim($string)); $dom = DOMDocument::load ( $moduleRoot .'/xml/relators.rdf' ); $rootEl = $dom->getElementsByTagName('RDF'); if ($rootEl->length > 0) { $rootEl=$rootEl->item(0); $xpath = new DOMXPath($dom); $xpath->registerNamespace ( 'skos' , $rootEl->getAttribute('xmlns:skos') ); $xpath->registerNamespace ( 'rdf' , $rootEl->getAttribute('xmlns:rdf') ); $result = $xpath->query('/rdf:RDF/rdf:Description[starts-with(skos:prefLabel, "'. $string .'")]'); $terms = array(); foreach ($result as $term) { $termVal =$term->getElementsByTagName('prefLabel')->item(0)->nodeValue; $termVal = preg_replace('/\s+/', ' ', $termVal); $terms[$term->getElementsByTagName('notation')->item(0)->nodeValue]= $termVal; } echo drupal_json($terms); } } function ife_autocomplete_gacs($collection, $string='') { $moduleRoot = drupal_get_path('module', 'islandora_form_elements'); if ($string == '') { $string = $collection; $collection = FALSE; } $string=ucwords($string); $dom = DOMDocument::load ( $moduleRoot .'/xml/gacs.xml' ); $rootEl = $dom->getElementsByTagName('codelist'); if ($rootEl->length > 0) { $rootEl=$rootEl->item(0); $xpath = new DOMXPath($dom); $xpath->registerNamespace ( 'a' , $rootEl->getAttribute('xmlns') ); $result = $xpath->query('/a:codelist/a:gacs/a:gac[starts-with(a:name, "'. $string .'")]'); $gacs = array(); foreach ($result as $gac) { $gacs[$gac->getElementsByTagName('name')->item(0)->nodeValue]= $gac->getElementsByTagName('name')->item(0)->nodeValue; } echo drupal_json($gacs); } } function ife_autocomplete_language($collection, $string='') { $moduleRoot=drupal_get_path('module', 'islandora_form_elements'); if ($string == '') { $string = $collection; $collection = FALSE; } $string=ucwords($string); $dom = DOMDocument::load ( $moduleRoot .'/xml/languages.xml' ); $rootEl = $dom->getElementsByTagName('codelist'); if ($rootEl->length > 0) { $rootEl=$rootEl->item(0); $xpath = new DOMXPath($dom); $xpath->registerNamespace ( 'a' , $rootEl->getAttribute('xmlns') ); $result = $xpath->query('/a:codelist/a:languages/a:language[starts-with(a:name, "'. $string .'")]'); $languages = array(); foreach ($result as $lang) { $languages[$lang->getElementsByTagName('name')->item(0)->nodeValue]= $lang->getElementsByTagName('name')->item(0)->nodeValue; } echo drupal_json($languages); } } function ife_autocomplete($field, $collection, $string='') { if ($string == '') { $string=$collection; $collection=FALSE; } module_load_include('php', 'islandora_solr_search', 'Solr/Service'); $host = variable_get('islandora_solr_search_block_host', 'localhost'); $port = variable_get('islandora_solr_search_block_port', '8080'); $appName = variable_get('islandora_solr_search_block_app_name', 'solr'); $solr = new Apache_Solr_Service($host, $port, '/'. $appName .'/'); $additionalParams = array( 'fl' => $field ); $query = $field .':'. $solr->escape(strtolower($string)) .'*'; if ($collection != FALSE) { $query .= ' AND related_item_identifier_t:'. $solr->escape($collection); } try { $results = $solr->search($query, 0, 10, $additionalParams); } catch (Exception $e) { drupal_set_message(t('error searching ') . $e->getMessage()); } $docs = $results->response->docs; $values = array(); if ($docs != NULL) { foreach ($docs as $doc) { $resfield=$doc->getField($field); if (is_array($resfield['value'])) { foreach ($resfield['value'] as $val) { if (preg_match('/^'.strtolower($string).'/i',$val)) { $values[$val]=$val; } } } else { $values[$resfield['value']]=$resfield['value']; } } } return drupal_json($values); }