Exemplo n.º 1
0
 /**
  * Loads a connection
  *
  * @param string $dsn
  * @param string $tbl_prefix
  * @param boolean $force_reconnect
  * @param boolean $show_error
  * @return boolean
  */
 public static function loadDB($dsn = null, $tbl_prefix = null, $force_reconnect = false, $show_error = true)
 {
     if (!isset($dsn)) {
         if (!defined('PHPWS_DSN')) {
             exit(_('Cannot load database. DSN not defined.'));
         }
         $dsn = PHPWS_DSN;
         if (defined('PHPWS_TABLE_PREFIX')) {
             $tbl_prefix = PHPWS_TABLE_PREFIX;
         }
     }
     /**
      * if $dsn is already set and force_reconnect is false, don't bother on a reconnect
      */
     if (isset($GLOBALS['PHPWS_DB']['dsn']) && $GLOBALS['PHPWS_DB']['dsn'] == $dsn && !$force_reconnect) {
         return;
     }
     if (isset($GLOBALS['PHPWS_DB']['connection'])) {
         $GLOBALS['PHPWS_DB']['connection']->disconnect();
     }
     $dbname = PHPWS_DB::getDbName($dsn);
     $pear_db = new MDB2();
     $connect = $pear_db->connect($dsn, array('persistent' => false));
     if (PHPWS_Error::isError($connect)) {
         if (CLEAR_DSN) {
             $connect->userinfo = str_replace($dsn, '-- DSN removed --', $connect->userinfo);
         }
         PHPWS_Error::log($connect);
         if ($show_error) {
             PHPWS_Core::errorPage();
         } else {
             return $connect;
         }
     }
     PHPWS_DB::logDB(sprintf(_('Connected to database "%s"'), $dbname));
     // Load the factory files
     $type = $connect->dbsyntax;
     $result = PHPWS_Core::initCoreClass('DB/' . $type . '.php');
     if ($result == false) {
         PHPWS_DB::logDB(_('Failed to connect.'));
         PHPWS_Error::log(PHPWS_FILE_NOT_FOUND, 'core', 'PHPWS_DB::loadDB', PHPWS_SOURCE_DIR . 'core/class/DB/' . $type . '.php');
         PHPWS_Core::errorPage();
     }
     $class_name = $type . '_PHPWS_SQL';
     $dblib = new $class_name();
     if (!empty($dblib->portability)) {
         $connect->setOption('portability', $dblib->portability);
     }
     $connect->setOption('seqcol_name', 'id');
     $GLOBALS['PHPWS_DB']['lib'] = $dblib;
     $GLOBALS['PHPWS_DB']['dsn'] = $dsn;
     $GLOBALS['PHPWS_DB']['connection'] = $connect;
     $GLOBALS['PHPWS_DB']['tbl_prefix'] = $tbl_prefix;
     $GLOBALS['PHPWS_DB']['type'] = $type;
     return true;
 }