Files

332 lines
9.5 KiB
PHP
Executable File

<?php
/**
* Fichier de compatibilité MySQL (ext/mysql) → mysqli
*
* Ce fichier fournit un shim pour remplacer les fonctions mysql_* obsolètes
* supprimées en PHP 8 par leurs équivalents mysqli_.
*
* IMPORTANT : $db_connection doit être une connexion mysqli globale
* créée par conf.php ou initialisée manuellement.
*/
if (!function_exists('mysql_connect')) {
function mysql_connect($host, $user, $password, $database = null, $port = null) {
global $db_connection;
// Si $db_connection existe déjà et est valide, la réutiliser
if (isset($db_connection) && is_object($db_connection)) {
// Vérifier si la connexion est encore active
$db_connection->query("SELECT 1");
return $db_connection;
}
// Utiliser les valeurs par défaut de conf.php si pas fournies
if (empty($host) || $host === '10.10.10.22') {
if (function_exists('get_defined_vars')) {
$vars = get_defined_vars();
if (isset($vars['db_port']) && $vars['db_port']) {
$port = $vars['db_port'];
}
}
}
$p = $port ?: 3307;
$db_connection = @new mysqli($host, $user, $password, $database, $p);
if ($db_connection->connect_error) {
// Essayer le second serveur
if (isset($db_host2)) {
$p2 = $port ?: 3306;
$db_connection = @new mysqli($db_host2, $user, $password, $database, $p2);
}
}
if ($db_connection->connect_error) {
trigger_error("Warning: mysqli_connect failed: " . $db_connection->connect_error, E_WARNING);
}
return $db_connection;
}
}
if (!function_exists('mysql_select_db')) {
function mysql_select_db($dbname, $link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_select_db($link, $dbname);
}
return false;
}
}
if (!function_exists('mysql_query')) {
function mysql_query($query, $link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if (!$link || !($link instanceof mysqli)) {
return false;
}
$result = mysqli_real_query($link, $query);
if (!$result) {
return false;
}
return @mysqli_store_result($link);
}
}
if (!function_exists('mysql_fetch_array')) {
function mysql_fetch_array($result, $result_type = MYSQLI_ASSOC) {
if ($result instanceof mysqli_result) {
return @mysqli_fetch_array($result, $result_type);
}
return false;
}
}
if (!function_exists('mysql_fetch_assoc')) {
function mysql_fetch_assoc($result) {
if ($result instanceof mysqli_result) {
return @mysqli_fetch_assoc($result);
}
return false;
}
}
if (!function_exists('mysql_fetch_object')) {
function mysql_fetch_object($result, $class_name = "stdClass", array $params = []) {
if ($result instanceof mysqli_result) {
if ($class_name === "stdClass") {
return @mysqli_fetch_object($result);
}
return @mysqli_fetch_object($result, $class_name, $params);
}
return false;
}
}
if (!function_exists('mysql_fetch_row')) {
function mysql_fetch_row($result) {
if ($result instanceof mysqli_result) {
return @mysqli_fetch_row($result);
}
return false;
}
}
if (!function_exists('mysql_num_rows')) {
function mysql_num_rows($result) {
if ($result instanceof mysqli_result) {
return @mysqli_num_rows($result);
}
return 0;
}
}
if (!function_exists('mysql_numrows')) {
function mysql_numrows($result) {
return mysql_num_rows($result);
}
}
if (!function_exists('mysql_affected_rows')) {
function mysql_affected_rows($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_affected_rows($link);
}
return -1;
}
}
if (!function_exists('mysql_insert_id')) {
function mysql_insert_id($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_insert_id($link);
}
return 0;
}
}
if (!function_exists('mysql_error')) {
function mysql_error($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_error($link);
}
return "";
}
}
if (!function_exists('mysql_errno')) {
function mysql_errno($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_errno($link);
}
return 0;
}
}
if (!function_exists('mysql_result')) {
function mysql_result($result, $row = 0, $field = null) {
if (!$result instanceof mysqli_result) {
return false;
}
if (@mysqli_data_seek($result, $row) === false) {
return false;
}
$data = @mysqli_fetch_row($result);
if (!$data) {
return false;
}
if ($field === null) {
return $data[0];
}
if (is_int($field)) {
return isset($data[$field]) ? $data[$field] : false;
}
$fields = @mysqli_fetch_field($result);
if (!$fields) {
return false;
}
foreach ($data as $key => $value) {
if ($key === $field || $value === $field) {
return isset($data[$key]) ? $data[$key] : false;
}
}
return false;
}
}
if (!function_exists('mysql_close')) {
function mysql_close($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
@mysqli_close($link);
return true;
}
return false;
}
}
if (!function_exists('mysql_list_dbs')) {
function mysql_list_dbs($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_list_dbs($link);
}
return false;
}
}
if (!function_exists('mysql_client_encoding')) {
function mysql_client_encoding($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_character_set_name($link);
}
return "";
}
}
if (!function_exists('mysql_ping')) {
function mysql_ping($link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_ping($link);
}
return false;
}
}
if (!function_exists('mysql_free_result')) {
function mysql_free_result($result) {
if ($result instanceof mysqli_result) {
@mysqli_free_result($result);
return true;
}
return false;
}
}
if (!function_exists('mysql_real_escape_string')) {
function mysql_real_escape_string($string, $link = null) {
global $db_connection;
$link = $link ?: $db_connection;
if ($link instanceof mysqli) {
return @mysqli_real_escape_string($link, $string);
}
return addslashes($string);
}
}
// Définir les constantes nécessaires si manquantes
if (!defined('MYSQL_ASSOC')) {
define('MYSQL_ASSOC', MYSQLI_ASSOC);
}
if (!defined('MYSQL_NUM')) {
define('MYSQL_NUM', MYSQLI_NUM);
}
if (!defined('MYSQL_BOTH')) {
define('MYSQL_BOTH', MYSQLI_BOTH);
}
// ========================================
// Shims pour ereg() et ereg_replace()
// Supprimés en PHP 7.0, supprimés en PHP 8.0
// ========================================
if (!function_exists('ereg')) {
function ereg(...$args) {
// Support signatures:
// ereg(pattern, string) -> strpos for simple match
// ereg(pattern, string, &$regs) -> preg_match with capture
if (count($args) >= 3) {
$pattern = $args[0];
if ($pattern[0] === '"' || $pattern[0] === "'") {
$pattern = substr($pattern, 1, -1);
}
return preg_match('/' . (is_string($args[0]) ? $pattern : ''), $args[1], $args[2]) > 0;
}
if (count($args) >= 2) {
$pattern = $args[0];
if ($pattern[0] === '"' || $pattern[0] === "'") {
$pattern = substr($pattern, 1, -1);
}
return strpos($args[1], $pattern) !== false;
}
return false;
}
}
if (!function_exists('ereg_replace')) {
function ereg_replace($pattern, $replacement, $string) {
// Strip surrounding quotes if present
if (($pattern[0] === '"' && substr($pattern, -1) === '"') ||
($pattern[0] === "'" && substr($pattern, -1) === "'")) {
$pattern = substr($pattern, 1, -1);
}
return preg_replace('/' . $pattern . '/', $replacement, $string);
}
}
if (!function_exists('split')) {
function split($pattern, $string, $limit = -1) {
if (($pattern[0] === '"' && substr($pattern, -1) === '"') ||
($pattern[0] === "'" && substr($pattern, -1) === "'")) {
$pattern = substr($pattern, 1, -1);
}
return preg_split('/' . $pattern . '/', $string, $limit);
}
}