* @license http://www.contenido.org/license/LIZENZ.txt * @link http://www.4fb.de * @link http://www.contenido.org * * * * {@internal * created unknown * modified 2008-07-07, bilal arslan, added security fix * modified 2011-02-07, Dominik Ziegler, changed "TYPE" attribute to "ENGINE" for MySQL 5.5+ support * modified 2011-03-21, Murat Purc, new method getSetupMySQLDBConnection() and usage of new db connection * modified 2011-05-17, Ortwin Pinke, bug fixed in getSetupMySQLDBConnection(), sequenceTable has to be set in conf-array * * $Id$: * }} * */ if (!defined('CON_FRAMEWORK')) { die('Illegal call'); } function hasMySQLExtension() { if (isPHPExtensionLoaded("mysql") == E_EXTENSION_AVAILABLE) { return true; } else { return false; } } function hasMySQLiExtension() { if (isPHPExtensionLoaded("mysqli") == E_EXTENSION_AVAILABLE) { return true; } else { return false; } } function doMySQLConnect($host, $username, $password) { $aOptions = ['connection' => ['host' => $host, 'user' => $username, 'password' => $password]]; $db = new DB_Contenido($aOptions); //$sFile = '../data/logs/setup_queries.txt'; //file_put_contents($sFile, $db->getServerInfo(), FILE_APPEND); //chmod($sFile, 0666); if (empty($db->connect())) { return [$db, false]; } else { return [$db, true]; } } function getSetupMySQLDBConnection($full = true) { if ($full === false) { // host, user and password $aOptions = ['connection' => ['host' => $_SESSION["dbhost"], 'user' => $_SESSION["dbuser"], 'password' => $_SESSION["dbpass"]], 'sequenceTable' => $_SESSION['dbprefix'] . '_sequence']; } else { // host, database, user and password $aOptions = ['connection' => ['host' => $_SESSION["dbhost"], 'database' => $_SESSION["dbname"], 'user' => $_SESSION["dbuser"], 'password' => $_SESSION["dbpass"]], 'sequenceTable' => $_SESSION['dbprefix'] . '_sequence']; } //$aOptions['enableProfiling'] = TRUE; $db = new DB_Contenido($aOptions); return $db; } function fetchMySQLVersion($db) { $db->query("SELECT VERSION()"); if ($db->next_record()) { return $db->f(0); } else { return false; } } function fetchMySQLUser($db) { $db->query("SELECT USER()"); if ($db->next_record()) { return ($db->f(0)); } else { return false; } } function checkMySQLDatabaseCreation($db, $database) { if (checkMySQLDatabaseExists($db, $database)) { return true; } else { $db->query("CREATE DATABASE $database"); if ($db->Errno != 0) { return false; } else { return true; } } } function checkMySQLDatabaseExists($db, $database): bool { $db->connect(); if (hasMySQLiExtension() && !hasMySQLExtension()) { if (mysqli_select_db($db->Link_ID,$database)) { return true; } else { $db->query("SHOW DATABASES LIKE '$database'"); if ($db->next_record()) { return true; } else { return false; } } } else { if (mysqli_select_db($db->Link_ID, $database)) { return true; } else { $db->query("SHOW DATABASES LIKE '$database'"); if ($db->next_record()) { return true; } else { return false; } } } } function checkMySQLDatabaseUse($db, $database) { $db->connect(); if (hasMySQLiExtension() && !hasMySQLExtension()) { if (@mysqli_select_db($db->Link_ID, $database)) { return true; } else { return false; } } else { if (@mysqli_select_db($db->Link_ID, $database)) { return true; } else { return false; } } } function checkMySQLTableCreation($db, $database, $table) { if (checkMySQLDatabaseUse($db, $database) == false) { return false; } $db->query("CREATE TABLE $table (test INT( 1 ) NOT NULL) ENGINE = MYISAM ;"); if ($db->Errno == 0) { return true; } else { return false; } } function checkMySQLLockTable($db, $database, $table) { if (checkMySQLDatabaseUse($db, $database) == false) { return false; } $db->query("LOCK TABLES $table WRITE"); if ($db->Errno == 0) { return true; } else { return false; } } function checkMySQLUnlockTables($db, $database) { if (checkMySQLDatabaseUse($db, $database) == false) { return false; } $db->query("UNLOCK TABLES"); if ($db->Errno == 0) { return true; } else { return false; } } function checkMySQLDropTable($db, $database, $table) { if (checkMySQLDatabaseUse($db, $database) == false) { return false; } $db->query("DROP TABLE $table"); if ($db->Errno == 0) { return true; } else { return false; } } function checkMySQLDropDatabase($db, $database) { $db->query("DROP DATABASE $database"); if ($db->Errno == 0) { return true; } else { return false; } } function fetchMySQLStorageEngines($db) { $db->query("SHOW ENGINES"); $engines = []; while ($db->next_record()) { $engines[] = $db->f(0); } return ($engines); } ?>