function find_keyword($keyword_name) { # Attempt to find keyword $keyword = KeywordQuery::create()->useKeywordSynonymQuery()->filterByValue($keyword_name)->endUse()->findOne(); # Handle keyword if ($keyword) { # Return keyword return $keyword; } else { # Create keyword $keyword = new Keyword(); $keyword->setValue($keyword_name)->save(); # Create synonym $synonym = new Synonym(); $synonym->setKeyword($keyword)->setValue($keyword_name)->save(); # Return keyword return $keyword; } }
public function __construct(DBConnection $conn, $synonymName, $configKey, $sourceType) { $this->sourceType = $sourceType; parent::__construct($conn, $synonymName, $configKey); }
public function insert_vernacular_names($row, $parameters) { self::debug_iterations("Inserting VernacularName"); $this->commit_iterations("VernacularName", 500); if ($this->archive_validator->has_error_by_line('http://rs.gbif.org/terms/1.0/vernacularname', $parameters['archive_table_definition']->location, $parameters['archive_line_number'])) { write_to_resource_harvesting_log("ERROR: insert_vernacular_names: has_error_by_line" . ",file_location:" . $parameters['archive_table_definition']->location . ",line_number:" . $parameters['archive_line_number']); return false; } $taxon_ids = self::get_foreign_keys_from_row($row, 'http://rs.tdwg.org/dwc/terms/taxonID'); $taxon_info = array(); if ($taxon_ids) { foreach ($taxon_ids as $taxon_id) { if ($taxon_info = @$this->taxon_ids_inserted[$taxon_id]) { self::uncompress_array($taxon_info); $taxon_info[] = $taxon_info; } } } if (!$taxon_info) { return false; } $vernacularName = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/vernacularName']); $source = @self::field_decode($row['http://purl.org/dc/terms/source']); $languageString = @self::field_decode($row['http://purl.org/dc/terms/language']); $locality = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/locality']); $countryCode = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/countryCode']); $isPreferredName = @self::field_decode($row['http://rs.gbif.org/terms/1.0/isPreferredName']); $taxonRemarks = @self::field_decode($row['http://rs.tdwg.org/dwc/terms/taxonRemarks']); $name = Name::find_or_create_by_string($vernacularName); $language = Language::find_or_create_for_parser($languageString); if (!$name) { return false; } foreach ($taxon_info as $info) { $he_id = $taxon_info['hierarchy_entry_id']; $tc_id = $taxon_info['taxon_concept_id']; $common_name_relation = SynonymRelation::find_or_create_by_translated_label('common name'); $result = $this->mysqli->query("SELECT SQL_NO_CACHE id FROM synonyms" . " WHERE name_id = " . $name->id . " AND synonym_relation_id = " . $common_name_relation->id . " AND hierarchy_entry_id = " . $he_id . " AND hierarchy_id = " . $this->harvest_event->resource->hierarchy_id . " AND identifier = " . $taxon_ids[0]); if ($result && $result->fetch_assoc()) { $l_id = @$language->id ?: 0; $GLOBALS['db_connection']->update("UPDATE synonyms SET" . " language_id = " . $l_id . ", published = 0" . ", taxon_remarks = '" . $taxonRemarks . "' WHERE name_id = " . $name->id . " AND synonym_relation_id = " . $common_name_relation->id . " AND hierarchy_entry_id = " . $he_id . " AND hierarchy_id = " . $this->harvest_event->resource->hierarchy_id . "AND identifier = " . $taxon_ids[0]); break; } else { Synonym::find_or_create(array('name_id' => $name->id, 'synonym_relation_id' => $common_name_relation->id, 'language_id' => @$language->id ?: 0, 'hierarchy_entry_id' => $he_id, 'preferred' => $isPreferredName != '', 'hierarchy_id' => $this->harvest_event->resource->hierarchy_id, 'vetted_id' => 0, 'published' => 0, 'taxonRemarks' => $taxonRemarks, 'identifier' => $taxon_ids[0])); break; } } }
function details_tcs_synonym($id) { $entry = Synonym::find($id); $nomenclaturalCode = "Zoological"; $scientific = "true"; if ($entry->synonym_relation && $entry->synonym_relation->translation && strtolower($entry->synonym_relation->translation->label) == "common name") { $scientific = "false"; } $return = ""; $return .= " <TaxonNames>\n"; $return .= " <TaxonName id='n" . $entry->name->id . "' nomenclaturalCode='{$nomenclaturalCode}'>\n"; $return .= " <Simple>" . htmlspecialchars($entry->name->string) . "</Simple>\n"; if ($scientific == "true") { $return .= " <CanonicalName>\n"; $return .= " <Simple>" . htmlspecialchars($entry->name->canonical_form->string) . "</Simple>\n"; $return .= " </CanonicalName>\n"; } if ($agents = $entry->agents) { $return .= " <ProviderSpecificData>\n"; $return .= " <NameSources>\n"; foreach ($agents as $k => $v) { $return .= " <NameSource>\n"; $return .= " <Simple>" . htmlspecialchars($v->agent->display_name) . "</Simple>\n"; $return .= " <Role>" . htmlspecialchars($v->agent_role->translation->label) . "</Role>\n"; $return .= " </NameSource>\n"; } $return .= " </NameSources>\n"; $return .= " </ProviderSpecificData>\n"; } $return .= " </TaxonName>\n"; $return .= " </TaxonNames>\n"; $return .= " <TaxonConcepts>\n"; $return .= " <TaxonConcept id='c" . $entry->id . "'>\n"; $return .= " <Name scientific='{$scientific}' "; if (@$entry->language->iso_639_1) { $return .= "language='" . $entry->language->iso_639_1 . "' "; } $return .= "ref='n" . $entry->name->id . "'>" . htmlspecialchars($entry->name->string) . "</Name>\n"; $return .= " </TaxonConcept>\n"; $return .= " </TaxonConcepts>\n"; return $return; }