original_string: public static function factory($configDb)
      {
          /**
           * Triggered before a connection to the database is established by the Tracker.
           *
           * This event can be used to change the database connection settings used by the Tracker.
           *
           * @param array $dbInfos Reference to an array containing database connection info,
           *                       including:
           *
           *                       - **host**: The host name or IP address to the MySQL database.
           *                       - **username**: The username to use when connecting to the
           *                                       database.
           *                       - **password**: The password to use when connecting to the
           *                                       database.
           *                       - **dbname**: The name of the Piwik MySQL database.
           *                       - **port**: The MySQL database port to use.
           *                       - **adapter**: either `'PDO\MYSQL'` or `'MYSQLI'`
           *                       - **type**: The MySQL engine to use, for instance 'InnoDB'
           */
          Piwik::postEvent('Tracker.getDatabaseConfig', array(&$configDb));
  
          switch ($configDb['adapter']) {
              case 'PDO\MYSQL':
              case 'PDO_MYSQL': // old format pre Piwik 2
                  require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Pdo/Mysql.php';
                  return new Mysql($configDb);
  
              case 'MYSQLI':
                  require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Mysqli.php';
                  return new Mysqli($configDb);
          }
  
          throw new Exception('Unsupported database adapter ' . $configDb['adapter']);
      }
code: public static function factory($configDb)
      {
          /**
           * Triggered before a connection to the database is established by the Tracker.
           *
           * This event can be used to change the database connection settings used by the Tracker.
           *
           * @param array $dbInfos Reference to an array containing database connection info,
           *                       including:
           *
           *                       - **host**: The host name or IP address to the MySQL database.
           *                       - **username**: The username to use when connecting to the
           *                                       database.
           *                       - **password**: The password to use when connecting to the
           *                                       database.
           *                       - **dbname**: The name of the Piwik MySQL database.
           *                       - **port**: The MySQL database port to use.
           *                       - **adapter**: either `'PDO\MYSQL'` or `'MYSQLI'`
           *                       - **type**: The MySQL engine to use, for instance 'InnoDB'
           */
          Piwik::postEvent('Tracker.getDatabaseConfig', array(&$configDb));
  
          switch ($configDb['adapter']) {
              case 'PDO\MYSQL':
              case 'PDO_MYSQL': // old format pre Piwik 2
                  require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Pdo/Mysql.php';
                  return new Mysql($configDb);
  
              case 'MYSQLI':
                  require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Mysqli.php';
                  return new Mysqli($configDb);
          }
  
          throw new Exception('Unsupported database adapter ' . $configDb['adapter']);
      }
code_tokens: public static function factory ( $ configDb ) { /**
           * Triggered before a connection to the database is established by the Tracker.
           *
           * This event can be used to change the database connection settings used by the Tracker.
           *
           * @param array $dbInfos Reference to an array containing database connection info,
           *                       including:
           *
           *                       - **host**: The host name or IP address to the MySQL database.
           *                       - **username**: The username to use when connecting to the
           *                                       database.
           *                       - **password**: The password to use when connecting to the
           *                                       database.
           *                       - **dbname**: The name of the Piwik MySQL database.
           *                       - **port**: The MySQL database port to use.
           *                       - **adapter**: either `'PDO\MYSQL'` or `'MYSQLI'`
           *                       - **type**: The MySQL engine to use, for instance 'InnoDB'
           */ Piwik :: postEvent ( 'Tracker.getDatabaseConfig' , array ( & $ configDb ) ) ; switch ( $ configDb [ 'adapter' ] ) { case 'PDO\MYSQL' : case 'PDO_MYSQL' : // old format pre Piwik 2 require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Pdo/Mysql.php' ; return new Mysql ( $ configDb ) ; case 'MYSQLI' : require_once PIWIK_INCLUDE_PATH . '/core/Tracker/Db/Mysqli.php' ; return new Mysqli ( $ configDb ) ; } throw new Exception ( 'Unsupported database adapter ' . $ configDb [ 'adapter' ] ) ; }
docstring: Factory to create database objects
  
  @param array $configDb Database configuration
  @throws Exception
  @return \Piwik\Tracker\Db\Mysqli|\Piwik\Tracker\Db\Pdo\Mysql
docstring_tokens: Factory to create database objects