diff --git a/src/NodaIDGetter.php b/src/NodaIDGetter.php index 0e45fa0..8d20db3 100644 --- a/src/NodaIDGetter.php +++ b/src/NodaIDGetter.php @@ -689,4 +689,128 @@ final class NodaIDGetter { return $output; } + + /** Wrappers */ + + /** + * Gets a actor ID to check pre-existence for insertion. + * + * @param MDMysqli $mysqli_noda Database connection. + * @param string $lang Language to check in. + * @param string $name Name of the actor to search for. + * @param string $birthYear Year of birth. Optional. + * @param string $deathYear Year of death. Optional. + * @param string $instance Instance for checking import log. Optional. + * @param integer $institution_id Institution ID for checking import log. Optional. + * + * @return integer + */ + public static function getPersinstIDByNamesAndRewrites(MDMysqli $mysqli_noda, string $lang, string $name, string $birthYear, string $deathYear, string $instance = "", int $institution_id = 0):int { + + if (($persinstIdByName = self::getPersinstIDByName($mysqli_noda, $lang, $name)) !== 0) { + return $persinstIdByName; + } + + if (($persinstIdByRewrite = self::getPersinstIDByRewrite($mysqli_noda, $lang, $name)) !== 0) { + return $persinstIdByRewrite; + } + + if ($instance !== "") { + if (($persinstIdByImportLog = self::getPersinstIDByImportLog($mysqli_noda, $instance, $institution_id, $name, $birthYear, $deathYear)) !== 0) { + return $persinstIdByImportLog; + } + } + + return 0; + + } + + /** + * Gets a place ID to check pre-existence for insertion. + * + * @param MDMysqli $mysqli_noda Database connection. + * @param string $lang Language to check in. + * @param string $name Name of the place to search for. + * @param string $instance Instance for checking import log. Optional. + * @param integer $institution_id Institution ID for checking import log. Optional. + * + * @return integer + */ + public static function getPlaceIDByNamesAndRewrites(MDMysqli $mysqli_noda, string $lang, string $name, string $instance = "", int $institution_id = 0):int { + + if (($placeIdByName = self::getPlaceIDByName($mysqli_noda, $lang, $name)) !== 0) { + return $placeIdByName; + } + + if (($placeIdByRewrite = self::getPlaceIDByRewrite($mysqli_noda, $lang, $name)) !== 0) { + return $placeIdByRewrite; + } + + if ($instance !== "") { + if (($placeIdByImportLog = self::getPlaceIDByImportLog($mysqli_noda, $instance, $institution_id, $name)) !== 0) { + return $placeIdByImportLog; + } + } + + return 0; + + } + + /** + * Gets a tag ID to check pre-existence for insertion. + * + * @param MDMysqli $mysqli_noda Database connection. + * @param string $lang Language to check in. + * @param string $name Name of the tag to search for. + * @param string $instance Instance for checking import log. Optional. + * @param integer $institution_id Institution ID for checking import log. Optional. + * + * @return integer + */ + public static function getTagIDByNamesAndRewrites(MDMysqli $mysqli_noda, string $lang, string $name, string $instance = "", int $institution_id = 0):int { + + if (($tagIdByName = self::getTagIDByName($mysqli_noda, $lang, $name)) !== 0) { + return $tagIdByName; + } + + if (!empty($tagIdByRewrite = self::getTagIDByRewrite($mysqli_noda, $lang, $name))) { + return end($tagIdByRewrite); + } + + if ($instance !== "") { + if (($tagIdByImportLog = self::getTagIDByImportLog($mysqli_noda, $instance, $institution_id, $name)) !== 0) { + return $tagIdByImportLog; + } + } + + return 0; + + } + + /** + * Gets a time ID to check pre-existence for insertion. + * + * @param MDMysqli $mysqli_noda Database connection. + * @param string $lang Language to check in. + * @param string $name Name of the time to search for. + * @param string $instance Instance for checking import log. Optional. + * @param integer $institution_id Institution ID for checking import log. Optional. + * + * @return integer + */ + public static function getTimeIDByNamesAndRewrites(MDMysqli $mysqli_noda, string $lang, string $name, string $instance = "", int $institution_id = 0):int { + + if (($timeIdByName = self::getTimeIDByName($mysqli_noda, $lang, $name)) !== 0) { + return $timeIdByName; + } + + if ($instance !== "") { + if (($timeIdByImportLog = self::getTimeIDByImportLog($mysqli_noda, $instance, $institution_id, $name)) !== 0) { + return $timeIdByImportLog; + } + } + + return 0; + + } } diff --git a/src/NodaImportLogger.php b/src/NodaImportLogger.php new file mode 100644 index 0000000..dae02e5 --- /dev/null +++ b/src/NodaImportLogger.php @@ -0,0 +1,106 @@ + + */ +declare(strict_types = 1); + +/** + * Contains class NodaImportLogger for logging the mapping between entered term names + * and their resulting IDs. + */ +final class NodaImportLogger { + /** + * Logs link of a person with an institution. + * + * @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 integer $persinst_id Resulting actor ID. + * @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 void + */ + public static function logImportForPersinstByInstitution(MDMysqli $mysqli_noda, string $instance, int $institution_id, int $persinst_id, string $name, string $birthYear = "", string $deathYear = ""):void { + + $loggedName = $name . $birthYear . $deathYear; + + $logStmt = $mysqli_noda->do_prepare("INSERT INTO `persinst_logged_imports` + (`instance`, `institution_id`, `input_string`, `persinst_id`) + VALUES (?, ?, ?, ?)"); + $logStmt->bind_param("sisi", $instance, $institution_id, $loggedName, $persinst_id); + $logStmt->execute(); + $logStmt->close(); + + } + + /** + * Logs link of a place with an institution. + * + * @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 integer $ort_id Resulting place ID. + * @param string $name Name of the place to search for. + * + * @return void + */ + public static function logImportForPlaceByInstitution(MDMysqli $mysqli_noda, string $instance, int $institution_id, int $ort_id, string $name):void { + + $logStmt = $mysqli_noda->do_prepare("INSERT INTO `orte_logged_imports` + (`instance`, `institution_id`, `input_string`, `ort_id`) + VALUES (?, ?, ?, ?)"); + $logStmt->bind_param("sisi", $instance, $institution_id, $name, $ort_id); + $logStmt->execute(); + $logStmt->close(); + + } + + /** + * Logs link of a time with an institution. + * + * @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 integer $zeit_id Resulting time ID. + * @param string $name Name of the time to search for. + * + * @return void + */ + public static function logImportForTimeByInstitution(MDMysqli $mysqli_noda, string $instance, int $institution_id, int $zeit_id, string $name):void { + + $logStmt = $mysqli_noda->do_prepare("INSERT INTO `zeiten_logged_imports` + (`instance`, `institution_id`, `input_string`, `zeit_id`) + VALUES (?, ?, ?, ?)"); + $logStmt->bind_param("sisi", $instance, $institution_id, $name, $zeit_id); + $logStmt->execute(); + $logStmt->close(); + + } + + /** + * Logs link of a tag with an institution. + * + * @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 integer $tag_id Resulting tag ID. + * @param string $name Name of the tag to search for. + * + * @return void + */ + public static function logImportForTagByInstitution(MDMysqli $mysqli_noda, string $instance, int $institution_id, int $tag_id, string $name):void { + + $logStmt = $mysqli_noda->do_prepare("INSERT INTO `tag_logged_imports` + (`instance`, `institution_id`, `input_string`, `tag_id`) + VALUES (?, ?, ?, ?)"); + $logStmt->bind_param("sisi", $instance, $institution_id, $name, $tag_id); + $logStmt->execute(); + $logStmt->close(); + + } +}