*/ declare(strict_types = 1); /** * Contains static functions for getting IDs for noda entries by various means. */ final class NodaIDGetter { /** * Returns persinst ID by entry in persinst name rewriting table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $lang Language to check in. * @param string $name Name of the persinst to search for. * * @return integer */ public static function getPersinstIDByRewrite(MDMysqli $mysqli_noda, string $lang, string $name):int { if (empty($name)) return 0; $persinstRewriteResult = $mysqli_noda->query_by_stmt(" SELECT `persinst_id` FROM `persinst_rewriting` WHERE `language` = ? AND `input_name` = ? LIMIT 1", "ss", $lang, $name); if ($persinstRewriteData = $persinstRewriteResult->fetch_row()) { $output = $persinstRewriteData[0]; } else $output = 0; $persinstRewriteResult->close(); $persinstRewriteResult = null; return $output; } /** * Returns persinst ID by entry in persinst translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $lang Language to check in. * @param string $name Name of the persinst to search for. * * @return integer */ public static function getPersinstIDByTransName(MDMysqli $mysqli_noda, string $lang, string $name):int { if (empty($name)) return 0; $persinstByTLNameResult = $mysqli_noda->query_by_stmt(" SELECT `persinst_id` FROM `persinst_translation` WHERE `trans_name` = ? AND `trans_language` = ? LIMIT 2", "ss", $name, $lang); if ($persinstByTlData = $persinstByTLNameResult->fetch_row()) { $output = $persinstByTlData[0]; } else $output = 0; $persinstByTLNameResult->close(); $persinstByTLNameResult = null; return $output; } /** * Returns place ID by entry in place noda table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $noda_source Language to check in. * @param string $noda_nrinsource Name of the place to search for. * * @return integer */ public static function getPersinstIDByNodaLink(MDMysqli $mysqli_noda, string $noda_source, string $noda_nrinsource):int { if (empty($noda_nrinsource)) return 0; $result = $mysqli_noda->query_by_stmt(" SELECT `persinst_id` FROM `noda` WHERE `noda_source` = ? AND `noda_nrinsource` = ? LIMIT 2", "ss", $noda_source, $noda_nrinsource); if ($data = $result->fetch_row()) { $output = $data[0]; } else $output = 0; $result->close(); $result = null; return $output; } /** * Returns persinst ID by entry in persinst translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $instance Instance in which the import was run. * @param integer $institution_id ID of the importing institution. * @param string $name Name of the persinst to search for. * @param string $birthYear Year of birth. Optional. * @param string $deathYear Year of death. Optional. * * @return integer */ public static function getPersinstIDByImportLog(MDMysqli $mysqli_noda, string $instance, int $institution_id, string $name, string $birthYear = "", string $deathYear = ""):int { if (empty($name)) return 0; $lookUpName = $name . $birthYear . $deathYear; $persinstByImportLogResult = $mysqli_noda->query_by_stmt(" SELECT `persinst_id` FROM `persinst_logged_imports` WHERE `instance` = ? AND `institution_id` = ? AND `input_string` = ? LIMIT 2", "sis", $instance, $institution_id, $lookUpName); if ($persinstByImportLogData = $persinstByImportLogResult->fetch_row()) { $output = $persinstByImportLogData[0]; } else $output = 0; $persinstByImportLogResult->close(); $persinstByImportLogResult = null; return $output; } /** * Returns place ID by entry in place name rewriting table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $lang Language to check in. * @param string $name Name of the place to search for. * * @return integer */ public static function getPlaceIDByRewrite(MDMysqli $mysqli_noda, string $lang, string $name):int { if (empty($name)) return 0; $placeRewriteResult = $mysqli_noda->query_by_stmt(" SELECT `ort_id` FROM `ort_rewriting` WHERE `language` = ? AND `input_name` = ? LIMIT 1", "ss", $lang, $name); if ($placeRewriteData = $placeRewriteResult->fetch_row()) { $output = $placeRewriteData[0]; } else $output = 0; $placeRewriteResult->close(); $placeRewriteResult = null; return $output; } /** * Returns place ID by base name. * * @param MDMysqli $mysqli_noda Database connection. * @param string $name Name of the place to search for. * * @return integer */ public static function getPlaceIDByBaseName(MDMysqli $mysqli_noda, string $name):int { if (empty($name)) return 0; $placeByBaseNameResult = $mysqli_noda->query_by_stmt(" SELECT `ort_id` FROM `orte` WHERE `ort_name` = ? LIMIT 2", "s", $name); if ($placeByBaseData = $placeByBaseNameResult->fetch_row()) { $output = $placeByBaseData[0]; } else $output = 0; $placeByBaseNameResult->close(); $placeByBaseNameResult = null; return $output; } /** * Returns place ID by entry in place translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $lang Language to check in. * @param string $name Name of the place to search for. * * @return integer */ public static function getPlaceIDByTransName(MDMysqli $mysqli_noda, string $lang, string $name):int { if (empty($name)) return 0; $placeByTLNameResult = $mysqli_noda->query_by_stmt(" SELECT `ort_id` FROM `ort_translation` WHERE `trans_name` = ? AND `trans_language` = ? LIMIT 2", "ss", $name, $lang); if ($placeByTlData = $placeByTLNameResult->fetch_row()) { $output = $placeByTlData[0]; } else $output = 0; $placeByTLNameResult->close(); $placeByTLNameResult = null; return $output; } /** * Returns place ID by entry in place noda table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $noda_source Language to check in. * @param string $noda_nrinsource Name of the place to search for. * * @return integer */ public static function getPlaceIDByNodaLink(MDMysqli $mysqli_noda, string $noda_source, string $noda_nrinsource):int { if (empty($noda_nrinsource)) return 0; $placeByNodaResult = $mysqli_noda->query_by_stmt(" SELECT `ort_id` FROM `noda_orte` WHERE `noda_source` = ? AND `noda_nrinsource` = ? LIMIT 2", "ss", $noda_source, $noda_nrinsource); if ($data = $placeByNodaResult->fetch_row()) { $output = $data[0]; } else $output = 0; $placeByNodaResult->close(); $placeByNodaResult = null; return $output; } /** * Returns place ID by entry in place translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $instance Instance in which the import was run. * @param integer $institution_id ID of the importing institution. * @param string $name Name of the place to search for. * * @return integer */ public static function getPlaceIDByImportLog(MDMysqli $mysqli_noda, string $instance, int $institution_id, string $name):int { if (empty($name)) return 0; $placeByImportLogResult = $mysqli_noda->query_by_stmt(" SELECT `ort_id` FROM `orte_logged_imports` WHERE `instance` = ? AND `institution_id` = ? AND `input_string` = ? LIMIT 2", "sis", $instance, $institution_id, $name); if ($placeByImportLogData = $placeByImportLogResult->fetch_row()) { $output = $placeByImportLogData[0]; } else $output = 0; $placeByImportLogResult->close(); $placeByImportLogResult = null; return $output; } /** * Returns tag ID by entry in tag translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $name Name of the tag to search for. * * @return integer */ public static function getTagIDByBaseName(MDMysqli $mysqli_noda, string $name):int { if (empty($name)) return 0; $tagByBaseNameResult = $mysqli_noda->query_by_stmt(" SELECT `tag_id` FROM `tag` WHERE `tag_name` = ? LIMIT 2", "s", $name); if ($tagByBaseData = $tagByBaseNameResult->fetch_row()) { $output = $tagByBaseData[0]; } else $output = 0; $tagByBaseNameResult->close(); $tagByBaseNameResult = null; return $output; } /** * Returns tag ID by entry in tag translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $lang Language to check in. * @param string $name Name of the tag to search for. * * @return integer */ public static function getTagIDByTransName(MDMysqli $mysqli_noda, string $lang, string $name):int { if (empty($name)) return 0; $tagByTLNameResult = $mysqli_noda->query_by_stmt(" SELECT `tag_id` FROM `tag_translation` WHERE `trans_name` = ? AND `trans_language` = ? LIMIT 2", "ss", $name, $lang); if ($tagByTlData = $tagByTLNameResult->fetch_row()) { $output = $tagByTlData[0]; } else $output = 0; $tagByTLNameResult->close(); $tagByTLNameResult = null; return $output; } /** * Returns tag ID by entry in tag noda table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $noda_source Language to check in. * @param string $noda_nrinsource Name of the tag to search for. * * @return integer */ public static function getTagIDByNodaLink(MDMysqli $mysqli_noda, string $noda_source, string $noda_nrinsource):int { if (empty($noda_nrinsource)) return 0; $tagByNodaResult = $mysqli_noda->query_by_stmt(" SELECT `tag_id` FROM `noda_tag` WHERE `noda_source` = ? AND `noda_nrinsource` = ? LIMIT 2", "ss", $noda_source, $noda_nrinsource); if ($tagByNodaData = $tagByNodaResult->fetch_row()) { $output = $tagByNodaData[0]; } else $output = 0; $tagByNodaResult->close(); $tagByNodaResult = null; return $output; } /** * Returns tag ID by entry in tag name rewriting table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $lang Language to check in. * @param string $name Name of the tag to search for. * * @return array */ public static function getTagIDByRewrite(MDMysqli $mysqli_noda, string $lang, string $name):array { if (empty($name)) return []; $output = []; $tagRewriteResult = $mysqli_noda->query_by_stmt(" SELECT `tag_id` FROM `tag_rewriting` WHERE `tag_language` = ? AND `input_name` = ?", "ss", $lang, $name); while ($tagRewriteData = $tagRewriteResult->fetch_row()) { $output[] = $tagRewriteData[0]; } $tagRewriteResult->close(); $tagRewriteResult = null; return $output; } /** * Returns tag ID by entry in tag translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $instance Instance in which the import was run. * @param integer $institution_id ID of the importing institution. * @param string $name Name of the tag to search for. * * @return integer */ public static function getTagIDByImportLog(MDMysqli $mysqli_noda, string $instance, int $institution_id, string $name):int { if (empty($name)) return 0; $tagByImportLogResult = $mysqli_noda->query_by_stmt(" SELECT `tag_id` FROM `tag_logged_imports` WHERE `instance` = ? AND `institution_id` = ? AND `input_string` = ? LIMIT 2", "sis", $instance, $institution_id, $name); if ($tagByImportLogData = $tagByImportLogResult->fetch_row()) { $output = $tagByImportLogData[0]; } else $output = 0; $tagByImportLogResult->close(); $tagByImportLogResult = null; return $output; } /** * Returns time ID by entry in time translations table. * * @param MDMysqli $mysqli_noda Database connection. * @param string $instance Instance in which the import was run. * @param integer $institution_id ID of the importing institution. * @param string $name Name of the time to search for. * * @return integer */ public static function getTimeIDByImportLog(MDMysqli $mysqli_noda, string $instance, int $institution_id, string $name):int { if (empty($name)) return 0; $timeByImportLogResult = $mysqli_noda->query_by_stmt(" SELECT `zeit_id` FROM `zeiten_logged_imports` WHERE `instance` = ? AND `institution_id` = ? AND `input_string` = ? LIMIT 2", "sis", $instance, $institution_id, $name); if ($timeByImportLogData = $timeByImportLogResult->fetch_row()) { $output = $timeByImportLogData[0]; } else $output = 0; $timeByImportLogResult->close(); $timeByImportLogResult = null; return $output; } }