class ChadoDatabaseConnection

Overrides the DatabaseConnection_pgsql.

The primary purpose of this class is to allow for prefixing of Chado tables. By default the only way to support this is to add an array to the 'prefix' key of the settings.php file. But this is problematic. For example, what if there is a contact table in the Drupal database as well as one in Chado. The default prefix replacement would always rewrite it to be the one in Chado. This class is intended to be used when the Chado tables are needed.

Hierarchy

Expanded class hierarchy of ChadoDatabaseConnection

File

tripal_chado/includes/ChadoDatabaseConnection.inc, line 15

View source
class ChadoDatabaseConnection extends DatabaseConnection_pgsql {

  /**
   * A replacement constructor for DatabaseConnection_pgsql::__construct.
   *
   * The primary purpose for overiding the constructor is to dynamically add
   * a set of prefixes for replacing. This will allow Chado tables to be
   * prefixed with the 'chado.' schema prefix.  The alternative to overridding
   * the DatabaseConnection_pgsql is to ask the end-user to add a prefix
   * entry for every Chado table and custom table they create.  That's not
   * very manageable.
   */
  function __construct(array $connection_options = array()) {
    parent::__construct($connection_options);


    // Get the list of prefix search and replace that are set in the
    // settings.php file. We'll need those later.
    $psearch = $this->prefixSearch;
    $preplace = $this->prefixReplace;

    // Reset the prefix serach and replace
    $this->prefixSearch = array();
    $this->prefixReplace = array();

    $tables = chado_get_table_names(TRUE);
    foreach ($tables as $table) {
      $this->prefixSearch[] = '{' . $table . '}';
      $this->prefixReplace[] = 'chado.' . $table;
    }
    $this->prefixSearch = array_merge($this->prefixSearch, $psearch);
    $this->prefixReplace = array_merge($this->prefixReplace, $preplace);
  }

  public function prefixTables($sql) {
    $sql = str_replace($this->prefixSearch, $this->prefixReplace, $sql);
    return $sql;
  }


}

Members

Contains filters are case sensitive
Namesort descending Modifiers Type Description
ChadoDatabaseConnection::prefixTables public function
ChadoDatabaseConnection::__construct function A replacement constructor for DatabaseConnection_pgsql::__construct.