Esempio n. 1
7
 /**
  * Handles displaying a subset of Multimedia records, linked from the detail page.
  *
  * @param string $type
  *   The subset type that we're displaying.
  *
  * @param int $taxonomyIRN
  *   The Taxonomy IRN for the subset of records to display.
  *
  * @return view
  */
 public function showSubset($type, $taxonomyIRN)
 {
     $multimedia = new Multimedia();
     $records = $multimedia->getSubset($type, $taxonomyIRN);
     $genusSpecies = $multimedia->getGenusSpecies($records[0]);
     $view = view('subset', ['genus_species' => $genusSpecies, 'type' => $type, 'records' => $records])->render();
     return $view;
 }
Esempio n. 2
0
 /**
  * Retrieves the individual Catalog record.
  *
  * @param int $irn
  *   The IRN of the Catalog record to return.
  *
  * @return array
  *   Returns an array of the Catalog record.
  */
 public function getRecord($irn) : array
 {
     // Create a Session and selecting the module we want to query.
     $session = new \IMuSession(config('emuconfig.emuserver'), config('emuconfig.emuport'));
     $module = new \IMuModule('ecatalogue', $session);
     // Adding our search terms.
     $terms = new \IMuTerms();
     $terms->add('irn', $irn);
     // Fetching results.
     $module->findTerms($terms);
     $columns = config('emuconfig.catalog_fields');
     $result = $module->fetch('start', 0, 1, $columns);
     // If there's no record, abort.
     if (empty($result->rows)) {
         abort(404);
     }
     $record = $result->rows[0];
     // Additional record processing.
     $record['genus_species'] = $record['DarGenus'] . " " . $record['DarSpecies'];
     $record['collection_data'] = $record['SummaryData'];
     $record['total_count'] = $record['LotTotalCount'];
     $record['semaphoronts'] = $this->getSemaphoronts($record);
     $record['identified_by'] = $record['IdeIdentifiedByRef_nesttab'][0][0]['SummaryData'] ?? null;
     $record['date_identified'] = $record['IdeDateIdentified0'][0] ?? null;
     $record['collection_event'] = $record['ColCollectionEventRef']['SummaryData'] ?? null;
     $record['collection_method'] = $record['ColCollectionEventRef']['ColCollectionMethod'] ?? null;
     $record['collection_event_code'] = $record['ColCollectionEventRef']['ColCollectionEventCode'] ?? null;
     $record['date_visited_from'] = $record['ColCollectionEventRef']['ColDateVisitedFrom'] ?? null;
     $record['date_visited_to'] = $record['ColCollectionEventRef']['ColDateVisitedTo'] ?? null;
     $record['collected_by'] = $record['ColCollectionEventRef']['ColParticipantRef_tab'][0]['SummaryData'] ?? null;
     $record['lat'] = $record['DarLatitude'] ?? null;
     $record['lng'] = $record['DarLongitude'] ?? null;
     $record['elevation'] = $record['DarMinimumElevation'] ?? null;
     $record['habitat'] = $this->getHabitat($record) ?? null;
     // Attached Multimedia processing.
     if (!empty($record['MulMultiMediaRef_tab'])) {
         foreach ($record['MulMultiMediaRef_tab'] as $multimedia) {
             $multimedia['thumbnail_url'] = Multimedia::fixThumbnailURL($multimedia);
             $record['multimedia'][] = $multimedia;
         }
     }
     // Set the individual Multimedia record.
     $this->record = $record;
     return $this->record;
 }
Esempio n. 3
0
 /**
  * Retrieve and add all of the LinEpig records for the search database.
  * We can't use the main Multimedia function because it only includes
  * the primary records.
  *
  * @return void
  */
 public function addRecords()
 {
     // Create a Session.
     $session = new \IMuSession(config('emuconfig.emuserver'), config('emuconfig.emuport'));
     $module = new \IMuModule('emultimedia', $session);
     // Adding our search terms.
     $terms = new \IMuTerms();
     $terms->add('MulMultimediaCreatorRef_tab', '177281');
     $columns = config('emuconfig.search_fields');
     // Fetching results.
     $hits = $module->findTerms($terms);
     $results = $module->fetch('start', 0, -1, $columns);
     $this->records = $results->rows;
     $i = 1;
     foreach ($this->records as $record) {
         // Process the record for insertion into search table.
         $irn = (int) $record['irn'];
         $module = "emultimedia";
         $genus = @$record['etaxonomy:MulMultiMediaRef_tab'][0]['ClaGenus'];
         $species = @$record['etaxonomy:MulMultiMediaRef_tab'][0]['ClaSpecies'];
         $keywords = @$this->combineArrayForSearch($record['DetSubject_tab']);
         $title = $record['MulTitle'];
         $description = $record['MulDescription'];
         $thumbnailURL = Multimedia::fixThumbnailURL($record);
         $searchString = $this->combineArrayForSearch($record);
         // Add record to search table.
         DB::insert('INSERT INTO search (
                     irn, module, genus, species, keywords, title,
                     description, thumbnailURL, search)
                     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)', [$irn, $module, $genus, $species, $keywords, $title, $description, $thumbnailURL, $searchString]);
         Log::info("Added {$i} records to the search table.");
         print "Added {$i} records to the search table." . PHP_EOL;
         $i++;
     }
     Log::info("Done adding records to the search database.");
     print "Done adding records to the search database." . PHP_EOL;
 }