File:  [Local Repository] / db / prgsrc / drupal / modules / chgk_db / classes / DbDatabase.class.php
Revision 1.4: download - view: text, annotated - select for diffs - revision graph
Sat Apr 24 21:45:49 2010 UTC (14 years ago) by roma7
Branches: MAIN
CVS tags: HEAD
Version 2 big update

<?php  


class DbDatabase  {
  const QUESTION_TABLE='Questions';
  const TOURNAMENT_TABLE='Tournaments';
  const PEOPLE_TABLE = 'People';
  const P2T_TABLE = 'P2T';
  public function getTournament($id) {
      if (is_numeric($id)) {
          return $this->getTournamentByDatabaseId($id);
      } else {
          return $this->getTournamentByTextId($id);
      }
  }

  public function getAllEditorsRes() {
      $res = db_query("SELECT People.* from  P2T LEFT JOIN People ON (P2T.Author=People.CharId)
            GROUP BY CharId ORDER BY TNumber DESC");
      return $res;

  }
  
  public function getEditors($id) {
    $sql = "SELECT People.* from  P2T LEFT JOIN People ON (P2T.Author=People.CharId)
    WHERE P2T.Tour='$id'";
    $res = db_query($sql);
    $result = array();
    while ($e = db_fetch_object($res)) {
      $result[] = $e;
    }
    return $result;
  }

  public function getTournamentByDatabaseId($id){
    $sql = sprintf ("SELECT * FROM %s t
      WHERE t.Id = '%d'", self::TOURNAMENT_TABLE, $id);
    $res = db_query($sql);
    return db_fetch_object($res);
  }
  public function getTournamentByTextId($id){
/*    if (!preg_match('/\./', $id)) {
      $id .= '.txt';
    }*/

    $sql = sprintf ("SELECT * FROM %s t
      WHERE t.FileName = '%s.txt' OR t.FileName = '%s'", 
      self::TOURNAMENT_TABLE, $id, $id);
    $res = db_query($sql);
    return db_fetch_object($res);
  }

  public function getPersonById($id){
    $sql = sprintf ("SELECT * FROM %s a
      WHERE a.CharId = '%s'",
      self::PEOPLE_TABLE, $id);
    $res = db_query($sql);
    return db_fetch_object($res);
  }

  public function editorToursRes($id) {
    $res = db_query("SELECT t.* FROM %s t
                LEFT JOIN %s p2t ON
                (p2t.Tour = t.Id)
                WHERE p2t.Author = '%s'
                ORDER BY PlayedAt DESC, Title ",
            self::TOURNAMENT_TABLE,
            self::P2T_TABLE,
            $id);
    return $res;
  }

  public function getQuestionsRes($id) {
    $sql = sprintf("SELECT * FROM {%s} WHERE ParentId=%d ORDER BY Number", self::QUESTION_TABLE, $id);
    return db_query($sql);
  }

  public function getChildrenRes($id) {
    $sql = sprintf("SELECT * FROM {%s} WHERE ParentId=%d ORDER BY Number, Id", self::TOURNAMENT_TABLE, $id);
    return db_query($sql);
  }
  
  public function fetch_row($res) {
    return db_fetch_object($res);
  }

  public function getFulltextSearchRes( $sstr, $options = array()) {
    $sql="SELECT
      t.FileName as tourFileName,
      t1.FileName as tournamentFileName,
      q.*,
      t.Id as tourId,
      t1.id as tournamentId,
      t.Title as tourTitle,
      t1.Title as tournamentTitle,
      t.Type as tourType,
      t1.Type as tournamentType

    FROM %1\$s q
    LEFT JOIN %2\$s t ON (q.ParentId=t.Id)
    LEFT JOIN  %2\$s t1 ON (t.ParentId=t1.Id)
    WHERE
     MATCH (Question,Answer,PassCriteria,Comments) AGAINST ('%3\$s' IN BOOLEAN MODE)
    ORDER BY MATCH (Question,Answer,PassCriteria,Comments) AGAINST
     ('%3\$s' IN BOOLEAN MODE) DESC LIMIT %4\$s";
    $limit = 20;
    $sql = sprintf($sql,
            self::QUESTION_TABLE,
            self::TOURNAMENT_TABLE,
            $sstr,
            $limit);
      return db_query($sql);    
  }

}


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>