/** * 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; }
/** * 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; }
/** * 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; }