合肥金麓客户积分系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

559 lines
30 KiB

<?php
namespace app\admin\controller;
use think\Db;
use think\facade\Request;
class Module extends Common
{
protected $dao;
function initialize()
{
parent::initialize();
$this->dao=db('module');
$field_pattern = [
['name'=>'defaul','title'=>'默认'],
['name'=>'email','title'=>'电子邮件'],
['name'=>'url','title'=>'网址'],
['name'=>'date','title'=>'日期'],
['name'=>'number','title'=>'有效的数值'],
['name'=>'digits','title'=>'数字'],
['name'=>'creditcard','title'=>'信用卡号码'],
['name'=>'equalTo','title'=>'再次输入相同的值'],
['name'=>'ip4','title'=>'IP'],
['name'=>'mobile','title'=>'手机号码'],
['name'=>'zipcode','title'=>'邮编'],
['name'=>'qq','title'=>'QQ'],
['name'=>'idcard','title'=>'身份证号'],
['name'=>'chinese','title'=>'中文字符'],
['name'=>'cn_username','title'=>'中文英文数字和下划线'],
['name'=>'tel','title'=>'电话号码'],
['name'=>'english','title'=>'英文'],
['name'=>'en_num','title'=>'英文数字和下划线'],
];
$this->assign('pattern', json_encode($field_pattern,true));
}
public function index(){
if(Request::isAjax()) {
$pageSize =input('limit')?input('limit'):config('pageSize');
$sort_by = input('sort_order') ? input('sort_by') : 'id';
$sort_order = input('sort_order') ? input('sort_order') : 'asc';
$list = db('module')->order($sort_by.' '.$sort_order)
->paginate($pageSize)
->toArray();
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list['data'],'count'=>$list['total'],'rel'=>1];
}else{
return $this->fetch();
}
}
public function edit(){
if(request()->isPost()){
$data = Request::except('name');
if(db('module')->update($data)!==false){
savecache('Module');
return array('code'=>1,'url'=>url('index'),'msg'=>'修改成功!');
}else{
return array('code'=>0,'url'=>url('index'),'msg'=>'修改失败!');
}
}else{
$map['id'] = input('param.id');
$info = db('module')->field('id,title,name,description,listfields')->where($map)->find();
$this->assign('title',lang('edit').lang('module'));
$this->assign('info', json_encode($info,true));
return $this->fetch('form');
}
}
public function add(){
if(request()->isPost()){
//获取数据库所有表名
$tables = Db::getConnection()->getTables();
//组装表名
$prefix = config('database.prefix');
$tablename = $prefix.input('post.name');
//判断表名是否已经存在
if(in_array($tablename,$tables)){
$result['code'] = 0;
$result['info'] = '该表已经存在!';
return $result;
}
$name = ucfirst(input('post.name'));
$data = Request::except('emptytable');
$data['type'] = 1;
$moduleid = db('module')->insertGetId($data);
if(empty($moduleid)){
$result['code'] = 0;
$result['msg'] = '添加模型失败!';
return $result;
}
$emptytable =input('post.emptytable');
if($emptytable=='0'){
Db::execute("CREATE TABLE `".$tablename."` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`catid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID',
`userid` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`username` varchar(40) NOT NULL DEFAULT '' COMMENT '用户名',
`title` varchar(120) NOT NULL DEFAULT '' COMMENT '标题',
`title_style` varchar(225) NOT NULL DEFAULT '' COMMENT '标题样式',
`thumb` varchar(225) NOT NULL DEFAULT '' COMMENT '缩略图',
`keywords` varchar(120) NOT NULL DEFAULT '' COMMENT '关键词',
`description` mediumtext NOT NULL COMMENT '描述',
`content` mediumtext NOT NULL COMMENT '内容',
`template` varchar(40) NOT NULL DEFAULT '' COMMENT '模板',
`posid` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '推荐位',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态',
`recommend` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '允许评论',
`readgroup` varchar(100) NOT NULL DEFAULT '' COMMENT '访问权限',
`readpoint` smallint(5) NOT NULL DEFAULT '0' COMMENT '阅读权限',
`sort` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '排序',
`hits` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点击',
`createtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
`updatetime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `status` (`id`,`status`,`sort`),
KEY `catid` (`id`,`catid`,`status`),
KEY `sort` (`id`,`catid`,`status`,`sort`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'catid', '栏目', '', '1', '1', '6', '', '必须选择一个栏目', '', 'catid', '','1','', '1', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'title', '标题', '', '1', '1', '80', '', '标题必须为1-80个字符', '', 'title', 'array (\n \'thumb\' => \'1\',\n \'style\' => \'1\',\n \'size\' => \'55\',\n)','1','', '2', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'keywords', '关键词', '', '0', '0', '80', '', '', '', 'text', 'array (\n \'size\' => \'55\',\n \'default\' => \'\',\n \'ispassword\' => \'0\',\n \'fieldtype\' => \'varchar\',\n)','1','', '3', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'description', 'SEO简介', '', '0', '0', '0', '', '', '', 'textarea', 'array (\n \'fieldtype\' => \'mediumtext\',\n \'rows\' => \'4\',\n \'cols\' => \'55\',\n \'default\' => \'\',\n)','1','', '4', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'content', '内容', '', '0', '0', '0', '', '', '', 'editor', 'array (\n \'toolbar\' => \'full\',\n \'default\' => \'\',\n \'height\' => \'\',\n \'showpage\' => \'1\',\n \'enablekeylink\' => \'0\',\n \'replacenum\' => \'\',\n \'enablesaveimage\' => \'0\',\n \'flashupload\' => \'1\',\n \'alowuploadexts\' => \'\',\n)','1','', '5', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'createtime', '发布时间', '', '1', '0', '0', 'date', '', 'createtime', 'datetime', '','1','', '6', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'status', '状态', '', '0', '0', '0', '', '', '', 'radio', 'array (\n \'options\' => \'发布|1\r\n定时发布|0\',\n \'fieldtype\' => \'tinyint\',\n \'numbertype\' => \'1\',\n \'labelwidth\' => \'75\',\n \'default\' => \'1\',\n)','1','','7', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'recommend', '允许评论', '', '0', '0', '1', '', '', '', 'radio', 'array (\n \'options\' => \'允许评论|1\r\n不允许评论|0\',\n \'fieldtype\' => \'tinyint\',\n \'numbertype\' => \'1\',\n \'labelwidth\' => \'\',\n \'default\' => \'\',\n)','1','', '8', '0', '0')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'readpoint', '阅读收费', '', '0', '0', '5', '', '', '', 'number', 'array (\n \'size\' => \'5\',\n \'numbertype\' => \'1\',\n \'decimaldigits\' => \'0\',\n \'default\' => \'0\',\n)','1','', '9', '0', '0')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'hits', '点击次数', '', '0', '0', '8', '', '', '', 'number', 'array (\n \'size\' => \'10\',\n \'numbertype\' => \'1\',\n \'decimaldigits\' => \'0\',\n \'default\' => \'0\',\n)','1','', '10', '0', '0')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'readgroup', '访问权限', '', '0', '0', '0', '', '', '', 'groupid', 'array (\n \'inputtype\' => \'checkbox\',\n \'fieldtype\' => \'tinyint\',\n \'labelwidth\' => \'85\',\n \'default\' => \'\',\n)','1','', '11', '0', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'posid', '推荐位', '', '0', '0', '0', '', '', '', 'posid', '','1','', '12', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'template', '模板', '', '0', '0', '0', '', '', '', 'template', '','1','', '13', '1', '1')");
}else{
Db::execute("CREATE TABLE `".$tablename."` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`catid` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '分类ID',
`title` varchar(120) NOT NULL DEFAULT '' COMMENT '标题',
`title_style` varchar(225) NOT NULL DEFAULT '' COMMENT '标题样式',
`thumb` varchar(225) NOT NULL DEFAULT '' COMMENT '缩略图',
`hits` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '点击',
`status` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '状态',
`userid` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '用户ID',
`username` varchar(40) NOT NULL DEFAULT '' COMMENT '用户名',
`sort` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '排序',
`createtime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
`updatetime` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
`lang` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '语言',
`template` varchar(40) NOT NULL DEFAULT '' COMMENT '模板',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'catid', '栏目', '', '1', '1', '6', '', '必须选择一个栏目', '', 'catid', '','1','', '1', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ('".$moduleid."', 'title', '标题', '', '1', '1', '80', '', '标题必须为1-80个字符', '', 'title', 'array (\n \'thumb\' => \'1\',\n \'style\' => \'1\',\n \'size\' => \'55\',\n)','1','', '2', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'hits', '点击次数', '', '0', '0', '8', '', '', '', 'number', 'array (\n \'size\' => \'10\',\n \'numbertype\' => \'1\',\n \'decimaldigits\' => \'0\',\n \'default\' => \'0\',\n)','1','', '8', '0', '0')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'createtime', '发布时间', '', '1', '0', '0', 'date', '', 'createtime', 'datetime', '','1','', '97', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'template', '模板', '', '0', '0', '0', '', '', '', 'template', '','1','', '99', '1', '1')");
Db::execute("INSERT INTO `".$prefix."field` (`moduleid`,`field`,`name`,`tips`,`required`,`minlength`,`maxlength`,`pattern`,`errormsg`,`class`,`type`,`setup`,`ispost`,`unpostgroup`,`sort`,`status`,`issystem`) VALUES ( '".$moduleid."', 'status', '状态', '', '0', '0', '0', '', '', '', 'radio', 'array (\n \'options\' => \'发布|1\r\n定时发布|0\',\n \'fieldtype\' => \'tinyint\',\n \'numbertype\' => \'1\',\n \'labelwidth\' => \'75\',\n \'default\' => \'1\',\n)','1','', '98', '1', '1')");
}
if ($moduleid !==false) {
savecache('Module');
$result['code'] = 1;
$result['msg'] = '添加模型成功!';
$result['url'] = url('index');
return $result;
}
}else{
$this->assign('title',lang('add').lang('module'));
$this->assign('info','null');
return $this->fetch('form');
}
}
//模型状态
public function moduleState(){
$id=input('post.id');
$status=input('post.status');
if(db('module')->where('id='.$id)->update(['status'=>$status])!==false){
return ['status'=>1,'msg'=>'设置成功!'];
}else{
return ['status'=>0,'msg'=>'设置失败!'];
}
}
//删除模型
function del() {
$id =input('param.id');
$r = db('module')->find($id);
if(!empty($r)){
$tablename = config('database.prefix').$r['name'];
$m = db('module')->delete($id);
if($m){
Db::execute("DROP TABLE IF EXISTS `".$tablename."`");
db('Field')->where(array('moduleid'=>$id))->delete();
}
}
savecache('Module');
return ['code'=>1,'msg'=>'删除成功!'];
}
/****************************模型字段******************************/
public function field(){
if(request()->isPost()){
$nodostatus = array('catid','title','status','createtime');
$sysfield = array('catid','userid','username','title','thumb','keywords','description','posid','status','createtime','url','template');
$list = db('field')->where("moduleid=".input('param.id'))->order('sort asc,id asc')->select();
foreach ($list as $k=>$v){
if($v['status']==1){
if(in_array($v['field'],$nodostatus)){
$list[$k]['disable']=2;
}else{
$list[$k]['disable']=0;
}
}else{
$list[$k]['disable']=1;
}
if(in_array($v['field'],$sysfield)){
$list[$k]['delStatus']=1;
}else{
$list[$k]['delStatus']=0;
}
}
$this->assign('list', $list);
return $result = ['code'=>0,'msg'=>'获取成功!','data'=>$list,'rel'=>1];
}else{
return $this->fetch();
}
}
//修改状态
public function fieldStatus(){
$map['id']=input('post.id');
//判断当前状态情况
$field = db('field');
$status=$field->where($map)->value('status');
if($status==1){
$data['status'] = 0;
}else{
$data['status'] = 1;
}
$field->where($map)->setField($data);
return $data;
}
//添加字段
public function fieldAdd(){
if(Request::isAjax()){
if(input('isajax')) {
$this->assign(input('get.'));
$this->assign(input('post.'));
$name = db('module')->where(array('id' => input('moduleid')))->value('name');
if (input('name')) {
$files = Db::getTableFields(config('database.prefix') . $name);
if(isset($files['type'][input('name')])){
$fieldtype = $files['type'][input('name')];
}else{
$fieldtype = '';
}
$this->assign('fieldtype', $fieldtype);
return view('fieldType');
} else {
return view('fieldAddType');
}
}else{
$data = input('post.');
$fieldName=$data['field'];
$prefix=config('database.prefix');
$name = db('module')->where(array('id'=>$data['moduleid']))->value('name');
$tablename=$prefix.$name;
$Fields=Db::getTableFields($tablename);
if(in_array($fieldName,$Fields)){
$result['msg'] = '字段名已经存在!';
$result['code'] = 0;
return $result;
}
$addfieldsql =$this->get_tablesql($data,'add');
if(isset($data['setup'])) {
$data['setup'] = array2string($data['setup']);
}
$data['status'] =1;
if($data['pattern']=='?'){
$data['pattern'] = 'defaul';
}else{
$pattern= explode(':',$data['pattern']);
$data['pattern'] = $pattern[1];
}
if(empty($data['class'])){
$data['class'] = $data['field'];
}
$model = db('field');
if ($model->insert($data) !==false) {
savecache('Field',$data['moduleid']);
if(is_array($addfieldsql)){
foreach($addfieldsql as $sql){
$model->execute($sql);
}
}else{
$model->execute($addfieldsql);
}
$result['msg'] = '添加成功!';
$result['code'] = 1;
$result['url'] = url('field',array('id'=>input('post.moduleid')));
return $result;
} else {
$result['msg'] = '添加失败!';
$result['code'] = 0;
return $result;
}
}
}else{
$moduleid =input('moduleid');
$this->assign('moduleid',$moduleid);
$this->assign('title',lang('add').lang('field'));
$this->assign('info','null');
return $this->fetch('fieldForm');
}
}
//编辑字段
public function fieldEdit(){
if(Request::isAjax()){
$data = Request::except('oldfield');
$oldfield = input('oldfield');
$fieldName=$data['field'];
$name = db('module')->where(array('id'=>$data['moduleid']))->value('name');
$prefix=config('database.prefix');
if($this->_iset_field($prefix.$name,$fieldName) && $oldfield!=$fieldName){
$result['msg'] = '字段名重复!';
$result['code'] = 0;
return $result;
}
$editfieldsql =$this->get_tablesql(input('post.'),'edit');
if($data['setup']){
$data['setup']=array2string($data['setup']);
}
if(!empty($data['unpostgroup'])){
$data['setup'] = implode(',',$data['unpostgroup']);
}
if($data['pattern']=='?'){
$data['pattern'] = 'defaul';
}else{
$pattern= explode(':',$data['pattern']);
$data['pattern'] = $pattern[1];
}
if(empty($data['class'])){
$data['class'] = $data['field'];
}
$model = db('field');
if (false !== $model->update($data)) {
savecache('Field',$data['moduleid']);
if(is_array($editfieldsql)){
foreach($editfieldsql as $sql){
$model->execute($sql);
}
}else{
$editfieldsql;
$model->execute($editfieldsql);
}
$result['msg'] = '修改成功!';
$result['code'] = 1;
$result['url'] = url('field',array('id'=>input('post.moduleid')));
return $result;
} else {
$result['msg'] = '修改失败!';
$result['code'] = 0;
return $result;
}
}else{
$model = db('field');
$id = input('param.id');
if(empty($id)){
$result['msg'] = '缺少必要的参数!';
$result['code'] = 0;
return $result;
}
$fieldInfo = $model->where(array('id'=>$id))->find();
if($fieldInfo['setup']) $fieldInfo['setup']=string2array($fieldInfo['setup']);
$this->assign('info',json_encode($fieldInfo,true));
$this->assign('title',lang('edit').lang('field'));
$this->assign('moduleid', input('param.moduleid'));
return $this->fetch('fieldForm');
}
}
//字段排序
public function listOrder(){
$model =db('field');
$data = input('post.');
if($model->update($data)!==false){
return $result = ['msg' => '操作成功!','url'=>url('field',array('id'=>input('post.moduleid'))), 'code' => 1];
}else{
return $result = ['code'=>0,'msg'=>'操作失败!'];
}
}
function fieldDel() {
$id=input('id');
$r = db('field')->find($id);
db('field')->delete($id);
$moduleid = $r['moduleid'];
$field = $r['field'];
$prefix=config('database.prefix');
$name = db('module')->where(array('id'=>$moduleid))->value('name');
$tablename=$prefix.$name;
db('field')->execute("ALTER TABLE `$tablename` DROP `$field`");
return ['code'=>1,'msg'=>'删除成功!'];
}
public function get_tablesql($info,$do){
$comment = $info['name'];
$fieldtype = $info['type'];
if(isset($info['setup']['fieldtype'])){
$fieldtype=$info['setup']['fieldtype'];
}
$moduleid = $info['moduleid'];
$default = '';
if(isset($info['setup']['default'])){
$default=$info['setup']['default'];
}
$field = $info['field'];
$prefix = config('database.prefix');
$name = db('module')->where(array('id'=>$moduleid))->value('name');
$tablename=$prefix.$name;
$maxlength = intval($info['maxlength']);
$minlength = intval($info['minlength']);
$numbertype = '';
if(isset($info['setup']['numbertype'])){
$numbertype=$info['setup']['numbertype'];
}
$isnull = $info['required']==0?'NULL':"NOT NULL";
if($do=='add'){
$do = ' ADD ';
}else{
$oldfield = $info['oldfield'];
$do = " CHANGE `".$oldfield."` ";
}
switch($fieldtype) {
case 'varchar':
if(!$maxlength){$maxlength = 255;}
$maxlength = min($maxlength, 255);
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( $maxlength ) $isnull DEFAULT '$default' COMMENT '$comment'";
break;
case 'title':
$thumb = $info['setup']['thumb'];
$style = $info['setup']['style'];
if(!$maxlength){$maxlength = 255;}
$maxlength = min($maxlength, 255);
$sql[] = "ALTER TABLE `$tablename` $do `$field` VARCHAR( $maxlength ) $isnull DEFAULT '$default' COMMENT '$comment'";
if(!$this->_iset_field($tablename,'thumb')){
if($thumb==1) {
$sql[] = "ALTER TABLE `$tablename` ADD `thumb` VARCHAR( 100 ) $isnull DEFAULT '' COMMENT '缩略图'";
}
}else{
if($thumb==0) {
$sql[] = "ALTER TABLE `$tablename` drop column `thumb`";
}
}
if(!$this->_iset_field($tablename,'title_style')){
if($style==1) {
$sql[] = "ALTER TABLE `$tablename` ADD `title_style` VARCHAR( 100 )$isnull DEFAULT '' COMMENT '标题样式'";
}
}else{
if($style==0) {
$sql[] = "ALTER TABLE `$tablename` drop column `title_style`";
}
}
break;
case 'catid':
$sql = "ALTER TABLE `$tablename` $do `$field` SMALLINT(5) UNSIGNED $isnull DEFAULT '0' COMMENT '$comment'";
break;
case 'number':
$decimaldigits = $info['setup']['decimaldigits'];
$default = $decimaldigits == 0 ? intval($default) : floatval($default);
$sql = "ALTER TABLE `$tablename` $do `$field` ".($decimaldigits == 0 ? 'INT' : 'decimal( 10,'.$decimaldigits.' )')." ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'";
break;
case 'tinyint':
if(!$maxlength) $maxlength = 3;
$maxlength = min($maxlength,3);
$default = intval($default);
$sql = "ALTER TABLE `$tablename` $do `$field` TINYINT( $maxlength ) ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'";
break;
case 'smallint':
$default = intval($default);
$sql = "ALTER TABLE `$tablename` $do `$field` SMALLINT ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'";
break;
case 'int':
$default = intval($default);
$sql = "ALTER TABLE `$tablename` $do `$field` INT ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'";
break;
case 'mediumint':
$default = intval($default);
$sql = "ALTER TABLE `$tablename` $do `$field` INT ".($numbertype ==1 ? 'UNSIGNED' : '')." $isnull DEFAULT '$default' COMMENT '$comment'";
break;
case 'mediumtext':
$sql = "ALTER TABLE `$tablename` $do `$field` MEDIUMTEXT $isnull COMMENT '$comment'";
break;
case 'text':
$sql = "ALTER TABLE `$tablename` $do `$field` TEXT $isnull COMMENT '$comment'";
break;
case 'posid':
$sql = "ALTER TABLE `$tablename` $do `$field` TINYINT(2) UNSIGNED $isnull DEFAULT '0' COMMENT '$comment'";
break;
//case 'typeid':
//$sql = "ALTER TABLE `$tablename` $do `$field` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0'";
//break;
case 'datetime':
$sql = "ALTER TABLE `$tablename` $do `$field` INT(11) UNSIGNED $isnull DEFAULT '0' COMMENT '$comment'";
break;
case 'editor':
$sql = "ALTER TABLE `$tablename` $do `$field` TEXT $isnull COMMENT '$comment'";
break;
case 'image':
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'";
break;
case 'images':
$sql = "ALTER TABLE `$tablename` $do `$field` MEDIUMTEXT $isnull COMMENT '$comment'";
break;
case 'file':
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'";
break;
case 'files':
$sql = "ALTER TABLE `$tablename` $do `$field` MEDIUMTEXT $isnull COMMENT '$comment'";
break;
case 'template':
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'";
break;
case 'linkage':
$sql = "ALTER TABLE `$tablename` $do `$field` VARCHAR( 80 ) $isnull DEFAULT '' COMMENT '$comment'";
break;
}
return $sql;
}
protected function _iset_field($table,$field){
$fields = Db::getTableFields($table);
return array_search($field,$fields);
}
}