Example #1
0
 function handle()
 {
     $output = array();
     // Get and handle a comma-seperated list of valid params which we will forward to the indexer
     $permitted_forwarding_params = explode(',', $this->options['valid_solr_params']);
     $forwarded_params = array_intersect_key(array_flip($permitted_forwarding_params), $this->params);
     $fields = array();
     foreach ($forwarded_params as $param_name => $_) {
         $fields[$param_name] = $this->params[$param_name];
     }
     $fields = array_merge($this->default_params, $fields);
     $CI =& get_instance();
     $CI->load->library('solr');
     foreach ($fields as $key => $field) {
         $CI->solr->setOpt($key, $field);
     }
     // Get back a list of IDs for matching registry objects
     $solr_result = $CI->solr->executeSearch(true);
     $rifcsOutput = array();
     $CI->load->helper('crosswalks');
     $crosswalks = getCrossWalks();
     if (isset($solr_result['response']['docs']) && is_array($solr_result['response']['docs'])) {
         foreach ($solr_result['response']['docs'] as $result) {
             $CI->load->model('registry_object/registry_objects', 'ro');
             $registryObject = $CI->ro->getByID((int) $result['id']);
             if ($registryObject) {
                 $nativeFormat = $registryObject->getNativeFormat();
                 // Try and get the native version?
                 if (in_array($nativeFormat, array(RIFCS_SCHEME, EXTRIF_SCHEME))) {
                     $registryObjects[] = array("slug" => $registryObject->slug, "scheme" => $nativeFormat, "data" => wrapRegistryObjects($registryObject->getRif()));
                 } else {
                     // Check for a matching scheme from a crosswalk
                     $matched = false;
                     foreach ($crosswalks as $cw) {
                         if ($cw->metadataFormat() == $nativeFormat) {
                             $matched = true;
                             $registryObjects[] = array("slug" => $registryObject->slug, "scheme" => $nativeFormat, "data" => $cw->wrapNativeFormat($registryObject->getNativeFormatData()));
                         }
                     }
                     // If no matching crosswalk wraped, then just spit out whatever we've got...
                     if (!$matched) {
                         $registryObjects[] = array("slug" => $registryObject->slug, "scheme" => $nativeFormat, "data" => $registryObject->getNativeFormatData());
                     }
                 }
             }
         }
     }
     $rifcsOutput = array("numFound" => $solr_result['response']['numFound'], "start" => $solr_result['response']['start'], "docs" => &$registryObjects);
     // Bubble back the output status
     return $this->formatter->display($rifcsOutput);
 }
Example #2
0
 /**
  * 
  */
 public function setCrosswalk($crosswalk_metadata_format)
 {
     $crosswalk_identity = '';
     if (!$crosswalk_metadata_format) {
         return;
     }
     $predefinedProviderTypes = $this->CI->config->item('provider_types');
     //	die("ppt: ". $predefinedProviderTypes);
     foreach ($predefinedProviderTypes as $ppt) {
         if ($ppt['prefix'] == $crosswalk_metadata_format) {
             $crosswalk_identity = $ppt['cross_walk'];
         }
     }
     $crosswalks = getCrossWalks();
     foreach ($crosswalks as $crosswalk) {
         if ($crosswalk->metadataFormat() == $crosswalk_metadata_format || $crosswalk->identify() == $crosswalk_identity) {
             $this->crosswalk = $crosswalk;
         }
     }
     return;
     /*if($crosswalk_identity == '') { return;}
     		if (!$this->crosswalk)
     		{
     			throw new Exception("Unable to load crosswalk: " . $crosswalk_metadata_format);
     		}*/
 }