/**
* connectDatabase()
*
* Initializes a connection to the mysql database.
* REQUIRES: databaseSettings portion of state to be set.
*
* @return boolean True on success; else false. Success testing is very loose.
*/
function connectDatabase()
{
$this->_before(__FUNCTION__);
global $wpdb;
$wpdb = new wpdb($this->_state['databaseSettings']['username'], $this->_state['databaseSettings']['password'], $this->_state['databaseSettings']['database'], $this->_state['databaseSettings']['server']);
// See if we have a specified character set and collation to use from the source site.
$charset = null;
$collate = null;
if (isset($this->_state['dat']['db_charset'])) {
$charset = $this->_state['dat']['db_charset'];
}
if (isset($this->_state['dat']['db_collate'])) {
$collate = $this->_state['dat']['db_collate'];
}
if (null !== $charset || null !== $collate) {
pb_backupbuddy::status('details', 'Setting charset to `' . $charset . '` and collate to `' . $collate . '` based on source site.');
$wpdb->set_charset($wpdb->dbh, $charset, $collate);
} else {
pb_backupbuddy::status('details', 'Charset nor collate are in DAT file. Using defaults for database connection.');
pb_backupbuddy::status('details', 'Charset in wpdb: ' . $wpdb->charset);
}
// Warn if mysql versions are incompatible; eg importing a mysql < 5.1 version into a server running 5.1+.
global $wpdb;
if (isset($this->_state['dat']['db_version'])) {
$incomingVersion = $this->_state['dat']['db_version'];
}
$thisVersion = $wpdb->db_version();
pb_backupbuddy::status('details', 'Incoming mysql version: `' . $incomingVersion . '`. This server\'s mysql version: `' . $thisVersion . '`.');
if (version_compare($incomingVersion, '5.1.0', '<') && version_compare($thisVersion, '5.1.0', '>=')) {
pb_backupbuddy::status('warning', 'Error #7001: This server\'s mysql version, `' . $thisVersion . '` may have SQL query incompatibilities with the backup mysql version `' . $incomingVersion . '`. This may result in #9010 errors due to syntax of TYPE= changing to ENGINE=. If none occur you may ignore this error.');
}
return true;
}