Crea un nuevo objeeto Db y pásale los datos de conexión:
$conex = new Db($server, $user, $password, $database, $connect = true);
Crea un nuevo objeeto Db y pásale los datos de conexión:
$conex = new Db($server, $user, $password, $database, $connect = true);
PRESTASHOP 1.6
Lo primero que haría sería consultar la clase de conexión a la base de datos (classes/db/Db.php), método getInstance:
public static function getInstance($master = true) { static $id = 0; // This MUST not be declared with the class members because some defines (like _DB_SERVER_) may not exist yet (the constructor can be called directly with params) if (!self::$_servers) { self::$_servers = array( array('server' => _DB_SERVER_, 'user' => _DB_USER_, 'password' => _DB_PASSWD_, 'database' => _DB_NAME_), /* MySQL Master server */ ); } if (!$master) { Db::loadSlaveServers(); } $total_servers = count(self::$_servers); if ($master || $total_servers == 1) { $id_server = 0; } else { $id++; $id_server = ($total_servers > 2 && ($id % $total_servers) != 0) ? $id % $total_servers : 1; } if (!isset(self::$instance[$id_server])) { $class = Db::getClass(); self::$instance[$id_server] = new $class( self::$_servers[$id_server]['server'], self::$_servers[$id_server]['user'], self::$_servers[$id_server]['password'], self::$_servers[$id_server]['database'] ); } return self::$instance[$id_server]; }
La conexión la hace a través de las constantes que se configuran en prestashop. Prueba a hacer un override de esta clase y meterle un nuevo método, con lo que te podría quedar algo así:
public static function getInstanceAux($master = true,$user,$pass,$database,$server) { static $id = 0; // This MUST not be declared with the class members because some defines (like _DB_SERVER_) may not exist yet (the constructor can be called directly with params) if (!self::$_servers) { self::$_servers = array( array('server' => $server, 'user' => $user, 'password' => $pass, 'database' => $database), /* MySQL Master server */ ); } if (!$master) { Db::loadSlaveServers(); } $total_servers = count(self::$_servers); if ($master || $total_servers == 1) { $id_server = 0; } else { $id++; $id_server = ($total_servers > 2 && ($id % $total_servers) != 0) ? $id % $total_servers : 1; } if (!isset(self::$instance[$id_server])) { $class = Db::getClass(); self::$instance[$id_server] = new $class( self::$_servers[$id_server]['server'], self::$_servers[$id_server]['user'], self::$_servers[$id_server]['password'], self::$_servers[$id_server]['database'] ); } return self::$instance[$id_server]; }
NO TESTEADO
Lo primero que haría sería consultar la clase de conexión a la base de datos (classes/db/Db.php), método getInstance:
public static function getInstance($master = true) { static $id = 0; // This MUST not be declared with the class members because some defines (like _DB_SERVER_) may not exist yet (the constructor can be called directly with params) if (!self::$_servers) { self::$_servers = array( array('server' => _DB_SERVER_, 'user' => _DB_USER_, 'password' => _DB_PASSWD_, 'database' => _DB_NAME_), /* MySQL Master server */ ); } if (!$master) { Db::loadSlaveServers(); } $total_servers = count(self::$_servers); if ($master || $total_servers == 1) { $id_server = 0; } else { $id++; $id_server = ($total_servers > 2 && ($id % $total_servers) != 0) ? $id % $total_servers : 1; } if (!isset(self::$instance[$id_server])) { $class = Db::getClass(); self::$instance[$id_server] = new $class( self::$_servers[$id_server]['server'], self::$_servers[$id_server]['user'], self::$_servers[$id_server]['password'], self::$_servers[$id_server]['database'] ); } return self::$instance[$id_server]; }
La conexión la hace a través de las constantes que se configuran en prestashop. Prueba a hacer un override de esta clase y meterle un nuevo método, con lo que te podría quedar algo así:
public static function getInstanceAux($master = true,$user,$pass,$database,$server) { static $id = 0; // This MUST not be declared with the class members because some defines (like _DB_SERVER_) may not exist yet (the constructor can be called directly with params) if (!self::$_servers) { self::$_servers = array( array('server' => $server, 'user' => $user, 'password' => $pass, 'database' => $database), /* MySQL Master server */ ); } if (!$master) { Db::loadSlaveServers(); } $total_servers = count(self::$_servers); if ($master || $total_servers == 1) { $id_server = 0; } else { $id++; $id_server = ($total_servers > 2 && ($id % $total_servers) != 0) ? $id % $total_servers : 1; } if (!isset(self::$instance[$id_server])) { $class = Db::getClass(); self::$instance[$id_server] = new $class( self::$_servers[$id_server]['server'], self::$_servers[$id_server]['user'], self::$_servers[$id_server]['password'], self::$_servers[$id_server]['database'] ); } return self::$instance[$id_server]; }
NO TESTEADO