123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- <?php
- /**
- * [Discuz!] (C)2001-2099 Comsenz Inc.
- * This is NOT a freeware, use is subject to license terms
- *
- * $Id: table_forum_optionvalue.php 27738 2012-02-13 10:02:53Z monkey $
- */
- if(!defined('IN_DISCUZ')) {
- exit('Access Denied');
- }
- class table_forum_optionvalue extends discuz_table
- {
- public function __construct() {
- $this->_table = '';
- $this->_pk = '';
- parent::__construct();
- }
- public function create($sortid, $fields, $dbcharset) {
- if(!$sortid || !$fields || !$dbcharset) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- $query = DB::query("SHOW TABLES LIKE '%t'", array($this->_table));
- if(DB::num_rows($query) != 1) {
- $create_table_sql = "CREATE TABLE ".DB::table($this->_table)." ($fields) TYPE=MyISAM;";
- $db = DB::object();
- $create_table_sql = $this->syntablestruct($create_table_sql, $db->version() > '4.1', $dbcharset);
- DB::query($create_table_sql);
- }
- }
- public function truncate($sortid) {
- if(!$sortid) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- DB::query("TRUNCATE %t", array($this->_table));
- }
- public function showcolumns($sortid) {
- if(!$sortid) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- $db = DB::object();
- if($db->version() > '4.1') {
- $query = DB::query("SHOW FULL COLUMNS FROM %t", array($this->_table), true);
- } else {
- $query = DB::query("SHOW COLUMNS FROM %t", array($this->_table), true);
- }
- $tables = array();
- while($field = @DB::fetch($query)) {
- $tables[$field['Field']] = 1;
- }
- return $tables;
- }
- public function alter($sortid, $sql) {
- if(!$sortid) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- DB::query("ALTER TABLE %t %i", array($this->_table, $sql));
- }
- public function drop($sortid) {
- if(!$sortid) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- DB::query("DROP TABLE IF EXISTS %t", array($this->_table));
- }
- public function syntablestruct($sql, $version, $dbcharset) {
- if(strpos(trim(substr($sql, 0, 18)), 'CREATE TABLE') === FALSE) {
- return $sql;
- }
- $sqlversion = strpos($sql, 'ENGINE=') === FALSE ? FALSE : TRUE;
- if($sqlversion === $version) {
- return $sqlversion && $dbcharset ? preg_replace(array('/ character set \w+/i', '/ collate \w+/i', "/DEFAULT CHARSET=\w+/is"), array('', '', "DEFAULT CHARSET=$dbcharset"), $sql) : $sql;
- }
- if($version) {
- return preg_replace(array('/TYPE=HEAP/i', '/TYPE=(\w+)/is'), array("ENGINE=MEMORY DEFAULT CHARSET=$dbcharset", "ENGINE=\\1 DEFAULT CHARSET=$dbcharset"), $sql);
- } else {
- return preg_replace(array('/character set \w+/i', '/collate \w+/i', '/ENGINE=MEMORY/i', '/\s*DEFAULT CHARSET=\w+/is', '/\s*COLLATE=\w+/is', '/ENGINE=(\w+)(.*)/is'), array('', '', 'ENGINE=HEAP', '', '', 'TYPE=\\1\\2'), $sql);
- }
- }
- public function fetch_all_tid($sortid, $where) {
- if(!$sortid) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- $query = DB::query("SELECT tid FROM %t %i", array($this->_table, $where));
- $return = array();
- while($thread = DB::fetch($query)) {
- $return[] = $thread['tid'];
- }
- return $return;
- }
- public function update($sortid, $tid, $fid, $fields) {
- if(!$sortid || !$fields) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- DB::query("UPDATE %t SET %i WHERE tid=%d AND fid=%d", array($this->_table, $fields, $tid, $fid));
- }
- public function insert($sortid, $fields, $replace = false) {
- if(!$sortid || !$fields) {
- return;
- }
- $sortid = intval($sortid);
- $this->_table = 'forum_optionvalue'.$sortid;
- DB::query("%i INTO %t %i", array(!$replace ? 'INSERT' : 'REPLACE', $this->_table, $fields));
- }
- }
- ?>
|