Index: drupalvb.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/drupalvb/drupalvb.inc,v retrieving revision 1.6.2.5 diff -u -p -r1.6.2.5 drupalvb.inc --- drupalvb.inc 29 Apr 2008 21:18:05 -0000 1.6.2.5 +++ drupalvb.inc 30 Apr 2008 13:34:29 -0000 @@ -78,11 +78,41 @@ function drupalvb_set_default_db_prefix( * @see drupalvb_settings_system() */ function drupalvb_db_is_valid() { + static $valid; + + if (isset($valid)) { + return $valid; + } + + $valid = FALSE; $db = parse_url(variable_get('drupalvb_db', '')); if (!empty($db['scheme']) && !empty($db['host']) && !empty($db['user']) && !empty($db['pass']) && !empty($db['path'])) { - return TRUE; + foreach (array('user', 'pass', 'host', 'path') as $value) { + $db[$value] = urldecode($db[$value]); + } + switch ($db['scheme']) { + case 'mysql': + $connection = @mysql_connect($db['host'], $db['user'], $db['pass'], TRUE, 2); + if ($connection && mysql_select_db(substr($db['path'], 1))) { + $valid = TRUE; + } + @mysql_close($connection); + break; + + case 'mysqli': + $connection = mysqli_init(); + @mysqli_real_connect($connection, $db['host'], $db['user'], $db['pass'], substr($db['path'], 1), $db['port'], NULL, MYSQLI_CLIENT_FOUND_ROWS); + if ($connection) { + $valid = TRUE; + } + @mysqli_close($connection); + break; + } + } + if (!$valid && user_access('administer drupalvb')) { + drupal_set_message(t('Invalid database connection for vBulletin. Please configure the connection in Drupal vB\'s settings', array('!settings' => url('admin/settings/drupalvb/database'))), 'error'); } - return FALSE; + return $valid; } /** Index: drupalvb.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/drupalvb/drupalvb.module,v retrieving revision 1.11.4.9 diff -u -p -r1.11.4.9 drupalvb.module --- drupalvb.module 30 Apr 2008 01:20:06 -0000 1.11.4.9 +++ drupalvb.module 30 Apr 2008 13:35:13 -0000 @@ -439,11 +439,14 @@ function drupalvb_block($op = 'list', $d } } else if ($op == 'view') { + require_once drupal_get_path('module', 'drupalvb') .'/drupalvb.inc'; $block = array(); + if (!drupalvb_db_is_valid()) { + return $block; + } switch ($delta) { case 0: // List recent threads/posts as specified in the configuration. - require_once drupal_get_path('module', 'drupalvb') .'/drupalvb.inc'; $items = array(); $date_cut = time() - (intval(variable_get('drupalvb_block_0_limit', 7)) * 86400); $num_items = variable_get('drupalvb_block_0', 5); @@ -482,8 +485,6 @@ function drupalvb_block($op = 'list', $d case 1: // Forum info. if (user_access('access content') && $user->uid > 0) { - require_once drupal_get_path('module', 'drupalvb') .'/drupalvb.inc'; - $vb_options = drupalvb_get('options'); $users_online = drupalvb_get_users_online(); @@ -529,7 +530,6 @@ function drupalvb_block($op = 'list', $d case 2: // Forum statistics. - require_once drupal_get_path('module', 'drupalvb') .'/drupalvb.inc'; // Get total threads & posts. $totalthreads = $totalposts = 0;