fetchValue('SELECT @@ndb_version_string') ?: '' ); if (substr($ndbver, 0, 4) === 'ndb-') { $ndbver = substr($ndbver, 4); } return version_compare($ndbver, '7.3', '>='); } return false; } /** * Is Foreign key check enabled? */ public static function isCheckEnabled(): bool { global $dbi; if ($GLOBALS['cfg']['DefaultForeignKeyChecks'] === 'enable') { return true; } if ($GLOBALS['cfg']['DefaultForeignKeyChecks'] === 'disable') { return false; } return $dbi->getVariable('FOREIGN_KEY_CHECKS') === 'ON'; } /** * Handle foreign key check request */ public static function handleDisableCheckInit(): bool { global $dbi; $defaultCheckValue = $dbi->getVariable('FOREIGN_KEY_CHECKS') === 'ON'; if (isset($_REQUEST['fk_checks'])) { if (empty($_REQUEST['fk_checks'])) { // Disable foreign key checks $dbi->setVariable('FOREIGN_KEY_CHECKS', 'OFF'); } else { // Enable foreign key checks $dbi->setVariable('FOREIGN_KEY_CHECKS', 'ON'); } } return $defaultCheckValue; } /** * Cleanup changes done for foreign key check * * @param bool $defaultCheckValue original value for 'FOREIGN_KEY_CHECKS' */ public static function handleDisableCheckCleanup(bool $defaultCheckValue): void { global $dbi; $dbi->setVariable('FOREIGN_KEY_CHECKS', $defaultCheckValue ? 'ON' : 'OFF'); } }