2016-10-06 15:57:01 +00:00
|
|
|
<?php
|
2017-08-30 12:04:03 +00:00
|
|
|
|
2016-10-06 15:57:01 +00:00
|
|
|
/**
|
|
|
|
* Project:
|
|
|
|
* Contenido Content Management System
|
|
|
|
*
|
|
|
|
* Description:
|
|
|
|
*
|
|
|
|
* Requirements:
|
|
|
|
* @con_php_req 5
|
|
|
|
*
|
|
|
|
* @package ContenidoBackendArea
|
|
|
|
* @version 0.3.1
|
|
|
|
* @author unknown
|
|
|
|
* @copyright four for business AG <www.4fb.de>
|
|
|
|
* @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
|
|
|
|
*
|
2019-07-03 11:58:28 +00:00
|
|
|
* $Id$:
|
2016-10-06 15:57:01 +00:00
|
|
|
* }}
|
|
|
|
*
|
|
|
|
*/
|
2017-08-30 12:04:03 +00:00
|
|
|
if (!defined('CON_FRAMEWORK')) {
|
|
|
|
die('Illegal call');
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function hasMySQLExtension() {
|
|
|
|
if (isPHPExtensionLoaded("mysql") == E_EXTENSION_AVAILABLE) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function hasMySQLiExtension() {
|
|
|
|
if (isPHPExtensionLoaded("mysqli") == E_EXTENSION_AVAILABLE) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function doMySQLConnect($host, $username, $password) {
|
2023-04-07 17:50:44 +00:00
|
|
|
$aOptions = ['connection' => ['host' => $host, 'user' => $username, 'password' => $password]];
|
2017-08-30 12:04:03 +00:00
|
|
|
$db = new DB_Contenido($aOptions);
|
2017-08-30 12:12:06 +00:00
|
|
|
//$sFile = '../data/logs/setup_queries.txt';
|
2017-08-30 12:04:03 +00:00
|
|
|
//file_put_contents($sFile, $db->getServerInfo(), FILE_APPEND);
|
2017-08-30 12:12:06 +00:00
|
|
|
//chmod($sFile, 0666);
|
2018-07-22 16:59:22 +00:00
|
|
|
if (empty($db->connect())) {
|
2023-04-07 17:50:44 +00:00
|
|
|
return [$db, false];
|
2017-08-30 12:04:03 +00:00
|
|
|
} else {
|
2023-04-07 17:50:44 +00:00
|
|
|
return [$db, true];
|
2017-08-30 12:04:03 +00:00
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function getSetupMySQLDBConnection($full = true) {
|
2016-10-06 15:57:01 +00:00
|
|
|
if ($full === false) {
|
|
|
|
// host, user and password
|
2023-04-07 17:50:44 +00:00
|
|
|
$aOptions = ['connection' => ['host' => $_SESSION["dbhost"], 'user' => $_SESSION["dbuser"], 'password' => $_SESSION["dbpass"]], 'sequenceTable' => $_SESSION['dbprefix'] . '_sequence'];
|
2016-10-06 15:57:01 +00:00
|
|
|
} else {
|
|
|
|
// host, database, user and password
|
2023-04-07 17:50:44 +00:00
|
|
|
$aOptions = ['connection' => ['host' => $_SESSION["dbhost"], 'database' => $_SESSION["dbname"], 'user' => $_SESSION["dbuser"], 'password' => $_SESSION["dbpass"]], 'sequenceTable' => $_SESSION['dbprefix'] . '_sequence'];
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
2017-08-30 12:04:03 +00:00
|
|
|
|
2017-08-10 13:35:06 +00:00
|
|
|
//$aOptions['enableProfiling'] = TRUE;
|
2016-10-06 15:57:01 +00:00
|
|
|
$db = new DB_Contenido($aOptions);
|
|
|
|
return $db;
|
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function fetchMySQLVersion($db) {
|
|
|
|
$db->query("SELECT VERSION()");
|
|
|
|
|
|
|
|
if ($db->next_record()) {
|
|
|
|
return $db->f(0);
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function fetchMySQLUser($db) {
|
|
|
|
$db->query("SELECT USER()");
|
|
|
|
|
|
|
|
if ($db->next_record()) {
|
|
|
|
return ($db->f(0));
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2023-05-05 07:17:38 +00:00
|
|
|
function checkMySQLDatabaseExists($db, $database): bool
|
|
|
|
{
|
2017-08-30 12:04:03 +00:00
|
|
|
$db->connect();
|
|
|
|
|
|
|
|
if (hasMySQLiExtension() && !hasMySQLExtension()) {
|
2021-01-11 18:41:20 +00:00
|
|
|
if (mysqli_select_db($db->Link_ID,$database)) {
|
2017-08-30 12:04:03 +00:00
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
$db->query("SHOW DATABASES LIKE '$database'");
|
|
|
|
|
|
|
|
if ($db->next_record()) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
2023-05-05 07:17:38 +00:00
|
|
|
if (mysqli_select_db($db->Link_ID, $database)) {
|
2017-08-30 12:04:03 +00:00
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
$db->query("SHOW DATABASES LIKE '$database'");
|
|
|
|
|
|
|
|
if ($db->next_record()) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function checkMySQLDatabaseUse($db, $database) {
|
|
|
|
$db->connect();
|
|
|
|
|
|
|
|
if (hasMySQLiExtension() && !hasMySQLExtension()) {
|
|
|
|
if (@mysqli_select_db($db->Link_ID, $database)) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
} else {
|
2023-05-05 07:17:38 +00:00
|
|
|
if (@mysqli_select_db($db->Link_ID, $database)) {
|
2017-08-30 12:04:03 +00:00
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
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;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
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;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function checkMySQLUnlockTables($db, $database) {
|
|
|
|
if (checkMySQLDatabaseUse($db, $database) == false) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$db->query("UNLOCK TABLES");
|
|
|
|
|
|
|
|
if ($db->Errno == 0) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
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;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function checkMySQLDropDatabase($db, $database) {
|
|
|
|
$db->query("DROP DATABASE $database");
|
2016-10-06 15:57:01 +00:00
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
if ($db->Errno == 0) {
|
|
|
|
return true;
|
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
2017-08-30 12:04:03 +00:00
|
|
|
function fetchMySQLStorageEngines($db) {
|
|
|
|
$db->query("SHOW ENGINES");
|
|
|
|
|
2023-04-07 17:50:44 +00:00
|
|
|
$engines = [];
|
2017-08-30 12:04:03 +00:00
|
|
|
|
|
|
|
while ($db->next_record()) {
|
|
|
|
$engines[] = $db->f(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
return ($engines);
|
2016-10-06 15:57:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
?>
|