/** * 构造函数 * @param string $tablename 表名 * @param string $postid 表单提交的区分ID */ function __construct($tablename, $postid = '') { if (get_class($this) == 'Model') { $this->YYUCSYS_isorgin = true; } else { $this->YYUCSYS_isorgin = false; } $this->YYUCSYS_postid = $postid; $this->YYUCSYS_post_id = strlen($postid) === 32 ? $postid : md5('YYUC_' . $postid); $this->YYUCSYS_db = DB::get_db(); $this->YYUCSYS_tablename = $tablename; $this->YYUCSYS_real_tablename = Conf::$db_tablePrefix . $tablename; //填充一些有默认值的字段和字段描述 if (!isset(self::$YYUCSYS_FIELD_LABLE[$this->YYUCSYS_tablename])) { self::$YYUCSYS_FIELD_LABLE[$this->YYUCSYS_tablename] = array(); self::$YYUCSYS_FIELD_DATA[$this->YYUCSYS_tablename] = array(); self::$YYUCSYS_FIELD_TYPE[$this->YYUCSYS_tablename] = array(); self::$YYUCSYS_FIELD_DEFAULT[$this->YYUCSYS_tablename] = array(); self::$YYUCSYS_FIELD_CANNULL[$this->YYUCSYS_tablename] = array(); $defaults = $this->YYUCSYS_db->get_fields_array($this->YYUCSYS_real_tablename); foreach ($defaults as $default) { if (trim($default['Default']) != '') { //存储默认值 self::$YYUCSYS_FIELD_DEFAULT[$this->YYUCSYS_tablename][$default['Field']] = $default['Default']; } if (trim($default['Null']) == 'NO') { //是否允许非空 self::$YYUCSYS_FIELD_CANNULL[$this->YYUCSYS_tablename][$default['Field']] = false; } else { self::$YYUCSYS_FIELD_CANNULL[$this->YYUCSYS_tablename][$default['Field']] = true; } if (strpos($default['Type'], 'enum') === 0) { self::$YYUCSYS_FIELD_TYPE[$this->YYUCSYS_tablename][$default['Field']] = 'enum'; //存储枚举类型的数据 $dataarray = array(); $tempstr = substr($default['Type'], 6, strlen($default['Type']) - 8); $arr1 = explode("','", $tempstr); $arr2 = explode(",", $default['Comment']); if (count($arr1) === count($arr2)) { $temparr2 = explode(':', $arr2[0]); if (count($temparr2) > 1) { //存储该字段的lable self::$YYUCSYS_FIELD_LABLE[$this->YYUCSYS_tablename][$default['Field']] = $temparr2[0]; } $arr2[0] = $temparr2[count($temparr2) - 1]; foreach ($arr1 as $k => $v) { $dataarray[$v] = $arr2[$k]; } } else { foreach ($arr1 as $v) { $dataarray[$v] = $v; } //存储该字段的lable self::$YYUCSYS_FIELD_LABLE[$this->YYUCSYS_tablename][$default['Field']] = $default['Comment']; } //存储该字段的候选数据 self::$YYUCSYS_FIELD_DATA[$this->YYUCSYS_tablename][$default['Field']] = $dataarray; } else { //存储该字段的lable self::$YYUCSYS_FIELD_TYPE[$this->YYUCSYS_tablename][$default['Field']] = $default['Type']; self::$YYUCSYS_FIELD_LABLE[$this->YYUCSYS_tablename][$default['Field']] = $default['Comment']; } } } //该表Model数据已经初始化过 给各个字段赋初始值 $defaults =& self::$YYUCSYS_FIELD_DEFAULT[$this->YYUCSYS_tablename]; foreach ($defaults as $field => $default) { $this->{$field} = $default; } //如果不是原始模型 增加各个字段的验证信息供页面form标签使用 if (!$this->YYUCSYS_isorgin && !isset(self::$YYUCSYS_FIELD_FORMVAL[$this->YYUCSYS_tablename])) { self::$YYUCSYS_FIELD_FORMVAL[$this->YYUCSYS_tablename] = array(); self::$YYUCSYS_first_valset[$this->YYUCSYS_tablename] = true; $this->validate(); self::$YYUCSYS_first_valset[$this->YYUCSYS_tablename] = false; } //默认的field字段写入 $fields = $this->YYUCSYS_db->list_fields($this->YYUCSYS_real_tablename); $this->YYUCSYS_select = '`' . implode('`,`', $fields) . '`'; }
require_once('install/classes/class.filesystem.php'); $filesystem = new filesystem($config['ftp_server'], $config['ftp_user'], $config['ftp_pw'], $config['ftp_port']); $filesystem->set_wd($config['ftp_path'], $config['fpath']); } echo "- FTP class loaded and initialized.<br />"; if (!class_exists('DB')) { require_once('install/classes/database/'.$config['dbsystem'].'.inc.php'); $db = new DB($config['host'], $config['dbuser'], $config['dbpw'], $config['database'], $config['dbprefix']); $db->setPersistence($config['pconnect']); } echo "- Database class loaded and initialized.<br />"; $fields = array_map('strtolower', $db->list_fields($db->pre.'forums')); if (!in_array('post_order', $fields)) { $db->query("ALTER TABLE `{$db->pre}forums` ADD `post_order` enum('-1','0','1') NOT NULL DEFAULT '-1'"); } echo "- Database structure updated.<br />"; // Config $c = new manageconfig(); $c->getdata('data/config.inc.php'); $c->updateconfig('version', str, VISCACHA_VERSION); $c->updateconfig('post_order', int, 0); $c->savedata(); echo "- Configuration updated.<br />"; // Languages