|
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2010 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: luofei614 <www.3g4k.com>
// +----------------------------------------------------------------------
// $Id: SaeObject.class.php 2766 2012-02-20 15:58:21Z luofei614@gmail.com $
class SaeObject {
protected $errno = SAE_Success;
protected $errmsg;
static $db;
//实现自动建表
public function __construct() {
$this->errmsg = Imit_L("_SAE_OK_");
static $inited = false;
//只初始化一次
if ($inited)
return;
if (extension_loaded('sqlite3')) {
self::$db = new ImitSqlite();
} else {
self::$db = get_class($this) == "SaeMysql" ? $this : new SaeMysql();
$this->createTable();
}
$inited = true;
}
//获得错误代码
public function errno() {
return $this->errno;
}
//获得错误信息
public function errmsg() {
return $this->errmsg;
}
public function setAuth($accesskey, $secretkey) {
}
protected function createTable() {
$sql = file_get_contents(dirname(__FILE__).'/sae.sql');
$tablepre = C('DB_PREFIX');
$tablesuf = C('DB_SUFFIX');
$dbcharset = C('DB_CHARSET');
$sql = str_replace("\r", "\n",$sql);
$ret = array();
$num = 0;
foreach (explode(";\n", trim($sql)) as $query) {
$queries = explode("\n", trim($query));
foreach ($queries as $query) {
$ret[$num] .= $query[0] == '#' || $query[0] . $query[1] == '--' ? '' : $query;
}
$num++;
}
unset($sql);
foreach ($ret as $query) {
$query = trim($query);
if ($query) {
if (substr($query, 0, 12) == 'CREATE TABLE') {
$name = preg_replace("/CREATE TABLE ([a-z0-9_]+) .*/is", "\\1", $query);
$type = strtoupper(preg_replace("/^\s*CREATE TABLE\s+.+\s+\(.+?\).*(ENGINE|TYPE)\s*=\s*([a-z]+?).*$/isU", "\\2", $query));
$type = in_array($type, array('MYISAM', 'HEAP')) ? $type : 'MYISAM';
$query = preg_replace("/^\s*(CREATE TABLE\s+.+\s+\(.+?\)).*$/isU", "\\1", $query) .
(mysql_get_server_info() > '4.1' ? " ENGINE=$type DEFAULT CHARSET=$dbcharset" : " TYPE=$type");
}
self::$db->runSql($query);
}
}
}
}
?>
|